Display LCD mostra caratteri strani dopo stallo del motore

Salve a tutti, il mio circuito è composto da un motoriduttore 12V collegato ad un MotorShield MD 10 e a corrente domestica per mezzo di un trasformatore. Arduino Uno è collegato al motorShield; a quest'ultimo è collegato un keypad 3x4 e un classico LCD 16x2 (gestendo per mezzo di un potenziometro il contrasto, VCC a 5V e retroilluminazione a 3,3V entrambe collegate a masse distinte).

Il problema sussiste quando il motore entra in stallo anche solo per meno di un secondo: l'LCD mostra caratteri strani e torna a funzionare normalmente dopo aver scollegato e ricollegato Arduino dall'USB.

Ho cercato in molti topic e ciò che ho trovato riguardava interferenze elettromagnetiche che penso di aver risolto distinguendo la massa della retroilluminazione da quella dell'LCD (prima le avevo in comune e mi dava problemi quando collegavo il motore alla corrente esterna).

Purtroppo sono a digiuno di elettronica (non me ne vogliate :confused: ) e l'unico modo che mi viene in mente per risolvere questo problema è di inserire un condensatore. Dove, in che modo e da quanti farad? Non ne ho la più pallida idea... :o

Pertanto vi chiedo se potreste aiutarmi a capire come poter risolvere questo problema. Grazie anticipatamente a tutti! :slight_smile:

Un motore in stallo tira molta corrente e percui la tensione si abbassa. Essendo fermo non emette disturbi elettromagnetici causato dalla comutazione durante la rotazione.
Dalla Tua descrizione mi sembra che il motore viene aliemntato con un alimentazione diversa da quella di Arduino.
Comunque fai qualche foto e uno schizzo anche a mano del circuito.

Ciao Uwe

uwefed:
Un motore in stallo tira molta corrente e percui la tensione si abbassa. Essendo fermo non emette disturbi elettromagnetici causato dalla comutazione durante la rotazione.
Dalla Tua descrizione mi sembra che il motore viene aliemntato con un alimentazione diversa da quella di Arduino.
Comunque fai qualche foto e uno schizzo anche a mano del circuito.

Ciao Uwe

Esattamente, proprio così. Arduino lo alimento con l'usb del pc mentre il motore viene alimentato a 12V per mezzo di un trasformatore.
Ti allego l'immagine...grazie mille per la risposta tempestiva!

Non mi torna il fatto che la retroilluminazione la alimenti con i 3.3V di Arduino.

Il massimo che puoi ricavare sono 100mA quindi non è una buona cosa.

Che assorbimento ha il motore? Quanta corrente eroga l'alimentatore a 12V?

Dove hai ponticellato i Jumper su DIR e PWM.

Sullo schema manca la massa sul display (ponticello nero sulla breadboard). È un errore dello schema o del circuito?
Eviterei di usard D0 per la tastiera.

Eviterei anche di alimentare la retroilluminazione direttamente dai 3,3V senza resistenza.

Ciao Uwe

uwefed:
Dove hai ponticellato i Jumper su DIR e PWM.

Scusami ma forse non ho capito bene la domanda.. ma mi pare di non aver ponticellato alcun jumper su DIR e PWM ::slight_smile:

uwefed:
Sullo schema manca la massa sul display (ponticello nero sulla breadboard). È un errore dello schema o del circuito?

Si assolutamente un errore dello schema, riporto di seguito lo schema corretto.

uwefed:
Eviterei di usard D0 per la tastiera.

Ti ringrazio della precisazione, hai ragione essendo quello il pin RX sarebbe cosa buona evitarlo.

uwefed:
Eviterei anche di alimentare la retroilluminazione direttamente dai 3,3V senza resistenza.

cyberhs:
Non mi torna il fatto che la retroilluminazione la alimenti con i 3.3V di Arduino.

Il massimo che puoi ricavare sono 100mA quindi non è una buona cosa.

Quindi potrei provare ad alimentare la retroilluminazione a 5V con un resistore da 330 ohm collegata a GND, giusto? Dite che potrebbe risolvermi definitivamente il problema?

cyberhs:
Che assorbimento ha il motore? Quanta corrente eroga l'alimentatore a 12V?

Alimentatore: 1500mA.
Motore: 300mA a vuoto e 5000mA in stallo.

P.S. Vi ringrazio ancora per i preziosi consigli e mi scuso se sono stato lento nel rispondervi ma per tutta la giornata di ieri non ho potuto collegarmi ad alcun dispositivo :frowning:

Sì, ti conviene alimentare la retroilluminazione con i 5V ed un resistore di caduta sufficiente per la corrente richiesta (dipende dalle caratteristiche dell'LCD).

Se i LED sono bianchi la tensione dovrebbe essere 3V quindi la caduta di tensione deve essere 2V: a 100mA il resistore deve essere 20 ohm, 10 ohm se i LED assorbono 200mA.

5A in stallo sono davvero tanti, anche se il dimensionamento dell'alimentatore è corretto (5 volte l'assorbimento di targa avrebbe dovuto essere sufficiente).

A questo punto bisogna evitare lo stallo del motore, magari con dei finecorsa.

Pet0:
Scusami ma forse non ho capito bene la domanda.. ma mi pare di non aver ponticellato alcun jumper su DIR e PWM ::slight_smile:

Devono esserci 2 ponticelli senó non funziona.
Ciao Uwe.

cyberhs:
Sì, ti conviene alimentare la retroilluminazione con i 5V ed un resistore di caduta sufficiente per la corrente richiesta (dipende dalle caratteristiche dell'LCD).

Se i LED sono bianchi la tensione dovrebbe essere 3V quindi la caduta di tensione deve essere 2V: a 100mA il resistore deve essere 20 ohm, 10 ohm se i LED assorbono 200mA.

5A in stallo sono davvero tanti, anche se il dimensionamento dell'alimentatore è corretto (5 volte l'assorbimento di targa avrebbe dovuto essere sufficiente).

A questo punto bisogna evitare lo stallo del motore, magari con dei finecorsa.

Facciamo così, provo ad aggiungere il corretto resistore al led. Se comunque da problemi torno qui e vi faccio sapere, viceversa torno comunque qui per dirvi che ho risolto :smiley:
Per i finecorsa devo ben vedere come funzionano, ma se potessi utilizzare qualche altro modo per moderare la corrente in stallo o non farla arrivare all'lcd (alimentatore esterno?) sarebbe sicuramente meglio!

uwefed:
Devono esserci 2 ponticelli senó non funziona.
Ciao Uwe.

Purtroppo non capisco a cosa ti riferisci :frowning: Perdonami l'ignoranza!

SHIELD-MD10 User's_Manual - Google Docs a pagina 4
vedi la scheda e i 2 ponticelli sotto.
Sulla scheda ci sono 2 aree di contatti denominati PWM e DIR con segnalati dei Pin. Qua si scelgono i 2 pin che si vogliono usare er pilotare la velocitá e la direzione del motore. Nella immagine in basso a pagina 9 i ponticelli sono inseriti in posizione D3 e D2.

Come gli hai inseriti Tu?
Ciao Uwe

uwefed:
SHIELD-MD10 User's_Manual - Google Docs a pagina 4
vedi la scheda e i 2 ponticelli sotto.
Sulla scheda ci sono 2 aree di contatti denominati PWM e DIR con segnalati dei Pin. Qua si scelgono i 2 pin che si vogliono usare er pilotare la velocitá e la direzione del motore. Nella immagine in basso a pagina 9 i ponticelli sono inseriti in posizione D3 e D2.

Come gli hai inseriti Tu?
Ciao Uwe

Ah scusami! Ora ho capito! :smiley:
No non il ho usati poichè c'è scritto "User may select D3, D5, D6, D9..." e più avanti leggendo "Select the pins for PWM and DIR. The default PWM pin is set to D3 while the DIR pin is set to D2. However, other pins may be selected if these pins are already used by other application." ho capito che per il momento sarebbe bastato inizializzare sul programma i pin digitali 2 e 3 affinchè funzionasse (infatti il motore funziona senza alcun problema).