Вперед-назад (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 в прикріпленні.
Прикріплені файли:
- microchip_X.rar (124 Кб)