Arduino e la "pulizia" della sua alimentazione

Ciao a tutti,
non trovando più il topic in cui avevo un problema che ho risolto ho deciso di scrivere qui.
In applicazioni motoristiche particolari, in cui si gestisce il comando della scintilla generata dalla candela occorre necessariamente che il micro sia il più isolato possibile da possibili disturbi derivanti dall'alimentazione.
In tale applicazione la scintilla generata dalla candela irradia dalla bobina di accensione stessa uno spettro di frequenze interferenti che si accoppiano col circuito in esame via etere ( e qui basta una buona schermatura per evitare ciò); ma come impedire che la corrente impulsiva di ritorno sulla massa (tramite il telaio del motore collegato al polo negativo della batteria di alimentazione) entri nella massa del circuito digitale?

Come tutti credono e come io credevo, il regolatore di tensione sull'alimentazione dell'arduino uno dovrebbe bastare a stabilizzare la tensione ed a realizzare un buon filtro (per chi non lo sapesse si comporta anche da filtro per la tensione): in realtà la tensione viene stabilizzata ma non realizza un buon filtro e quindi prima di capire il perchè di strani fenomeni ci si sbatte la testa come ho fatto io, fino a rompersela.

La soluzione che ho trovato efficacie è stata quella solita di introdurre un regolatore di tensione a monte di quello integrato su arduino uno, un 7809: questo già applica un buon filtraggio, ma condivide il terminale comune con la massa di tutto il circuito: in questo caso sarebbe meglio tenere separata la massa digitale (arduino) da quella analogica (parte di potenza e ritorno della scintilla).
Per fare ciò quindi ho introdotto un filtro di modo comune (doppio induttore avvolto su un nucleo toroidale) all'uscita del 7809, con un condensatore alla sua porta d'ingresso da 470nF e alla sua porta di uscita da 1uF più uno elettrolitico in parallelo da 47uF.
Questo filtro serve ad eliminare la componente di disturbo che si presenta su entrambi i conduttori ( uscita + 7809 e gnd) ed inoltre crea una separazione tra le masse analogiche e digitali in quanto tra loro vi è ora presente una induttanza che blocca le componenti di disturbo a frequenza elevata (dovute alla scintilla che è un impulso nel tempo) e lascia passare la componente continua.

In questo modo ho evitato i continui reset del micro e i comportamenti strani che aveva.

Spero che sia utile a qualcuno, per evitare di rompere ancora altre teste :smiley:

Potrebbe essere la soluzione al problema mio e di Pietro78...io mi trovo a lavorare con un gruppo elettrogeno da 30Kw...e ci sto impazzendo :slight_smile:

Puoi darmi qualche info in più sul filtro?!

Spiega meglio il tuo problema, magari la mia soluzione non basta nel tuo caso e si può eventualmente vedere di disaccoppiare ancora di più la massa di arduino.
Facci sapere

ekjk:
Ciao a tutti,
non trovando più il topic in cui avevo un problema che ho risolto ho deciso di scrivere qui.

I tuoi vecchi post sono qui: Arduino Forum
Alcuni sono nella vecchia sezione per cui non è possibile scriverci. Puoi chiedere ad un Moderatore di spostarlo.

liso:
Potrebbe essere la soluzione al problema mio e di Pietro78...io mi trovo a lavorare con un gruppo elettrogeno da 30Kw...e ci sto impazzendo :slight_smile:

Puoi darmi qualche info in più sul filtro?!

mi associo alla richiesta, è possibile avere qualche info in più? non ho capito perfettamente come fare questo filtro e cercando in rete non ho trovato info utili

Ciao, bisogna conoscere un pò di specifiche. Io avevo disturbi ad alta frequenza, nel vostro caso cosa alimentate/comandate?

Perchè in base al disturbo si ricava circa la frequenza di taglio del filtro.

