7.3. Oheisrautaa. DS1820 30.10.2007



Samankaltaiset tiedostot
ETT harjoitustyö: Sovitin 1-Wire-väylään

6.3. AVR_rauta. EEPROM-muisti pva

6.2. AVR_rauta. Analogia-komparaattori-ohjelmointia , pva

Taitaja2005/Elektroniikka. 1) Resistanssien sarjakytkentä kuormittaa a) enemmän b) vähemmän c) yhtä paljon sähkölähdettä kuin niiden rinnankytkentä

Taitaja2007/Elektroniikka

5.6. C-kielen perusteet, osa 6/8, Taulukko , pva, kuvat jma

Tehtävä 5. ECIO dataloggeri lämpötila-anturilla

Piirien väliset ohjaus- ja tiedonsiirtoväylät H. Honkanen

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

1. Yleistä. 2. Ominaisuudet. 3. Liitännät

6.1. AVR_rauta. ADC-ohjelmointi pva, kuvat jma

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

6.6. Ajastin/laskuri - Timer/Counter pva, kuvat jma

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

5.4. Sulautetun järjestelmän C-kielen perusteet. 4/8. Ohjausrakenteet pva

Anturit ja Arduino. ELEC-A4010 Sähköpaja Tomi Pulli Signaalinkäsittelyn ja akustiikan laitos Mittaustekniikka

Hammastankohissin modernisointi. Heikki Laitasalmi

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi.

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Taitaja2008, Elektroniikkalajin semifinaali

Ohjelmointiharjoituksia Arduino-ympäristössä

TIES530 TIES530. A/D-muuntimet. Mikrokontrollerit - arkkitehtuuri. Mikrokontrollerit - arkkitehtuuri. A/D- ja D/A-muuntimet

A15 - Inertial Measurement Unit

Sulautettujen järjestelmien kilpailutehtävä

Arduino. Kimmo Silvonen (X)

Anturit ja Arduino. ELEC-A4010 Sähköpaja Tomi Pulli Signaalinkäsittelyn ja akustiikan laitos Mittaustekniikka

LUMA SUOMI -kehittämisohjelma LUMA FINLAND -utvecklingsprogram LUMA FINLAND development programme Ohjelmointia Arduinolla

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

ROSSI-AVR Versio 1.1, päivitetty

Ohjelmoinnin perusteet Y Python

Superintend VR-16 Vikavirtarele 5-johdinverkkoihin Lyhyt käyttöohje

Ohjelmoinnin peruskurssi Y1

Mikrokontrollerit. Mikrokontrolleri

Ohjelmoinnin perusteet Y Python

Signaalien datamuunnokset. Näytteenotto ja pito -piirit

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Projektityöt. Sami Alaiso, Jyri Lujanen 30. marraskuuta 2009

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Anturityö, Tomi Pulli

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

Ohjelmoinnin perusteet Y Python

Katso Opetus.tv:n video: Kirchhoffin 1. laki

MrSmart 8-kanavainen lämpötilamittaus ja loggaus, digitoija ja talletusohjelma

XW60K JA T620 V620 CX620

5.2. Sulautetun järjestelmän C-kielen perusteet 2/8, käsitteet pva

OPERAATIOVAHVISTIMET 2. Operaatiovahvistimen ominaisuuksia

HARJOITUSTYÖ: LabVIEW, Kiihtyvyysanturi

Sulautettujenjärjestelmien kilpailutehtävä Hissin ohjaus mikro-ohjaimella (DC-moottorin ohjaus)

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja.

MUISTIPIIRIT H. Honkanen

LAS-TIEDOSTON SISÄLTÖ LIITE 2/1

AS automaatio- ja systeemitekniikan projektityöt

Pamemetrilista ADAP-KOOL. EKC 201 ja EKC 301

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

// // whiledemov1.c // #include <stdio.h> int main(void){ int luku1 = -1; int luku2 = -1;

Ohjelmoinnin perusteet Y Python

NiMH Laturi. Suunnittelu Olli Haikarainen

Ohjelmoijan binaarialgebra ja heksaluvut

KILPAILIJAN TEHTÄVÄT ARVIOINTIOSA 5

Taitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin

Kauko-ohjauslaite GSM rele 2011 v

GSMRELE PG-30 v

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

KÄYTTÖOHJE PEL 2500 / PEL 2500-M

Tehtävä 1. a) sähkövirta = varausta per sekunti, I = dq dt = 1, A = 1, C s protonin varaus on 1, C

Nokeval No Käyttöohje. Tekstinäyttö 580-ALF

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

KÄYTTÖOHJE PEL / PEL-M

Ohjelmoinnin perusteet Y Python

PM10OUT2A-kortti. Ohje

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

