Трехфазный инвертор на TMS320LF2406
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено qqk 21 марта 2005 г. 13:29

Разбираюсь с реализацией управления трехфазного инвертора с помощью векторного ШИМ по закону u/f, отслеживать реальную скорость вращения двигателя по датчику не нужно.

Сначала разбирался с примером sprc106.
Модуль SVGEN_MF: в принципе все понятно, не понятна вот эта запись:

;Multiply by 2 & modify Ta output with input gain & offset
LACC Ta
SUB #3FFFh
SACL Ta,1
LT Ta ;Ta is in Q15
MPY sv_gain ;sv_gain is in Q15
PAC ;P = sg_gain * Ta
SACH Ta,1 ;shift 1 to restore Q15 format

Здесь по идее нужно откорректировать значения компараторов в соответствии с коэф. sv_gain, но зачем здесь из Та вычитается 3FFF а потом умножается на 2?

В модуле FC_PWM_DRV, не понятно что такое Mfunc_p, зачем нужно модулировать период ШИМ, ведь он всегда постоянный... И еще:
ldp #Mfunc_c1 ; Modulate channel one
LT Та
MPY m_period ; Та x m_period/2
PAC ;
add m_period,15 ; offset by m_period/2
ldp #CMPR1>>7
SACH CMPR1 ; save

зачем там еще добавляется значение m_period, не понятно... Я понимаю что нужно только умножить Та x m_period и все...

-----------------------

Потом попался другие примеры spra284a и spra500.
Там такой же алгоритм но реализан по другому...
Например там период шим сразу задается в абсолютной величине, потом вычислиятся значения dx и dy по тойже таблице синусов, но потом сразу умнажается на коэф. модуляции и сдвигается это значение на 11 бит в лево, и это число непосредственно вычитается из периода:
TBLR dy ;dy=Sin(ALPHA)
LT dy ;dy is in Q15
MPY V ;V is in Q15
PAC ;P = V * dy
SACH dy,1 ;shift 1 to restore Q15 format
LACC dy,11 ;scale for 10 bit integer
...
...
LACC T ;Acc = T
SUB dx ;Acc = T-dx
SUB dy ;Acc = T-dx-dy
SFR ;Acc = Ta = 1/2(T-dx-dy)
SACL Ta
...
Т.е. Та, Тb и Тс вычисляются потом теми же операциями и записываются в компараторы...

Как такое возможно? ведь Та.. по такому методу вычисления будут одинаковые при любом периоде ШИМ, или этот код специально подогнан под частоту ШИМ 24кГц и менять ее нельзя? Потому что мне надо 2 кГц.

Прошу помощи кто писал что-то подобное и разбирался с этими примерами.
А то я уже ниего не соображаю, голова пухнет. Специального образования по подобному программированию не имею, и своими силами че-то не могу разобраться...

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru