Asenkron motorun skaler kontrolü

erdemtr55

Üye
Katılım
3 Mart 2025
Mesajlar
288
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.
 

Ekler

  • 1.png
    1.png
    120.9 KB · Görüntüleme: 26
  • 2.png
    2.png
    130.9 KB · Görüntüleme: 26
  • main.c
    main.c
    8 KB · Görüntüleme: 18
Son düzenleme:
Yardımcı olacak var mı?
ben tam olarak spwm tekniğini anlamadım.
9khz pwm üzerine kaç hz li ve kaç doluluklu sinyali koyacam?
 

Forum istatistikleri

Konular
9,091
Mesajlar
146,673
Üyeler
3,680
Son üye
MeftuN

Son kaynaklar

Back
Top