Innehållsförteckning:

Arduino Inverterad Magnetron -givaravläsning: 3 steg
Arduino Inverterad Magnetron -givaravläsning: 3 steg

Video: Arduino Inverterad Magnetron -givaravläsning: 3 steg

Video: Arduino Inverterad Magnetron -givaravläsning: 3 steg
Video: Частотомер на Arduino Uno c входным делителем частоты 2024, November
Anonim
Arduino Inverterad Magnetron -givaravläsning
Arduino Inverterad Magnetron -givaravläsning

Som en del av ett pågående projekt för mig här, som dokumenterar den pågående framstegen i min strävan mot Ultra High Vacuum -partikelfysik, kom det till den del av projektet som krävde lite elektronik och kodning.

Jag köpte en överskottsvakuummätare i MKS -serien 903 IMT, utan kontroller eller avläsning. För en viss bakgrund behöver ultrahögvakuumsystem olika sensorsteg för att korrekt mäta bristen på gaser i en kammare. När du får ett starkare och starkare vakuum, desto mer komplicerad blir denna mätning.

Vid lågvakuum eller grovt vakuum kan enkla termoelementmätare göra jobbet, men när du tar bort mer och mer från kammaren behöver du något som liknar en gasjoniseringsmätare. De två vanligaste metoderna är varma katoder och kalla katodmätare. Heta katodmätare fungerar som många vakuumrör, där de har ett glödtråd som kokar av fria elektroner, som accelereras mot ett rutnät. Eventuella gasmolekyler i vägen kommer att jonisera och utlösa sensorn. Kalla katodmätare använder en högspänning utan glödtråd inuti en magnetron för att producera en elektronväg som också joniserar lokala gasmolekyler och utlöser sensorn.

Min mätare är känd som en inverterad magnetronsgivarmätare, tillverkad av MKS, som integrerade styrelektroniken i själva mätarhårdvaran. Utgången är dock en linjär spänning som sammanfaller med en logaritmisk skala som används för att mäta vakuum. Detta är vad vi kommer att programmera vår arduino att göra.

Steg 1: Vad behövs?

Vad behövs?
Vad behövs?
Vad behövs?
Vad behövs?
Vad behövs?
Vad behövs?
Vad behövs?
Vad behövs?

Om du är som jag, försöker du bygga upp ett vakuumsystem på ett billigt sätt. Lyckligtvis tillverkar många mätare byggmätare på detta sätt, där mätaren matar ut en spänning som kan användas i ditt eget mätsystem. För detta instruerbara specifikt behöver du dock:

  • 1 MKS HPS -serie 903 AP IMT kallkatodvakuumsensor
  • 1 arduino uno
  • 1 standard 2x16 LCD -teckenvisning
  • 10k ohm potentiometer
  • hona DSUB-9-kontakt
  • seriell DB-9-kabel
  • spänningsdelare

Steg 2: Kod

Koda!
Koda!

Så jag har lite erfarenhet av arduino, som att röra med mina 3d -skrivares RAMPS -konfiguration, men jag hade inte erfarenhet av att skriva kod från grunden, så det här var mitt första riktiga projekt. Jag studerade många sensorguider och modifierade dem för att förstå hur jag kunde använda dem med min sensor. Först var tanken att gå med en uppslagstabell som jag har sett andra sensorer, men jag slutade med att använda arduinos flytande punktförmåga för att utföra en log/linjär ekvation baserad på konverteringstabellen från MKS i manualen.

Koden nedan anger helt enkelt A0 som en flytande punktenhet för spänning, som är 0-5v från spänningsdelaren. Sedan beräknas det tillbaka till en 10v skala och interpoleras med ekvationen P = 10^(v-k) där p är tryck, v är spänning på en 10v skala och k är enheten, i detta fall torr, representerad av 11.000. Den beräknar den i flytande punkt och visar den sedan på en LCD -skärm i vetenskaplig notering med dtostre.

#include #include // initiera biblioteket med numren på gränssnittsstiften LiquidCrystal lcd (12, 11, 5, 4, 3, 2); // installationsrutinen körs en gång när du trycker på reset: void setup () {/ / initiera seriell kommunikation med 9600 bitar per sekund: Serial.begin (9600); pinMode (A0, INPUT); // A0 är inställd som input #define PRESSURE_SENSOR A0; lcd.begin (16, 2); lcd.print ("MKS Instruments"); lcd.setCursor (0, 1); lcd.print ("IMT kall katod"); fördröjning (6500); lcd.clear (); lcd.print ("Mättryck:"); } // loop -rutinen körs om och om igen för alltid: void loop () {float v = analogRead (A0); // v är ingångsspänning inställd som flytpunktsenhet på analogLäs v = v * 10,0 /1024; // v är 0-5v divideringsspänning mätt från 0 till 1024 beräknat till 0v till 10v skala float p = pow (10, v - 11.000); // p är trycket i torr, som representeras av k i ekvationen [P = 10^(vk)] som är- // -11.000 (K = 11.000 för Torr, 10.875 för mbar, 8.000 för mikron, 8.875 för Pascal) Serial.print (v); rödningstryck E [8]; dtostre (p, tryck E, 1, 0); // vetenskapligt format med 1 decimal lcd.setCursor (0, 1); lcd.print (tryckE); lcd.print ("Torr"); }

Steg 3: Testning

Image
Image
Testning
Testning

Jag utförde testerna med en extern strömförsörjning, i steg 0-5v. Jag utförde sedan beräkningarna manuellt och såg till att de stämde överens med det visade värdet. Det verkar läsa lite av med en mycket liten mängd, men det här är inte riktigt viktigt, eftersom det är inom min nödvändiga specifikation.

Detta projekt var ett enormt första kodprojekt för mig, och jag hade inte avslutat det om det inte vore för det fantastiska arduino -samhället: 3

De otaliga guiderna och sensorprojekten hjälpte verkligen till att ta reda på hur man gör detta. Det var mycket prövning och fel, och mycket fastnade. Men i slutändan är jag oerhört nöjd med hur det här kom ut, och ärligt talat är upplevelsen av att se koden du fick göra vad den ska för första gången ganska fantastisk.

Rekommenderad: