第3回 制御基礎②:ARDUINOの基礎 ~ロボットで作る未来~ 担当:矢野慎一郎(やのしん) ブレッソン・アンド・ビズ株式会社代表取締役 Twitter: @yanoshin 13年7月2日火曜日
第3回 制御基礎②:ARDUINOの基礎~ロボットで作る未来~
担当:矢野慎一郎(やのしん)
ブレッソン・アンド・ビズ株式会社代表取締役
Twitter: @yanoshin
13年7月2日火曜日
本日のゴール
実習1:Arduinoでサーボモータを制御
実習2:入力に応じてサーボモータ制御
実習3:実は◯◯◯を簡単に◯◯する◯◯があった
課題:センサ+サーボ/LEDで何か設計実装してみよう
13年7月2日火曜日
前回のおさらいArduinoの基礎知識
実習1:ArduinoでLEDを点滅制御しよう
Arduino IDE、オームの法則E=R×I、デジタル出力ピン、LED
実習2:スイッチでLEDを点灯/消灯制御しよう
デジタル入力ピン、プルアップ抵抗
実習3:光センサでLEDを点灯/消灯点滅制御しよう
アナログ入力ピン、Cds(照度センサ)、分圧回路
13年7月2日火曜日
導入:サーボモータについて
13年7月2日火曜日
サーボモータとはサーボ機構において位置、速度等を制御する用途に使用するモータ
正確な位置や速度を制御するために、フィードバック回路によりコントロール(後述)
今回の位置検出の手法:ポテンショメータ方式
今回の実習で使うサーボモータ:E-MAX ミニサーボ ES08A
動作電圧:4.8V ~ 6.0V 動作スピード: 0.12sec/60° (4.8V)トルク:1.5 kg/cm (4.8V)1個あたり480円くらい
13年7月2日火曜日
サーボモータの使用例
13年7月2日火曜日
ごめんなさい…完成、今週に間に合いませんでした…
13年7月2日火曜日
比較:DCモータ
DC(=直流)電源で回転するモータ
グルグルと360度以上に回転する
ミニ四駆などの駆動など
13年7月2日火曜日
使用上の注意
【 ご注意事項 】*サーボのスペックサイトより抜粋最大角度でサーボがジリジリとなったり急激に熱くなった場合はサーボの最大動作角度を超えている状態なので、すぐにニュートラル位置に戻して下さい。またその現象が起きるエンドポイントの位置以下でお使い下さい。
13年7月2日火曜日
デモ
サーボモータを実際に動かしてみます
参考比較としてDCモータとの違い
13年7月2日火曜日
サーボモータ
ホーンセット内部はモータの他、 ギアと電子回路
13年7月2日火曜日
~実習1~
13年7月2日火曜日
①Arduinoでサーボモータを制御実習ポイント:PWM(パルス幅変調)
13年7月2日火曜日
[Tis] PWMを理解するPWM(Pulse Width Modulation:パルス幅変調)
Width …幅(発音wídθ:ウィズ、ウィドゥス ☓ ワイズ)変調=送りたい情報を送信経路に適した形の信号に変換する
パルスの周期を一定にしてパルス幅を変える事で目的に合った制御を行う
【デューティ比 = パルス幅 / 周期】左の例の場合:パルス幅1ms の時のデューティ比= 1ms / 20ms = 0.05 = 5%
パルス幅2ms の時のデューティ比= 2ms / 20ms = 0.05 = 10%
20ms
ms(ミリ秒) =0.001秒(千分の一秒)μs(マイクロ秒)=0.000001秒(百万分の一秒)
今回一番の山場!
13年7月2日火曜日
[Tis] PWMを理解するパルス幅(=デューティ比)
サーボモータの角度
狭い 1ms 中位 1.5ms 広い 2ms
0度 90度 180度
ソースコードで表現すると?(周期は20ms=20000μsとした例)
13年7月2日火曜日
回路図回路図ってほどのものじゃ…
【今回のサーボの端子色】黄色…信号線(pulse)
赤色…電源+茶色…電源−(GND)
13年7月2日火曜日
実体配線図配線図ってほどのものじゃ…
【今回のサーボの端子色】黄色…信号線(pulse)
赤色…電源+茶色…電源−(GND)
13年7月2日火曜日
ソースコード
ポイント
・周期ーパルス幅で隙間を作り、合計で常に周期20ms間隔を作る13年7月2日火曜日
[Tis] オシロスコープは便利電気の波形を視覚化する道具
無くても電子工作できるんだけど、あると回路動作の理解が数倍深まる、 デバッグが早くなるなどメリットは沢山
13年7月2日火曜日
[Tips]コンデンサでノイズ除去
本来は、サーボモータの電源+付近にコンデンサ(0.1μF程度)を設置したほうがいい
コンデンサ=電気を瞬間的に貯めこむ部品 →溜め込んだ後は電流が流れなくなる ☆→直流を遮り、交流を通す
本来はめっちゃ重要な部品のひとつなんだけど、今回は内容の軸がブレてしまうため割愛…(ぜひ勉強してください)
13年7月2日火曜日
~実習2~
13年7月2日火曜日
②入力に応じて角度を制御ポテンショメータを回す量に応じて、サーボモータの回転角を制御してみます
13年7月2日火曜日
[Tips]ポテンショメータ(可変抵抗)とは
回転数や角度によって、抵抗値が変わる部品
13年7月2日火曜日
[Tips]分圧回路(復習)抵抗値によって電圧を分圧することができる ⇒欲しい電圧範囲を設計することができる
Cdsの場合の例
13年7月2日火曜日
[Tips]ポテンショメータ(可変抵抗)とは
両端で10kΩ、メータを回すことで真ん中の端子と両端の抵抗値が0Ω~10kΩ変化します
今回は分圧目的ではなく、0V~5Vを可変で得るために使います(ボリュームつまみ)
13年7月2日火曜日
[Tips]サーボの仕組み
①
②
③
④⑤
①~⑤が繰り返され、目的の位置・角度になった時点で停止
13年7月2日火曜日
回路図
アナログ入力A0に入る電圧は0~5v
変化する
13年7月2日火曜日
実体配線図
電源+5vとGNDはブレッドボード経由で共通化した
13年7月2日火曜日
ソースコード
ポイント:・analogRead(A0) …A0ピンから電圧0~5vを0~1023の値で入力・delayMicroseconds(n)…nマイクロ秒のディレイ(待ち)を発生 → delay(n)よりも短い時間のディレイを作れる
13年7月2日火曜日
~実は…~
なにこれ…
13年7月2日火曜日
③実はもっと簡単に書ける…
サーボを制御するPWMを方法があったんです
Arduinoに標準で用意されてる、Servo型を使います
回路図と配線は実習②のままでOKです
13年7月2日火曜日
ソースコード
ポイント
・map (val, min_a, max_a, min_b, max_b) …aの範囲とbの範囲をマッピング変換して、 bの範囲でvalに対応する値を得る・Servo.write(度数) …指定した度(0~180)の角度にサーボを制御
13年7月2日火曜日
[Tips]PWMでアナログ電圧(擬似)PWMはデジタル出力方式ですが、PWM方式によって擬似的にアナログ電圧を出力することができます
→これは5V(直流)
→平均して3.75V5v×75%=3.75v
→平均して2.5V5v×50%=2.5v
→平均して1.25V5v×25%=1.25v
実効電圧↓
13年7月2日火曜日
みなさんへの課題
13年7月2日火曜日
課題前回・今回で学習したことを応用して、何でもいいので回路とソフトウェアを作ってみてください
センサ(Cds)、LED、サーボモータ、その他、今回使っていない部品で興味があれば試してみてください
使い方は講師に聞くか、Googleるとか
圧電ブザーなんておもしろいかも?
13年7月2日火曜日
発表会?
13年7月2日火曜日
みなさん、おつかれさまでした
ありがとうございました
13年7月2日火曜日