Problema controllo Motore Dc driver L293en

Salve a tutti, sono nuovo del forum…Prometto che mi presenterò subito nella sezione adatta. Mi sono iscritto perchè stasera ho sbattuto la testa su un problema che non riesco a risolvere (Premetto che uso Arduino da una settimana :D) . Praticamente ho modificato un classico esempio di controllo motore DC con driver L293en per poter controllare l’accensione del motore mediante un pulsante che agisce sul Pin enable del driver. Il circuito presenta anche un secondo bottone per il controllo del verso di rotazione del motore. Succedono 2 Cose Strane :
1 - Il bottone di controllo del Pin Enable è come se non ci fosse. Come collego l’usb il motore parte spedito!!! Il secondo bottone, quello per invertire la rotazione, funge tranquillamente.
2 - Questa è la cosa più strana, ovvero staccando il pin dal piedino 1 (enable) il motore continua a girare!!! Ho un driver difettoso?

Vi posto codice e schema Fritzing. Grazie a tutti per l’aiuto, a presto!!!
P.S. Ho provato anche inizializzando i pin 7 e enable a LOW, ma non cambia nulla.

int switchPin = 2; // switch input 
int motor1Pin1 = 3; // pin 2 on L293
int motor1Pin2 = 4; // pin 7 on L293
int enablePin = 9; // pin 1 on L293
int val = 0;
int stato = 0;
int vecchio_val = 0;
int bottone_contr=7;
void setup() {
    // set the switch as an input:
    
    pinMode(switchPin, INPUT);

    // set all the other pins you're using as outputs:
    pinMode(motor1Pin1, OUTPUT);
    pinMode(motor1Pin2, OUTPUT);
    pinMode(enablePin, OUTPUT);
    
    pinMode(bottone_contr , INPUT);
   
  
    
}

void loop() {
   
      val=digitalRead(bottone_contr);
    if((val==HIGH)&&(vecchio_val==LOW)){
      stato=1-stato;
    }
    vecchio_val=val;
    if(stato=1){
     
      digitalWrite(enablePin, HIGH);
      if (digitalRead(switchPin) == HIGH) {
        digitalWrite(motor1Pin1, LOW); // set pin 2 on L293D low
        digitalWrite(motor1Pin2, HIGH); // set pin 7 on L293D high
    }
    // if the switch is low, motor will turn in the opposite direction:
    else{
        digitalWrite(motor1Pin1, HIGH); // set pin 2 on L293D high
        digitalWrite(motor1Pin2, LOW); // set pin 7 on L293D low
    }
    }
else {
      digitalWrite(enablePin,LOW);
    }
}

Scusami se ti chiedo di fare un controllo banale ma a volte proprio le banalità sfuggono... i 4 piedini del pulsante sono accoppiati a due a due... sei sicuro di non usare due piedini della stessa coppia? Perchè in quel caso il collegamento sarebbe diretto... Se hai un multimetro prova con quello, altrimenti estrai il pulsante lo ruoti di 90° e lo rimtti nei soliti buchi della breadboard...

ciao.

quando ho usato l'L293 avevo collegato l'enable direttamente a +5 volts (non controllato da arduino) e avevo messo delle resistenze di pulldown (10k)ai pin 2 e 7 del driver.

p.s.
le resistenze di pull-down dei pulsanti sono da 220 ohm??? (spero di no)

ciao
pippo72

Innanzitutto Grazie a tutti per le risposte. Il bottone è inserito correttamente , ho ricontrollato apposta. Le pull-down sui bottoni sono da 1 kOhm..mi scuso per aver inserito quelle sbagliate sullo schema fritzing..Stasera proverò a mettere due pull dowm sugli input del drive e vi faccio sapere. Speriamo :smiley: P.S. Secondo voi come mai staccando il pin da enable il motore continua a girare?

prova a mettere anche li una resistenza di pull-down :slight_smile:

Niente da fare. Provato a mettere le resitenze pull-down da 10 kOhm sui pin di input e sul pin enable. Niente..tutto come prima. MI sto convincendo sempre di più che il mio driver sia difettoso. Sempre che non ci sia qualche errore concettuale nel codice. Qualcuno gli ha dato uno sguardo?

Grazie a tutti per l'interessamento.

alcune domande:

-ma i 2 diodi messi nell schema a cosa servono? (nel senso che non credo servano)
-a che tensione alimenti il motore? (deve essere maggiore di V1 ovvero di 5 volts)

VitaDaBar:
MI sto convincendo sempre di più che il mio driver sia difettoso.

prova a far funzionare il driver senza arduino:
enable +5 volts,V2 a batterie, collega tutte le masse, pin di input a gnd. Se il motore gira..... =(
altrimenti verifica i collegamenti e le resistenze di pull-down.

ciao
pippo72