Вперед-назад (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-мостом з двоканальним ШІМ:

Переключення каналів здійснюється вмиканням і вимиканням модулів   й CPP1 і CPP2:

CCP2M2 = 1;     // Включити PWM_FORWARD
CCP2M3 = 1;

CCP1M2 = 1;     // Включити PWM_BACKWARD
CCP1M3 = 1; 

Щоб уникнути короткого замикання при вимиканні каналу ШІМ необхідно гарантовано забезпечити низький рівень на лінії ШІМ!

PORTCbits.RC2 = 0;  // PWM_BACKWARD, натисніть лінію на землю
PORTCbits.RC1 = 0;  // PWM_FORWARD, натисніть лінію на землю

Проект з вихідним кодом і симуляція в Proteus в прикріпленні.

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

Top