Vi propongo questo filtro che taglia molto in basso (380Hz c'è la ft) e disaccoppia le masse tramite l'induttore.
Le due induttanze devono essere avvolte sullo stesso nucleo.

anche io ho in mente diversi progetti su un motore e dalle prime prove subito notato che per il mezzo millisecondo in c`é la scintilla arrivano distrurbi in ogni punto del circuito

Metto un disegnino per avere la conferma di aver capito bene il circuito

Esatto lo schema è proprio questo.
Inoltre consiglio di schermare tutto il circuito arduino con del nastro adesivo di alluminio collegato alla massa di arduino (ovviamente quella dopo il filtro).
In queste applicazioni i disturbi derivanti dalle interferenze generate dalla scintilla sono di elevata entità.

Se uno vuole esagerare può disaccoppiare anche il comune del 7809 con un altro induttore facente parte di una altro filtro di modo comune.
Ecco lo schema

La frequenza di taglio scende sui 70Hz.

Inoltre tutti i componenti devono essere saldati il più vicino possibile tra loro e vicini al micro.

grazie mille, penso che mi sarà utilissimo, spero di potere iniziare presto a sperimentare

Bene, invito tutti coloro che vogliono sperimentare questa soluzione a farlo e a dire le proprie impressioni.

ekjk:
Bene, invito tutti coloro che vogliono sperimentare questa soluzione a farlo e a dire le proprie impressioni.

Se per i filtri passa-basso trovare la combinazione R-C è facile, ti chiedo: con che criterio hai scelto gli induttori?
Il valore di 220 uH è "generico" oppure il risultato di un qualche calcolo o considerazione?
Te lo chiedo non essendo molto esperto in fatto di elettronica :sweat_smile:

spero di non andare troppo ot ma mi é venuta in mente un`altra domanda

Ho letto in un`altro topic che utilizzi un sensore ottico, come mai non utilizzi il pick-up di serie?
Mi pare di ricordare dalle prove che avevo fatto che il segnale era abbastanza pulito quindi utilizzabile, inoltre da a disposizione 2 segnali per giro che semplifica di molto il programma
Con un solo segnale il ritardo della scintilla non é influenzato troppo dal tempo che arduino impiega per eseguire il programma? Un grado dura solo 11micro secondi quindi si fà presto a sbagliare di alcuni gradi

Diciamo che il valore dell'induttanza è derivato direttamente dalla simulazione.
Si possono usare altri valori ma se lo si aumenta troppo gli effetti del secondo ordine del filtro si fanno sentire e salterà fuori un picco di risonanza sul ginocchio della curva.
Se i usano valori troppo bassi si aumenta la frequenza di taglio del filtro.
In questo caso gli induttori sono utilizzati avvolti sullo stesso nucleo come filtro di modo comune più che altro.
Ovviamente il nucleo deve avere una risposta in frequenza adatta al disturbo da filtrare, in genere consiglio toroidi in ferrite (alta frequenza) o quelli bianco gialli (materiale -26) che lavorano fino 1MHz.

Utilizzo un sensore ottico su un motore in cui l'accensione era a puntine (contatto meccanico) quindi non aveva il pick up.
Da un sensore "digitale" e soprattutto ottico non ho problemi di dover filtrare e pulire più di tanto la forma d'onda e lo posso posizionare dove voglio dato che è piccolo.
Inoltre il pick up è un sensore induttivo ed è piuttosto bastardo anche se guardando la forma d'onda con l'oscilloscopio (e a motore fermo) sembra bella e pulita.
Devi sapere che se ne usi uno a riluttanza variabile aumenta la propria ampiezza all'aumentare dei giri motore e ciò non è molto bello e ti costringe a pulire e limitare il segnale (utilizzo di componenti in più).
Inoltre devi considerare il fatto che generalmente i pick up hanno un polo caldo che va alla centralina e la'ltro è collegato direttamente al telaio motore: ciò comporta che se tu colleghi la massa digitale del tuo sistema al telaio motore (massa motore) per rilevare il segnale, dato che il segnale ha il proprio ritorno attraverso il telaio, ti porti dentro al micro tutti i disturbi derivanti dagli effetti induttivi del sensore più quelli della scintilla della candela.

Oltretutto il pick up non da fuori due segnali, ma solo uno che ha una parte positiva e una negativa e quella negativa non serve a nulla (nei sistemi cdi tradizionali) perchè è quella positiva che innesca l'scr dentro la bobina di accensione.

1 grado dura 11 us a 10000 rpm certo: a bassi regimi l'errore è minimo (0.1 gradi) e appena si applica un posticipo, quindi un delay del segnale, sapendo che il micro impiega 12us per rilevare l'interrupt e generare il segnale in uscita, compenso questo tempo sottraendolo al calcolo dei gradi di posticipo che deve generare.