На этом уроке мы вспомним как управляются биполярные транзисторы, рассмотрим особенности применения в верхнем плече транзисторов обратной проводимости, упростим схему H-моста, соберём макет и испытаем его.
Упростим H-мост до схемы…
Управлять будем следующим способом: точка «А» включает вращение в направлении FORWARD , в точку «D» поступает ШИМ последовательность первого канала ШИМ. Соответственно, точка «B» включает вращение в направлении BACKWARD, точка «D» — второй канал ШИМ.
Пишем программу. Добавляем новый файл «H-bridge.c» с процедурами управления двигателем:
void forward(void); // Движение вперёд
void backward(void); // Движение назад
После инициализации…
void initPORTs(); // Инициализация портов
void initTIMERs(); // Инициализация таймеров
void initCCPs(); // Инициализация CCP-модулей
void initADC(); // Инициализация АЦП
…в основном цикле проверяем статус кнопки заднего хода…
if (PORTCbits.RC4 == 1) backward(); else forward();
…опрашиваем ручку газа…
GO_DONE = 1; // Запуск преобразования АЦП
…загружаем значения мощности в регистры первого и второго канала ШИМ…
CCPR1L = ADRESH; // Загружаем значение скважности
CCPR2L = ADRESH;
Особенности управления H-мостом с 2-хканальным ШИМ:
Переключение каналов производится включением и выключением модуле й CPP1 и CPP2:
CCP2M2 = 1; // Включить PWM_FORWARD
CCP2M3 = 1;
CCP1M2 = 1; // Включить PWM_BACKWARD
CCP1M3 = 1;
Во избежание короткого замыкания при выключении канала ШИМ необходимо гарантированно обеспечить низкий уровень на линии ШИМ!
PORTCbits.RC2 = 0; // PWM_BACKWARD, press line to ground
PORTCbits.RC1 = 0; // PWM_FORWARD, press line to ground
Проект с исходным кодом и симуляция в Proteus во вложении.
Прикрепленные файлы:
- microchip_X.rar (124 Кб)