2017-07-03 4 views
0

こんにちは私は2台の3vモーターを持っています(左/右用と前/後用の2台)。左右のモーターは正常に作動していますが、もう一方のモーターを回転しようとすると、それは戻ってくるだけです。私は別々にモーターを試してみましたが、コントローラなしで両方向に動作します。ここモーターはL293Dコントローラーで一方向に回転します

int enablePinMotorAF = 3; 
int in1PinMotorAF = 5; 
int in2PinMotorAF = 6; 
int enablePinMotorLR = 11; 
int in1PinMotorLR = 10; 
int in2PinMotorLR = 9; 
boolean reverse = true; 

void setup() { 
    pinMode(enablePinMotorAF, OUTPUT); 
    pinMode(in1PinMotorAF, OUTPUT); 
    pinMode(in2PinMotorAF, OUTPUT); 
    pinMode(enablePinMotorLR, OUTPUT); 
    pinMode(in1PinMotorLR, OUTPUT); 
    pinMode(in2PinMotorLR, OUTPUT); 
} 

void loop() { 
    //go forward ->not working 
    analogWrite(enablePinMotorAF, 230); //max speed 
    digitalWrite(in1PinMotorAF, reverse); 
    digitalWrite(in2PinMotorAF, !reverse); 
    delay(3000); 
    //go back -> working 
    analogWrite(enablePinMotorAF, 230); //max speed 
    digitalWrite(in1PinMotorAF, !reverse); 
    digitalWrite(in2PinMotorAF, reverse); 
    delay(3000); 
    //go right -> working 
    analogWrite(enablePinMotorLR, 230); //max speed 
    digitalWrite(in1PinMotorLR, !reverse); 
    digitalWrite(in2PinMotorLR, reverse); 
    delay(3000); 
    //go left -> working 
    analogWrite(enablePinMotorLR, 230); //max speed 
    digitalWrite(in1PinMotorLR, reverse); 
    digitalWrite(in2PinMotorLR, !reverse); 
    delay(3000); 
} 

れる配線があまりに:

Wiring

緑色及びオレンジのワイヤは、ブルートゥースモジュールのためのものである

私のコードは、以下です。

この問題をどのように解決して動作させるにはどうすればよいですか?

ありがとうございます。

答えて

0

モータを逆転させるには、モータごとに2つずつ、4つのピンが必要です。容易に入手できるL293モジュールでは、多くの場合、IN1、IN2、IN3、IN4というラベルが付けられています。

1つのモータを前進させるには、IN1を5Vに、IN2を0Vに設定します。これを反転するには、IN1を0V、IN2を5Vに切り替えます。この場合、5VはdigitalWrite(pin, HIGH)です。

他のモーターの他の2つのピンに似ています。どのような出力ピンをどの入力ピンに配線するのが非常に重要なので、私はこれで私の答えを開始します。

Enableピンはあなたが間違っていた場所です。 Enable2とEnable1は、analogWrite()を実行しているピンに接続してください。たとえば、は、可能な限りEnable2にではなく、モーター信号入力に接続してください。あなたの2つのピン3と11は、Enable1とEnable2に接続されるべきです。 EnableピンにはPWMだけが必要です。他のものは単にdigitalWrite()で有効にする必要があります。

イネーブルnピンがPWMに接続されると、良好なPWMイネーブル信号が得られます。チップの同じ側にある他のピン(Enable1とIN3はIN1とIN2、Enable2はIN4)を接続し、 `digitalWrite(pin、HIGH)を使用してオンとオフを切り替えるだけです。

+0

問題は、ピン6をピン3とスワップしなければならないということでした。ピン3を間違って宣言したからです。今の方向は大丈夫です、それは動作しますが、私はいくつかのテストの後、ちょうど非常にゆっくりと回転し、左/右のモーターはちょうど揺れています。新しいバッテリーを試してみましたが、同じ結果が出ました。だからあなたは、@ JLHを使って、4INピンを非PWMポートに接続する必要がありますか?それは問題になることができますか? –

+0

いいえ簡単に言えば、2つのピンは、どんなものでも、analogWriteを実行するため、L293のEnableピンに接続する必要があります。他のピンは、Arduinoでフックされているものとは関係ありません.DirectorWrites()を使用して、それらをオン/オフして前進/後退させることができます。 – TomServo

+0

今私は2つのイネーブルピンが6,11(PWMポート)に接続されており、アナログ書き込みを行って速度を変更し、他のもの(IN1、IN2、IN3、IN4)は他のPWMポートに接続していますdirectionを変更するdigitalWrite。しかし、彼らはまだ非常にゆっくりと動きます。何故ですか? –

関連する問題