тут есть братья по разуму
https://electrotransport.ru/ussr/index. ... ic=28061.0смоделировал по
Вложение:
AN4863.pdf [919.71 КиБ]
Скачиваний: 0
похоже что работать должно
Вложение:
figure_1.png [ 105.92 КиБ | Просмотров: 2925 ]
Вот тут ещё методика
http://vectorgroup.ru/articles/article4 даже проще
Программа расчёта
https://gist.github.com/linvinus/78c86cbd4eec7e7e85fbВ общем ребята в nxp перемудрили, после всех заумных формул получается очень простой вывод, добавим deadtime в большую положительную полуволну , и вычтем из меньшей отрицательной полуволны
я добавляю компенсацию в алгоритме svpwm после вычисления значений для таймеров но перед передачей в таймер
Код:
#define add_DT3(x,y) x= (x + y)
#define add_DT_check(x,y) ( ((x + y)>0 && (x + y)<BLDCM_PERIOD) )
int iaerr= ( (bSector == 1 || bSector == 6) ? 1 : ( (bSector == 3 || bSector == 4 ) ? -1 : 0)) ;
int iberr= ( (bSector == 2 || bSector == 3) ? 1 : ( (bSector == 5 || bSector == 6 ) ? -1 : 0)) ;
int icerr= ( (bSector == 4 || bSector == 5) ? 1 : ( (bSector == 1 || bSector == 2 ) ? -1 : 0)) ;
/* Load compare registers values */
if(add_DT_check(hTimePhA,(BLDC_DEAD_TIME_CNT)*iaerr) &&
add_DT_check(hTimePhB,(BLDC_DEAD_TIME_CNT)*iberr) &&
add_DT_check(hTimePhC,(BLDC_DEAD_TIME_CNT)*icerr) ){
add_DT3(hTimePhA,((BLDC_DEAD_TIME_CNT)*iaerr) );
add_DT3(hTimePhB,((BLDC_DEAD_TIME_CNT)*iberr) );
add_DT3(hTimePhC,((BLDC_DEAD_TIME_CNT)*icerr) );
}
или совсем просто
Код:
#define add_DT(x) x = (x < (BLDCM_PERIOD-BLDC_DEAD_TIME_CNT) ? (x + BLDC_DEAD_TIME_CNT) : x )
#define remove_DT(x) x = (x > (BLDC_DEAD_TIME_CNT) ? (x - BLDC_DEAD_TIME_CNT) : x )
if( hTimePhA > hTimePhB){
if(hTimePhB > hTimePhC){
add_DT(hTimePhA);
remove_DT(hTimePhC);
}else if(hTimePhC > hTimePhA){
remove_DT(hTimePhB);
add_DT(hTimePhC);
}else{
remove_DT(hTimePhB);
add_DT(hTimePhA);
}
}else{ //hTimePhB > hTimePhA
if(hTimePhA > hTimePhC){
add_DT(hTimePhB);
remove_DT(hTimePhC);
}else if(hTimePhC > hTimePhB){
remove_DT(hTimePhA);
add_DT(hTimePhC);
}else{
remove_DT(hTimePhA);
add_DT(hTimePhB);
}
}
_________________
R3
forum87/topic15337.html R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!