Aiuto!! Funzionamento motore 12v con inversione di marcia

Lo alimento con un alimentatore da 12v 1,66A.

Allora mettine uno più grosso, 10µF non gli fanno nemmeno "vento" -

Tu Cosa mi consigli?

Se vuoi controllare da casa quello che succede in serra, un modulo Rtx tipo l' HC-12.
Costa poco e 70 mt li fà tranquillamente ( io ne ho montati un paio a 500mt )

Altrimenti GSM ( SIM800L o SIM900 ) , ma si và sul complicato

Più che controllare da casa mi interessa visualizzarlo per esempio su una pagina web visto che sono quasi tutto il giorno a lavoro, mi basterebbe una scritta che mi dice ad esempio : alle ore xx;xx stato sistema OK o simile purché capisco che il carrello si è mosso e non è rimasto fermo.. All'entrata del modulo l298 un ceramico da 100uf vanno bene visto che dici uno da 10 non fanno neanche vento?

Ho modificato la foto per farti capire se i condensatori sono giusti uno al motore ed uno all'entrata del modulo

Io dicevo di inviare i dati a casa, visto che è vicina, e poi da lì fai quello che vuoi.
Altrimenti dovresti con il modulo GSM inviare degli SMS, oppure con un modulo GPRS collegarti ad internet.
( In tutti e due i casi è abbastanza costosa la SIM )
Ma io non ho mai usato il GPRS e quindi non ti so dire molto al riguardo

La cosa più semplice, a mio modo di vedere, è di collegarti con un'altro Arduino ( o un PC ) a casa, visto che è vicina
In pratica è come se tu avessi un Arduino ( quello che controlla il motore ) collegato via cavo ( il modulo HC-12 )
con un'altro Arduino ( quello in casa ) in cui hai la tua shield Ethernet ( o l' ESP8266 ) in cui fai girare un WebServer, o ti ci colleghi con quello che ti pare-
Io ad esempio ho usato Telegram per far tenere sott'occhio dei dati di una serra ( una di quelle in cui ho messo un HC-12 che ti dicevo prima ) e l'utente ha un report periodico dello stato dei vari sensori , oppure può interagire richiedendoli o modificandoli a piacimento direttamente dallo smartphone.
E questo lo puoi fare con Telegram o qualsiasi servizio MQTT

Per il condensatore, 100µF sono meglio di niente, però montalo direttamente sui connettori del 12V di ingresso del L298

cicciozuc:
Ho modificato la foto per farti capire se i condensatori sono giusti uno al motore ed uno all'entrata del modulo

No, il condensatore sul motore deve essere un ceramico da 10nF ( 0.001µF , 10.000 pF ) e serve per togliere un minimo di disturbi

Buongiorno a tutti, chiedo un'informazione : Devo alimentare 2 schede Arduino con una batteria al piombo da 12v 7.0Ah collegata ad un circuito con relè con gestione ricarica automatica link https://m.ebay.it/itm/Circuito-con-rele-per-gestione-carica-batteria-al-piombo-12V-automatico-/263455601705 , La batteria posso collegarla direttamente alle 2 schede o devo ridurre tensione o Ampère? Devo mettere un diodo o che cosa?

Mi rispondo da solo : Leggendo il post di Marco99 riguardo il post Alimentazione Arduino ho letto la risposta di gpb01 dicendo che anche 100Amp vanno bene, non devo alimentare led ma 2 schede Arduino una con un modulo l298 ed una con un modulo relè...

cicciozuc:
... ho letto la risposta di gpb01 dicendo che anche 100Amp vanno bene ...

Ma hai capito perchè?

Quando si dice che un alimentatore è da 12V 10A, significa che esso è in grado di fornire, ad una tensione di 12V, un MASSIMO di 10 A ... ma che, ovviamente, fornisce solo quelli che il carico collegato realmente assorbe. :wink:

Guglielmo

Avevo gia capito quello che dici,alla fine ho una batteria 12v 0.7Amp che per i due Arduino e i moduli va bene visto che poi la batt si ricarica da sola, io volevo sapere se era opportuno montare dei diodi o qualcos'altro ma ho capito che non c'è bisogno...grazie comunque

Ho trovato questo circuito su un motore 12v montato su una macchina giocattolo per bambini il cui funzionamento era andare avanti e retromarcia, posso applicarlo al mio motore 12v al posto del condensatore da 10 NF? Allego foto del circuito e del motore collegato al modulo l298

Scusate,problemi dimensione foto

