Машинка на ДУ управлении своими руками — Вперёд-назад (PIC)!

На этом уроке мы вспомним как управляются биполярные транзисторы, рассмотрим особенности применения в верхнем плече транзисторов обратной проводимости, упростим схему 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 во вложении.


Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.