Salve a tutti,
sto realizzando un contagiri per motori elettrici servendomi del sensore TCRT5000 gestito da un Arduino NANO ma ho qualche problemino.
Premetto che ho a che fare con motori che girano abbastanza velocemente (tra i 5.000 ed i 25.000 RPM); ai loro assi applico un disco di plastica nero del diametro di circa 2cm su cui applico una sottile striscia di adesivo riflettente per consentire al sensore di rilevare i giri.
Lo sketch mi fornisce gli RPM in tempo reale ed il valore massimo registrato.
Il dato "real time" che mi restituisce il sistema è molto ballerino, con repentine oscillazioni di diverse centinaia di giri e valori di picco del tutto inverosimili.
Ho letto che il TCRT5000 è critico in tema di posizionamento (distanza, angolo), che è sensibile a riflessi che pervengono dall'esterno ed altre cose; ho provato a fare rilevazioni variando tutti questi parametri ma senza apparenti risultati; ho provato anche ad applicare un disco più grande, ad aggiungere una ulteriore striscia riflettente per rendere le letture più accurate ma sempre senza migliorare la situazione.
Mi sembra di capire che il sensore che sto usando ha dei limiti fisici che lo rendono poco idoneo al mio scopo: qualcuno può darmi un suggerimento? E' opportuno provare uno di quei sensori a forcella oppure un sensore magnetico in associazione ad un piccolo magnete, sistema del tipo di quelli che si trovano in rete a pochi euro?
Un sensore di hall con il magnete sarebbe senza dubbio più affidabile e meno immune a disturbi, ma devi assicurarti che il magnete sia incollato in modo davvero saldo altrimenti con la forza centrifuga della puleggia che gira si potrebbe facilmente staccare.
Ancora meglio a questo punto sarebbe un sensore induttivo facendo una piccola gola sulla puleggia come riferimento da leggere con il sensore (o meglio non-leggere).
Si trovano facilmente del diametro di 5mm ed addirittura da 3m, anche se meno e tipicamente sono più costosi.
Infine, sicuro che non si tratti del software?
Visto che stai usando un Nano e quindi un ATmega328, dai un'occhiata a questo post. E' uno dei più completi che c'è in rete in merito alla misura di impulsi, frequenze etc etc
Sto pensando appunto ad altri sistemi.
Mi consigli uno di questi "a forcella", che va utilizzato con un disco forato, oppure un sensore induttivo con un magnete?
Induttivo senza alcun dubbio.
Sono robusti, affidabili ed immuni ad eventuale sporco che immagino in un motore non sia una possibilità cosi remota.
L'unica cosa è la tensione di funzionamento. Quelli che vanno anche a 5V non sono cosi diffusi purtroppo e quindi nell'eventualità dovresti passare per un optoisolatore.
Dipende molto dal tipo di sensore (magari metti il link), PNP NO, PNP NC, NPN etc etc.
Se si tratta di un sensore con uscita open-collector ad esempio, usare un partitore non servirebbe a nulla e teoricamente potresti connettere l'uscita direttamente, pur alimentando a 12V.
Quello dell'immagine sembra un Sick PNP-NO.
In linea generale, usare un optoisolatore è una scelta più "professionale" e che consente una maggiore flessibilità.