Feedback da un sensore a effetto Hall con video

Sensore dell'effetto Hall

I sensori di effetto Hall possono rilevare la presenza di campo magnetico e produrre una tensione di uscita quando si è rilevata. Sensori dell'effetto Hall, se usati conAttuatori lineari, sono in genere posizionati all'interno del cambio dell'attuatore insieme a un disco magnetico. Mentre l'attuatore lineare si estende o si ritrae, questo disco ruota il sensore dell'effetto della sala che fa sì che il sensore produca un'uscita digitale sotto forma di un impulso di tensione. Questi impulsi possono essere contati e utilizzati per determinare fino a che punto l'attuatore si è spostato.

Come leggere il feedback da un attuatore lineare

Feedback posizionale da un sensore di effetto sala

Un aspetto negativo dell'utilizzo di un sensore di effetto Hall per il feedback posizionale è che non misurano una posizione assoluta. Invece producono impulsi che possono essere contati per determinare fino a che punto l'attuatore si è spostato. Per utilizzare questi impulsi per il feedback posizionale, dovrai utilizzare un Micro-controller per contare gli impulsi prodotti. Per fare ciò, dovrai utilizzare i pin di interrupt esterni del tuo micro-controller per contare questi impulsi mentre si verificano. Gli interrupt esterni sono pin che rilevano una variazione di tensione e nel nostro caso può essere utilizzato per rilevare l'impulso di tensione dal sensore dell'effetto della sala. Dovrai consultare la scheda tecnica del micro-controller per garantire quali pin del tuo micro-controller possono essere utilizzati come pin di interruzione. Usando un Arduino Uno Ad esempio, i pin 2 e 3 possono essere utilizzati per interruzioni esterne. Dopo aver selezionato un pin di interruzione appropriato, è possibile collegare il filo dell'uscita del sensore di effetto sala a quel pin e collegare la tensione di ingresso a 5 V e terra a un perno di terra.

Sensore di effetto sala di collegamento ad Arduino 

L'esempio del codice seguente mostra come impostare un interrupt nell'IDE Arduino in cui l'interrupt verrà attivato sul bordo di salita dell'impulso di tensione. È possibile impostare l'interrupt per essere attivato in diversi punti in una modifica della tensione e dovresti consultare la scheda tecnica del micro-controller per determinare le opzioni disponibili. L'ultimo aspetto che devi fare per impostare l'interrupt è scrivere la routine di servizio di interruzione, che è la funzione che il codice verrà eseguito ogni volta che viene attivato l'interrupt. Questa funzione dovrebbe essere breve e svolgere solo compiti semplici come contare il numero di impulsi dal nostro sensore di effetto Hall. Le funzioni CountSteps () Nell'esempio di codice seguente vengono utilizzate per contare il numero di impulsi dal sensore dell'effetto Hall.

Per utilizzare questi impulsi per determinare un valore posizionale, dovrai conoscere la posizione precedente dell'attuatore lineare e la direzione in cui l'attuatore lineare sta viaggiando. Il tuo micro-controller saprà già in che modo stai guidando il tuo attuatore lineare, Quindi puoi semplicemente impostare una variabile per tracciare la direzione dell'attuatore nel codice che verrà utilizzato per determinare se si aggiungono o sottrai gli impulsi dalla posizione precedente. Dopo aver aggiornato la tua posizione, dovrai ripristinare gli impulsi conteggiati a zero. L'esempio del codice seguente mostra una funzione che aggiorna la posizione in base al numero di impulsi conteggiati. Una volta che hai una posizione in termini di impulsi, è possibile convertire in pollici usando la specifica impulso per pollice dell'attuatore lineare. Nel campione di codice seguente, il viaggio di impulso per pollice è 3500.

Homing il tuo attuatore lineare

Per utilizzare accuratamente il feedback posizionale da un sensore di effetto sala, è necessario conoscere sempre la posizione di partenza del tuo attuatore lineare. Anche se quando si accende per la prima volta il tuo sistema, il tuo micro-controller non sarà in grado di dire se l'attuatore è esteso o meno. Ciò ti richiederà a casa il tuo attuatore lineare in una posizione nota. Per casa il tuo attuatore lineare, dovrai guidarlo in una posizione nota, come completamente retratto. Potresti anche usare interruttori di limite esterni Per impostare la tua posizione nota in un posto diverso da quello completamente esteso o ritirato. Utilizzando il codice Arduino di seguito come esempio, vorremmo impostare un ciclo while che guiderà il nostro attuatore lineare verso la tua posizione nota, in questo caso è completamente ritirato. Sappiamo che sei nella nostra posizione conosciuta perché l'interruzione del sensore dell'effetto della sala non si innescherà. In questo caso, controlliamo se la variabile dei passaggi è cambiata o meno per determinare se l'interrupt è stato attivato. Dobbiamo anche assicurarci che sia passato abbastanza tempo per aspettarci che l'interrupt venga attivato, per questo utilizziamo la funzione Millis () che emette il tempo in millisecondi dall'inizio del codice e lo confrontiamo con il precedente timestamp precedente . Una volta che abbiamo stabilito che l'attuatore lineare è nella nostra posizione di casa, smettiamo di guidare l'attuatore, ripristinare la variabile dei passaggi ed uscire dal ciclo while.

Trattare con falsi trigger

Mentre i sensori di effetto Hall non sono così sensibili al rumore elettrico come un potenziometro, il rumore elettrico potrebbe ancora influire sul segnale di uscita. Il rimbalzo dello switch può anche essere un problema con i sensori di effetto Hall che possono innescare falsi impulsi da contare, il che influirebbe su quanto il tuo micro-controller pensa che il tuo attuatore lineare si sia spostato. Alcuni impulsi extra non influenzeranno molto il posizionamento in quanto ci sono migliaia di impulsi per pollice, ma nel tempo potrebbe essere un problema più grande. È possibile combattere questi problemi utilizzando un timer interno per filtrare i falsi trigger. Dato che puoi determinare la frequenza che ti aspetteresti da rilevare nuovi impulsi, puoi filtrare quando l'interrupt è stato attivato dal rumore. Nel campione di codice seguente, il diavolo è il ritardo tra ciascun impulso. Se l'interrupt è stato attivato prima di questo ritardo, l'impulso non verrà conteggiato.

Il periodo di tempo di questo ritardo varierà in base alla tua applicazione, ma se è troppo corto non filtra correttamente il rumore e se è troppo lungo, perderà gli impulsi reali dall'attuatore lineare. La velocità dell'attuatore lineare avrà anche un impatto su questo ritardo e se si desidera regolare la velocità, questa variabile potrebbe essere necessario modificare per adattarsi alla nuova frequenza degli impulsi previsti. Per determinare con precisione un ritardo esatto tra ciascun impulso, è possibile utilizzare un analizzatore logico per visualizzare il segnale effettivo dal sensore dell'effetto della sala. Sebbene ciò non sia richiesto nella maggior parte delle applicazioni, se hai bisogno di un posizionamento molto esatto, è possibile determinare un ritardo preciso.

Un altro modo per combattere i falsi trigger è correggere il valore posizionale ogni volta che l'attuatore raggiunge una posizione nota. Come l'attuatore lineare, se hai guidato l'attuatore lineare in una posizione completamente retratta o estesa o se si utilizza interruttori di limite esterni, saprai fino a che punto l'attuatore si è spostato. Come sai quanti passi il sensore dell'effetto della sala dovrebbe essere inviato per raggiungere la tua posizione nota, puoi semplicemente correggere il valore quando lo raggiungiamo. Nel campione di codice seguente, questo viene fatto per le posizioni completamente estese e completamente retratte. Poiché l'attuatore non si muoverà una volta raggiunta una di queste posizioni, se proviamo a guidare l'attuatore e il valore della posizione non cambia, sappiamo che siamo al limite. Questo metodo fornisce una soluzione pratica per garantire che il valore posizionale rimanga accurato, soprattutto se si sta ritirando completamente o estendendo completamente l'attuatore ad un certo punto durante il funzionamento. È possibile utilizzare questo metodo insieme al metodo sopra descritto che dovrebbe aiutare a mantenere l'accuratezza del valore posizionale.

Riepilogo

L'utilizzo di un sensore di effetto Hall per il feedback posizionale fornisce una risoluzione molto maggiore rispetto al feedback di un potenziometro. Poiché ci possono essere 1000 di impulsi per pollice di movimento, i sensori di effetto Hall forniscono precisione e affidabilità nel posizionamento dell'attuatore lineare. I sensori dell'effetto Hall forniscono anche una maggiore capacità di garantire che più attuatori lineari si muovano contemporaneamente poiché i conteggi degli impulsi sono più accurati della mutevole tensione del potenziometro. Utilizzando il nostro FA-SYNC-X Controller attuatore, puoi persino garantire che gli attuatori si muovano all'unisono indipendentemente dal carico. Per i fai -da -te, puoi controllare come assicurarsi che i tuoi attuatori si muovano all'unisono usando un Arduino Qui.

Di seguito è riportato il codice di esempio completo utilizzato in questo blog ed è stato costruito per controllare una lunghezza di 14 " Bullet Series 36 Cal. Attuatore lineare. L'attuatore lineare è guidato usando un file Driver del motore, che puoi imparare a configurare Qui

[1] Monari, G. (giugno 2013) Comprensione della risoluzione negli encoder ottici e magnetici. Recuperato da: https://www.electronicdesign.com/technologies/components/article/21798142/understanding-resolution-in-optical-and-magnetic-encoders

Share This Article
Tags: