この記事をシェアしよう!

【第34回】で、GPIO制御ライブラリ”Gpiozero”を使って「サーボモーターをフルスイング」させようとしましたが、残念ながら、スイングの中央(mid)から時計方向に45°、反時計方向に45°しか回転しませんでした。ところが、公式サイトを見ていたら、パルス周期の規定値:20msec.に対してパルス幅を指定するパラメーターがあるではありませんか。今回はこれを使って180°のフルスイングに挑戦してみようと思います。

今回使った部品

  • Raspberry Pi 3 Model B × 1
  • 40Pinフラットリボンケーブル
  • 40Pin T型GPIO拡張ボード
  • ブレットボード × 1
  • サーボモーター SG90 × 1
  • 電源アダプター5V 2.5A × 1
  • microUSB用変換基板 × 1
  • ジャンプワイヤー(オス/オス) × 5
デジタル・マイクロサーボ SG90
梅本合同会社
売り上げランキング: 11,230

実体配線図

回路は【第25回】と同じで、サーボモーターSG-90の電源は、Raspberry Piの電源アダプターとは別の電源アダプターを用意し、microUSB用変換基板を介して供給します。

・モーター端子(茶色) → GND

・microUSB用変換基板(GND) → GND

・モーター端子(赤色) → microUSB用変換基板(VCC)

・モーター端子(橙色) → GPIO12

Gpiozeroのパルス幅を指定してサーボモーターをフルスイングさせる

Visual Studio Codeを起動し、【 第34回 】で作ったプログラム”pigpiozero_servo.py”を開きます。

メニューバーから「ファイル」→「名前を付けて保存」をクリックします。

【 デバッグ・実行編 】で設定したワークスペース”/home/pi/Python”が開くので、「名前」の入力欄に新しいプログラム名を入力して「保存」ボタンをクリックします。

右ペインの4行目の”Servo(12)”を削除して、”s”と入力すると、入力候補が現れるので、「↓」キーを押して”Servo”を選択すると右側に「i」ボタンが現れるのでクリックします。

「i」をクリックすると入力候補の右に”Servo”のパラメーター一覧が表示され、その中に”min_pulse_width”と”max_pulse_width”があることが確認できました。確認できたら、「Enter」キーを押して”Servo”を選択します。

自動入力される”()”内に”12,(半角スペース)m”と入力すると入力候補が表示されるので、「↓」キーを押して”min_pulse_width”を選択して「Enter」キーを押します。

“min_pulse_width”を選択すると、続けて既定値の”=1/1000(1msec.)”が自動的に入力されてしまいますが、サーボモーターSG90の時計方向の最小パルス幅:”=0.5/1000″で上書きします。

続けて、”,(半角スペース)m”と入力すると、入力候補が現れるので、「↓」キーを押して”max_pulse_width”を選択し、「Enter」キーを押します。

“max_pulse_width”を選択すると、続けて既定値の”=2/1000(2msec.)”が自動的に入力されてしまいますが、サーボモーターSG90の反時計方向の最大パルス幅:”=2.4/1000″で上書きします。

17,18,19,20行目は”Gpiozero”には不要なので、全体を選択し、右クリック→「切り取り」を選択します。

“Gpiozero”は終了処理も不要なので、更にシンプルなプログラムになりました。

アクティビティーバーの「デバッグ」アイコンをクリックします。

サイドバーに現れたデバッグ右の「▶」ボタンをクリックします。

1行目でデバッグが中断するので、画面上部デバッグ用ツールバーの「↓」ボタンをクリックして続行します。

デバッグが終わったら、統合ターミナルのタブ「問題」をクリックします。

何故か今回は”イチャモン”が付きましたが、”エラー”ではないので、右ペインのエディター画面の何もないところで右クリック→「Run Python File in Terminal」をクリックします。

今度は、スイングの中央(mid)から時計方向に105°、反時計方向に75°回転しましました。合計では180°回転しましたが、中心は15°ズレています。これもGpiozeroの仕様なのでしょうか?

メニューバーから「ファイル」→「保存」をクリックして上書き保存します。

GPIO12の設定を確認する

コマンド”pigs mg”で設定状態を確認します。

返ってきた値”0″は、pigpio libraryによると”Input”を示しているので、既定通りの設定に戻っていることが確認できました。

この記事をシェアしよう!