今回はサーボモータの制御をRaspberryHabuで試してみます。 用意したサーボモータは秋月電子通商で購入した台湾GWS社のPIC+F/BB/F(¥900)です。電圧は4.8から6V、トルクは0.79kg/cm(4.8V)から0.90kg/cm(6V)、スピードは0.12sec/60deg(4.8V)から0.10sec/60deg(6V)です。端子がフタバ配列(でっぱりのある端から白:PWM,赤:VCC,黒:GND)になっています。
今回は白(PWM)をRaspberryHabuのデジタル出力1ピン、赤をVCC、黒をGNDにつなぎました。サーボにかかる負荷が大きい時や電圧を安定させたい場合は電源を別途用意することをおすすめします。 RaspberryPiで使えるPWMにはハードウェアで発生させる方法とソフトウェアで発生させる方法がありますが、今回はソフトウェアPWMを試します。
/*
servo-softpwm.c
Lisence CC0.
*/
#include "stdio.h"
#include "stdlib.h"
#include "wiringPi.h"
int main()
{
if (wiringPiSetup() == -1)
{
printf("setup error!");
exit(1);
}
softPwmCreate(0,0,100);
while(1){
softPwmWrite(0,70);
printf("channel 0:pwm 50\n");
sleep(2);
softPwmWrite(0,10);
printf("channel 0: pwm 10\n");
sleep (2);
}
今回はWiringPiライブラリの関数であるsoftPWMを使ってみました。 softPwmCreateでPWM出力の設定をし、spftPwmWriteで出力します。
PWM出力10%時
PWM出力70%時 動いているのがわかります。出力を0→100に変えていくと右回りに角度が変化します。 今後このサーボモータといろいろなセンサを組み合わせて試作をしていきたいと思います。