BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Problema sensore rpm optoisolato (https://www.baronerosso.it/forum/circuiti-elettronici/385455-problema-sensore-rpm-optoisolato.html)

Minestrone 02 settembre 20 10:29

Problema sensore rpm optoisolato
 
1 Allegato/i
Mi serviva un sensore rpm per misurare i giri del motore in volo ed ho pensato di costruirlo con un optoisolatore che avevo in casa. L'optoisolatore è un 4n37.

Il semplice schema che ho usato lo vedete in allegato ed ed è montato su bread board, il firmware è openxsensor modificato in modo da inviare rpm e non Hz. In pratica il segnale in ingresso nel led è preso in parallelo dal cavetto che proviene dal sensore e passa per una resistenza da 470 Ohm. Dall'altro lato il segnale entra nel pin dell'arduino e c'è una resistenza di pull up da 1Mohm.

Il circuito sembrava funzionare ma il problema è che mi sono accorto che la lettura aumenta leggermente ma costantemente nel tempo. Ovviamente questo è inaccettabile perché dopo un volo di 5 minuti la lettura potrebbe essere sovrastimata di 200 o 300 rpm.

Per fare i test uso una centralina guasta che non fa più bene la scintilla ed ovviamente non è inserita nella pipetta del motore, il segnale lo genero sostituendo al sensore una scheda apposita che è questa:
https://hobbyking.com/en_us/gas-engi...en_us_products
Come detto il segnale viene letto ma ha una deriva costante verso l'alto.
Il problema non è sulla scheda che genera il segnale perchè se stacco l'accrocchio e inserisco un normale tachimetro a led la lettura è perfettamente stabile.
Se stacco l'accrocchio e lo inserisco, la lettura torna al valore corretto (o ci si avvicina) e poi ricomincia a salire. Sembrerebbe quasi che il problema sia una deriva termica.
Ho provato a spippolare un po' con filtri RC messi un po' qua e un po' là ma ho trovato in laboratorio un solo condensatore ceramico da 100 nanofarad e, mettendolo da qualsiasi parte con qualsiasi resistenza, la lettura impazziva e non migliorava nulla.
Come ultima cosa: tenendo collegati sia il tachimetro a led sia l'accrocchio la lettura dei rpm sulla radio impazzisce, scollegando il tachimetro si stabilizza.

Ora proverò a sostituire openxsensor con qualcosa scritto da me in modo da poter inserire dei filtri software passabasso ma ho preferito prima chiedere qui in modo da avere consigli da chi ne capisce più di me di elettronica.

PS: nello schema manca il diodo di protezione del led del fotoaccoppiatore

Minestrone 04 settembre 20 09:15

1 Allegato/i
Nessuno ha idea di come aiutarmi?

Nel frattempo ho cambiato lo schema inserendo un transistor tra il sensore ed il fotoaccoppiatore, mi sembra che le cose siano leggermente migliorate. Con il transistor riesco a far convivere il mio sensore ed il tachimetro assieme mentre prima non si riusciva. Il problema dei giri che variano tuttavia persiste.

Noto che quando faccio andare il sistema con il mio sensore e successivamente inserisco il tachimetro digitale, i giri diminuiscono ed i due lettori sono abbastanza in accordo. Credo che il tachimetro digitale abbia un filtro che, in parallelo al mio sensore, pulisce il segnale per entrambi.

In ogni modo mi sto convincendo che il problema risieda nella scheda di generazione degli impulsi più che nel mio accrocchio. Stasera proverò a generare gli impulsi con un arduino e poi non mi resta che provare in volo con leggera strizzatina degli zebedei.

CarloRoma63 04 settembre 20 14:24

Citazione:

Originalmente inviato da Minestrone (Messaggio 5204194)
Nessuno ha idea di come aiutarmi?

Nel frattempo ho cambiato lo schema inserendo un transistor tra il sensore ed il fotoaccoppiatore, mi sembra che le cose siano leggermente migliorate. Con il transistor riesco a far convivere il mio sensore ed il tachimetro assieme mentre prima non si riusciva. Il problema dei giri che variano tuttavia persiste.

Noto che quando faccio andare il sistema con il mio sensore e successivamente inserisco il tachimetro digitale, i giri diminuiscono ed i due lettori sono abbastanza in accordo. Credo che il tachimetro digitale abbia un filtro che, in parallelo al mio sensore, pulisce il segnale per entrambi.

In ogni modo mi sto convincendo che il problema risieda nella scheda di generazione degli impulsi più che nel mio accrocchio. Stasera proverò a generare gli impulsi con un arduino e poi non mi resta che provare in volo con leggera strizzatina degli zebedei.

Non è un pochino troppo alto il valore della R in serie al fotoaccoppiatore? In realtà, quella resistenza non servirebbe proprio. Se la porta di Arduino è in INPUT e ci scrivi un HIGH, attivi la resistenza di polarizzazione interna della porta in questione, che è attorno al Kilo Ohm (se ricordo bene)

Se hai un oscilloscopio, ti consiglio di verificare che gli impulsi che arrivano ad Arduino siano puliti, senza incertezze sul fronte di salita e senza oscillazioni sui valori Zero o Uno.

Carlo

Minestrone 04 settembre 20 14:50

Citazione:

Originalmente inviato da CarloRoma63 (Messaggio 5204222)
Non è un pochino troppo alto il valore della R in serie al fotoaccoppiatore? In realtà, quella resistenza non servirebbe proprio. Se la porta di Arduino è in INPUT e ci scrivi un HIGH, attivi la resistenza di polarizzazione interna della porta in questione, che è attorno al Kilo Ohm (se ricordo bene)



Se hai un oscilloscopio, ti consiglio di verificare che gli impulsi che arrivano ad Arduino siano puliti, senza incertezze sul fronte di salita e senza oscillazioni sui valori Zero o Uno.



Carlo

Ti spiego il motivo della resistenza da 1M: all'inizio avevo messo una resistenza più normale da 4.7K ma non funzionava, in pratica la lettura era costante anche quando il fotoaccoppiatore era attivo. Per vedere se il problema fosse la resistenza di pull up ho provato a metterne una enorme e, visto che funzionava, l'ho lasciata.
Ho un oscilloscopio "giocattolo" con cui dovrei riuscire a vedere se il segnale è abbastanza squadrato, stasera provo. Proverò anche a mettere una resistenza da 47k o 470k per vedere se cambia.
Come lo vedi il transistor prima del fotoaccoppiatore? Superfluo?

Inviato dal mio M2004J19C utilizzando Tapatalk

Minestrone 04 settembre 20 19:49

Provato con oscilloscopio e il segnale è perfettamente squadrato, ho anche cambiato la resistenza da 1 M con una da 10K. Mi sto convincendo che il problema sia nel generatore di segnale

Inviato dal mio M2004J19C utilizzando Tapatalk

pb_anime 04 settembre 20 19:59

Citazione:

Originalmente inviato da Minestrone (Messaggio 5204225)
Ti spiego il motivo della resistenza da 1M: all'inizio avevo messo una resistenza più normale da 4.7K ma non funzionava, in pratica la lettura era costante anche quando il fotoaccoppiatore era attivo. Per vedere se il problema fosse la resistenza di pull up ho provato a metterne una enorme e, visto che funzionava, l'ho lasciata.
Ho un oscilloscopio "giocattolo" con cui dovrei riuscire a vedere se il segnale è abbastanza squadrato, stasera provo. Proverò anche a mettere una resistenza da 47k o 470k per vedere se cambia.
Come lo vedi il transistor prima del fotoaccoppiatore? Superfluo?

Inviato dal mio M2004J19C utilizzando Tapatalk

Non conosco arduino, non ho quindi idea dei livelli della porta, ma il fatto che hai dovuto portare quel resistore a 1M indica che l'accoppiatore non fa quello che deve. E' uno stadio che sicuramente capta ogni sorta di disturbo indotto e questo, con buona probabilità, è il motivo della deriva del conteggio.

Senza sapere quale sia il tipo d'uscita del sensore che indichi con CDI, nonché la frequenza massima che devi rilevare, dimensionare il circuito è un po' come andar di notte con gli occhiali da sole.

ElNonino 04 settembre 20 20:21

Due cose importanti:
- il sensore CDI è in grado di fornire una corrente di 10mA al diodo del 4N37 ? puoi verificarlo con un tester in serie alla resistenza da 470.

- la resistenza sul collettore del fototransistor del 4N37 DEVE avere un valore compreso fra i 2K2 ed i 4K7 ohm.

Se il sensore CDI non è in grado di fornire i 10mA è possibile che il fototransistor non riesca a raggiungere la saturazione e quindi lavora in una zona pseudo lineare che fa impazzire l'ingresso di Arduino.

Se questo fosse il caso potresti provare a polarizzare leggermente i fototransistor collegando una resistenza da 1Mohm...4.7Mohm fra base e collettore.

Quanto sopra detto vale se sei assolutamente certo che il fw di Arduino sia testato funzionante al 100%.

:yeah:

Minestrone 05 settembre 20 02:00

Con l'oscilloscopio l'onda generata sembra molto buona. Per quanto riguarda la resistenza intermedi quella di pull up?

Inviato dal mio M2004J19C utilizzando Tapatalk

ElNonino 05 settembre 20 10:21

Con l'oscillosopio hai controllato l'onda sui pin d'ingresso d Arduino ?

Se deriva nel tempo potrebbe essere a causa della temperatura, prova a scaldare con un asciugacapelli il circuito d'interfaccia.

Per provare se la colpa non è del firmware dovresti avere un generatore modulabile in frequenza od un generatore di funzioni programmabile in modo da far variare i giri in maniera casuale, potresti anche fartene uno semplice con un Arduino.

:yeah:

Minestrone 05 settembre 20 10:39

Si ho controllato l'onda sui pin d'ingresso ed è perfettamente squadrata, per quanto riguarda la deriva non saprei valutarla con l'oscilloscopio perchè è un baracchino giocattolo che mi permette solo di fare valutazioni qualitative, considera che la deriva è dell'ordine di un centinaio di giri dopo qualche minuto di funzionamento e perciò piccola. In ogni modo dopo un po' di tempo sembra stabilizzarsi e per questo motivo anche io ho pensato alla temperatura oltre che a disturbi.

Ho già cominciato a scrivere qualcosa per generare un'onda con un arduino. Stasera proverò, oggi vado al campo (Yeah!!).

In ogni modo grazie per le dritte.


Tutti gli orari sono GMT +2. Adesso sono le 06:03.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002