Come leggere il feedback da un sensore ottico

Sensore ottico

Sensori ottici, se utilizzati con attuatori lineari,funzione molto simile a sensori ad effetto hall, tranne per il fatto che rilevano la luce anziché i campi magnetici [1]. I sensori ottici funzionano utilizzando la luce di un LED o un'altra fonte di luce che passa attraverso un disco codificatore. Questo disco codificatore è dotato di una fessura per consentire alla luce di attraversarlo periodicamente. Dall'altro lato del disco c'è un fotorilevatore, che rileva la luce quando passa attraverso le fessure del disco e crea un segnale di uscita [1]. Quando l'attuatore si muove, il disco dell'encoder ruota e la luce viene rilevata dal fotorilevatore che produce un'onda quadra di impulsi di tensione. Questi impulsi possono essere utilizzati in modo simile agli impulsi di un sensore ad effetto Hall per determinare di quanto si è spostato l'attuatore.

Sensore ottico

Feedback di posizione da un sensore ottico

Poiché i sensori ottici funzionano in modo abbastanza simile ai sensori ad effetto hall in termini di output, questo post del blog tratterà brevemente come leggere il loro output per il feedback posizionale. Se stai cercando maggiori dettagli, controlla il nostro post su come leggere il feedback di posizione da un sensore ad effetto hall poiché sarà molto simile.

Come i sensori ad effetto hall, i sensori ottici avranno 3 pin a cui connettersi; uno è la tensione di ingresso, un altro è la massa e, infine, uno è il segnale di uscita. Per utilizzare gli impulsi sul segnale di uscita per il feedback di posizione, sarà necessario utilizzare un file microcontrollore contare gli impulsi prodotti. Ti consigliamo di utilizzare i pin di interruzione esterni del tuo microcontrollore per contare con precisione questi impulsi. Poiché gli interrupt esterni vengono attivati ​​da una variazione di tensione, possono essere utilizzati per rilevare ogni impulso nel momento in cui si verificano. Dopo aver impostato l'interruzione nel codice del microcontrollore, sarà necessario impostare una routine di servizio di interruzione che conti gli impulsi man mano che si verificano. La funzione countSteps () nell'esempio di codice seguente viene utilizzata per contare il numero di impulsi dal sensore ottico.

Per utilizzare questi impulsi per determinare un valore di posizione, è necessario conoscere la posizione precedente dell'attuatore lineare e la direzione in cui si muove l'attuatore lineare. Mentre controlli la direzione in cui si muove l'attuatore lineare, puoi semplicemente impostare una variabile per tracciare la direzione dell'attuatore nel codice. Questa variabile può essere utilizzata per determinare se è necessario aggiungere o sottrarre gli impulsi dalla posizione precedente. Dopo aver aggiornato la tua posizione, dovrai azzerare gli impulsi contati. L'esempio di codice seguente mostra una funzione che aggiorna la posizione in base al numero di impulsi contati. Una volta ottenuta una posizione in termini di impulsi, è possibile convertirla in pollici utilizzando la specifica impulso per pollice dell'attuatore lineare.

Homing il tuo attuatore lineare

Per utilizzare con precisione il feedback di posizione da un sensore ottico, è necessario conoscere sempre la posizione iniziale del proprio attuatore lineare. Sebbene alla prima accensione del sistema, il microcontrollore non sarà in grado di dire se l'attuatore è esteso o meno. Ciò richiederà di posizionare il tuo attuatore lineare in una posizione nota. A casa tua attuatore lineare, dovrai guidarlo in una posizione nota, come completamente retratto. Usando il codice Arduino di seguito come esempio, abbiamo impostato un ciclo WHILE che guiderà il nostro attuatore lineare verso la nostra posizione nota. In questo esempio, sapremo di essere nella nostra posizione nota controllando se l'interrupt è stato attivato o meno controllando se la variabile steps è cambiata. Dobbiamo anche assicurarci che sia trascorso abbastanza tempo per aspettarci che l'interrupt venga attivato, per questo facciamo uso della funzione millis () e la confrontiamo con il timestamp precedente. Una volta stabilito che l'attuatore lineare è nella nostra posizione iniziale, smettiamo di azionare l'attuatore, ripristiniamo la variabile dei passi e usciamo dal ciclo WHILE.

