Contagiri con sensore induttivo

Ciao a tutti, mi presento, mi chiamo Andrea e sono al terzo anno di ingegneria meccanica.
Per quanto ormai fondamentale, sono ignorante in materia di elettronica e informatica, ma cerco di imparare.
In questo caso sto realizzando un acquisitore di dati per una moto, e pur non avendo mai avuto esperienza pratica con la piattaforma arduino, mi è sembrata la migliore scelta.
Il mio problema nello specifico è misurare i giri motore sfruttando il sensore induttivo già presente sul volano, che dovrebbe inviare, a differenza di un sensore hall, un segnale sinusoidale.
L’idea è di prelevare il segnale di tale sensore, senza staccarlo dalla moto in quanto essenziale, e contando i picchi misurare la velocità di rotazione in rpm.
Chiedo quindi consigli su come poter realizzare un programma del genere su un arduino UNO.
La mia idea era quella semplicemente di contare i segnali, peccato però che non essendo un sensore di hall l’output è analogico.

Buongiorno,

:warning: prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato, dopo di che ...

... essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà (eventuali risposte verrebbero temporaneamente nascoste), quindi ti consiglio di farla al più presto. :wink:

chiedo scusa per l'errore di pubblicazione; ho intanto provveduto a fare le dovute presentazioni nel apposito thread.

Non sono molto esperto in merito, però non mi quadra molto il discorso. Per quale motivo un sensore per misurare i giri del motore dovrebbe restituire un segnale sinusoidale?
Potrei azzardare una misura angolare dell'albero motore, ma allora in quel caso i segnali dovrebbero essere due (seno-coseno).

Hai qualche riferimento tecnico del sensore o meglio ancora un datasheet?

Potrebbe dipendere dal tipo di sensore, se fosse "passivo", quelli che "contano" i denti di un'ingranaggio, sarebbe un semplice pickup magnetico, che restituirebbe una "sottospecie di gradino distorto" al passaggio di ogni dente (non la si puo chiamare ne sinusoide ne quadra :grin: ).

Mi preoccuperei di piu del fatto che se e' uno di quelli, collegandoci in parallelo qualcosa si rischierebbe di non far funzionare piu il motore, il loro segnale e' piuttosto basso.

Sarebbe preferibile aggiungere un sensore a parte in qualche altro punto, ma la possibilita' di fare questo dipende da come e' fatto fisicamente il motore.

L'idea è buona, ma prima devi condizionare il segnale e renderlo una onda quadra. Dovrebbe bastare una R serie e due diodi serie posti in parallelo, a seguire un comparatore (arduino ne ha uno) operazionale è l'uscita di questo su INT0 di arduino. Se avessi modo di visualizzare il segnale tramite un oscilloscopio ci potremmo fare una idea del segnale di picco. Il valore di R potrebbe essere attorno i 100k o più.

Ciao.

Io temo che servirà anche uno stadio di ingresso differenziale ad alta impedenza (non sappiamo se possiamo avere masse in comune con altre centraline ecc), e a seconda della durata degli impulsi forse anche un divisore (almeno per due) per rendere simmetrico il segnale. Certo prima di tutto bisogna capire i livelli di tensione e i tempi in gioco.

Intanto ringrazio tutti per le risposte.
Per chiarire comunque, effettivamente il segnale non è sinusoidale ma una specie di onda distorta, proprio perché è un sensore ad induttanza che quando rileva un dente manda un segnale.
Purtroppo non ho un datasheet e nemmeno un oscilloscopio per testarlo.
A questo punto dite che la cosa migliore possa essere capire che segnale mandi il sensore?

Allora il segnale non è a pickup magnetico ma ad induttanza, quindi il gioco è più complicato, fosse magnetico mi manderebbe una bella onda quadra e “basterebbe” campionare quello.
Riguardo ad aggiungere un altro sensore, aggiungerlo nel motore è praticamente impossibile se non si vuole forare o danneggiare qualcosa, potrei però metterne uno sulla ruota posteriore e aggiungere una conversione a seconda della marcia inserita, conoscendo i rapporti di ingranaggio.

Altra cosa, giustamente tu dici che attaccandoci altre cose in parallelo rischio di mandare in crisi le letture della centralina moto, ma anche se mettessi in parallelo un circuito con resistenze molto alte? Ad esempio un banale voltmetro non dovrebbe influenzare visto l’impedenza elevatissima

Mi potresti spiegare meglio il principio dietro al circuito di cui parli per digitalizzare il segnale? con magari uno schemino😬; come dicevo sono ignorante in elettrotecnica hahaha

Per la mia esperienza (poca) sensore induttivo o magnetico o che dir si voglia non generano onde quadre, ma sempre segnali impulsivi, la cui ampiezza è al momento ignota. Il sensore montato su una fiat uno legge i denti è genere poco più di 20Vp con ~1Vp sotto il GND. Questo è quanto ricordo (20 anni o più sono passati).

Se il sensore è una induttanza avvolta su nucleo ferromagnetico, il magnete allora è nel volano. Mentre se l'induttanza è avvolta su magnete allora è un pickup simile a quello delle chitarre.

Non ho modo di disegnare, ma ho cercato "comparatore operazionale".
Sostanzialmente è abbastanza semplice, il segnale impulsivo viene ridotto a circa 1.4v da resistenza e diodi. La MCU atmega328 contiene un comparatore al suo interno, l'ho usato, ma non saprei guidarti nell'immediato, per cui meglio un LM339 o LM393.

Intanto potresti provare con R100k e due diodi 1n4007.

Sensore ---- R --- OUT ---- D ---- D ------ GND

Out andrebbe all'ingresso del comparatore, ma anche così se la moto resta accesa vuole dire che lo si può usare.

N.186 di nuova elettronica, c'è un contagiri. link

Ciao.

... ricordo male o anni fa si era affrontato il problema semplicemente con un po' di spire avvolte attono al cavo della candela per rilevare gli impulsi di accensione? :roll_eyes:

Credo di avere ancora lo schema che fu pubblicato all'epoca ...

... non potrebbe andare bene ?

Guglielmo

Se ti può essere utile devi ricercare pickup a riluttanza variabile

Ciao @superpeg00 sarebbe molto utile conoscere almeno il valore della tensione fornita dal sensore, misuralo se puoi con un voltmetro.
Al tuo posto farei un piccolo esperimento per vedere cosa otteniamo. Con il circuito proposto da @Maurotec:

Carica la seguente libreria

FreqCount.zip (14.8 KB)

Esegui l'esempio " Serial_Output" e vediamo se succede qualcosa.
Saluti.

Ci aggiungerei un C da 1uf o meno per disaccoppiare dalla DC. Ma l'esempio che hai suggerito usa il comparatore analogico? no se entra su D5, quindi non bastano due diodi, al loro posto allora uno zener da almeno 3.9V.

Per usare il comparatore analogico, i pin sono PD7, PD6 ma devo leggere il datasheet per vedere qual'è il pin meno.

Comunque anche così senza condensatore se la moto resta accesa vuole dire che non disturba.

Ciao.

Anche questa è una bella idea, con questo circuito cosa arriverebbe ad arduino?

Allora provo a misurare la tensione e vediamo se da qualche lettura sensata, poi provo con questo circuito, con l’esempio che mi hai detto di provare dovrei ottenere una frequenza?

... bisognerebbe andare a ritrovare la vecchia discussione, comunque hai una serie di impulsi da prelevare sul collettore del BC547 ... magari @Etemenanki si ricorda qualche cosa di più ... :wink:

Guglielmo

Poi perdonami, bel circuito c’è un terminale VCC, uno GND e uno “a vuoto”; il gnd presumo vada al gnd di arduino, gli altri due?