while (stato_fc != 0 ) {
  int lettura = analogRead(A1);
  velocita=map(lettura,0,1023,100,255); 
  analogWrite (enA, velocita);

Funziona benissimo, interagisce nel momento in cui uso il potenziometro.. Che dire Grazie grazie grazie...

Però mi capita di bruciare il fusibile che ho messo nel positivo dell'alimentatore che entra nel l298 per il motore,mi succede quando agisco sul finecorsa che inverte la rotazione, ho messo questo fusibile(1A) dopo che ho bruciato il primo modulo l298 sempre per lo stesso problema.. Il motore assorbe max 1, 1.2A di picco o sforzo ma poi si stabilizza a 0.5A...Non capisco il motivo.
Se qualcuno ha un'idea fatemi sapere

Prova a mettere una pausa dopo ogni motor_stop

1 Like

Controlla se ho fatto giusto soprattutto alla fine del loop che già c'è un delay

#define enA 11
#define in1 10
#define in2 9
#define fcS 13    //Finecorsa Sinistro ( posizione di reset iniziale )
#define fcD 12    //Finecorsa Destro
#define pin_sensore A0
byte stato_fc =  1 ;
byte velocita = 128 ; // Velocita motore 0-255

void motore_avanti() {
  analogWrite ( enA, velocita );
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
}

void motore_indietro() {
  analogWrite ( enA, velocita );
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
}

void motore_stop() {
  analogWrite ( enA, 0 );
  digitalWrite(in1, HIGH);
  digitalWrite(in2, HIGH);
}

void reset_motore() {
  while (digitalRead(fcS) == HIGH)  { // legge finecorsa sinistro
    motore_indietro(); // avvia motore indietro fino alla posizione iniziale
  }
  motore_stop();
    delay(1000);
}

void setup() {
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(fcS, INPUT_PULLUP);
  pinMode(fcD, INPUT_PULLUP);
  pinMode(pin_sensore, INPUT_PULLUP);
  reset_motore();   // Motore si mette in posizione di start
}

void loop() {
  if (digitalRead(pin_sensore) == 0 ) { // attende lo start
    delay(100);
    stato_fc = 1 ;
    motore_avanti() ;
    while (stato_fc != 0 ) {
            int lettura = analogRead(A1);
  velocita=map(lettura,0,1023,100,255); 
  analogWrite (enA, velocita);
      if (digitalRead(fcD) == 0 )   {
        motore_stop();
                delay(1000);
        stato_fc = 0 ;
      }
    }
    delay(100);
    stato_fc = 1 ;
    motore_indietro() ;
    while (stato_fc != 0 ) {
      if (digitalRead(fcS) == 0 )   {
        motore_stop();
        delay(1000);
        stato_fc = 0 ;
      }
    }
    delay(100);
  }

}// fine loop

Ti succede perche' probabilmente tenti di invertire di colpo la rotazione ... il che causa un picco di assorbimento che e' piu alto della corrente "di stallo" del motore (cioe', della corrente che il motore assorbe quando viene bloccato meccanicamente) ... se ad esempio il tuo motore fosse da 1A, con corrente di stallo di 5A, invertirlo di colpo potrebbe farti arrivare il picco di assorbimento anche ad 8 o 10 A ... di solito, per evitarlo, si mettono sempre delle pause, in modo che il motore possa rallentare o fermarsi per effetto della resistenza meccanica, oppure si usa un circuito di frenatura per fermare il motore prima dell'inversione (una banale resistenza di potenza di basso valore che viene collegata ai capi del motore per un momento, prima di ridare tensione con polarita' opposta, di solito), oppure si usano delle rampe di accelerazione e decelerazione ... dipende dall'utilizzo, dal tipo di azionamento e dalle potenze in gioco ...

Buongiorno.
Avete ragione i delay sono fondamentali infatti dopo tante prove non riscontro il problema.

Vi allego una foto della centralina quasi finita,presto ci farò vedere un video del sistema in funzione..Grazie per i vostri suggerimenti.

Buongiorno a tutto il forum,vi prego di leggere fino alla fine.
Oggi vi posto un problema che riscontro in questo progetto con sistema l298n.. Come da titolo e detto anche in post precedenti questo progetto fa muovere un carrello su rotaie tramite una fune avvolta in un avvolgitore collegato ad un motore 12v e prevede una direzione avanti e indietro tramite finecorsa,fino a qui tutto OK.

Nei vari test che ho fatto funziona bene ma capita più volte che il motore parte e dopo pochi giri (qualche secondo) si ferma senza completare il suo ciclo, e questo per me è grave perché quando il relè aziona il contatto per avviare il motore (ho messo 500 millisecondi per dare solo lo start) un altro relè aziona la pompa dell'acqua e se il motore si ferma rischio di far seccare la terra alle giovane piantine..

In entrata del ponte-h ho messo una alimentatore da 12,86v 1,66A con un condensatore da 470nf e nel motore uno da 10nf, all'uscita con motore avviato mi dà un calo di 2v (9,5 - 10v) assorbendo un max di 1,3 A.. In entrata del modulo ho messo un fusibile da 2,5A perché avevo questo disponibile ma cercherò di metterne uno da 1,5A... L298n funziona con la tensione del motore con il jumper della logica inserito..

Vi posto di nuovo lo sketch che ho messo anche nei post precedenti..
Spero che qualcuno sa il motivo di questo problema..
Grazie sempre

#define enA 11 
#define in1 10
#define in2 9
#define fcS 13    //Finecorsa Sinistro ( posizione di reset iniziale )
#define fcD 12    //Finecorsa Destro ( inverte il motore )
#define pin_sensore A0
byte stato_fc =  1 ;
byte velocita = 128 ; // Velocita motore 0-255

void motore_avanti() {
  analogWrite ( enA, velocita );
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
}

void motore_indietro() {
  analogWrite ( enA, velocita );
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
}

void motore_stop() {
  analogWrite ( enA, 0 );
  digitalWrite(in1, HIGH);
  digitalWrite(in2, HIGH);
}

void reset_motore() {
  while (digitalRead(fcS) == HIGH)  { // legge finecorsa sinistro
    motore_indietro(); // avvia motore indietro fino alla posizione iniziale
  }
  motore_stop();
    delay(1000);
}

void setup() {
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(fcS, INPUT_PULLUP);
  pinMode(fcD, INPUT_PULLUP);
  pinMode(pin_sensore, INPUT_PULLUP);
  reset_motore();   // Motore si mette in posizione di start
}

void loop() {
  if (digitalRead(pin_sensore) == 0 ) { // attende lo start
    delay(100);
    stato_fc = 1 ;
    motore_avanti() ;
    while (stato_fc != 0 ) {
    int lettura = analogRead(A1); // Potenziometro
  velocita=map(lettura,0,1023,100,255); 
  analogWrite (enA, velocita);
      if (digitalRead(fcD) == 0 )   {
        motore_stop();
                delay(1000);
        stato_fc = 0 ;
      }
    }
    delay(100);
    stato_fc = 1 ;
    motore_indietro() ;
    while (stato_fc != 0 ) {
      if (digitalRead(fcS) == 0 )   {
        motore_stop();
        delay(1000);
        stato_fc = 0 ;
      }
    }
    delay(100);
  }

}// fine loop

Ho fatto molte prove cambiando il modulo l298n e anche Arduino ma niente..... i problemi sono all'avvio e anche quando inverte la rotazione.
Però ho risolto cambiando sistema
Ho sostituito l298 con un modulo relè (vedi post pag 2 n.21) e dalle prove funziona benissimo...riesco ad avere la tensione giusta senza perdite(ringrazio sempre brunello22 per lo sketch)...

Ma se vorrei mettere un potenziometro come faccio?
Perché sul modulo relè non posso applicarlo e direttamente sul motore penso neanche perché inverte la tensione e non funzionerebbe...

Sapete consigliarmi un metodo come applicare un potenziometro??

i problemi sono all'avvio e anche quando inverte la rotazione.

Questo a che velocità succede ?
Quando sei quasi al minimo o anche al massimo ?

Sapete consigliarmi un metodo come applicare un potenziometro??

A parte dare meno tensione ( e non si risolve con un semplice potenziometro ) non vedo altri sistemi semplici

@brunello Ciao.

Adesso uso i relè e quindi la velocità è sempre costante (+- 12v) ma capita anche con i relè questi problemi:

1: motore fermo(posizione iniziale) inizia lo start, motore parte e dopo pochi giri ritorna indietro e si ferma, avvolte capita che riparte di nuovo senza lo start

2: motore parte, arriva a finecorsa destro e si ferma, il led del relè in2 si accende e si spegne subito e quindi ferma il motore con finecorsa in posizione di contatto.

Quando inverte la rotazione ho messo una pausa di 2sec.
Ho controllato più e più volte i collegamenti ed è tutto OK.

Per il potenziometro hai ragione posso ridurre la tensione non ci avevo pensato,uso un convertitore DC/DC regolabile e quindi posso farlo..