2017-07-03 8 views
0

Bonjour J'ai une voiture RC qui a deux moteurs 3v (un pour gauche/droite et l'autre pour avant/arrière). Le moteur gauche et droit fonctionne bien, mais quand j'essaie de faire tourner l'autre moteur, il ne tourne que vers l'arrière. J'ai essayé le moteur séparément et cela fonctionne dans les deux sens sans le contrôleur.Le moteur ne tourne que dans une direction avec le contrôleur L293D

Mon code est le suivant:

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); 
} 

Voici le câblage aussi:

Wiring

Les fils vert et orange sont pour un module Bluetooth.

Avez-vous une idée de comment puis-je résoudre ce problème et le faire fonctionner?

Merci.

Répondre

0

Pour inverser les moteurs, vous avez besoin de quatre broches, deux pour chaque moteur. Sur un module L293 facilement disponible, ils sont souvent étiquetés IN1, IN2, IN3 et IN4.

Pour faire avancer un moteur, vous pouvez définir IN1 à 5V et IN2 à 0V. Pour l'inverser, il suffit de commuter les entrées, IN1 à 0V et IN2 à 5V. Dans ce cas, 5V est un digitalWrite(pin, HIGH).

Similaire pour les deux autres broches de l'autre moteur. Je commence ma réponse avec ceci parce que le câblage de quelles broches de sortie à quelles broches d'entrée est d'une importance vitale.

Les broches d'activation sont là où vous avez mal tourné, semble-t-il. Enable2 et Enable1 doivent être connectés aux broches auxquelles vous faites analogWrite() mais enablePinMotorAF = 3 par exemple se connecte à une entrée de signal de moteur, et non à Enable2 comme cela devrait probablement l'être. Commencez par fixer que ... vos deux broches 3 et 11 doivent être connectées à Enable1 et Enable2. Vous avez seulement besoin de PWM sur les broches d'activation. Les autres devraient simplement être activés avec digitalWrite(). Une fois que vous obtenez les broches n Activer connectées à PWM, alors vous aurez un bon signal d'activation PWM. Il suffit de connecter les autres broches du même côté de la puce (IN1 et IN2 pour Enable1 et IN3 et IN4 pour Enable2), et les activer et désactiver avec digitalWrite (pin, HIGH) et vous serez prêt à partir.

+0

Le problème était que je devais inverser la broche 6 avec la broche 3 parce qu'ils avaient été déclarés erronés. Maintenant, la direction est bonne, ça marche mais après un test, ça tourne très lentement et le moteur gauche/droite est juste en train de trembler. J'ai essayé avec une nouvelle batterie et j'ai eu le même résultat. Donc vous voulez dire @JLH que je devrais connecter les broches 4 IN aux ports non PWM? Cela peut-il être le problème? –

+0

Non. Simplement ceci: les deux broches, quelles qu'elles soient, qui font des analogWrites, elles doivent être connectées aux broches Enable sur L293. Les autres broches n'a pas d'importance sur ce qu'ils sont accrochés sur l'Arduino, tant que vous pouvez faire digitalWrites() pour les allumer et éteindre (pour aller de l'avant et inverser). – TomServo

+0

Maintenant, j'ai comme ceci: les deux broches Enable sont connectées à 6, 11 (ports PWM) et je fais analogwrite pour changer de vitesse et les autres (IN1, IN2, IN3, IN4) sont connectés à d'autres ports PWM et je fais digitalWrite pour changer la direction. Mais ils bougent encore très lentement. Pourquoi donc? –