ECIO käyttöohje. Matrix Multimedia Limited. JJJ-Automaatio Oy. Keijo Salonen Jyväskylän ammattiopisto

Moduli 5: Kehittyneitä piirteitä

Tietueet. Tietueiden määrittely

Toimintaperiaate: 2. Kytke virta vastaanottimeen käyttämällä virtalaitetta, jossa on merkintä "horsealarm receiver only".

6. Analogisen signaalin liittäminen mikroprosessoriin Näytteenotto analogisesta signaalista DA-muuntimet 4

smartallinone Sarjaliikenteellä toimiva releohjain

7.10. Oheisrautaa. sms Kooste vanhoista, kaipaa vielä fixsaamista,se tulee seuraavaan painokseen.

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Tekniikka ja liikenne (5) Tietoliikennetekniikan laboratorio

S Elektroniikan häiriökysymykset. Laboratoriotyö 1

Testo 106 suojakotelolla Nopea mittari omavalvontaan.

1 Tekniset tiedot: 2 Asennus: Asennus. Liitännät

AS Automaatio- ja systeemitekniikan projektityöt

Signaalien datamuunnokset

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Projekti 05/26/ Wire -kikkare. Timo Raatikainen Arto Rantala Reijo Rantala

Käyttö- ja asennusohje

OPTYMA Control Kylmäjärjestelmän ohjauskeskus

LANGATON RENGASPAINEEN JA LÄMPÖTILAN VALVONTAJÄRJESTELMÄ

kwc Nirni: Nimen selvennys : ELEKTRONIIKAN PERUSTEET 1 Tentti La / Matti Ilmonen / Vastaukset kysymyspapereille. 0pisk.

Tietorakenteet ja algoritmit

9.6 Kannettava testilaite

Arduino ohjelmistokehitys

811312A Tietorakenteet ja algoritmit I Johdanto

Yleistä. Interaktiivinen GSM-ohjaus GSM-RELE v2.0 PROBYTE OY

Tämän sybolin esiintyessä, käyttäjän tulee lukea käyttöohje, josta lisätietoa. Tämä symboli normaalikäytössä indikoi vaarallisesta mittausjännitteestä

Energiankulutusseuranta. Käyttöönotto-ohje

Transkriptio:

7.3. Oheisrautaa. DS1820 30.10.2007 Miksi eteenpäin pyrkivällä insinööriopettajalla rehtoriksi tullessaan, on aina päässään paljon muutakin kuin järkeä? - Mr Maple Sisältö Yleistä 1-Wire-väylän lyhyt esittely DS1820 Funktiot Lämpötilan mittaus DS1820 anturin avulla. Ensimmäinen mallikoodi. Yleistä Yksi sulautettujen systeemien toimintoja on lämpötilan mittaus. Markkinoilta löytyy monenlaisia lämpötila-antureita eri olosuhteisiin ja eri käyttötarkoituksiin. Tässä on esitetty yksi tapa, lisää erilaisilla antureilla ADC-muunnosta käsittelevässä osassa. Tässä esitellään vain pieni esimerkki, jossa käytetään Dallasin DS1820-anturia. Kyseessä ei ole pelkkä digitaalinen lämpötila-anturi, vaan komponentti, joka sisältää AD-muuntimen ja 1-wire-liitäntäelektroniikkaa jolla se liitetään mikro-ohjaimeen. Lämpötilatieto saadaan sarjamuodossa 9-bittisenä lukuna. Lämpötila-alue on 55 C... +125 C. Tässä yhteydessä ei esitellä itse komponenttia, voit tutustua lisätietoja sisältäviin dokumentteihin Dallasin kotisivulla. Perusfysiikkaa: lämpötilan muutos vaikuttaa esim. - NTC- (Negative Temperature Coefficient) ja - PTC- (Positive Temperature Coefficient) vastuksien resistanssiin. Tämä resistanssin muutos voidaan muuttaa jännitejakokytkennässä vastaavaksi jännitteen muutokseksi, joka puolestaan viedään analogiadigitaalimuuntimeen ja tieto muutetaan vastaavaksi lämpötilan arvoksi. 1

1-Wire-väylän lyhyt esittely 1-Wire-väylän kehittäjä on amerikkalainen Dallas-Maxim-yhtiö. 1-Wire-väylä on 2- suuntainen sarjamuotoinen tiedonsiirtoväylä, jossa väyläohjain kommunikoi yhtä datalinjaa ja yhteistä maatasoa käyttäen päätelaitteen kanssa. Päätelaitteita on saatavilla monipuolinen kirjo DS1820-anturin lisäksi. Niistä löytyy tietoja Dallasin kotisivuilta. Päätelaitteet, joita voi olla useita samassa linjassa, voivat ottaa tarvitsemansa energian datalinjasta tai erillisestä jännitesyötöstä. Jos anturi on liitetty mikro-ohjaimeeen, mikro-ohjain toimii herrana, master ja kaikki muut väylässä ovat orjia, slave. Päätelaitteet tunnistetaan komponentin sisään kirjoitetun koodin perusteella. Jokaisella väylään liitettävällä laitteella on 64-bittinen ID-koodi: - 8-bittinen perhekoodi - 48-bittinen yksilöllinen koodi ja - 8-bittinen tarkistussumma, yhteensä 64 bittiä Kaikki toiminteet voidaan kohdistaa ID-koodin avulla vain tietylle päätelaitteelle. One-Wire-standardi määrittää tietyt algoritmit päätelaitteiden ID-koodien selvittämiseen. 1-Wire-väylä on synkroninen sarjaväylä, jossa liikennöinti tapahtuu aina yhteen suuntaan, joko päätelaitteelta mikro-ohjaimelle tai päinvastoin. MCU voi lähettää myös sellaisia komentoja, jotka kohdistuvat samanaikaisesti kaikille väylällä oleville päätelaitteille. Väylän liikennöinti perustuu master-mcu:n väylälle lähettämiin kellopulsseihin. Tieto kulkee väylällä bitti kerrallaan sarjamuodossa siten, että bitin sijainti ajallisesti on aina n. 5...10 µs kuluttua kellopulssista. Näin jokaista bittiä vastaa yksi kellopulssi. Kellopulssien (ja näin myös bittien) välinen aika voi vaihdella tietystä minimiajasta (61 µs) äärettömään. Näin ollen, väylän tiedonsiirtokapasiteetti on maksimissaan 16393 bittiä sekunnissa. Kuten yllä mainittiin, päätelaitteet voivat ottaa käyttöenergiansa väylän datalinjasta. Tämän vuoksi datalinja on kytketty käyttöjännitteeseen (+ 5 V) n. 5 k vastuksen kautta. Päätelaitteet voivat varata energiaa sisäiseen kondensaattoriinsa korkeintaan 1 µa virralla. Mikäli päätelaitteen virrantarve on tätä suurempi, on sen otettava energiansa erillisestä käyttöjännitteen syötöstä. 2

DS1820 lämpötila-anturi Kuva 2. DS1820-anturin jalkajärjestys. (Dallas Semiconductor) Liikennöinti Toiminta perustuu pulssin kestoon ja sen olemassaoloon. Kommunikointilinja on open drain (avokollektori) ja siten se tarvitsee ylösvetovastuksen. Slave odottaa linjalta käskyä, silloin linja on ylhäällä. Master lähettää dataa linjalle vetämällä sen alas ja sillä se kertoo slavelle että databitti on tulossa. Master pitää linjaa alhaalla tai ylhäällä sen mukaan mitä ollaan tekemässä. Tietyn, kiinteän ajan kuluttua seuraava bitti lähetetään. Kun data on luettu slavelta masteriin, master lähettää lyhyen 1 usek low-pulssin ja sitten se vapauttaa linjan ja lukee linjaa tietyn ajan kuluttua.. Jos linja on alhaalla, niin slave lähettää low-bitin tai jos se on high, high-bit lähetetään. Sitten on viive ennen seuraavaa bitin kyselyä. Tietty protokolla resetoi slaven. Liikennöinti - alkaa aina masterin antamalla reset-pulssilla = linja alas 480 us 960 us - master siirtyy kuunteluun - jos orja on linjalla, se vastaa 15 60 us kuluttua vetämällä linjan alas 60 240 us ajaksi - master kirjoittaa ROM-toimintakoodin linjalle - master antaa muisti- tai ohjauskomennon - toiminta käynnistyy tai datan siirto alkaa Dallas DS18S20 antaa tuloksen Celsius-asteen puolikkaina: ylemmässä tavussa on merkkibittejä ja alemmassa lämpötila. 3

DS1820 Funktiot by Jukka Pitkänen - vertaa AVR-ohjaimen + DS1820-anturin lähdekoodiin uint8_t OwReset(void); - alustaa anturin ja tarkastaa onko 'narun' päässä ketään - aina ennen käskyjen antamista DS1820 pitää resetoida - kun annetaan reset-signaali, DS1820 lopettaa bittien lähettämisen uint8_t OwReadByte(void); - lukee yhden tavun DS1820:n yhdeksän tavun muistista, aloittaa vähiten merkitsevän tavun vähiten merkitsevästä bitistä - ensimmäiset 2 tavua pitävät sisällään lämpötilan, joista ensimmäinen tavu lämpötilan ja toinen tavu tiedon onko lämpötila positiivinen vai negatiivinen 0 = positiivinen ja 1 = negatiivinen void OwWriteByte(uint8_t data); - funktiolla annetaan DS1820:lle komentoja, parametrina funktio saa suoritettavan käskyn uint8_t GetTemp(void); - GetTemp hoitaa anturin alustuksen, käskyjen antamisen ja lämpötilan hakemisen OwWriteByte(0xCC); - annetaan skip-komento, jolloin ei tehdä laitteiden etsintää, ts. tiedetään, että väylällä on vain yksi DS1820 OwWriteByte(0x44); - annetaan CONVERT T komento, jolloin DS1820 aloittaa lämpötilan mittaamisen/laskemisen OwWriteByte(0xCC); - jos antureita olisi enemmän kuin yksi, pitäisi suorittaa laitteiden etsintä ja tunnistus ym. - jos antureita on vain yksi, voidaan antaa skip-komento OwWriteByte(0xBE); - read scratchpad-komento, jolloin DS1820 valmistautuu lämpötilan lukemiseen ja alkaa lähettää bittejä - muistin lukeminen täytyy tehdä heti 0xBE komennon jälkeen lsb = OwReadByte(); - luetaan anturin RAM-muistista (osoite 0) lämpötilan 8 alinta bittiä - muistin lukeminen aloitetaan vähiten merkitsevästä tavusta, siihen on talletettu lämpötila msb = OwReadByte(); - lukeminen jatkuu seuraavasta tavusta (osoite 1), missä on tieto lämpötilan etumerkistä 4

Lämpötilan mittaus DS1820 anturin avulla. Ensimmäinen mallikoodi. /********************************************************** Project : DS1820_lampo.c Hardware: PV-M32, (4 MHz), PV-EMO Software: WinAVR-20070525 + AVRStudio 4.13 + SP1 Build 557 Date : 04.06.2005 & 07042006 + 30.09.2007 + 18.10.07 Authors : ** DS1820 Funktiot by Jukka Pitkänen ** GetTemp-korjaus, Olli-Pekka Korpela ** ds1820.h by Ilari Nummila ** sovitus Pentti Vahtera Comments: DS1820 lämpötila-anturi PV-EMO-kortissa, eli IN_2 ts. PD.3 ja lcd on PORTA Tätä koodia saa käyttää vapaasti, omalla vastuulla. Parannusehdotukset -->> pentti.vahtera@microsalo.com **********************************************************/ #include <avr/io.h> #include <util/delay.h> #include "lcd_tat.h" #include "ds1820.h" #define DELAY 1041 #define TAUSTAVALO 1<<0 // PC.0 void Tulosta(uint16_t temp_anturista); int main(void) { uint16_t temp_anturista = 0; LCD_init(1,0,0); // otetaan lcd käyttöön LCD_WriteString("Lämpötila:"); while(1) { temp_anturista = GetTemp(); // luetaan lämpötilatieto Tulosta(temp_anturista); _delay_loop_1(startdelay_ms*10); } } void Tulosta(uint16_t temp_anturista) { DDRC = TAUSTAVALO; PORTC = TAUSTAVALO; uint16_t temp_apu = 0; if(temp_anturista < 0) LCD_WriteChar('-'); temp_apu = (temp_anturista*125)/255; // anturi palauttaa 9 bittiä, joista 9. bitti kertoo suunnan, ei // huomioitu tässä // resoluutio on 0,5 astetta per bitti // lämpö 0 C vastaa 0x00 // lämpö +125 C vastaa 0xFF = 255 5

LCD_SetCursorXY(0, 1); LCD_WriteUINT(temp_apu); if(temp_anturista % 2) LCD_WriteString(",5 C"); } else LCD_WriteString(",0 C"); Tarvitaan mukaan myös ds1820.h header-tiedosto. /* ds1820.h DS1820_lampomittaus_m32.c aputiedosto keskeneräinen, mutta toimii ainakin 4 MHz kiteellä, Ilari Nummila 07042006 tarvitaan myös ds1820.c */ extern uint8_t OwReset(void); extern uint8_t OwReadByte(void); extern int16_t GetTemp(void); extern void OwWriteByte(uint8_t data); // Lämpötila-anturin portti ja pinni #define TEMP_PORT PORTD #define TEMP_PIN PIND #define TEMP_REGISTER DDRD #define TEMP_BIT (1<<3) // Viiveelle asetus #define DELAYMHZ 4 // Viiveet, korjattavaa #define DELAY500 (150 * DELAYMHZ) #define DELAY60 (19 * DELAYMHZ) #define DELAY400 (115 * DELAYMHZ) #define DELAY50 (1 * DELAYMHZ) #define DELAY45 (3 * DELAYMHZ) http://www.maxim-ic.com/appnotes.cfm/appnote_number/854 - Interfacing DS18x20 1-wire Temperature Sensor in MCU Environment http://www.mrsoft.fi/ - suomeksi http://www.sunpoint.net/~thermometer/ 6