Skocz do zawartości

wowek

Użytkownicy
  • Zawartość

    2
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O wowek

  • Ranga
    1/10

Informacje

  • Płeć
    Mężczyzna
  • Zawód
    Spec. od Email Marketingu
  1. Cześć wszystkim Posiadam taki oto czujnik ciśnienia oleju (tzw. VDO), który planuję zamontować do samochodu: Czujnik posiada dwa wyjścia - Ground i Gauge, czyli wyjście na licznik analogowy. Ja zamiast licznika, chcę wstawić wyświetlacz OLED, na którym będzie wyświetlane ciśnienie oleju w Barach. Zakres czujnika to 0-10 BAR, gdzie przy zerze czujnik posiada rezystancję na wyjściach 240R, a przy 10 barach - 33R. Czujnik działa bez zasilania(?), po prostu pod wpływem ciśnienia - zmienia się rezystancja na wyjściu Pytanie brzmi - jak te dwa przewody od czujnika podłączyć pod arduino, czy muszę wstawiać tam jakiś dzielnik napięcia między dwoma klemami, którego koniec podłączę pod pin analogowy, jeśli tak, to jak zrobić dzielnik napięcia dla czegoś, co ma tak zmienną rezystancję. Oprócz czujnika ciśnienia oleju, chcę też podłączyć czujnik temperatury oleju, ale z nim poszło łatwiej, okazało się, że jest to termistor, zmierzyłem rezystancję na nim - 1.5k, zrobiłem mu dzielnik napięcia i działa, a ot z czujnikiem ciśnienia nie potrafię sobie poradzić. Byłoby miło, gdyby ktoś chciał też spojrzeć na mój kod, czy nie namieszałem, ale bardziej zastanawia mnie kwestia fizycznego połączenia wszystkiego w całość #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <Wire.h> #include <SPI.h> //I2C: //ustawiam pin do resetowania wyswietlacza //Adafruit_SSD1306 display(-1); //moj oled I2C nie posiada takiego pinu, stad -1 //#if (SSD1306_LCDHEIGHT != 64) //#error("Popraw wysokosc"); //#endif //SPI: #define OLED_MOSI 9 //SDA #define OLED_CLK 10 //SCL #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13 Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); // Port czujnika cisnienia #define CZUJKA_C A0 // Port czujnika temperatury #define CZUJKA_T A1 int Vo; // Kalibracja czujnika cisnienia // 0-10 BAR, 0V-5V lub 240R-33R #define MIN_CISNIENIE 0.0 #define MAX_CISNIENIE 10.0 //odjalem 240-33, bo przy wartosciach 240 i 33 wyswietlacz pokazywal dziwne dane, powyzej 11 bar. #define MIN_NAPIECIE 207.0 #define MAX_NAPIECIE 0.0 //czujnik temperatury float R1 = 10000; float logR2, R2, T; float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07; #if (SSD1306_LCDHEIGHT != 64) #error("Popraw wysokosc"); #endif void setup() { Serial.begin(9600); //display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.begin(SSD1306_SWITCHCAPVCC); display.display(); delay(3000); display.clearDisplay(); delay(3000); display.display(); } void loop() { /* wersja dla napiecia float volt=(analogRead(CZUJKA_C)+1)/204.8; // 1024/5.0 = 204.8 * wersja dla rezystancji float volt=(analogRead(CZUJKA_C)+1)/4.26; // 1024/240 = 4.266(6) */ float volt=(analogRead(CZUJKA_C)+1)/4.94; // 1024/207 = 4.94 float pressure=(volt-MIN_NAPIECIE)*(MAX_CISNIENIE-MIN_CISNIENIE)/(MAX_NAPIECIE-MIN_NAPIECIE); // odczyt temperatury Vo = analogRead(CZUJKA_T); R2 = R1 * (1023.0 / (float)Vo - 1.0); logR2 = log(R2); T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2)); T = T - 273.15; display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Cisnienie:"); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(5,25); display.println(pressure); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(20, 54); display.println("BAR"); display.setCursor(70, 0); display.println("Temperat."); display.setTextSize(2); display.setCursor(65, 25); display.println(T); display.setTextSize(1); display.setCursor(90, 54); display.println("*C"); display.display(); delay(200); } Dzięki za pomoc!
  2. A co jeśli ktoś nie posiada tego małego bloczku ? Przeszukałem dokładnie wszystko po kilka razy i nie ma
×
×
  • Utwórz nowe...