aiuto mi impazzisce arduino

Ciao a tutti, mi chiamo Andrea e mi sono da poco iscritto al forum. Prima di tutto volevo farvi i complimenti perchè leggendo tra queste pagine ho imparato un sacco di cose nonostante io sia un bel pò negato con l'elettronica. Ho deciso di scrivervi perchè ho un problema con un progettino che voglio realizzare con arduino e spero possiate aiutarmi a capire come risolverlo; vi spiego di cosa si tratta sperando di non fare confusione. L'idea è quella di usare arduino per pilotare un elettromagnete a mantello che, da quello che mi è sembrato di capire, è molto simile ad un relè. L'elettromagnete che uso io, infatti, è costituito da una bobina al cui interno è libero di scorrere un pistone. Quando la bobina viene alimentata attrae a se il pistone che viene poi riportato nella posizione iniziale da una molla a compressione quando la bobina viene spenta. Quindi, sostanzialmente, il pistone fa indietro (bobina alimentata) e avanti (bobina spenta). Il mio intento è attaccare all'estemità del pistone che rimane sempre fuori dalla bobina, dei magneti permanenti in modo che questi attacchino un altro pezzo di metallo che cosi segue il movimento del pistone. Il dispositivo prevede anche un display lcd e dei pulsanti tramite i quali poter scegliere e visualizzare la frequenza e la durata dei cicli on\off dell'elettromagnete e anche il tempo trascorso. L'elettromagnete ha un consumo di 9W e una tensione di alimentazione di 24 V ma io penso di alimentarlo a 12, 15 o 18V, non ho ancora deciso bene quale delle tre, per evitare un eccessivo surriscaldamento della bobina. Veniamo al problema: una volta realizzato il circuito, del quale vi allego l'immagine (sperando che si veda), e scritto il programma l'ho testato con l'elettromagnete senza i magneti permanenti attaccati al pistone e tutto funziona perfettamente. Quando però attacco i magneti al pistone succede un pò di tutto. In particolare ho notato tre problemi:

  1. il display impazzisce: dopo un pò, a volte basta un minuto altre volte bisogna attendere più di mezz'ora, il display comincia a dare i numeri, ad esempio cominciano a scorre rapidissimi sullo schermo caratteri senza senso, oppure la retroilluminazione si spegne ed al posto dei caratteri si vedono solo quadrati neri (come se non avessi settato bene il potenziometro per il contrasto), altre volte scrive caratteri sullo schermo un po come gli pare.
  2. dopo un pò che va avanti l'elettromagnete non scatta più alla frequenza scelta ma a volte accellera altre volte rallenta, mi sono accorto di questo inconveniente perchè proprio come un relè quando scatta fa rumore. Inizialmente avevo pensato che potesse essere dovuto alle inerzie del sistema(la molla, il pezzo di ferro trattenuto dai magneti, ecc), così ho collegato un led ad un altro pin di arduino che viene acceso e spendo contemporaneamente all' elettromagnete e la stessa sorte capita anche al led, quindi è arduino che canna a fare il conteggio.
  3. quest'ultimo problema si verifica più di rado, a differenza dei primi due che si verificano sempre: a volte il programma si blocca, il display si spegne, o meglio si spegne la rettroilluminazione ma i caratteri sono ancora visibili però il tempo non scorre più; in pratica tutto rimane congelato ad un certo istante del ciclo. Tra l'altro ho notato che quando questo accade il led e l'elettromagnete sono sempre spenti.

Ora, nella mia sconfinata ignoranza in materia, ho pensato che una possibile causa del problema possa essere dovuta al fatto che i magneti permanenti magnetizzano il pistone e quando questo scorre in avanti e indietro all'interno della bobina genera delle correnti, o delle tensioni, indotte che danno fastidio. Vedendo gli schemi sui relè ho notato che si consiglia sempre di mettere un diodo in parallelo alla bobina però mi chiedo:

1)che diodo mi consigliate di mettere, va bene uno qualsiasi?
2)da quello che mi è parso di capire il diodo serve per proteggere il transistor però dati i sintomi a me il problema sembra più a carico di arduino che del transistor (infatti il display dà i numeri e arduino cicca nel contare la frequenza di on\off), quindi mi chiedevo se il diodo basta a risolvere il problema o sono necessari altri accorgimenti.