Trattare con falsi trigger

Sebbene i sensori ottici non siano sensibili al rumore elettrico come i potenziometri, il rumore elettrico e il rimbalzo dell'interruttore possono comunque influire sul segnale di uscita e possono attivare il conteggio di falsi impulsi. Qualche impulso in più non influirà molto sul posizionamento, ma nel tempo potrebbe essere un problema più grande. Puoi combattere questi problemi utilizzando un timer interno per filtrare i falsi trigger. Poiché è possibile determinare la frequenza con cui ci si aspetta che vengano rilevati nuovi impulsi, è possibile filtrare quando l'interruzione è stata attivata dal rumore. Nell'esempio di codice riportato di seguito, trigDelay è il ritardo di tempo tra ogni impulso. Se l'interruzione è stata attivata prima di questo ritardo, l'impulso non verrà conteggiato. La durata di questo ritardo varia in base all'applicazione, ma se è troppo breve non filtra correttamente il rumore e se è troppo lungo perderà gli impulsi effettivi dal sensore ottico.

Un altro modo per combattere i falsi trigger è correggere il valore di posizione ogni volta che l'attuatore raggiunge una posizione nota. Come per l'homing dell'attuatore lineare, se hai guidato l'attuatore lineare in una posizione completamente retratta o estesa o se utilizzi interruttori di fine corsa esterni, saprai quanti impulsi sono necessari per raggiungere quella posizione. È quindi possibile correggere semplicemente il valore di posizione utilizzando quel valore quando si raggiunge quella posizione nota. Nell'esempio di codice riportato di seguito, questa operazione viene eseguita per le posizioni completamente estese e completamente ritratte. Questo metodo fornisce una soluzione pratica per garantire che il valore di posizione rimanga accurato.

Sommario

I sensori ottici utilizzati per il feedback di posizione forniscono una maggiore precisione e risoluzione rispetto ai sensori a effetto hall e ai potenziometri, pur avendo punti di forza e svantaggi simili ai sensori a effetto hall. Sebbene non misurino la posizione assoluta e richiedano una posizione iniziale nota per fornire un valore di posizione, l'elevato numero di impulsi per pollice consente l'affidabilità del posizionamento e garantisce che più attuatori lineari si muovano simultaneamente. Utilizzando il nostro FA-SYNC-X controllore attuatore o ttramite codice aggiuntivo, puoi anche assicurarti che gli attuatori si muovano all'unisono indipendentemente dal carico.

Per un esempio di codice completo controlla il nostro blog su come leggere il feedback di posizione da un sensore ad effetto hall tanto sarà simile. Valori come impulsi per pollice e ritardi tra gli impulsi sono alcune delle modifiche che dovrai apportare per utilizzare quel codice per utilizzare con precisione il tuo sensore ottico.

 

[1] Paschotta, R. Articolo sui sensori ottici. Recuperato da:https://www.rp-photonics.com/optical_sensors.html

Tags:

Share this article

Prodotti in primo piano

12v Linear Actuator
Attuatori lineari Classic Rod In Stock
From $119.99USD
Premium Linear Actuators
Attuatori lineari Premium In Stock
$135.95USD
12v  Linear Actuators
Bullet Serie 50 Cal. Attuatori lineari In Stock
From $279.99USD

Hai bisogno di aiuto per trovare l'attuatore giusto?

Progettiamo di precisione e produciamo i nostri prodotti in modo da ottenere prezzi diretti dai produttori. Offriamo la spedizione in giornata e un'assistenza clienti competente. Prova a utilizzare il nostro calcolatore dell'attuatore per ottenere aiuto nella scelta dell'attuatore giusto per la tua applicazione.