TowerPro MG90Dサーボ(Manufactuer Link)(ServoDatabase Link)を持っています。
範囲は180度です(非連続)。
テスターで次の7%デューティサイクル(約90度)を確認します。
サーボは正常に応答します。
ただし、servo.write()
Arduino Mega 2560クローンを使用すると、サーボが角度出力に反応しません。同じピンの同じコードで問題なく動作する他のいくつかのサーボがあります。
Arduinoで次の7%デューティサイクルを観察しますservo.write(90)
。
応答なし。サーボは「リンプ」です。それはいかなるポジションも保持していません。
私がこの質問を書いている間、私はしようと考えましたservo.writeMicroseconds()
。
ここにありservo.writeMicroseconds(1450)
ます:
サーボが反応!
これがservo.writeMicroseconds(1472)
(working)で、これはprevoius non-working と同じ時間間隔servo.write(90)
です!
servo.writeMicroseconds(1550)
(ワーキング):
違いはなんですか?
サーボテスターは49.5Hzで動作しましたが、49.9Hzでservo.write()
失敗しました。どういうわけかその0.4Hzが違いを生んだのかと思ったのですが、それでも49.9Hzで動作することがservo.writeMicroseconds()
わかります。
上記のスコープキャプチャでは、両方が同じ時間間隔servo.write(90)
をservo.writeMicroseconds(1472)
持っていることがわかります。
1,474,560ns HIGH
18,544,640ns LOW
信号は非常に似ています... 動作しない原因servo.write()
は何ですか?
私のコードは可能な限り基本的です:
#include <Servo.h>
Servo serv1;
void setup() {
serv1.attach(3); // Pin 3
}
void loop() {
serv1.write(90); // No response
delay(3000);
serv1.writeMicroseconds(1472); // Works
delay(3000);
serv1.write(0); // No response
delay(3000);
serv1.writeMicroseconds(1800); // Works
delay(3000);
}
この回路のシミュレーション – CircuitLabを使用して作成された回路図
write
か?サーボが動作しない理由は本当にないので、あなたの信号に質問します。