R3との接続は?PWM駆動方式とは?ArduinoでPWM駆動する方法は?ArduinoでL293DをPWM駆動する方法は?DCモーターを駆動するスケッチは?PWM波形の変化させてDCモーターの回転数を測定しましたArduinoでDCモーターを制御する方法を学習します子どものころDCモータと単3の電池2本を使ったプラモデルの車を作って遊んだ記憶があります。プラモデルの中でDCモータと電池が接続されておりスイッチを入れるとDCモータが回転する簡単な構成でした。Arduinoを使ってDCモータの回転方向や速度を制御する方法を学習します。R3、駆動用IC、駆動IC用電源回路、DCモーターすべてが含まれています。個別に購入するよりも安価です。DCモーターの外形と動作特性は?模型用のDCモーターは回転中心のシャフト、DC電圧を加える2つのターミナル(端子)と内部の部品を覆っているハウジングのシンプルな外形です。ターミナル間にDC電圧を印加するとシャフトが回転します。印加する電圧の極性を変えるとシャフトの回転方向が変わります。モーターの特性を示すのにモーター特性図(性能曲線図)が使われます。トルクが大きいと回転数は下がります。(T-N特性は電圧Eによって変動し、電圧が高いと同じ電流でもトルクが大きくなります。トルクが大きくなると電流が増えます。(T-I特性は電圧Eの変化に依存しません。)DCモーターの駆動の注意点DCモーターは製品によって使用電圧範囲が異なり、指定された電圧で駆動しなければなりません。最終版スタータキット]にDCモーターの説明書が付属しています。Adfruit社のモーターのようです。使用電圧は、4.5Vから9Vとなっています。(この仕様は、電流を多く使用する3V仕様のモータよりも、5Vまたは9Vは、通常は利用しやすいだろうから、と書かれています。6Vで動作させた場合は、10gcmの負荷で最大250mAの電流が消費されると記載されています。R3のI/Oピンから取り出せる電流の最大値は20mAですからDCモータの直接駆動はできません。R3は壊れる可能性があります。R3とDCモーター間に追加して多くの電流が取り出せるようにします。DCモータの駆動ICとしてL293Dを使用しました。R3用の電源とは別に準備します。下図であれば、9Vの電池を駆動IC用電源回路に接続し、DCモータの駆動IC用の電流を供給します。Elegoo社の駆動IC用電源回路のFritzing用のデータがWebで見つかりましたので使わさせて頂きました。DCモーターを操作する駆動IC用電源回は?DCモーター駆動IC用電源回路にElegoo社の電源回路を使用しています。駆動ICによっては9Vの電池をそのまま接続してもモーターは回転しますが、電池の電圧が低下すると回転数が変わってしまいます。最終版スタータキット]に付属していました。TIのWebでL293Dの仕様書が見つかりましたのでピン配置と機能を調べます。R3、駆動用IC、駆動IC用電源回路、DCモーターを接続します。PWM駆動方式とは?DCモーターの回転数を変化させるには、ターミナル(端子)に印加するDC電圧の大きさを変化させます。パルス幅変調と言います。DCモーターのモーター特性図から、電圧を上げれば回転数が上がり、電圧を下げれば回転数が下がることが解ります。PWM駆動では、デューティ-サイクルを上げれば回転数が上がり、デューティ-サイクルを下げれば回転数が下がります。R3にはPWMを出力する機能が備わっています。IDEにはPWM波形を出力する関数が備わっており、スケッチでその関数を呼び出せば設定したポートからPWM波形が出力されます。R3の端子とPWM周波数です。ボードにポート番号が印刷されています。PWM波形が出力できるポート番号の前に’~’が加えられています。pinでPWMを出力するpin番号を設定します。変数を使う場合は、int型です。valueでデューティ-サイクルを設定します。0~255の数値で設定し、0の場合はデューティ-サイクルが0%、255の場合はデューティ-サイクルが100%になります。128);5pinにデューティ-サイクルが50%の波形を出力した例です。ArduinoでL293DをPWM駆動する方法は?L293Dの1ピンはドライバーチャネル1,2を有効にする機能がありました。HighならDCモータに電圧が供給されモータは回転し、LowならDCモータへは電圧は供給されません。1ピンにPWM波形を入力すると、PWM波形がHighの時にDCモータが回転する回路になります。PWM波形のデューティ-サイクルが高いほど速く回転します。2ピン、7ピンはHigh、Low又はLow、Highの組み合わせで使い、DCモーターのターミナル(端子)への印加電圧の極性を変えることで回転方向を変えることが出来ます。–DCモーターを駆動するスケッチは?駆動IC(L293D)をPWM波形で制御し回転速度を変化させるスケッチを作成します。PWM波形のデューティ-サイクルを設定しDCモーターを回転させます。DCモーターの回転方向を変え、DCモーターを回転させます。DCモータの説明書では、使用電圧範囲は、4.5Vから9Vと記載されています。実際はどの程度デューティ-サイクルから動作するか調べてみます。Settingのラインの数字を変えてデューティ-サイクルを設定します。最終版スタータキット]に付属していたDCモーターはデューティ-サイクルが150程度から回転を始めました。2.94Vで回転を始めることになります。回転開始の動きが遅いなど動きは不安定でした。最大が255なので、それほど変化させる余裕はありません。DCモーター駆動用の電源電圧を5Vから9Vに変えれば変動させる範囲は広がります。DCモーターを回転させるスケッチはそれほど難しくはありませんでしたが、DCモーターを回転させるには周辺回路に専用の駆動回路等が必要になることが学習できました。PWM波形の変化させてDCモーターの回転数を測定しましたタコメーターを作成しサーボモータの回転数を測定する方法を[Arduinoの割込み関数を使ってサーボモーターの回転速度を測定しました]にまとめました。作成した治具を使って、DCモーターの回転数を測定しました。DCモーターの駆動電圧は5Vです。測定した回転数は、DCモーターの説明書の回転数と比較しても妥当な値で測定できました。DCモーターの説明書では、4.5V以上の使用電圧となっています。製品のバラツキや温度特性などを考慮しての余裕度だと思います。電圧値は実測値ではありません。5Vを100%デューティーサイクルとした場合の計算値です。DCモーターの回転数はかなり高いので、用途にもよりますがこのままの回転数で使うのは難しく、例えば車輪の回転に使う場合は減速ギアを含んだギヤードモーターを使用するのが良いのだろうと感じました。Arduinoでタコメータを作成した記事は?Arduinoの割込み関数を使ってサーボモーターの回転速度を測定しました。ご質問、誤植の指摘などありましたら。」のページからお願いします。加速度・角速度センサ)を使って傾斜角度を計算しましたArduinoを使って時間データをSDカードに記録する方法Arduinoの割込み関数を使ってサーボモーターの回転速度を測定しました。