ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
471148
Ljutik1 (06.12.2013 18:41, просмотров: 2184)
Люди, подскажите по MC3PHAC. Пытаюсь запустить через RS232. До этого запускал в автономном режиме - все работает. Даже двигатель крутится. Подключил внешний микроконтроллер (на той же плате), команды принимает и отвечает. Естественно, схему подключения перекоммутировал в соответствии с даташитом. Но! При установке частоты ШИМ загорается светодиод ошибки (сигнал DT_FAULTOUT, 19 нога MC3PHAC)и микросхема естественно не стартует. Перед установкой ШИМ устанавливается время DEAD_TIME. Если установку DEAD_TIME не делать, то инициализация проходит нормально, но при этом все равно микросхема не стартует. Конденсаторы на PLL запаял. Разводка, вроде, достаточно по уму сделано. Самое интересное, что на этой плате было произведено несколько сотен устройств без управляющего микроконтроллера и все они работают. Если есть у кого опыт - подскажите. Вот кусок инициализации (с электроникса скачал и немного подточил): void MC3PHAC_Init() { MC3PHAC_Send(cmd_RESET, sizeof(cmd_RESET)); delay_ms(100); MC3PHAC_Send(cmd_DEADT, sizeof(cmd_DEADT)); // если эту команду не подавать, то не затыкается но не запускается Response(); MC3PHAC_Send(cmd_PPWM, sizeof(cmd_PPWM)); // вот здесь затыкается Response(); MC3PHAC_Send(cmd_ACB, sizeof(cmd_ACB)); Response(); MC3PHAC_Send(cmd_ACC, sizeof(cmd_ACC)); Response(); MC3PHAC_Send(cmd_FPWM, sizeof(cmd_FPWM)); Response(); MC3PHAC_Send(cmd_F, sizeof(cmd_F)); Response(); MC3PHAC_Send(cmd_VBOOST, sizeof(cmd_FPWM)); Response(); MC3PHAC_Send(cmd_MODIN, sizeof(cmd_MODIN)); Response(); MC3PHAC_Send(cmd_FTOUT, sizeof(cmd_FTOUT)); Response(); MC3PHAC_Send(cmd_VBDEC, sizeof(cmd_VBDEC)); Response(); MC3PHAC_Send(cmd_VBRAKE, sizeof(cmd_VBRAKE)); Response(); MC3PHAC_Send(cmd_VBROWN, sizeof(cmd_VBROWN)); Response(); MC3PHAC_Send(cmd_VBOVR, sizeof(cmd_VBOVR)); Response(); delay_ms (1000); MC3PHAC_Send(cmd_FORW,sizeof(cmd_FORW)); // так и не запустил } Команды: flash unsigned char const cmd_RESET[5] = {0xE3, 0x10, 0x00, 0x30, 0x00}; flash unsigned char const cmd_PPWM[5] = {0xE3, 0x10, 0x00, 0x50, 0x00}; flash unsigned char const cmd_DEADT[5] = {0xE3, 0x00, 0x36, 0x08, 0x00}; // 4.5 мкс мертвое время 24 flash unsigned char const cmd_ACB[5] = {0xE3, 0x10, 0x00, 0x61, 0x00}; // 50 Гц базовая частота flash unsigned char const cmd_ACC[5] = {0xE4, 0x00, 0x60, 0x05, 0x00}; // ускорение flash unsigned char const cmd_F[5] = {0xE4, 0x00, 0x62, 0x3C, 0x99}; // задание синусоидальной частоты flash unsigned char const cmd_FPWM[5] = {0xE3, 0x10, 0x00, 0x41, 0x00}; // частота ШИМ flash unsigned char const cmd_VBOOST[5] = {0xE3, 0x00, 0x6C, 0x00, 0x00}; // 0 % амплитуда синуса при нулевой синусоидальной частоте flash unsigned char const cmd_MODIN[5] = {0xE3, 0x00, 0x75, 0xFE, 0x00}; // 99 % индекс модуляции синуса (амплитуда) flash unsigned char const cmd_FTOUT[5] = {0xE4, 0x00, 0x6A, 0x00, 0x08}; // таймаут после аварии flash unsigned char const cmd_VBDEC[5] = {0xE4, 0x00, 0xC9, 0x00, 0x00}; // значение Vbus при котором начинается снижение скорости торможения flash unsigned char const cmd_VBRAKE[5] = {0xE4, 0x00, 0x64, 0x00, 0x00}; // значение Vbus при котором появляется сигнал вкл. тормозного VT flash unsigned char const cmd_VBROWN[5] = {0xE4, 0x00, 0x66, 0x00, 0x00}; // нижнее значение Vbus при откл. ШИМ и появляется сигнал аварии flash unsigned char const cmd_VBOVR[5] = {0xE4, 0x00, 0x68, 0x03, 0xFF}; // верхнее значение Vbus при откл. ШИМ и появляется сигнал аварии flash unsigned char const cmd_FORW[5] = {0xE3, 0x10, 0x00, 0x10, 0x00}; // "вперед" flash unsigned char const cmd_REW[5] = {0xE3, 0x10, 0x00, 0x11, 0x00}; // "назад" flash unsigned char const cmd_STOP[5] = {0xE3, 0x10, 0x00, 0x20, 0x00}; // "стоп" flash unsigned char const read_ACTF[3] = {0xD1, 0x00, 0x85}; // прочитать текущюю синусоидальную частоту flash unsigned char const read_SETUP[3] = {0xD0, 0x00, 0xAE}; // прочитать регистр установок flash unsigned char const read_VBUS[3] = {0xD1, 0x00, 0x79}; // прочитать напряжение питания инвертора (DC_bus) flash unsigned char const read_F[3] = {0xD1, 0x00, 0x62}; // прочитать задание на синусоидальную частоту flash unsigned char const read_STATUS[3] = {0xD0, 0x00, 0xC8}; // прочитать регистр статуса