Vektörel okey,Skaler devam(Motor Sürüş)

erdemtr55

Üye
Katılım
3 Mart 2025
Mesajlar
287
Selamın Aleyküm arkadaşlar,
Bu aralar uğraştığım yüksek lisans tezimi deney savfası büyük ölçüde bitirdim.
Dtc asenkron motoru encodersiz olarak sürdüm.Hızlanma, yavaşlama,ani kalkış,ters dönme, akı zayıflatma gibi
Üniversitede bunları yaparken bir yandan skaler kontrol için evde.Bugün bir test yaptım 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: 12
  • 2.png
    2.png
    130.9 KB · Görüntüleme: 11
  • main.c
    main.c
    8 KB · Görüntüleme: 3

Forum istatistikleri

Konular
9,053
Mesajlar
146,293
Üyeler
3,656
Son üye
Clubber4141

Son kaynaklar

Back
Top