トップページ 組込みソフト Raspberry Pi PWM

Raspberry Pi PWM
 Raspberry PiのPWM機能ではサーボモータを制御できない。サーボモーターの制御にはServo Blasterを使う。といわれています。
本当にハードウェア機能でサーボモータ制御のパルスを出すことができないのでしょうか?
できます!

自分で作ったぞ。
証拠映像だ!

20ms周期2ms幅のパルスがでています。

C++で作ったプログラムです。
パルスの周波数は1.15Hzから4.8MHzまで対応しています。
パルス幅の指定は、

SetPwmByFreq(2.0, 50);
2.0Hz,duty 50%で指定する。

SetPwmByMilliSec(20, 1.5);// 0 deg
20msecの周期、1.5msecのパルス幅で指定する。

と直感的になっています。

ソースファイル
必要なファイル
gpio.h
gpio.cpp
です。

使い方は簡単です。
main.cpp

#include <unistd.h>
#include "gpio.h"
int main()
{
Gpio gpio(0);

gpio.SetPwmByMilliSec(20, 1);//-60 deg
gpio.StartPwm();

usleep(500000);
gpio.SetPwmByMilliSec(20, 1.5);// 0 deg
gpio.StartPwm();

usleep(500000);
gpio.SetPwmByMilliSec(20, 2);// 60 deg
gpio.StartPwm();

return 0;

} 実際、秋月さんで買ったサーボをつないでやってみると、安定して動作しました。