DCモーター / Hブリッジで正転、反転を切り換える
pp.307-314
Hブリッジを使う。ICは使わずにディスクリートで組んだ。モーターはタミヤソーラーモーター02を使った。DCモーター / 回転速度をpwmで制御する -のときは1.5Vで駆動したがそれではIRF530/9530が動作しないため今回は5Vで駆動した。ただしAVR側の電源とは別にした。タミヤの説明書には1.5Vまでしか書かれていないがマブチの説明(RF-500TB-14415|マブチモーター株式会社 製品検索)によれば動作電圧は9Vまでとの由。
#include <avr/io.h> #include <util/delay.h> #define DELAY 500 #define LEFT PD5 #define RIGHT PD6 void setBridgeState(char bridgeA, char port0, char bridgeB, char port1){ bridgeA ? PORTD |= (1 << port0): PORTD &= ~(1 << port0); bridgeB ? PORTD |= (1 << port1): PORTD &= ~(1 << port1); } int main(){ DDRD |= (1 << LEFT) | (1 << RIGHT); while(1){ setBridgeState(1, LEFT, 0, RIGHT); _delay_ms(DELAY); // 正転、全速。 setBridgeState(0, LEFT, 0, RIGHT); _delay_ms(DELAY); // 停止。(1, 1)でもよい。 setBridgeState(0, LEFT, 1, RIGHT); _delay_ms(DELAY); // 反転、全速。 setBridgeState(1, LEFT, 1, RIGHT); _delay_ms(DELAY); // 停止。(0, 0)でもよい。 } return 0; }