Spero di essermi spiegato bene e non aver fatto una confusione pazzesca :blush: e volevo quindi chiedervi se potevate gentilmente aiutarmi a risolvere questi problemi.

grazie mille

ciao Andrea

può essere che arduino subisca dell'interferenza elettromagnetica, a quanta distanza è posto l'arduino dall'elettromagnete?... prova a distanziarlo un pò e vediamo come va :wink:

l'elettromagnete è collegato al circuito da un cavo lungo 2 metri circa, dici che sono comunque pochi?

no, effettivamente son piu che sufficenti... credo, quanto è grosso l'elettromagnete?... è piccolino o ha dimensioni di qualche metro?

come fai a far scattare l'elettromagnete a una frequenza fissata? usi un interrupt o dal loop() con i milli()?
non vorrei che qualche libreria che stai usando sia buggata e crei questi casini

altra cosa l'alimentazione di elettromagnete lcd e roba varia sei sicuro sia abbastanza? fatti il calcolo di consumo in A...

l'elettromagnete è parallelepipedo di circa 6 cm di lunghezza e una base quadrata di 2cmx2cm all'interno del quale c'è la bobina, mentre il pistone che scorre all'interno in tutto sarà lungo 8 cm

allora per quanto riguarda interferenze elettromagnetiche credo nessun problema... :~

l'elettromagnete lo faccio scattare dal loop con i millis, ma non credo ci siano bug visto che se non ci metto i magneti permanenti gira tutto alla perfezione.
L'lcd lo alimento con il pin dei 5v di arduino e l'elettromagnete con un alimentatore esterno sul quale posso scegliere il valore delle tensioni (và da 12 a 24 V ad intervalli di 3V)ed eroga 1,5 A, sinceramente il calcolo del consumo in A non l'ho fatto ma se non erano sufficienti avrei dovuto avere problemi anche senza i magneti permanenti attaccati...credo

Ciao, leggiti il tuo romanzo da capo, forse noterai un certo affaticamento durante la lettura, già il colore grigio su bianco da fastidio in più scrivi senza creare dei paragrafi, ti assicuro che per me è faticoso.

Comunque.
Il circuito da te postato mi sembra corretto solo un'appunto, stacca l'emettitore del darlington, e collegalo direttamente al negativo della sorgente, poi controlla che la tensione della sorgente non scenda quando alimenti l'elettromagnete
Puoi anche usare una sorgente separata per alimentare l'elettromagnete, collegando inseime solo i negativi.

Se continua a dare segni di pazzia allora potrebbe trattarsi come detto di interferenza elettromagnetica.

Ciao.

quindi in pratica devo attaccare l'emettitore del transistor al gnd dell'alimentatore e non dell'arduino?

quindi in pratica devo attaccare l'emettitore del transistor al gnd dell'alimentatore e non dell'arduino?

Si, tuttavia io no so come sono stati fatti i collegamenti, presumo siano volanti, e alle volte capita di far confusione con i fili.

In genere quando ci sono circuiti alimentati da una stessa sorgente che hanno assorbimento molto diverso tra loro, si cerca di collegare i circuiti che assorbono di più direttamente alla sorgente, poi da questa si fanno partire altri due fili che alimentano i circuiti che assorbono meno e nelle vicinanze di essi si mette un condensatore.

Comunque se hai una sorgente indipendente con cui alimentare l'elettromagnete io la userei per vedere se il problema si ripresenta, considera che i disturmi elettromagnetici possono essere di tipo indotto (viaggiano nell'aria) e per risolvere basta allontanare la sorgente elettromagnetica che genere campo disturbante. Ma c'è anche un disturbo diciamo iniettato che è generato dal carico che viaggia sui fili.

Fai un pò di prove, e vediamo che esce fuori.

il segnale che arduino manda all'elettromagnete penso che si mangi pure luo qualche ampere..
comunque visto che sei in loop, pensavo potesse essere anche qualche problema nel codice.
Ma se dici che quando rimuovi i magneti tutto viaggia preciso... allora fari in modo da evitare un "riflusso di corrente" da parte dell'elettromagnete, magari con qualche condensatore, magari con qualche diodo

il diodo immagino di doverlo mettere in parallelo alla bobina, il condensatore invece dove lo collego?

Ciao hakra,

mandaci per favore una foto della elettrocalamita con la calamita applicata.

Sono arrivato tardi, mi fate dire anche qualcosa a me?

quindi in pratica devo attaccare l'emettitore del transistor al gnd dell'alimentatore e non dell'arduino?

il diodo immagino di doverlo mettere in parallelo alla bobina, il condensatore invece dove lo collego?

Cosí come colleghi le masse la corrente del elettocalamita passa attraverso tutto l'arduino. Come suggerisce MauroTec prendi l'alimentazione per il magnete subito dopo l' interruttore .

Aggiungi due condensatori da 220µF o 470µF, 35V in paralello ai condensatori che hai messo vicino al 7808.

Metti un diodo (va bene un 1n4007 o simile) in antiparalello all'elettrocalamita (catodo verso il +24V) é necessario!!!

Da quello che scrivi l' elettrocalamita é per 24V e 9W. Percui a 24V circolano 375mA col ferro interno nella posizione di elettrocalamita ecitata. Se il ferro resta nella posizione di riposo perché meccanicamente bloccato oppure rallentato dalle calamite applicate la corrente puó essere piú grande. Metti un pezzo di materiale non magnetico tra il ferro del elettrocalamita e la calamita applicata ( un pezzo di plastica o aluminio) distanziando la calamita ca 5 cm dalla bobbina.

Altra cosa ancora
aggiungi al diodo sul pin D11 una resistenza da 470 Ohm. senó metti in corto l' usciata dell' arduino!!!

Ciao Uwe

continuo:

  • Il transistore Q2 che accende la retroilluminazione:
    È meglio metterlo sul catodo della retroilluminazione mettendo il emettitore a massa e il collettore al catodo. la resistenza da 3,3Ohm puó restare sul anodo o la puoi anche spostare sul catodo.

  • non conosco il programma da te scritto.
    ci sono possibilitá che sembra impazzito snche see non hai fatto grossi errori visibilei: la cause possono essere:

  • la ram é piena; se usi tante variabili o array puoi non avere piu memoria ram libera e il controllo sovvrascrive aree giá occupate.
  • hai diciarato la grandezza di un array troppo piccolo e percui sovvrascrivi la variabile sucessiva involontariamente.

Se l' efetto della pazzia cambia col togliere della calamita penso che si possano escludere queste 2 possibilitá.
Ri-ciao Uwe

Aggiungi due condensatori da 220µF o 470µF, 35V in paralello ai condensatori che hai messo vicino al 7808.

Questi condensatori vanno in parallelo a C1, cioè all'ingresso del 7808.

Occhio a mettere condensatori di alta capacità dopo uno stabbilizzatore della serie 78xx, se proprio lo si deve fare si deve ricorrere a questo accorgimento:
1n4007
+-------|<----------+
in | +-----------+ | out
----+---| 78xx |---+-------
+-----------+

Questo evita che il condensatore in uscita risultando carico alimenti il 78xx al contrario.

Ciao.

ecco qui due foto dell'elettromagnete a mantello

perdonatemi ma c'è una cosa che non mi è chiara:
i due condensatori da 220µF devo metterli in parallelo sia al condensatore in ingresso che a quello in uscita dell' L7809 o tutti e due in parallelo al condensatore in ingresso?

ho modificato il disegno del circuito con i consigli che mi avete gentilmente dato, solo che mi è rimasto il dubbio di cui sopra.
Vi posto le due varianti così potete dirmi se ho fatto tutto giusto e quale delle due è corretta così domani mattina corro a comprare i componenti che mi mancano e li saldo sopra :slight_smile:

Arduino1.bmp (416 KB)

Arduino2.bmp (416 KB)

se l' unica differenza sono i condesnatori sullo stabilizzatori allora prendi il primo schema.
Ciao Uwe