Digital Temperatur

Fra HTX Arduino
Spring til navigation Spring til søgning
Billede af modul DS18B20 Digital temperaturmåler

Modul DS18B20 fra Keyes er en digital temperaturmåler. I de klassiske temperaturmålere udsendes en analog spænding, men denne måler udsender i stedet en digital værdi. Dette kan udnyttes til at undgå besværlige udregninger. Databladet for modulet kan ses på [[1]].

Modulet

Modulet er fra keyes-serien keyes-moduler, og har betegnelsen KY-001.

Princip-diagram for DS18B20

Principskitse af DS18B20

Hardwaren består af et færdigbygget modul. Dette modul har en IC (integreret kreds) som kan måle temperaturen og sende den videre ud fra signalbenet. IC'eren er markeret med orange ring til højre.

Der er tre ben på dette modul:

  • Ben 1: GND (-)
  • Ben 2: +5V
  • Ben 3: Signal (S)

Ben tre er både output og input (bi-directional), og man skal derfor være opmærksom på, om porten kan håndtere kommunikation begge veje. Til testning af dette modul blev brugt PIC16F877 som på port B kan håndtere sådanne input. Alt dette kan dog læses i databladet for de forskellige PIC's.

For at få et klart signal fra ben 3, er der påsat en pull-up på boardet. Dette er en 4k7 modstand, og det er derfor ikke nødvendigt at tilføje dette til sit eget projekt. Dette nævnes her, da mange eksempler på det store internet ikke har denne med som udgangspunkt. Desuden er der en rød lampe, som blinker i et jævnt tempo, når det virker, og blinker meget hurtigt, når det ikke virker. Denne lampe kan bruges som indikation på om der overhovedet er kontakt til printet.

Diagram over DS18B20

Print DS18B20

På billedet til venstre kan man se, hvordan boardet er sat op med de forskellige hardware dele.


Andre versioner af DS18B20

Holstebro HTX har pt ikke andre moduler, som kan måle en temperatur digitalt. Alternativt kan man bruge forskellige analoge temperaturmålere, som kan findes i Keyes-moduler, eller man kan selv bygge en analog temperaturmåler op.

Software modulet ds18b20.jal

Der er lavet 2 biblioteker til DS18B20. Det er ONE_WIRE og DS18B20, og begge skal inkluderes og sættes op i ens jal kode.

Vigtig -- Koden er lavet til en PIC16F877 med en 20mHZ resonator! Uden dette vil koden ikke virke.


Anvendelse af ds18b20

Når man vil anvende ds18b20, så skal man include one_wire.jal og DS18B20.jal som følger:

  --inkludering og setup af one wire biblioteket
  alias d1w_bus                 is pin_b2
  alias d1w_bus_direction  is pin_b2_direction
  include one_wire               -- inkludering af one wire biblioteket
  d1w_init()                          -- setup af ONE wire kommunikation
  
  --inkludering og setup af ds18b20 biblioteket
  const ds18b20_value_raw          = 0
  const ds18b20_value_celcius      = 1
  const ds18b20_value_farenheit    = 0

  const ds18b20_ignore_crc         = 0 -- 1 tell lib to ignore crc (code becomes smaller and faster, but reliability of data is less)
  const ds18b20_max_retries        = 2 -- 1 means the library re-reads once when crc fails, 4 means up to 4 retries (so max 5 reads)

  include ds18b20

one_wire.jal og ds18b20.jal skal ligge i \lib inde i c:\jalpack så kan compileren finde modulet.

JAL-filerne ligger sammen med et par eksempler inde i denne ZIP-fil

Modul_DS18B20 er testet på følgende kombinationer:

PIC pin
PIC16F877 b2

Anvendelsen af Modul_DS18B20

Beskrivelse af hvordan man anvender modulet.

include ALCD

alias d1w_bus            is pin_b2
alias d1w_bus_direction  is pin_b2_direction
include one_wire           -- include one-wire library
d1w_init()                 -- init one-wire bus

const ds18b20_value_raw          = 0
const ds18b20_value_celcius      = 1
const ds18b20_value_farenheit    = 0

const ds18b20_ignore_crc         = 0 -- 1 tell lib to ignore crc (code becomes smaller and faster, but reliability of data is less)
const ds18b20_max_retries        = 2 -- 1 means the library re-reads once when crc fails, 4 means up to 4 retries (so max 5 reads)

include ds18b20            -- include library for ds18b20 temperature sensor with one-wire interface

var sword temperature

 forever loop
   ds18b20_convert()
   delay_1ms(750)

   ds18b20_s_temp(temperature)

   alcd_write_dec4(temperaturre)
 end loop


Moduler på Holstebro HTX
Tastaturer Displays AD-konvertering I/O-ekspander Serielt Interface Færdige Andre
RC-tast - AD-tast - M_tast ALCD - LCD ADC_holst - ADC
mcp3201 - mcp3208
input - output Seriel_holst - Serial hardware
Serial hw int cts - Serial software
Stepmotor - RFID
RGB - RF-link - Afstand
Humidity - Analog temp - Dig temp
Accelerometer
Rotary Encoder

Oversigt over Hardware Moduler på Holstebro HTX

Keyes-moduler på Holstebro HTX
Simple Digitale Input Switch modul - Reedrør - Hall sensor - Optisk Skift - Photo Gate - Vibration sensor - Vibration switch - Tilt sensor - Kviksølv kontakt - Linje følger
Digitalt kodede Input IR Modtager - Humidity -Digital Temperatur
5 benede Input Rotary Encoder -XY Joystick
Digitale 4 benede Input Magic Cup Light - LED 3-farve - RGB - RF-link - Afstand
Justerbare analoge/digitale Input Reed Magnetsensor - Temperatur Niveau - Metal detektor - Flamme - Hall Kontakt - Almindelig Mikrofon - Følsom Mikrofon
Simple digitale Output LED 2-farve - Aktiv Buzzer - Blink LED - IR LED - Laser - Relæ modul - Passiv Buzzer
Analoge input Analog Temperatur - LDR - Finger Pulsmåler - Lineær Magnetfelt