今回はRaspberryPiに「wiringpi」をインポートしてサーボモータ(MG996R)を動かしてみましたので、そのときの情報を記載しておきます。
「wiringpi」のソフトウェアPWMを使用するとサーボがかなりガタガタしてしまいましたので、今回はハードウェアPWMを使用して揺れを無くすようにしてみました。
使用しているサーボはMG996Rです。今回は下記の範囲で設定していきます。
***************************************
・周期:20[ms]、周波数:50[Hz]
・パルス幅:0.5~2.4[ms]
・Duty:2.5~12[%](パルス幅/周期×100)
***************************************
今回はこちらの記事で紹介されていたものを少し変更して実行してみたいと思います。
以下のようなPythonファイルを作成してサーボを動かすことができました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/usr/bin/python import wiringpi as GPIO servo_pin = 18 # 18番ピンを指定 set_degree = 60 print(set_degree) GPIO.wiringPiSetupGpio() # 上図 pin(BOARD) の番号でピン指定するモード GPIO.pinMode(servo_pin, 2) # 出力ピンとして指定 GPIO.pwmSetMode(0) # 0Vに指定 GPIO.pwmSetRange(1024) # レンジを0~1024に指定 GPIO.pwmSetClock(375) move_deg = int((9.5*set_degree/180 + 2.5)*(1024/100)) GPIO.pwmWrite(servo_pin, move_deg) |
「set_degree = 60」のところに角度を指定して実行するとその角度にサーボが回転することが分かります。
また、今回はハードウェアPWMを使用していますので、PINはGPIO12、18もしくは、GPIO13、19のどれかに接続してやらないと動かすことができません。
このハードウェアPWMを出力できるPINさえ増えれば、たくさんのサーボで正確なPWM制御ができるようになるんですけどね。。
コメントを残す