高性能Arduinoライブラリ:DCモーター制御用
必要なコンポーネントと用品
| パーツ | 数量 |
|---|---|
| Arduino UNO | 1 |
| 汎用NPNトランジスタ | 2 |
| 汎用PNPトランジスタ | 2 |
| 抵抗 1kΩ | 2 |
| 1N4007 ダイオード(高耐圧・大電流) | 4 |
アプリとオンラインサービス
- Arduino IDE
プロジェクト概要
ここでは、産業用モーション制御の要件を念頭に設計された、DCモーターを多彩に制御できるArduinoライブラリを紹介します。16の機能を備え、方向、速度、ソフトスタート、スムーズストップ、ジョグ制御、DCブレーキ(緊急停止)など、あらゆる制御ニーズに対応します。
ライブラリ関数の説明
DC_Motor(int pin1, int pin2): モーター駆動用のArduinoピンを宣言DC_Motor(int pin1, int pin2, int speed_flag): PWM出力ピンを指定して速度制御を有効化start_motor(int dir): 指定方向でモーター起動(1=正転、0=逆転)forward(): 正転開始reverse(): 逆転開始dc_break(): 即座にモーター停止(DCブレーキ)*stop_motor(): モーター停止jogg_full_speed(int dir): 指定方向にフル速度でジョグ(5秒間)*set_speed(int speed): 速度を0-100%で設定forward_with_set_speed(): 設定速度で正転reverse_with_set_speed(): 設定速度で逆転run_motor(int dir, int speed): 指定方向・速度で回転jogg_set_speed(int dir, int speed): 指定方向・速度でジョグmotor_speed_zero(): 速度を0にして停止(アナログ出力最小)*soft_start(int dir, int speed, int time_in_sec): 0から設定速度まで指定秒数で加速(ソフトスタート)smooth_stop(int time_in_sec): 現在速度から0まで指定秒数で減速(スムーズストップ)
*注: dc_break() はモーター内部に動的制動抵抗(DBR)などの対策がある場合のみ有効。回路設計に注意が必要です。motor_speed_zero() は速度制御時専用で、stop_motor()(デジタル出力)とは併用しないでください。
使用例
1) 速度制御なしで正転・逆転
#include
DC_Motor motor(8, 12);
void setup() {}
void loop() {
motor.forward();
delay(5000);
motor.stop_motor();
delay(2000);
motor.reverse();
delay(5000);
motor.stop_motor();
delay(2000);
}
2) 速度制御付きで正転・逆転
#include
DC_Motor motor2(9, 10, 1); // PWMピン指定、speed_flag=1
void setup() {}
void loop() {
motor2.set_speed(40);
motor2.forward_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
motor2.set_speed(80);
motor2.reverse_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
}
3) ジョグ制御(速度制御あり/なし)
#include
DC_Motor motor(8, 12);
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor.jogg_full_speed(1);
motor.jogg_full_speed(0);
motor2.jogg_set_speed(0, 80);
motor2.jogg_set_speed(1, 30);
}
4) ソフトスタートとスムーズストップ
#include
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor2.soft_start(1, 90, 10); // 正転、90%、10秒で加速
delay(3000);
motor2.smooth_stop(5); // 5秒で減速停止
motor2.soft_start(0, 50, 6); // 逆転、50%、6秒で加速
delay(3000);
motor2.smooth_stop(3); // 3秒で減速停止
}
ライブラリの導入方法
DC_Motor フォルダをArduinoのライブラリフォルダ(例: C:\arduino-1.6.7\libraries)にコピーするだけで使用可能です。
回路図
Arduino UNOとHブリッジドライバーを用いたDCモーター制御回路
製造プロセス
- Satellite CCRMAキットでセンサー駆動オーディオエフェクトを構築
- 自宅で作るDIY宿題自動筆記マシン:AxiDraw風ペンプロッターの自作ガイド
- Arduino Unoベースの人間検知レスキューロボット:センサー統合ステップバイステップ
- Arduino用バイポーラステッピングモーターライブラリ – 産業グレードの制御機能
- Android加速度センサーで操作するラジコン車両:Raspberry Pi・Arduino・モーターシールド連携
- ArduinoとHC-SR04で作るサーボ駆動障害物回避ロボット
- Arduino UNOで作る完全自律ライントラッカーロボット ─ 入門に最適な自作キット
- ArduinoとAndroidでRoomba Create 2をリモコン操作 ─ Bluetooth経由のステップバイステップガイド
- Arduino & MPU6050:SG90 & MG996Rサーボの精密制御
- Bolt IoTとArduino UNOでLED輝度をシームレス制御
- Arduino向けスマート屋内ナビゲーションロボットキット