Benvenuti a un altro articolo tecnico di Progressive Automations! Oggi spiegheremo come un Arduino può comunicare con il nostro PA-04-HS.
Un sensore ad effetto Hall è un componente elettronico che consente un controllo preciso di un attuattore lineare. Di solito è posizionato all'interno del riduttore, accanto a un disco magnetico. Quando l'attuatore lineare si muove, il disco magnetico ruota generando un campo magnetico che attraversa il sensore ad effetto Hall. Questo produce un impulso di tensione, che può essere conteggiato per determinare la posizione, la velocità o la direzione dell'attuatore lineare. Per utilizzare questi segnali è però necessario un microcontrollore, come Arduino o Raspberry Pi. In questo articolo vedremo come usare un attuatore con un Raspberry Pi e come controllare un attuatore lineare con Arduino. Come detto, entrambi i microcontrollori saranno mostrati con un Attuatore lineare con sensore ad effetto Hall PA-04-HS di Progressive Automations.
Calcolo di posizione, velocità e direzione
Prima di entrare negli esempi, è importante capire come i segnali provenienti dal sensore ad effetto Hall vengono usati per calcolare posizione, velocità e direzione dell’attuatore lineare. Nel PA-04-HS, il sensore ad effetto Hall è progettato per generare due segnali, ciascuno in uno dei due stati binari: on o off. Questi due segnali salgono e scendono man mano che il motore elettrico ruota, con uno sfasamento di 90 gradi tra loro. Non preoccuparti se non sai come implementare tutto ciò in un codice leggibile da un microcontrollore: te lo forniremo più avanti in questo articolo.
Posizione
La posizione dell’attuatore lineare richiede alcuni calcoli usando i segnali Hall e alcune misure dell’attuatore stesso. L’equazione per la posizione dello stelo dell’attuatore richiede la lunghezza della corsa dell’attuatore e il numero totale di fronti rilevati dal completamente retratto al completamente esteso. Con queste misure si può usare la seguente equazione:

Nell’equazione sopra, il conteggio dei fronti rilevati parte da zero e aumenta di uno quando viene rilevato un fronte in avanti e diminuisce di uno quando viene rilevato un fronte all’indietro.
Velocità
La velocità di un attuatore può essere misurata usando i segnali ad effetto Hall implementando un timer nel programma. Questo timer verrà usato per misurare il tempo tra i fronti rilevati. Inoltre, è necessario il valore calcolato della variazione di corsa per ogni fronte rilevato. Con questi valori si può usare la seguente equazione:

Direzione
La direzione del movimento di un attuatore può essere determinata osservando lo stato attuale dei due segnali (segnale A e B) e confrontandolo con lo stato precedente. Questo perché, a seconda della direzione del movimento dell’attuatore, i due segnali si scambiano quale è in anticipo e quale in ritardo.


Qual è migliore, un microcontrollore Arduino o Raspberry Pi?
Non si tratta di quale sia migliore in assoluto, ma di quale sia più adatto alla tua applicazione. È preferibile scegliere un Arduino se il compito principale della tua applicazione è leggere i dati dal sensore ad effetto Hall e restituire un set specifico di istruzioni.
D’altra parte, il Raspberry Pi è più pratico per attività tipiche di un computer. Inoltre, semplifica la gestione del flusso di lavoro in vari scenari, come la connessione a Internet o il controllo di un attuatore lineare tramite un dispositivo mobile.
Può essere conveniente usare entrambi i microcontrollori per compiti diversi. Il Raspberry Pi può accedere al codice e regolare vari parametri, che poi possono essere inviati a un Arduino per controllare l’attuatore lineare in base alle informazioni raccolte.
Entriamo nello specifico e vediamo come controllare un attuatore lineare con Arduino.
Arduino con attuatori lineari

A seconda dell’applicazione, puoi scegliere tra l’uso del polling o degli interrupt con un microcontrollore quando lavori con segnali digitali. Il polling è un metodo programmato in cui un microcontrollore controlla periodicamente lo stato di un ingresso per vedere se è cambiato. Gli interrupt sono un meccanismo hardware che sposta immediatamente il focus del programma del microcontrollore quando lo stato di un ingresso cambia.
Per questa dimostrazione, opteremo per il metodo con interrupt per conoscere l’esatto momento in cui un segnale cambia stato. Su un microcontrollore Arduino, si usa un interrupt creando una Routine di servizio degli interrupt (ISP).
Ecco cosa ti servirà:
Cablaggio di Arduino e dello shield
I sensori ad effetto Hall hanno 4 fili: 5V, GND e 2 fili di segnale. Ogni filo di segnale genera impulsi quando il motore gira. Ci sono anche due fili dell’attuatore da collegare al MegaMoto. Useremo solo uno dei segnali Hall.
Collega l’attuatore lineare ad Arduino e a MegaMoto come segue:
- Filo del sensore rosso al pin 5V di Arduino.
- Filo del sensore nero al pin GND di Arduino.
- Filo giallo/arancione al pin 2 o 3 di Arduino (se usi un Arduino diverso, assicurati che i pin supportino gli interrupt).
- Filo rosso dell’attuatore su MOTA del MegaMoto.
- Filo nero dell’attuatore su MOTB del MegaMoto.
Una volta collegati correttamente i motori alle schede, collega l’alimentazione come segue:
- Collega 12V a BAT+.
- Collega GND a BAT-.
- Collega 12V a Vin su Arduino.
- Collega due pulsanti ai pin 7 e 8 di Arduino e collegali a GND.
Ci sono 4 tipi di trigger per l’interrupt: Rising, Falling, High e Low. Cambiando il trigger puoi regolare quando avviene l’interrupt. Rising è quando il pin vede una transizione da basso ad alto (fronte di salita), Falling da alto a basso (fronte di discesa), Low quando il pin è basso e High quando il pin è alto.
Per il codice Arduino completo, visita la nostra guida qui: Codice Arduino per attuatore lineare con effetto Hall
Il codice muove l’attuatore avanti o indietro di una quantità predefinita quando premi i pulsanti sui pin 7 o 8 (attivo LOW). Include anche una procedura di homing. Questo è importante perché, se fai andare il motore avanti e indietro a lungo, potresti perdere qualche conteggio e perdere lentamente la posizione. La procedura di homing riporta l’attuatore lineare a una posizione nota, così il contatore può azzerarsi.
Attuatore con Raspberry Pi
Come si collega un attuatore a un Raspberry Pi 2, 4 o più recente? Controllare un attuatore lineare con un Raspberry Pi è semplice e può essere fatto via Internet, consentendo un controllo wireless. Segui i passaggi di questa guida per vedere esattamente come: Controllo di attuatori lineari con Raspberry Pi.
Il Raspberry Pi 4 viene usato per eseguire il software server e ricevere i comandi per il controllo dell’attuatore lineare. Tuttavia, questa guida non utilizza un sensore ad effetto Hall. Per farlo, una scheda Arduino può essere collegata all’attuatore lineare e al Raspberry Pi per inviare/ricevere dati in modalità wireless. Benché il Raspberry Pi possa anche leggere direttamente i dati dei sensori, proprio come Arduino, potrebbe essere eccessivo se devi controllare solo pochi attuatori lineari.
Controllo di più attuatori lineari

Se devi controllare più attuatori lineari con un Raspberry Pi o un Arduino, avrai bisogno di alcuni componenti aggiuntivi e il codice dovrà essere adattato. Due o più attuatori lineari possono essere sincronizzati monitorando i conteggi del sensore ad effetto Hall e, se i conteggi degli attuatori si allontanano troppo, ogni attuatore rallenterà per riequilibrare le posizioni.
Consulta l’insieme completo di istruzioni qui: Controllare più attuatori lineari con un microcontrollore
In alternativa, se la sincronizzazione non fa parte della tua applicazione, usa semplicemente un Arduino per uno o due attuatori, in base al numero di pin di interrupt disponibili. Per controllare più attuatori, puoi usare più schede Arduino oppure ottenere uno shield Arduino con più pin di interrupt.
Conclusione
Se vuoi metterti alla prova, ci sono metodi aggiuntivi che puoi provare con Arduino e attuatori lineari per controllarne il movimento, come usare del codice PID, che puoi vedere qui: Controllo PID per attuatori lineari. Un sensore ad effetto Hall all’interno di un attuatore lineare, come il PA-04-HS, offre un livello di controllo aggiuntivo che può essere configurato facilmente con l’aiuto di un Arduino o di un Raspberry Pi. Che la tua applicazione richieda solo la lettura dei dati del sensore o che tu voglia portare il tuo attuatore lineare al livello successivo mettendolo online, un sensore ad effetto Hall, combinato con il microcontrollore che preferisci, è la scelta giusta.
Se hai domande sul contenuto di questo articolo o desideri discutere possibili soluzioni, contattaci e saremo lieti di aiutarti!