Innholdsfortegnelse:

Arduino invertert magnetronsensoravlesning: 3 trinn
Arduino invertert magnetronsensoravlesning: 3 trinn

Video: Arduino invertert magnetronsensoravlesning: 3 trinn

Video: Arduino invertert magnetronsensoravlesning: 3 trinn
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, November
Anonim
Arduino Invertert Magnetron -transduseravlesning
Arduino Invertert Magnetron -transduseravlesning

Som en del av et pågående prosjekt av meg her, som dokumenterte den pågående fremdriften i mitt angrep i verden med Ultra High Vacuum -partikkelfysikk, kom det til den delen av prosjektet som krevde litt elektronikk og koding.

Jeg kjøpte en overskytende MKS -serie 903 IMT kaldkatod vakuummåler, uten kontroller eller avlesning. For noen bakgrunn trenger systemer med ekstremt høyt vakuum forskjellige sensortrinn for å måle mangelen på gasser i et kammer på riktig måte. Etter hvert som du får et sterkere og sterkere vakuum, jo mer komplisert ender denne målingen.

Ved lavt vakuum eller grovt vakuum kan enkle termoelementmålere gjøre jobben, men etter hvert som du fjerner mer og mer fra kammeret, trenger du noe som ligner en gassioniseringsmåler. De to vanligste metodene er varme katoder og kalde katodemålere. Varme katodemålere fungerer som mange vakuumrør, der de har et filament som koker av frie elektroner, som akselereres mot et rutenett. Eventuelle gassmolekyler i veien vil ionisere og trippe sensoren. Kalde katodemålere bruker en høyspenning uten filament inne i en magnetron for å produsere en elektronbane som også ioniserer lokale gassmolekyler og tripper sensoren.

Min måler er kjent som en invertert magnetron -transdusermåler, laget av MKS, som integrerte kontrollelektronikken med selve målerens maskinvare. Utgangen er imidlertid en lineær spenning som sammenfaller med en logaritmisk skala som brukes til å måle vakuum. Dette er hva vi skal programmere arduinoen vår til å gjøre.

Trinn 1: Hva trengs?

Hva er nødvendig?
Hva er nødvendig?
Hva er nødvendig?
Hva er nødvendig?
Hva er nødvendig?
Hva er nødvendig?
Hva er nødvendig?
Hva er nødvendig?

Hvis du er som meg, prøver du å bygge et vakuumsystem på en billig måte, og får det som du kan. Heldigvis produserer mange målere konstruksjonsmålere på denne måten, hvor måleren sender ut en spenning som kan brukes i ditt eget målesystem. For dette instruerbare spesielt trenger du imidlertid:

  • 1 MKS HPS serie 903 AP IMT kaldkatode vakuum sensor
  • 1 arduino uno
  • 1 standard 2x16 LCD -tegnvisning
  • 10k ohm potensiometer
  • kvinnelig DSUB-9-kontakt
  • seriell DB-9-kabel
  • spenningsdeler

Trinn 2: Kode

Kode!
Kode!

Så jeg har litt erfaring med arduino, som å rote med 3D -skrivernes RAMPS -konfigurasjon, men jeg hadde ikke erfaring med å skrive kode fra grunnen, så dette var mitt første virkelige prosjekt. Jeg studerte mange sensorguider og modifiserte dem for å forstå hvordan jeg kunne bruke dem med sensoren min. I begynnelsen var tanken å gå med et oppslagstabell slik jeg har sett andre sensorer, men jeg endte opp med å bruke arduinoens flytende punkts evne til å utføre en log/lineær ligning basert på konverteringstabellen fra MKS i manualen.

Koden nedenfor setter ganske enkelt A0 som et flytende punkt for spenning, som er 0-5v fra spenningsdeleren. Deretter beregnes det tilbake til en 10v skala og interpoleres ved hjelp av ligningen P = 10^(v-k) hvor p er trykk, v er spenning på en 10v skala og k er enheten, i dette tilfellet torr, representert med 11.000. Det beregner det i flytende punkt, og viser det deretter på en LCD -skjerm i vitenskapelig notasjon ved hjelp av dtostre.

#include #include // initialiser biblioteket med tallene på grensesnittpinnene LiquidCrystal lcd (12, 11, 5, 4, 3, 2); // oppsettsrutinen kjøres en gang når du trykker reset: void setup () {/ / initialisere seriell kommunikasjon med 9600 bits per sekund: Serial.begin (9600); pinMode (A0, INNGANG); // A0 er angitt som input #define PRESSURE_SENSOR A0; lcd.begin (16, 2); lcd.print ("MKS Instruments"); lcd.setCursor (0, 1); lcd.print ("IMT kald katode"); forsinkelse (6500); lcd.clear (); lcd.print ("Gauge Pressure:"); } // sløyfe -rutinen går igjen og igjen for alltid: void loop () {float v = analogRead (A0); // v er inngangsspenning angitt som flytende punkt på analogLes v = v * 10,0 /1024; // v er 0-5v divider spenning målt fra 0 til 1024 beregnet til 0v til 10v skala float p = pow (10, v - 11.000); // p er trykk i torr, som er representert med k i ligningen [P = 10^(vk)] som er- // -11.000 (K = 11.000 for Torr, 10.875 for mbar, 8.000 for mikron, 8.875 for Pascal) Serial.print (v); forkullstrykk E [8]; dtostre (p, trykk E, 1, 0); // vitenskapelig format med 1 desimal lcd.setCursor (0, 1); lcd.print (trykkE); lcd.print ("Torr"); }

Trinn 3: Testing

Image
Image
Testing
Testing

Jeg utførte testene med en ekstern strømforsyning, i trinn 0-5v. Jeg utførte deretter beregningene manuelt og sørget for at de stemte overens med den viste verdien. Det ser ut til å lese litt av med en veldig liten mengde, men dette er egentlig ikke viktig, da det er innenfor min nødvendige spesifikasjon.

Dette prosjektet var et stort første kodeprosjekt for meg, og jeg hadde ikke fullført det hvis det ikke var for det fantastiske arduino -samfunnet: 3

De utallige guider og sensorprosjekter hjalp virkelig med å finne ut hvordan du gjør dette. Det var mye prøving og feiling, og mye ble sittende fast. Men til slutt er jeg ekstremt fornøyd med hvordan dette kom ut, og ærlig talt er opplevelsen av å se koden du fikk til å gjøre det den skal for første gang, ganske fantastisk.

Anbefalt: