Scelta sensori di hall per contagiri motore

Salve a tutti ragazzi, sono un laureando in ingegneria meccanica e nuovo nel mondo arduino. Sto cercando di realizzare una acquisizione dati per studiare il comportamento di una trasmissione CVT con un mio componente, vi posto un video per farvi capire meglio :

l'aggeggio che vedete muoversi è un tendicinghia costruito da me. La mia acquisizione ha lo scopo di rilevare i giri della puleggia motrice, di quella condotta, i gradi di rotazione del tendicinghia(con un potenziometro da 10k collegato solidamente al perno del tendicinghia) e di scrivere tutto su un file txt. Il motore è stock, la puleggia motrice ha una velocità di massimo 8000RPM mentre quella condotta, in condizioni ideali di funzionamento, ne dovrebbe avere sui 20000. Ho già buttato giù il codice che sembra funzionare bene ma ho dei dubbi su come scegliere i sensori di Hall, anzi non ho proprio idea su come sceglierli. Ho visto che ci sono sia singoli che con una specie di modulo, vorrei avere qualche consiglio anche calcolando le velocità in gioco. Per gestire il contatore uso degli interrupt (ho un arduino uno).
Inoltre in questi giorni si è presentato un nuovo problema: quando il motore sale di giri la cinghia "sale" ovvero aumenta il suo diametro sulla puleggia,(video per capirci: 3D animation of CVT Transmission - YouTube io mi chiedevo se vi fosse un modo per poter rilevare di quanto sale o scende. Avevo pensato ad un sistema molto grezzo con un potenziometro a slitta collegato ad una asta che preme sulla cinghia e quindi sposta il cursore ma credo di avere problemi di spazio. Qualcosa tipo infrarossi?

Scusate per le troppe domande! :smiley:
Spero che mi aiuterete!
Un saluto
Antonio

Come potenziometro per la leva puoi usarne anche uno rotativo , che non è molto grande, per il sensore hall puoi usare un A3144 della allegro, devi costruirti un disco di plastica da ricavarti con il tornio da applicare alle 2 pulegge con inserito dentro 2 o 3 o 4 magneti permanenti ciascuna 5mm x 5mm per 10mm , se usi quelli in ferrite la distanza è di circa 5mm , se usi quelli al neodimio circa 8mm
I magneti dentro la plastica devono avere il polo NORD perpendicolare alla puleggia in modo che il circuito magnetico non si chiuda sulla puleggia e attenui la potenza del magnete, il sensore andrà posizionato radialmente all'albero della puleggia

ne ho applicato uno proprio la settimana scorsa al mandrino piccolo della mia CNC
http://www.dmxpassion.altervista.org/pg019.html

Il magnete può essere messo anche dietro al sensore.

http://www.microst.it/tutorial/hall_6.html

Il caso proposto da cyberhs necessita di una regolazione della distanza sia del sensore dal magnete sia dal sensore alla tacca del disco necessariamente in ferro dolce

Vi ringrazio molto per la risposta velocissima! Il caso del magnete dietro al sensore potrebbe tornarmi utile perché una delle due pulegge ha dietro una ruota dentata che potrei sfruttare, evitando così di fissare sull'albero motore il disco col magnete. Per quella posteriore dovrò necessariamente farlo invece. Quindi non vi è alcuna differenza tra i sensori di hall "singoli" e quelli fissati su una schedina piccola?
Grazie ancora, appena ho un attimo vi posto le foto del mio circuito :slight_smile:

Ruota dentata ? ... mettiamo che hai la ruota dentata sull'albero motore, e che sia un'ingranaggio standard da 36 denti (sto solo facendo un'esempio), a 8000 giri, avresti da leggere e gestire 8000*36=288000 impulsi ... vero che sono al minuto, e che Arduino dovrebbe farcela lo stesso, a leggere un segnale a 4.8KHz, ma dipende dalla precisione della misura che ti serve ... 36 denti per giro ti danno una precisione di lettura 36 volte maggiore di un solo magnete o dente, comunque dipende dalla tua programmazione ... e con la ruota che va a 20000 giri, il problema ovviamente aumenta ... con 36 denti avresti un segnale da 12KHz (720000 impulsi) ... e ancora di piu se la ruota dentata ha piu denti, ovviamente ...

Comunque il problema maggiore sarebbe la regolazione della distanza, perche' usando la configurazione con il magnete dietro al sensore, diventa poi molto piu critico regolare meccanicamente il tutto in modo che legga con precisione (ci ho litigato parecchio, quando lavoravo in ditta, per realizzare un sensore che leggesse bene un'ingranaggio in quel modo, ed ho finito con il realizzarlo usando un'espansione polare con la stessa dimensione dei denti dell'ingranaggio, annegato in un blocchetto di resina e posizionato ad un paio di decimi dai denti, ma per altri problemi ... il magnete, esendo appunto un magnete, attira tutti i microscopici frammenti di ferro, anche la "polvere" generata dall'usura degli ingranaggi stessi, e alla fine si intasa ... la mia soluzione, sfruttando il flusso del lubrificante in prossimita' dell'espansione polare, fra il blocchetto ed i denti, e la scarsa distanza, lo teneva abbastanza pulito da farlo funzionare senza troppi problemi e con necessita' di manutenzione minima :P)

Etemenaki sai che non ci avevo pensato? :smiley: hai proprio ragione, forse non è tanto conveniente...il fatto è che fissare il magnete o il disco di teflon col mangnete non sarà semplice. Adesso stavo pensando ad una alternativa: l'accensione del motore è dotata di un volano con sopra delle tacche ed un pickup vicino ( e a questo punto suppongo che funzioni esattamente come un sensore di hall)...mi chiedevo: se riuscissi a prelevare il segnala da li? O meglio sarebbe possibile farlo? (calcolando che l'accensione ha un voltaggio molto maggiore di arduino). O ancora esiste un modo per leggere il campo generato dal cavo che manda la corrente alla candela? Suppongo che anche quello sarebbe un modo per rilevare i giri. Perché se riesco a levarmi di mezzo il magnetico sull'albero motore è una gran cosa. P.S. vorrei farvi vedere il circuito che ho costruito, ma devo per forza caricare l'immagine tramite url? :slight_smile:

