Tartalomjegyzék:

Arduino invertált mágneses jeladó leolvasása: 3 lépés
Arduino invertált mágneses jeladó leolvasása: 3 lépés

Videó: Arduino invertált mágneses jeladó leolvasása: 3 lépés

Videó: Arduino invertált mágneses jeladó leolvasása: 3 lépés
Videó: Magnetic levitation with Arduino 2024, November
Anonim
Arduino invertált mágneses jeladó leolvasása
Arduino invertált mágneses jeladó leolvasása

Egy folyamatban lévő projektem részeként, amely dokumentálja az ultra nagy vákuum részecskefizika világába való belépésem előrehaladását, eljutottam a projekt azon részéhez, amely némi elektronikát és kódolást igényelt.

Vettem egy többlet MKS sorozatú 903 IMT hideg katódos vákuummérőt, vezérlő vagy leolvasás nélkül. Bizonyos körülmények között az ultra -nagy vákuumrendszereknek különböző érzékelőfokozatokra van szükségük ahhoz, hogy megfelelően mérjék a gázhiányt egy kamrában. Ahogy egyre erősebb vákuumot kap, annál bonyolultabb ez a mérés.

Alacsony vákuumban vagy durva vákuumban az egyszerű hőelemmérők képesek elvégezni a munkát, de ahogy egyre többet távolít el a kamrából, szüksége van valami gázionizációs mérőműszerre. A két leggyakoribb módszer a meleg katód és a hideg katódmérők. A forró katódmérők sok vákuumcsőhöz hasonlóan működnek, amelyekben egy izzószál van, amely szabad elektronokból forral, és amelyek felgyorsulnak a rács felé. Az útba eső gázmolekulák ionizálni fogják és leállítják az érzékelőt. A hideg katódmérők nagyfeszültséget használnak izzószál nélkül a magnetron belsejében, hogy elektronpályát hozzanak létre, amely szintén ionizálja a helyi gázmolekulákat és lekapcsolja az érzékelőt.

A mérőművemet fordított magnetron -jelátalakítónak nevezik, amelyet az MKS készített, amely integrálta a vezérlőelektronikát a mérő hardverével. A kimenet azonban lineáris feszültség, amely egybeesik a vákuum mérésére használt logaritmikus skálával. Erre fogjuk programozni az arduino -t.

1. lépés: Mire van szükség?

Ami szükséges?
Ami szükséges?
Ami szükséges?
Ami szükséges?
Ami szükséges?
Ami szükséges?
Ami szükséges?
Ami szükséges?

Ha olyan vagy, mint én, akkor olcsón próbálsz vákuumrendszert építeni, és megkapsz minden lehetséges mérőt. Szerencsére sok műszergyártó épít ilyen módon mérőműszereket, ahol a mérő a saját mérőrendszerében használható feszültséget ad ki. Ehhez az utasításhoz azonban szüksége lesz:

  • 1 MKS HPS sorozat 903 AP IMT hidegkatódos vákuumérzékelő
  • 1 arduino uno
  • 1 standard 2x16 LCD karakteres kijelző
  • 10k ohmos potenciométer
  • női DSUB-9 csatlakozó
  • soros DB-9 kábel
  • feszültségosztó

2. lépés: Kódolás

Kód!
Kód!

Tehát van némi tapasztalatom az arduino -val kapcsolatban, például a 3D -s nyomtatóim RAMPS -konfigurációjával való összevisszázással, de nem volt tapasztalatom a kód írásával az alapoktól kezdve, így ez volt az első igazi projektem. Sok érzékelő útmutatót tanulmányoztam és módosítottam, hogy megértsem, hogyan használhatom őket az érzékelőmmel. Eleinte az volt az ötlet, hogy keresőtáblával készüljek, ahogy más érzékelőket is láttam, de végül az arduino lebegőpontos képességét használva log/lineáris egyenletet hajtottam végre az MKS által a kézikönyvben megadott konverziós táblázat alapján.

Az alábbi kód egyszerűen az A0-t lebegőpontos egységként állítja be a feszültséghez, amely 0-5v a feszültségosztótól. Ezután kiszámítják 10V skáláig, és interpolálják a P = 10^(v-k) egyenlet segítségével, ahol p nyomás, v feszültség 10v skálán és k az egység, ebben az esetben torr, amelyet 11.000 jelent. Kiszámítja, hogy lebegőpontos, majd megjeleníti az LCD -képernyőn tudományos jelöléssel a dtostre használatával.

#include #include // inicializálja a könyvtárat a LiquidCrystal lcd (12, 11, 5, 4, 3, 2) interfész csapok számával; // a telepítési rutin egyszer fut, amikor megnyomja a reset gombot: void setup () {/ / inicializálja a soros kommunikációt 9600 bit / másodperc sebességgel: Serial.begin (9600); pinMode (A0, INPUT); // Az A0 bemenetként van beállítva #define PRESSURE_SENSOR A0; lcd. kezdet (16, 2); lcd.print ("MKS Instruments"); lcd.setCursor (0, 1); lcd.print ("IMT hideg katód"); késleltetés (6500); lcd.clear (); lcd.print ("Mérőnyomás:"); } // a ciklus rutin örökké és újra fut: void loop () {float v = analogRead (A0); // v lebegőpontos egységként beállított bemeneti feszültség az analogRead v = v * 10.0 /1024; // v 0-5v osztófeszültség 0 -tól 1024 -ig mérve 0-010v skálán úszó p = pow (10, v - 11.000); // p a torr -ban mért nyomás, amelyet k jelent a [P = 10^(vk)] egyenletben: // -11.000 (K = 11.000 Torr, 10.875 mbar, 8.000 mikron, 8.875 Pascal)) Sorozat.nyomtatás (v); szénnyomásE [8]; dtostre (p, nyomásE, 1, 0); // tudományos formátum 1 tizedesjeggyel lcd.setCursor (0, 1); lcd.print (nyomásE); lcd.print ("Torr"); }

3. lépés: Tesztelés

Image
Image
Tesztelés
Tesztelés

A vizsgálatokat külső tápegységgel végeztem, 0-5v-os lépésekben. Ezután manuálisan elvégeztem a számításokat, és megbizonyosodtam arról, hogy megegyeznek a megjelenített értékkel. Úgy tűnik, hogy nagyon kis mértékben leolvasható, de ez nem igazán fontos, mivel a szükséges specifikációkon belül van.

Ez a projekt hatalmas első kódprojekt volt számomra, és nem fejeztem volna be, ha nem a fantasztikus arduino közösség lett volna: 3

A számtalan útmutató és érzékelőprojekt valóban segített kitalálni, hogyan kell ezt megtenni. Sok volt a próba és a hiba, és sok az elakadás. De végül rendkívül elégedett vagyok azzal, hogy ez hogyan jött ki, és őszintén szólva, az élmény, amikor látta, hogy az elkészített kód először azt csinálja, amit kellene.

Ajánlott: