Przedstawione zostanie podłączenie czujnika MPXHZ6400A do Arduino oraz odczytywanie z niego wartości na wyświetlaczu OLED 128×64 tak, aby można było korzystać z niego w komorze próżniowej.
Spis treści
- Specyfikacja
- Wykorzystane komponenty
- Podłączenie
- Zaprogramowanie
- Kalibracja
- Wykorzystanie w praktyce
- Pliki do pobrania
Specyfikacja
• Zakres odczytu ciśnienia od 40 kpa do 400 kpa
• Poprawiona dokładność w wysokiej temperaturze
• Maksymalny błąd 1,5% powyżej 0 ° C do 85 ° C
• W pełni skalibrowany i skompensowany
• Idealnie nadaje się do systemów mikroprocesorowych lub opartych na mikrokontrolerach
• Zakres Temperatury roboczej od -40 ° C do +125 ° C
Wykorzystane komponenty
- Czujnik ciśnienia MPXHZ6400A
- Wyświetlacz graficzny OLED 128×64 pikseli 0,96` Biały
- Arduino
- Przewody połączeniowe
- Płytka stykowa
Podłączenie
Podłączenie czujnika jest bardzo proste, trudność może sprawiać przylutowanie przewodów do czujnika, ponieważ jest on dosyć mały. Na początku spojrzymy na schemat czujnika, który znajduje się poniżej.
Warto spojrzeć na strzałkę, która wskazuje róg do zidentyfikowania położenia pinów. Weźmy nasz czujnik w dłoń i obejrzyjmy dookoła. Jedna ze ścianek powinna mieć „ucięty” róg, po tym zlokalizujemy gdzie podłączyć przewody.
Na piny DNC (DoNotConnect) nie zwracamy uwagi, interesują nas tylko 3 piny, Vout, GND i Vs. Vout, podłączamy do A0 na arduino, GND do GND i Vs do 5V. Najlepiej wykorzystać płytkę stykową, ponieważ będziemy korzystać z wyświetlacza, który również będzie potrzebował zasilania. Podłączenie oraz wszelkie informacje o wyświetlaczach OLED można znaleźć pod tym linkiem https://ajmaker.pl/2021/10/28/wyswietlacze-oled-0-91-0-96-2/.
Zaprogramowanie
Program będzie prosty, ponieważ opiera się on na sczytywaniu napięcia przechodzącego przez czujnik. Volty, które będziemy otrzymywać można dowolnie zastosować pod swoje potrzeby, w tym wypadku pomnożyłem je razy sto i zmapowałem wartość.
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> Adafruit_SSD1306 display(0); void setup() { Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);//definiujemy rodzaj użytego wyświetlacza oraz adres I2C display.clearDisplay();//czyścimy ekran display.setTextSize(2);// ustawiamy rozmiar czcionki display.setTextColor(WHITE);//ustawiamy kolor biały } void loop() { int sensorValue = analogRead(A0); //pobranie wartości z czujnika int voltage = (sensorValue * (5.0 / 1023.0))*100; //przeliczamy wartość z czujnika na volty i dodatkowo mnożymy * 100, aby móc użyć liczbę całkowitą w mapowaniu long maped = map(voltage, 76, 115, 40, 0); //mapujemy wartości z czujnika na takie, które nam odpowiadają Serial.println(voltage); display.setCursor(2, 24);//ustawiamy kursor na pozycje 2 szerokości, 16 wysokości (w wypadku wyświetlacza 128x32 ustawiamy 2,6) if(maped>0) //jeżeli zmapowana liczba jest większa od zera { display.print("-"); //wyświetl minus } display.print("0."); //piszemy tekst który ma się ukazać display.println(maped); //piszemy tekst który ma się ukazać display.display();//wyświetlamy na ekranie, bez tego nie zadziała delay(500); display.clearDisplay();//czyścimy ekran }
Wyświetlane informacje na wyświetlaczu są w taki sposób, ponieważ inaczej nie dało uzyskać się wartości dziesiętnych poprzez zmapowanie.
Kalibracja
Tak na prawdę czujnik jest skalibrowany, ale trzeba ustawić go do swoich potrzeb, można to zrobić mapowaniem, mnożeniem/dzieleniem otrzymanego woltażu.
Wykorzystanie w praktyce
Czujnik został umieszczony w komorze próżniowej i została załączona pompa próżniowa, odczyty można zobaczyć na wyświetlaczu (w barach).