No, se premi il pulsante con scritto "Reply" (subito qui sotto), si apre la pagina per inserire la risposta.
In calce all'area di inserimento testo, trovi "Attachments and other options", lì dentro c'è la possibilità di fare un upload direttamente sul forum. :wink:

Per leggere gli impulsi che la centralina manda alle candele ti basta un paio di giri di filo avvolti sul cavo della candela, isolato ovviamente, e poi da quello si legge il picco indotto creato dall'alta tensione con un circuitino apposito (i contagiri stroboscopici per le auto funzionano esattamente cosi ;))

Se c'e' gia un pickup, devi vedere di che tipo e' ... potrebbe essere di 3 tipi, capacitivo (ma in un motore e' difficile, sono delicato e costosi), induttivo diretto (un magnete con avvolta sopra una bobina, i denti causano una variazione ciclica di tensione in uscita), oppure induttivo attivo, un proximity in pratica, che da un'impulso ogni volta che ci passa davanti un dente ,,, in quest'ultimo caso potrebbe essere in corrente (se ha solo 2 fili) oppure avere un'uscita a collettore aperto, NPN oppure PNP (se ne ha 3) ... per poterlo usare devi prima scoprire di che tipo e' ... il sistema piu semplice, se non e' disponibile un datasheet, e' procurarsene uno scassato da qualche meccanico e massacr ... ehm, volevo dire "sezionarlo con cura" :P, per vedere come e' fatto dentro ...

Grazie per le risposte...per "circuitino apposito" intendi qualcosa che "filtri" il segnale da interporre tra filo avvolto sul cavo candela e arduino? Se si in che modo determino come filtrare il tutto? Non vorrei la pappa pronta, più che altro vorrei davvero capire come studiare e realizzare il circuitino, nel senso che vorrei capire come approcciarmi al problema :wink:
Ecco una foto, lo so che non è il massimo ma è la prima volta che saldo :smiley:

Ricapitolando:
-utilizzo i pulsanti per far partire/stoppare l'acquisizione dati;
-tutti i dati acquisiti vengono salvati sulla sd da 1 gb e possono essere letti collegandola via usb al pc. Mi viene creato un file txt che poi leggo con matlab ed elaboro;
-il led rgb lo utilizzo per capire in che stato è il programma : lampeggio rosso= in attesa, lampeggio verde= sto cominciando ad acquisire, led fisso blu =sto acquisendo e scrivendo sulla scheda;
i dati rilevati sono: giri puleggia motrice, giri puleggia condotta(utilizzando gli interrupt di arduino uno), temperatura e gradi di apertura del tendicinghia;
a presto :smiley:

Come circuiti, ce ne sono parecchi, ma personalmente preferisco qualcosa che oltre a filtrare il segnale, che in fondo e' del tipo "statico ad accoppiamento capacitivo", quindi non esattamente pulito e stabile ;), dia in uscita un segnale pulito ed utilizzabile da un micro ... si puo usare un NE555, configurato come monostabile, che usi il segnale del filo captatore come trigger e dia fuori un bell'impulso sempre uguale, magari usando un SCR in ingresso come ulteriore protezione ... una cosa tipo questa, insomma, che avevo trovato una volta in un contagiri stroboscopico che avevo riparato al mio elettrauto (ma devi provarla, perche' l'ho disegnata a memoria al volo, e non ti posso garantire che i valori me li ricordo bene, sono passati un po di anni)

EDIT: credo che i diodi in ingresso fossero uno solo, non due ...

ARIEDIT: meglio comunque sostituirli con uno zener da 5V, cosi si ha una protezione in entrambi i sensi, pensandoci meglio ...

Grazie mille per l'aiuto! Sinceramente non ho capito moltissimo di quello che hai detto a parte che devo filtrare il segnale ma credo di essere in grado di costruire lo schema che mi hai riportato :slight_smile: solo una cosa mi chiedo: come funzionerà a livello di rilevazione del segnale? Nel senso: utilizzando il sensore a effetto hall so che avrò una onda di tipo quadra e calcolo il tempo tra un passaggio e l'altro...ma utilizzando il filo avvolto sul cavo avrò sempre la stessa cosa? Non sono espertissimo di elettronica :smiley:

Allora ho un piccolo problema: ho deciso di rilevare i giri motore tramite spira sul cavo candela(come suggerito da Etemenanki) mentre i giri della puleggia condotta tramite un sensore di hall... ho notato che usandoli singolarmente (con codici differenti) non ho alcun problema e i giri sono rilevati correttamente. Non appena provo ad utilizzare entrambi gli interrupt nello stesso codice i giri vengono sballati ogni tanto...è un problema di codice? Di gestione o di priorità degli interrupt? Aiuto :astonished: