Avläsa temperatur från Dallas DS18B20 till en Teensy 2.0
Postat: 29 januari 2015, 18:37:58
Jag har tidigare skapat en tråd i det här underforumet där jag frågade om köpråd när det gällde en AVR-baserad mikrokontroller. Efter lite fundering valde jag att köpa en Teensy 2.0 http://www.pjrc.com/teensy/ som rekommenderades i tråden och har nu kommit igång med utvecklingen.
Jag har efter lite forskning lyckats att skriva C-kod för att skriva till en LCD-display. Efter att ha klarat av detta funderade jag lite kring att prova och se om jag kunde koppla in någon annan enhet för att på så vis få mer kännedom om hur mikrokontrollern fungerar.
Jag har därför nu införskaffat en temperatursensor - närmare bestämt följande: http://www.kjell.com/sortiment/el/elekt ... ino-p87883 - och tänkte nu försöka avläsa temperaturen från sensorn. Observera att jag är intresserad av att skriva koden i C och inte använda mig av några av de färdiga biblioteken. Vad jag kan se och vad som angavs på både hemsidan (http://www.kjell.com/sortiment/el/elekt ... ino-p87883) och på enheten bygger denna sensorn på Dallas DS18B20 (http://www.kjell.com/.mvc/Document/File ... f10121cedb).
Vad jag kan se i databladet för Dallas DS18B20 så behöver det anslutas en pull-up resistor men efter att ha hittat lite information om den enhet jag köpt - trots i princip obefintlig dokumentation - så kunde jag utifrån den andra bilden på hemsidan http://www.kjell.com/sortiment/el/elekt ... ino-p87883 och på följande sida http://www.dx.com/p/ds18b20-digital-tem ... MpriMYo6V4 utifrån kommentarerna, komma fram till att pull-up resistorn förmodligen redan är integrerad i enheten. Har jag rätt eller måste det anslutas en resistor till?
Det som egentligen är den stora frågan är hur jag ska skicka och ta emot signaler från sensorn. Jag har studerat databladet för Dallas DS18B20 noga och förstår hur de olika tidsdiagrammen hänger ihop men jag blir lite förvirrad när det gäller användandet av pull-up resistorn. Efter att ha läst på följande sida: https://learn.sparkfun.com/tutorials/pull-up-resistors förstår jag syftet och att databussen är som standard 'hög' och att man vid kommunikationen med sensorn antingen drar bussen till 'ground' eller tillbaka till 'högt' tillstånd.
Så min egentliga fråga är egentligen hur jag konfigurerar portarna på min 'Teensy' på bästa sätt för att utföra kommunikationen med sensorn. Det vill säga, på vilket sätt ska DDRx, PORTx och PINx på bästa sätt användas? Känner lite att det brister när det gäller att förstå hur portarna internt arbetar och vet inte riktigt var i databladet jag ska titta för att på så vis få större inblick i hur det hänger ihop. Vad jag har lyckats utläsa i databladet är att det finns inbyggda pull-up resistorer i portarna på min 'Teensy' men eftersom det finns en extern pull-up resistor så borde väll dessa avaktiveras? Ja som ni förstår skulle jag behöva lite guidning i hur jag kan gå vidare.
Jag har efter lite forskning lyckats att skriva C-kod för att skriva till en LCD-display. Efter att ha klarat av detta funderade jag lite kring att prova och se om jag kunde koppla in någon annan enhet för att på så vis få mer kännedom om hur mikrokontrollern fungerar.
Jag har därför nu införskaffat en temperatursensor - närmare bestämt följande: http://www.kjell.com/sortiment/el/elekt ... ino-p87883 - och tänkte nu försöka avläsa temperaturen från sensorn. Observera att jag är intresserad av att skriva koden i C och inte använda mig av några av de färdiga biblioteken. Vad jag kan se och vad som angavs på både hemsidan (http://www.kjell.com/sortiment/el/elekt ... ino-p87883) och på enheten bygger denna sensorn på Dallas DS18B20 (http://www.kjell.com/.mvc/Document/File ... f10121cedb).
Vad jag kan se i databladet för Dallas DS18B20 så behöver det anslutas en pull-up resistor men efter att ha hittat lite information om den enhet jag köpt - trots i princip obefintlig dokumentation - så kunde jag utifrån den andra bilden på hemsidan http://www.kjell.com/sortiment/el/elekt ... ino-p87883 och på följande sida http://www.dx.com/p/ds18b20-digital-tem ... MpriMYo6V4 utifrån kommentarerna, komma fram till att pull-up resistorn förmodligen redan är integrerad i enheten. Har jag rätt eller måste det anslutas en resistor till?
Det som egentligen är den stora frågan är hur jag ska skicka och ta emot signaler från sensorn. Jag har studerat databladet för Dallas DS18B20 noga och förstår hur de olika tidsdiagrammen hänger ihop men jag blir lite förvirrad när det gäller användandet av pull-up resistorn. Efter att ha läst på följande sida: https://learn.sparkfun.com/tutorials/pull-up-resistors förstår jag syftet och att databussen är som standard 'hög' och att man vid kommunikationen med sensorn antingen drar bussen till 'ground' eller tillbaka till 'högt' tillstånd.
Så min egentliga fråga är egentligen hur jag konfigurerar portarna på min 'Teensy' på bästa sätt för att utföra kommunikationen med sensorn. Det vill säga, på vilket sätt ska DDRx, PORTx och PINx på bästa sätt användas? Känner lite att det brister när det gäller att förstå hur portarna internt arbetar och vet inte riktigt var i databladet jag ska titta för att på så vis få större inblick i hur det hänger ihop. Vad jag har lyckats utläsa i databladet är att det finns inbyggda pull-up resistorer i portarna på min 'Teensy' men eftersom det finns en extern pull-up resistor så borde väll dessa avaktiveras? Ja som ni förstår skulle jag behöva lite guidning i hur jag kan gå vidare.