IX. TavIR programozói verseny: Szabó Gábor (Tonic): LCD hőmérő

A pályázat keretében megvalósítottam az LCD hőmérőt, ami Arduinora épül. A hozzávalókat nem bonyolult beszerezni az interneten illetve a TavIR Shopban könnyen megvásárolhatók.

A program a Steinhart-Hart hőmérő egyenletet használja.

A termiszor hőmérséklet-ellenjállás grafikonján jól látható a hőmérőm elektromos ellenállás tulajdonsága külöböző hőfokon. (A Steinhart-Hart hőmérő egyenlet bővebben: http://elfiz2.kee.hu/jegyzet/labor01.pdf)

Elfut bármelyik Arduinon azaz UNO-tól a Mega2560-ig, de nekem csak 2560 Mega-val volt alkalmam kipróbálni. Más méretű LCD-n is elfut csak ahhoz át kell egy kicsit írogatni a programot....

Az LCD-s hőmérő

A program több verzióban létezett:

  • Sorosportos
  • LCD ékezet nélkül
  • LCD ékezettel

A program másodpercenként kétszer ellenőrziés kijelzi a hőmérsékletet.

Hozzávalók

Alkatrészlista

  • 2x 10 kohm ellenállás,
  • 16x2 karakteres LCD kijelző,
  • Arduino és USB kábel,
  • 10 kohm ellenállású thermistor,
  • Vezetékek,
  • Próbapanel,
  • Potenciométer

A Program

#include <math.h>

  // A matek konyvtarat

#include "LiquidCrystal.h"

  // A LiquidCrystal konyvtarat hasznaljuk

LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

  // Az LCD bekotes a labak:

  // R(D4), E(D5), D4(D6) ,D5(D7), D6(D8), D7(D9)

 

byte e1[8] = {B10,B100,B1110,B10001,B11111,B10000,B1110};

byte o3[8] = {B1010,B1010,B0,B1110,B10001,B10001,B1110};

  //Beallitjuk az ekezetes karaktereket

double Thermister(int RawADC) {

double Temp;

Temp = log(((10240000/RawADC) - 10000));

// 10K Ohm hoellenallas. 

//Ahogy számolunk: Ellenállás =

  (1024 * BalanceResistor/ADC) - BalanceResistor

 Temp = 1 / (0.001129148 + (0.000234125 * Temp) +

        + (0.0000000876741 * Temp * Temp * Temp));

Temp = Temp - 273.15;

// Convert Kelvin to Celcius

 return Temp;

}

void setup() {

  lcd.createChar(1, e1);

  lcd.createChar(4, o3);

  // Tarsitjuk a szamokhoz

 lcd.begin(16, 2);

      //Az LCD 2 sor, 16 oszlopos

lcd.print("  Homerseklet:");

      //LCD-re kiirunk szoveget

}

void loop() {

   lcd.setCursor(3, 0);

  //Kurzor 1. sor 4. karalternel

   lcd.write(4);

  //A't irjuk hosszu o"

   lcd.setCursor(5, 0);

  //Kurzor 1. sor 6 karalternel

   lcd.write(1);

  //Atirjuk az e betut e'-re

   lcd.setCursor(8, 0);

  //Kurzor 1.sor 9. karakternel

   lcd.write(1);

  //Atirjuk az e betut e'-re

  lcd.setCursor(11, 1);

  //Kurzor 2.sor 12. karakternel

   lcd.print("C");

  //C bertu kifirkalas

  lcd.setCursor(10, 1);

  //Kurzor a 2.sor 11. karakternel

   lcd.print((char)223);

  //Fokjel elohivasa a memoriabaol

  lcd.setCursor(4, 1);

  //Kurzor a 2.sor 4. karakternel

   lcd.print(double(Thermister(analogRead(0)))); 

  // Kiirjuk a homerseklete

   delay(500);

  //Fel masodpercet varunk

 

Szabó Gábor (Tonic)

 

Fájlmelléklet: 

TavIR-Facebook