Selamın Aleyküm arkadaşlar,
Asenkron motorun Skaler kontrol için evde denemeler yapıyorum. Githubdan indirdiğim kodları denedim. Malesef IR2110 3 de yandı.
STM32 kodunu ve sinyal çıkışları size yolluyorum.
1.resimde B ve C fazları 30hz.
2.resimde A ve B fazı 30hz
1.sorum neden A fazı B ,C fazlarını dibi tam dolulukta olmuyor?
main.c ise ise şu şekilde kodlanmış;
void sineValuesGeneration(int freq){
nValues = 2*floor(9000/freq);
phaseB = 1*floor(nValues/3.00) + phaseA;
phaseC = 2*floor(nValues/3.00) + phaseA;
for(uint16_t i = 0; i < (nValues/2); i++){
sinValues = round(999.00*(0.5*m*sin(i*2*3.14159265358979323846/nValues)+0.5));
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
if((counter + phaseA)%nValues < (nValues/2)){
TIM1->CCR1 = sinValues[(counter + phaseA)];
}
else{
TIM1->CCR1 = 999-sinValues[(counter + phaseA)%(nValues/2)];
}
if((counter + phaseB)%nValues < (nValues/2)){
TIM1->CCR2 = sinValues[counter + phaseB];
}
else{
TIM1->CCR2 = 999-sinValues[(counter + phaseB)%(nValues/2)];
}
if((counter + phaseC)%nValues < (nValues/2)){
TIM1->CCR3 = sinValues[counter + phaseC];
}
else{
TIM1->CCR3 = 999-sinValues[(counter + phaseC)%(nValues/2)];
}
counter++;
if(counter > nValues) counter = 0;
}
arr 1000-1,prsecaler 8-1 dir.
Asenkron motorun Skaler kontrol için evde denemeler yapıyorum. Githubdan indirdiğim kodları denedim. Malesef IR2110 3 de yandı.
STM32 kodunu ve sinyal çıkışları size yolluyorum.
1.resimde B ve C fazları 30hz.
2.resimde A ve B fazı 30hz
1.sorum neden A fazı B ,C fazlarını dibi tam dolulukta olmuyor?
main.c ise ise şu şekilde kodlanmış;
void sineValuesGeneration(int freq){
nValues = 2*floor(9000/freq);
phaseB = 1*floor(nValues/3.00) + phaseA;
phaseC = 2*floor(nValues/3.00) + phaseA;
for(uint16_t i = 0; i < (nValues/2); i++){
sinValues = round(999.00*(0.5*m*sin(i*2*3.14159265358979323846/nValues)+0.5));
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
if((counter + phaseA)%nValues < (nValues/2)){
TIM1->CCR1 = sinValues[(counter + phaseA)];
}
else{
TIM1->CCR1 = 999-sinValues[(counter + phaseA)%(nValues/2)];
}
if((counter + phaseB)%nValues < (nValues/2)){
TIM1->CCR2 = sinValues[counter + phaseB];
}
else{
TIM1->CCR2 = 999-sinValues[(counter + phaseB)%(nValues/2)];
}
if((counter + phaseC)%nValues < (nValues/2)){
TIM1->CCR3 = sinValues[counter + phaseC];
}
else{
TIM1->CCR3 = 999-sinValues[(counter + phaseC)%(nValues/2)];
}
counter++;
if(counter > nValues) counter = 0;
}
arr 1000-1,prsecaler 8-1 dir.
Ekler
Son düzenleme: