Magnetometro con Raspberry PI

Dopo l’introduzione di Digilent del MCC DAQ per Raspbbery PI, ecco un’applicazione per MCC 118 Voltage Measurement DAQ HAT e Raspberry Pi per leggere l’uscita lineare da un sensore di campo magnetico.

Componenti Hardware

Applicazioni software

Configurazione Software

Per utilizzare il MCC DAQ 118 hat con il Raspberry Pi, la prima cosa da fare è installare le librerie fornite dal produttore.

Ecco i passaggi:

  1. Apri una finestra di terminale se utilizzi l’interfaccia grafica e aggiorna l’elenco dei pacchetti:

 

2. Facoltativo: aggiorna i pacchetti installati e riavvia:

 

3. Se non è installato, installa git:

 

4. Scarica il pacchetto offerto dal produttore nella tua cartella utente con git:

 

5. Installa la libreria. Il programma di installazione ti chiederà se desideri installare il supporto per Python 2 e Python 3.

 

Se desideri eseguire un aggiornamento del firmware o leggere ulteriori informazioni sull’MCC 118, puoi visitare la documentazione della libreria MCC DAQ HAT.

Configurazione hardware

Per questo progetto, avremo bisogno di alcuni componenti oltre a Raspberry Pi e a MCC 118. Per creare il sensore di campo magnetico, avremo bisogno dei seguenti componenti: AD22151 (sensore di campo magnetico), tre resistori che taglieremo in seguito, un condensatore da 0,1µF, una breadboard e alcuni cavi. Per avviare questo progetto verrà utilizzata la prima configurazione offerta dal produttore nella scheda tecnica (scheda tecnica AD22151).

 

R1 è un resistore utilizzato per la compensazione della temperatura, 10K è stato scelto dal grafico fornito per compensare piccoli valori nelle deviazioni di temperatura.

R2 e R3 sono usati per impostare il guadagno in questo circuito. I valori sono stati scelti dopo aver eseguito il calcolo con la formula scritta di seguito. Il valore di R3 è 100K e per R2, dopo l’esecuzione del computer, è stato scelto il valore di 2,2K. Si ottiene così un guadagno di circa 19 mV/G.

Ora che abbiamo il circuito di misura, dobbiamo alimentarlo. Per fornire 5V e la terra, utilizziamo le porte GPIO, più precisamente la porta 4 per 5V e la porta 6 per la terra.

Copyright https://www.raspberrypi-spy.co.uk/2012/06/simple-guide-to-the-rpi-gpio-header-and-pins/

L’ultimo passaggio per l’hardware consiste nel collegare l’uscita del sensore a uno dei canali MCC 118, canale 0 per questo progetto. L’uscita è compresa tra 0 e 5V e il valore di 2,5V rappresenta la soglia tra i valori di uscita positivi e negativi del circuito. Più avanti nel progetto, nella parte del flusso dell’esecuzione del programma viene menzionato come è possibile modificare il codice per poter collegare diversi sensori in una volta.

 

Dopo aver completato questi passaggi, il tuo circuito dovrebbe essere simile a quello nell’immagine qui sotto.

 

Flusso dell’esecuzione del programma

Dopo aver montato i componenti e installato le librerie, i due file allegati di seguito devono essere salvati nella stessa cartella. “daqhats_utils.py” è preso dalla cartella degli esempi, si trova nella cartella “daqhats” che viene installata dopo aver eseguito i passaggi per l’installazione delle librerie tramite git. “scan.py” è il file principale per questo progetto.

Importazione di librerie

 

Per eseguire la misurazione abbiamo bisogno di alcune funzioni offerte nelle librerie nel repository git e daqhats_utils. Importiamo l’intera classe mcc118 e alcune funzioni di aiuto. “OptionFlags” viene utilizzato per impostare la modalità di scansione dei valori forniti dai canali sul raspberry hat, mentre per identificare l’id e gli errori utilizziamo le funzioni “HatIDs” e “HatError”.

 

