blocco della comunicazione seriale e del serial monitor.[risolto]

Buonasera a tutti:sono nuovo del forum e sono alle prese con arduino da qualche mese, purtroppo non sono un esperto di elettronica anche se possiedo qualche nozione basilare di elettrotecnica il che mi permettere di conoscere il funzionamento dei componenti fondamentali(diodi,transistor ecc…).
Per il momento mi sto dilettando nell’accendere motori elettrici per poter,un domani, costruire un piccolo robot.
arduino è comandato da questo sketch:.

void setup(){pinMode(12,OUTPUT);pinMode(8,OUTPUT);
pinMode(4,OUTPUT);
Serial.begin(9600);}
void loop(){
int i;
if(Serial.available()){
i=Serial.read();
if(i==49){digitalWrite(8,LOW);digitalWrite(12,HIGH);// inserendo il valore 1 si accende il pin 12
digitalWrite(4,HIGH);delay(10);}
else if(i==50){digitalWrite(8,HIGH);digitalWrite(12,LOW);// inserendo il valore 2 si accende il pin 8
digitalWrite(4,HIGH);delay(10);}
else{digitalWrite(8,LOW);digitalWrite(12,LOW);// inserendo un altro valore si spengono entrambi
digitalWrite(4,LOW);delay(10);}
Serial.print(i);//serial print per controllo
}}
/* il pin 8 e 12 sono collegati a due resistenze diverse(150 e 330
ohm) affinche il led interno el fotoaccoppiatore si accenda più o 
meno*/

In un primo momento ho provato a comandare il transistor direttamente(schema:controllo motore transistor in allegato) con i pin di arduino ma mi si prensentava il problema che dopo aver inserito nel monitor seriale diversi valori (ad es. 1;2;2;1) il collegamento seriale si bloccava completamente: mi era impossibile mandare ulteriori valori ad arduino e la finestra del monitor seriale rimaneva aperta finchè non la chiudevo con ctr-alt-canc:in poche parole mi si piantava tutto il collegamento seriale.
Pensando che il problema fosse riconducibile a qualche cortocircuito ho inserito il fotoaccoppiatore staccando elettricamente il circuito di arduino da quello del motore(schema controllo motore fotoacc transistor in allegato), tuttavia il problema persiste ancora:il collegamento seriale si pianta dopo che inserisco qualche valore.
la cosa più strana è che finchè la batteria 6V è scollegata dal circuito posso liberamente dare valori al monitor senza alcun problema(ovviamente il motore non gira), ma appena attacco la batteria posso dare al massimo un paio di valori e poi tutto si blocca.
vorrei avere un consiglio da chi è esperto più di me per capire dove possa essere il problema
vi ringrazio della disponibilità e mi scuso per la lunghezza della domanda

per chiarezza vi do anche un piccolo commento del secondo schema:
Inserendo nel serial monitor il valore 1 o 2 accendo il pin 8 o il 12.entrambi sono collegati al fotoaccoppiatore 4N35, a seconda che sia in funzione l’uno o l’altro pin arriva al led del fotoacc. più o meno corrente poichè collegati a resistenze diverse(150 e 330 ohm).
il collettore del fotoaccoppiatore è collegato al polo positivo +6V di una batteria,grazie ad una resistenza di 150 ohm,mentre l’emettitore arriva alla base di un ulteriore transistor(BC547).
quest’ultimo transistor ha il collettore al +6V della batteria e l’emettitore collegato ad un motore che dovrei alimentare con una corrente compresa tra 0,2 e 1 ampère.

Ringrazio chiunque mi aiuti a risolvere il problema.Spero di essere stato chiaro :smiley:

controllo motore_transistor.pdf (898 KB)

controllo motore_fotoacc_transistor.pdf (951 KB)

Scusate: il modello che possiedo è un arduino UNO rev 3. il motore è un semplice DC se necessario vi posto ulteriori dati.

Inverti transistor e motore (usa il bc547 a emettitore comune) e metti un diodo tra il collettore e il positivo (quindi tra i due pin del motore con il catodo verso +). Prova poi a mettere 3 condensatori da 100nF sul motore per evitare disturbi, due collegati ai pin e al corpo metallico e uno tra i due pin stessi.
Prova così e vedi se ci sono ancora problemi controllando magari anche con un tester.

Grazie 1000, ho risolto! ho provveduto a saldare i condensatori come mi hai hai consigliato; ho anche provato a spostare il motore ma non ho ottenuto i risultati sperati cosi ho messo il motore con un pin all’emettitore e l’altro al - della batteria. La base del transistor è comandata dal pin 8 o 12 a seconda della velocità necessaria
e al collettore ho messo il + della batteria.
Funziona tutto perfettamente e per questo ti ringrazio molto: in pratica i condensatori hanno risolto il problema, ho provveduto inoltre ad attivare un altro pin di arduino con una bassa resistenza che si attiva per 30 millisecondi e collegato alla base da al motore lo spunto iniziale per farlo partire.

Il tuo consiglio è stato risolutivo!

P.S. purtroppo non conosco bene le regole del forum devo scrivere risolto sul titolo?

Ricordati del diodo che non fa mai male. Se hai risolto sì, cambia il titolo.

Ciao, per cambiare il titolo della discussione devi modificare il primo post del topic. Le modifiche a quelli successivi non modificano infatti il titolo che compare nelle sezioni.

Per il regolamento vedi qui --> http://forum.arduino.cc/index.php?topic=149082.0 Sopratutto i unti 7, 8 e 9 che spiegano il funzionamento e altre cose utili. Ti consiglio inoltre di dare un occhi ai Megatopic e in particolare a questo --> http://forum.arduino.cc/index.php?topic=146152.0 (Le schede sono liberamente scaricabili dal sito di Pighixxx) e questo --> http://forum.arduino.cc/index.php?topic=126861.0

Benvenuto.