Raspberry PI magnetometer - Elektronikknett
header_sp

Raspberry PI magnetometer

Etter at Digilent introduserte MCC DAQ for Raspberry PI, viser vi her en applikasjon for MCC 118 DAQ HAT for spenningsmåling og Raspberry Pi som leser den lineære utgangen fra en magnetfeltsensor.

 Maskinvarekomponenter

  • Raspberry Pi 4 Model B 1gb, 2gb, 4gb eller 8gb ram
  • MCC 118 Spenningsmåling DAQ HAT
  • AD22151 Magnetisk feltsensor med lineær utgang
  • 0,1uF kondensator
  • Motstander R1 = 10k, R2 = 2,2k, og R3 = 100k
  • Breadboard i halv størrelse
  • Kabelsett

Programvareapper

Oppsett av programvare
For å bruke MCC DAQ 118 HAT med Raspberry Pi, må du først installere bibliotekene levert av produsenten.

Her er trinnene:

1. Åpne et terminalvindu hvis du bruker det grafiske grensesnittet og oppdater pakkelisten:

2. Valgfritt: Oppdater de installerte pakkene og start på nytt:

3. Hvis ikke installert, installer git:

4. Last ned pakken som tilbys av produsenten til brukermappen din med git:

5. Installer biblioteket. Installasjonsprogrammet vil spørre om du vil installere støtte for Python 2 og Python 3.

Hvis du vil utføre en fastvareoppdatering eller lese mer informasjon om MCC 118, kan du besøke MCC DAQ HAT Library-dokumentasjonen.

Maskinvareoppsett
For dette prosjektet trenger vi noen komponenter i tillegg til Raspberry Pi og MCC 118. For å lage magnetfeltsensoren trenger vi følgende komponenter: AD22151 (Magnetic Field Sensor), tre motstander som vi skal dimensjonere senere, en 0,1µF kondensator, et breadboard og noen ledninger. For å starte dette prosjektet vil den første konfigurasjonen som tilbys av produsenten i dataarket bli brukt (AD22151 Data Sheet PDF).

AD22151-skjema
brett

R1 er en motstand som brukes til temperaturkompensasjon, 10K ble valgt fra grafen som følger med, for å kompensere for små verdier i temperaturavvik.

R2 og R3 brukes til å stille inn forsterkningen i denne kretsen. Verdiene ble valgt etter å ha utført beregningen med formelen skrevet nedenfor. Verdien av R3 er 100K og for R2, etter å ha utført datamaskinen, ble verdien på 2,2K valgt. Dermed oppnås en forsterkning på ca. 19 mV/G.

gain formula

Nå som vi har målekretsen, må vi drive den. For å forsyne 5V og jord, brukes GPIO-portene til denne oppgaven, nærmere bestemt port 4 for 5V og port 6 for jord.

Det siste trinnet for maskinvaren er å koble sensorutgangen til en av MCC 118-kanalene, kanal 0 for dette prosjektet. Utgangen er mellom 0 og 5V og verdien på 2,5V representerer terskelen mellom de positive og negative utgangsverdiene til kretsen.Videre i prosjektet nevnes det i programflytdelen hvordan man kan modifisere koden for å kunne koble flere sensorer på en gang.

AD22151

Etter å ha fullført disse trinnene, skal kretsen din se ut som den på bildet nedenfor.

kort_brett

Programflyt
Etter montering av komponentene og installasjon av biblioteker, må de to filene vedlagt nedenfor lagres i samme mappe. "daqhats_utils.py" er hentet fra mappen eksempler, i mappen "daqhats" som er installert etter å ha utført trinnene for å installere bibliotekene ved hjelp av git. "scan.py" er hovedfilen for dette prosjektet.

Bibliotekimport

For å utføre målingen trenger vi noen funksjoner som tilbys i bibliotekene i git-depotet og daqhats_utils. Vi importerer hele mcc118 class og noen hjelpefunksjoner. "OptionFlags" brukes til å angi modusen for skanning av verdiene levert av kanalene på Raspberry-HAT’en og for å identifisere id og feil bruker vi funksjonene "HatIDs" og "HatError".

Konstant erklæring og utskriftsinformasjon

For å bestemme verdien av magnetfeltintensiteten bruker vi de to konstantene, gain_constant og v_ref. "gain_constant" bestemmes av formelen ovenfor, denne konstanten må endres for å ta hensyn til spenningsforsterkningen til kretsen. Denne konstanten er lik inversen av den beregnede forsterkningen (1/gain). "v_ref" er spenningsreferansen for nullpunktet, alle verdiene over det er positive tall, alle verdiene under er negative tall. Disse to brukes i utskriftsfunksjonen på slutten av programmet.

Programmet vil vise i terminalen et tall som består av maksimalt ti sifre og fem sifre etter komma. For å kalibrere ut, fjern kommentaren til neste linje og endre verdien av "v_ref" med den målte verdien.

Hastigheten per kanal for den interne skanneklokken settes i variabelen "scan_rate" og den forventede maksimale hastigheten for en ekstern skanneklokke, maks 100 000.

Kanalerklæring

Kanalene som brukes må deklareres i en vektor. For å legge til flere kanaler, endre vektoren ved å legge til kanalene du vil bruke. For eksempel:

bruker alle de åtte kanalene til å måle. All funksjonen i mcc118 class bruker vektorer for å bestemme kanalene som er i bruk, og for dette er det nødvendig å vite lengden på vektoren.

Les og vis data

Avlesningene utføres i en sløyfe som fortsetter til brukeren stopper skanningen eller en overløpsfeil oppdages. Alle tilgjengelige prøver leses (opp til størrelsen på read_buffer). Siden read_request_size er satt til -1 (READ_ALL_AVAILABLE), returnerer funksjonen "hat.a_in_scan_read" umiddelbart med eksempler som er tilgjengelig for øyeblikket og timeout-parameteren ignoreres. Funksjonen "hat.a_in_scan_read" returnerer flere elementer: kjører, maskinvareoverløp, bufferoverløp, trigget og tidsavbrudd der alle er en bool-type, og data som er en liste over flytende (float). Datareturen er den vi skal bruke ved siden av for å vise informasjonen som er lest fra bufferen.

"samples_read_per_channel" brukes til å vise nummeret i datalisten der "kjøpet" ble gjort og vist. "total_samples_read" lagrer totalt antall prøver. Disse tallene vises i 12-sifret format.

Hvis det er prøver (samples) i bufferen, vil programmet begynne å vises. For hver kanal lagres resultatet til en viss verdi i listen, posisjonen for hver verdi er et multiplum av antall kanaler som brukes. For å vise bruker vi en indeks som lagrer posisjonen til hver prøve på hver kanal ved hver lesing.

Start skriptet
For å starte python-skriptet, åpne en terminal i mappen der du lagret de 2 filene med kommandoen nedenfor.

Etter det, i terminalen vil adressen som MCC 118 er plassert på, er måten hatten fungerer på, kanalene som er i bruk og skannehastigheten den fungerer med, satt til å fungere. Etter å ha trykket på ENTER-tasten vil programmet begynne å skanne.

start scan

Tolkningen av skjermen er som følger:

Samples Read er antallet prøver som vises og tilbakestilles til 0 etter at bufferen er fylt.
Scan Count er det totale antall prøver som er lest, det tilbakestilles ikke når bufferen er full og fortsetter å telle.
Channel 0 er verdien som leses av den kanalen, etter dette vil følgende kanaler som legges til senere vises.

Du kan laste ned koden og finne flere detaljer på Raspberry Pi Magnetometer (electromaker.io)

MCC DAQ for Raspberry PI er tilgjengelig hos Mouser Norge, Digilents autoriserte distributør i Norge.

Kommentarer