14個のサーボモータを動かす
ハードウエア編
ここでは14波のハードウエアPWMを出力することにより14個の模型用サーボモータを動かします。
※ATTENTION!! 最初に配った単3電池だと電源不足になります。充電電池(エネループ6本とか、ラジコン用に売っているNiMH,NiCd,Li-Poなど電流出力特性が高いバッテリ)にするか、単2の電池(4本)に電源を交換しないとマイコンが貧血(電流不足)を起こして動きません!!(電圧にして6Vから7.2Vくらい)
14個のサーボモータを駆動する基板回路図
接続するには以下のような基板を自作して配線する必要があります。
接続例
I/Oボードの準備をします。指定したジャンパーをすべて取り外す必要があります。4つのLEDは使えなくなります。
各コネクタのピンアサイン(ピン配置)になります。使用するのはVIN,GND,EPWMxA,EPWMxBのピンになります。これらを自作基板を使って引き出します。
サーボに供給する電源ラインです。Vin(6V),GNDはすべて縦にはんだ付けしてしまいましょう
信号ラインです。PWM信号の出ているピンをすべて外に引き出します。他のパターンに接触しないように注意しましょう。
ソフトウエア編
14個のサーボモータが回せます。
※[Release]モードでビルドしてください。
このプログラムで使える機能は以下に示します。
1. 16個のセンサを接続可能
2. LCD表示
3. sw1();sw2();トグルスイッチの読み込み
4. FLASH ROMへ書き込むことができる->build時のReleaseモード対応
メインプログラム(抜粋※上記サーボプログラムをダウンロードしてください。)
void main(void) { int i,incdec; initNolibM(); //初期化 incdec=1; g_s2pos=0; while(1) { wait(10); // AdcResults[0]=sensor(CN10); g_s2pos=g_s2pos+incdec; if(g_s2pos>90||g_s2pos<-90){incdec=-1*incdec;GpioDataRegs.GPBTOGGLE.bit.GPIO39=1;} servo(g_s2pos,PWM1A); servo(g_s2pos,PWM2A); servo(g_s2pos,PWM3A); servo(g_s2pos,PWM4A); servo(g_s2pos,PWM5A); servo(g_s2pos,PWM6A); servo(g_s2pos,PWM7A); servo(g_s2pos,PWM1B); servo(g_s2pos,PWM2B); servo(g_s2pos,PWM3B); servo(g_s2pos,PWM4B); servo(g_s2pos,PWM5B); servo(g_s2pos,PWM6B); servo(g_s2pos,PWM7B); /* 上記と下記は同じ記述になります for(i=1;i<15;i++) { servo(g_s2pos,i); } */ } }