Dichiarazione della costante e informazioni di stampa

 

Per determinare il valore dell’intensità del campo magnetico utilizziamo le due costanti gain_constant e v_ref. “gain_constant” è determinata dalla formula sopra, questa costante deve essere modificata per rispettare il guadagno di tensione del circuito. Questa costante è uguale all’inverso del guadagno calcolato (1/guadagno). “v_ref” è il riferimento di tensione per il punto zero, tutti i valori sopra sono numeri positivi, tutti i valori sotto sono numeri negativi. Questi due vengono utilizzati nella funzione di stampa alla fine del programma.

 

Il programma visualizzerà nel terminale un numero composto da un massimo di dieci cifre e cinque cifre dopo la virgola. Per calibrare l’uscita, scommenta la riga successiva e modifica il valore di “v_ref” con il valore misurato.

La velocità per canale del clock di scansione interno è impostata nella variabile “scan_rate” e la velocità massima prevista di un clock di scansione esterno, max 100 000.

Dichiarazione dei canali

I canali utilizzati devono essere dichiarati in un vettore. Per aggiungere più canali, modifica il vettore aggiungendo i canali che desideri utilizzare. Ad esempio:

 

utilizza tutti gli otto canali per misurare. Tutte le funzioni della classe mcc118 utilizzano vettori per determinare i canali in uso e per questo è necessario conoscere la lunghezza del vettore.

Leggere e visualizzare i dati

 

Le letture vengono eseguite in un ciclo che continua finché l’utente non interrompe la scansione o viene rilevato un errore di overrun. Vengono letti tutti i campioni disponibili (fino alla dimensione del read_buffer). Poiché read_request_size è impostato su -1 (READ_ALL_AVAILABLE), la funzione “hat.a_in_scan_read” restituisce immediatamente i campioni disponibili al momento e il parametro di timeout viene ignorato. La funzione “hat.a_in_scan_read” restituisce più elementi: running, hardware overrun, buffer overrun, triggered e timeout e tutti sono di tipo bool e data che è una lista di float. Il return dei dati è quello che utilizzeremo in seguito per visualizzare le informazioni lette dal buffer.

 

samples_read_per_channel” viene utilizzato per mostrare il numero nell’elenco dei dati in cui è stato effettuata e visualizzata l’acquisizione. “total_samples_readmemorizza il numero totale di campioni. Questi numeri vengono visualizzati in formato a 12 cifre.

Se ci sono campioni nel buffer, il programma inizierà a essere visualizzato. Per ogni canale il suo risultato viene salvato su un certo valore nell’elenco, la posizione per ogni valore è un multiplo del numero di canali utilizzati. Per la visualizzazione utilizziamo un indice che salva per ogni lettura la posizione di ogni campione su ogni canale.

 

Avvia lo script

Per avviare lo script python, apri un terminale nella cartella in cui hai salvato i 2 file con il comando seguente.

 

Successivamente, nel terminale apparirà l’indirizzo a cui si trova MCC 118 , il modo in cui funziona l’hat, i canali in uso e la velocità di scansione il cui funzionamento è impostato. Dopo aver premuto il tasto ENTER, il programma inizierà la scansione.

 

 

L’interpretazione del display è la seguente:
Samples Read è il numero di campioni visualizzati e si ripristina a 0 dopo che il buffer si riempie.
Scan Count è il numero totale dei campioni letti, non si ripristina quando il buffer è pieno e continua a contare.

Channel 0 è il valore letto da quel canale, dopodiché appariranno i seguenti canali aggiunti successivamente.

Puoi scaricare il codice e trovare maggiori dettagli su Raspberry Pi Magnetometro (electromaker.io)

Gli MCC DAQ per Raspberry PI sono disponibili presso Farnell, il distributore autorizzato Digilent in Italia.

 

 

 

Post correlati

Commenta questo articolo