Serwisy partnerskie:
Close icon
Serwisy partnerskie

ThermoDuino - termometr z wyświetlaczem OLED i niewielką płytką Arduino

O termometrach napisano już wiele. Obok zegara jest to projekt typu must heve każdego początkującego i nie tylko elektronika. W tym przypadku zbudujemy mini Arduino na bazie którego powstanie niemal jednocalowy ThermoDuino. Do budowy użyjemy: czujnik temperatury LM35, układ ATmega328, a także wyświetlacz OLED 0,96″.
Article Image

Wybór czujnika temperatury padł na LM35 SO8 SMD, który jest podłączony do pinu analogowego A0 układu. Wyświetlacz OLED jest podłączony do pinów A4 i A5 MCU. LM35 mierzy temperaturę, a mikrokontroler wyświetla jej wartość na wyświetlaczu OLED. Złącze CN2 służy do programowania mikrokontrolera za pomocą Arduino IDE i wypalania boot-loadera. A niskoprofilowa i mała płytka może zmieścić się w bardzo małej obudowie. Przykładowy kod pomoże Ci wyświetlić temperaturę w stopniach Celsjusza i Fahrenheita. Jest to sprzęt open-source kompatybilny z Arduino, dzięki czemu łatwo jest stworzyć własny kod używając Arduino IDE.

LM35 jest precyzyjnym czujnikiem temperatury z napięciem wyjściowym liniowo proporcjonalnym do temperatury w stopniach Celsjusza. My użyliśmy czujnika SMD SO8, którego można bezpośrednio zamontować na płytce. Urządzenie może mierzyć temperaturę w zakresie od -55° do +150°C. Napięcie wyjściowe LM35 wzrasta o 10 mV na każdy stopień Celsjusza wraz ze wzrostem temperatury.

Połączenia do programowania Arduino

Schemat połączenia Arduino z płytką celem wypalenia Boot-Loadera
Schemat połączenia Arduino z płytką celem zaprogramowania

Nowy układ Atmega328 wymaga wypalenia Boot-Loadera przed wgraniem kodu Arduino. Więcej informacji na temat wypalania Boot-loadera i programowania znajdziesz pod tym linkiem https://bit.ly/32vWTqa

Parametry techniczne gotowego ThermoDuino

  • Zasilanie 5 V DC @ 20 mA
  • Zakres temperatur do 150°C
  • Wyjście czujnika 10 mV/C (1,5 V na wyjściu przy temperaturze 150°C)
  • Wymiary PCB: 27,31×28,42 mm

Schemat elektryczny termometru ThermoDuino

Schemat elektryczny ThermoDuino

Połączenie wyświetlacza z mini Arduino i sensorem LM35 

Schemat połączeń

Listing

/*
 * ThermoDuino 
 * Code Author Rui Santos of (RandomNerdTutorials), Code Modified by www.rajkumarsharma.com
 */

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

const int sensorPin = A0; 
float sensorValue;
float voltageOut;

float temperatureC;
float temperatureF;

// uncomment if using LM335
//float temperatureK;

void setup() {
  pinMode(sensorPin, INPUT);
  Serial.begin(9600);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  voltageOut = (sensorValue * 5000) / 1024;
  
  // calculate temperature for LM35 (LM35DZ)
  temperatureC = voltageOut / 10;
  temperatureF = (temperatureC * 1.8) + 32;

  // calculate temperature for LM335
  //temperatureK = voltageOut / 10;
  //temperatureC = temperatureK - 273;
  //temperatureF = (temperatureC * 1.8) + 32;

  // calculate temperature for LM34
  //temperatureF = voltageOut / 10;
  //temperatureC = (temperatureF - 32.0)*(5.0/9.0);

  Serial.print("Temperature(ÂşC): ");
  Serial.print(temperatureC);
  Serial.print("  Temperature(ÂşF): ");
  Serial.print(temperatureF);

  // clear display
  display.clearDisplay();

  // display temperature Celsius
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print(temperatureC);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");

  // display temperature Fahrenheit
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(temperatureF);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("F");

  display.display();    
  delay(1000);
 }
Galeria
DATA SHEET
Wideo
Do pobrania
Download icon Gerbery Download icon Schemat elektryczny ThermoDuino Download icon Nota aplikacyjna LM35 Download icon Listing

Artykuł THERMODUINO – OLED DISPLAY THERMOMETER AND TINY ARDUINO BOARD opracowano w wersji polskiej na podstawie współpracy z portalem www.electronics-lab.com.

Tematyka materiału: ATMEGA328, LM35, MPN: LM358BIDR, OLED, ThermoDuino
AUTOR
Źródło
www.electronics-lab.com
Udostępnij
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"