Sample Programs

14個のサーボモータを動かす

ハードウエア編

ここでは14波のハードウエアPWMを出力することにより14個の模型用サーボモータを動かします。

※ATTENTION!! 最初に配った単3電池だと電源不足になります。充電電池(エネループ6本とか、ラジコン用に売っているNiMH,NiCd,Li-Poなど電流出力特性が高いバッテリ)にするか、単2の電池(4本)に電源を交換しないとマイコンが貧血(電流不足)を起こして動きません!!(電圧にして6Vから7.2Vくらい)
14個のサーボモータを駆動する基板回路図

14個のサーボモータを動かす

接続するには以下のような基板を自作して配線する必要があります。

14個のサーボを動かす

接続例

14個のサーボを動かす

I/Oボードの準備をします。指定したジャンパーをすべて取り外す必要があります。4つのLEDは使えなくなります。

14個のサーボを動かす

各コネクタのピンアサイン(ピン配置)になります。使用するのはVIN,GND,EPWMxA,EPWMxBのピンになります。これらを自作基板を使って引き出します。

14個のサーボを動かす

サーボに供給する電源ラインです。Vin(6V),GNDはすべて縦にはんだ付けしてしまいましょう

14個のサーボを動かす

信号ラインです。PWM信号の出ているピンをすべて外に引き出します。他のパターンに接触しないように注意しましょう。

14個のサーボを動かす

回路図

ソフトウエア編

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);
		}
*/

    }
}

Follow Me!
  • Twitter