Raspberry Pi サーボ覚書

Raspberry Pi 3 で pigpio のサーボ制御を利用して不安定だったので色々調べた覚書。

今回のトラブルはGPIO4の故障で発生。原因は詳しくは不明。

<現象>

Servo PWM制御が不安定。サーボ側の故障も考えたが、arudinoでは問題なく動く。

GPIO4を利用してして pi.set_servo_pulsewidth(4,1500) とかやっていたが下記のように不安定。

  • gpio実行の失敗。 pi.set_servo_pulsewidth(4,1500) とかのコマンド10回に2-3回失敗する。piscope で見ると何も出力されていない。
  • 動作不定。繰り返し実行すると動いたりする。
  • PWMが2-3秒で停止。piscope で見ていると、コマンド実行後2-3秒でPWMの出力が止まる。しかしpi.get_servo_pulsewidth(4) では1500とか出力されていることになっている。
  • ノイズ。上記停止後はpi.set_mode(4,0) として止めないとノイズが入る。誤動作の元。
  • ポートOUT/INモードまで変わってしまう。gpio readall で見ると、PWM出力中は MODEがOUTだが、2-3秒でINに代わる。だいたいこのタイミングでPWMの出力がかわる。

<解決?>

GPIOを4をやめて26に変更したら安定した。GPIOは4以外では正常だった。

  • 失敗なし。 pi.set_servo_pulsewidth(26,1500) とかで2-30回中失敗なし。
  • 動作安定。繰り返しでも動作変わらず。
  • 無停止。コマンド実行後停止するまでずっと PWM出力。ちなみに50Hzで出力。
  • ノイズなし。
  • ポートモード変化なし。gpio readall でずっとOUT.
  • 空いているGPIOざっと確認したがGPIO4以外では同様のトラブルなし。

何かがGPIO4を利用しているようにも見えるが不明。OCTPY使っているだけなんだが。