Spisu treści:

Odczyt przetwornika z odwróconym magnetronem Arduino: 3 kroki
Odczyt przetwornika z odwróconym magnetronem Arduino: 3 kroki

Wideo: Odczyt przetwornika z odwróconym magnetronem Arduino: 3 kroki

Wideo: Odczyt przetwornika z odwróconym magnetronem Arduino: 3 kroki
Wideo: Jak podłączyć przetwornik ciśnienia? 2024, Listopad
Anonim
Odczyt przetwornika magnetronowego odwróconego Arduino
Odczyt przetwornika magnetronowego odwróconego Arduino

W ramach mojego projektu, dokumentującego nieustanny postęp mojej wyprawy w świat fizyki cząstek ultrawysokiej próżni, doszedłem do części projektu, która wymagała trochę elektroniki i kodowania.

Kupiłem nadmiarowy wakuometr MKS serii 903 IMT z zimną katodą, bez kontrolera i odczytu. Dla pewnego tła, systemy ultrawysokiej próżni wymagają różnych stopni czujnika, aby prawidłowo zmierzyć brak gazów w komorze. Im większa i silniejsza próżnia, tym bardziej skomplikowany jest ten pomiar.

Przy niskiej lub szorstkiej próżni, proste wskaźniki termopary mogą wykonać zadanie, ale gdy coraz więcej usuwasz z komory, potrzebujesz czegoś podobnego do miernika jonizacji gazu. Dwie najbardziej popularne metody to mierniki z gorącą katodą i zimną katodą. Mierniki z gorącą katodą działają jak wiele lamp próżniowych, w których mają włókno, które odparowuje wolne elektrony, które są przyspieszane w kierunku siatki. Wszelkie cząsteczki gazu na drodze jonizują i wyzwalają czujnik. Mierniki z zimną katodą wykorzystują wysokie napięcie bez żarnika wewnątrz magnetronu, aby wytworzyć ścieżkę elektronu, która również jonizuje lokalne cząsteczki gazu i wyzwala czujnik.

Mój miernik jest znany jako odwrócony przetwornik magnetronowy, wyprodukowany przez MKS, który zintegrował elektronikę sterującą z samym osprzętem miernika. Jednak wyjście jest napięciem liniowym, które pokrywa się ze skalą logarytmiczną używaną do pomiaru próżni. Do tego będziemy programować nasze arduino.

Krok 1: Co jest potrzebne?

Co jest potrzebne?
Co jest potrzebne?
Co jest potrzebne?
Co jest potrzebne?
Co jest potrzebne?
Co jest potrzebne?
Co jest potrzebne?
Co jest potrzebne?

Jeśli jesteś podobny do mnie, próbując zbudować system próżniowy tanio, uzyskanie dowolnego miernika jest tym, na co zadowolisz się. Na szczęście wielu producentów mierników buduje mierniki w ten sposób, gdzie miernik wyprowadza napięcie, które można wykorzystać we własnym systemie pomiarowym. Jednak do tego konkretnego instruktażu będziesz potrzebować:

  • 1 czujnik podciśnienia z zimną katodą MKS serii HPS 903 AP IMT
  • 1 arduino
  • 1 standardowy wyświetlacz LCD 2x16 znaków
  • Potencjometr 10k omów
  • złącze żeńskie DSUB-9
  • kabel szeregowy DB-9
  • dzielnik napięcia

Krok 2: Kod

Kod!
Kod!

Tak więc, mam pewne doświadczenie z arduino, jak bawienie się konfiguracją RAMPS moich drukarek 3D, ale nie miałem doświadczenia w pisaniu kodu od podstaw, więc to był mój pierwszy prawdziwy projekt. Przestudiowałem wiele przewodników po czujnikach i zmodyfikowałem je, aby zrozumieć, w jaki sposób mogę ich używać z moim czujnikiem. Początkowo pomysł polegał na skorzystaniu z tabeli przeglądowej, tak jak widziałem inne czujniki, ale w końcu wykorzystałem zdolność zmiennoprzecinkową arduino do wykonania równania log/liniowego na podstawie tabeli konwersji dostarczonej przez MKS w instrukcji.

Poniższy kod po prostu ustawia A0 jako jednostkę zmiennoprzecinkową dla napięcia, która wynosi 0-5 V z dzielnika napięcia. Następnie jest obliczane z powrotem do skali 10V i interpolowane za pomocą równania P=10^(v-k), gdzie p jest ciśnieniem, v jest napięciem w skali 10V, a k jest jednostką, w tym przypadku torr, reprezentowaną przez 11.000. Oblicza to w postaci zmiennoprzecinkowej, a następnie wyświetla na ekranie LCD w notacji naukowej za pomocą dtostre.

#include #include // zainicjuj bibliotekę numerami pinów interfejsu LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// procedura konfiguracji uruchamia się raz po naciśnięciu przycisku reset: void setup() { / / zainicjuj komunikację szeregową z prędkością 9600 bitów na sekundę: Serial.begin(9600); pinMode(A0, WEJŚCIE); //A0 jest ustawione jako wejście #define PRESSURE_SENSOR A0; lcd.początek(16, 2); lcd.print("Instrumenty MKS"); lcd.setCursor(0, 1); lcd.print("Zimna katoda IMT"); opóźnienie(6500); lcd.clear(); lcd.print("Ciśnienie manometru:"); }// procedura pętli działa w kółko w nieskończoność: void loop() { float v = analogRead(A0); //v to napięcie wejściowe ustawione jako jednostka zmiennoprzecinkowa na analogRead v = v * 10.0 / 1024; //v to napięcie dzielnika 0-5V mierzone od 0 do 1024 przeliczone na skala float od 0v do 10v p = pow(10, v - 11.000); //p to ciśnienie w torach, które jest reprezentowane przez k w równaniu [P=10^(vk)], które wynosi - // -11.000 (K = 11.000 dla Torr, 10.875 dla mbar, 8.000 dla mikronów, 8,875 dla Pascala) Serial.print(v); ciśnienie węgla E[8]; dtostre(p, ciśnienieE, 1, 0); // format naukowy z 1 miejscem po przecinku lcd.setCursor(0, 1); lcd.print(naciskE); lcd.print("Torr"); }

Krok 3: Testowanie

Image
Image
Testowanie
Testowanie

Testy wykonałem przy użyciu zewnętrznego zasilacza, w krokach od 0-5v. Następnie ręcznie wykonałem obliczenia i upewniłem się, że zgadzają się z wyświetlaną wartością. Wydaje się, że odczytuje się nieznacznie o bardzo małą ilość, jednak nie jest to naprawdę ważne, ponieważ mieści się w mojej potrzebnej specyfikacji.

Ten projekt był dla mnie ogromnym pierwszym projektem kodu i nie ukończyłbym go, gdyby nie fantastyczna społeczność arduino:3

Niezliczone przewodniki i projekty czujników naprawdę pomogły w ustaleniu, jak to zrobić. Było wiele prób i błędów i wiele utknięć. Ale w końcu jestem bardzo zadowolony z tego, jak to wyszło i szczerze mówiąc, doświadczenie zobaczenia kodu, który stworzyłeś, robi to, co powinien po raz pierwszy, jest całkiem niesamowite.

Zalecana: