sicklinger.com

  • Schrift vergrößern
  • Standard-Schriftgröße
  • Schriftgröße verkleinern
  • English (United States)
  • Deutsch (DE-CH-AT)
Start ATMEL AVR ATMEGA DS18x20 library in C

ATMEL AVR ATMEGA DS18x20 library in C

E-Mail Drucken PDF
( 10 Votes )

 

Hallo,

heute gibt es die erste Version meiner C-Bibliothek für ds1820 (ds18x20) Temperatursensoren.

Die Bibliothek wurde mit dem AVR Studio (4.18 SP2) und mit dem WinAVR-20100110 Compiler erzeugt (Projektdatei enthalten).

Die Treiberroutinen unterstützten folgende Features:

  1. Temperaturmessbereich: -55°C to 125°C
  2. Für positive Temperaturwerte wird eine Nachkommastelle ausgegeben (Temperaturschrittweite: 0.1°C) (Wenn auch nur eine Messgenauigkeit von 0.5°C garantiert wird)
  3. Für negative Temperaturwerte beträgt die Temperaturschrittweite 0.5°C
  4. Der Rückgabewert von ds1820_read_temp(uint8_t DS1820_pin) ist float.
  5. Es kann nur ein Sensor pro ATMEGA Pin benutzt werden
  6. Für kurze Leitungslängen (<1m) vom DS18x20 zum Microcontroller reichen die internen Pullup Widerstände des MCU. Für längere Leitungslängen benötigt man externe 4.7k Pullup Widerstände

Beispiel:

Diese kleine Beispiel soll zeigen wie einfach die Bibliothek benutzt werden kann. Es werden 5 DS18x20 Sensoren benutzt.

 

#include "ds18x20lib.h"
#include <stdio.h>
//#########################################
//#########################################
//#########################################
// S T A R T  M A I N  P R O G R A M 
int main (void)
{
//-----------------------------------------
// Allocate memory
//----------------------------------------- 
unsigned char temp_po_str[8],temp_pm_str[8],temp_pu_str[8],temp_ke_str[8],temp_bo_str[8];
float temp_po,temp_pm,temp_pu,temp_ke,temp_bo;
//-----------------------------------------
// Init Stuff
//-----------------------------------------
ds1820_init(DS1820_pin_po);              //Initialize DS1820 "sensor #1"
ds1820_init(DS1820_pin_pm);              //Initialize DS1820 "sensor #2"
ds1820_init(DS1820_pin_pu);              //Initialize DS1820 "sensor #3"
ds1820_init(DS1820_pin_ke);              //Initialize DS1820 "sensor #4"
ds1820_init(DS1820_pin_bo);              //Initialize DS1820 "sensor #5"
for(;;){
//-----------------------------------------
// Read temperature
//-----------------------------------------
 temp_po = ds1820_read_temp(DS1820_pin_po); //Get temperature from DS1820 "sensor #1"
 temp_pm = ds1820_read_temp(DS1820_pin_pm); //Get temperature from DS1820 "sensor #2"
 temp_pu = ds1820_read_temp(DS1820_pin_pu); //Get temperature from DS1820 "sensor #3"
 temp_ke = ds1820_read_temp(DS1820_pin_ke); //Get temperature from DS1820 "sensor #4"
 temp_bo = ds1820_read_temp(DS1820_pin_bo); //Get temperature from DS1820 "sensor #5"
 
 sprintf(temp_po_str,"%.1f C",temp_po); //Convert temp. "sensor #1" to string
 sprintf(temp_pm_str,"%.1f C",temp_pm); //Convert temp. "sensor #2" to string
 sprintf(temp_pu_str,"%.1f C",temp_pu); //Convert temp. "sensor #3" to string
 sprintf(temp_ke_str,"%.1f C",temp_ke); //Convert temp. "sensor #4" to string
 sprintf(temp_bo_str,"%.1f C",temp_bo); //Convert temp. "sensor #5" to string
}
}
// E N D  M A I N  P R O G R A M 
//#########################################
//#########################################
//#########################################

 

Die Bibliothek steht unter GNU LGPL v2.1 und kann hier heruntergeladen werden.

Zuletzt aktualisiert am Samstag, den 04. September 2010 um 17:05 Uhr  

Kommentar schreiben


Sicherheitscode
Aktualisieren


Schlagzeilen

In sehr naher Zukunft gibt es eine Platine für den Druck/Temperatursensor BMP085 von Bosch und eine Bibliothek in C für ATMEL ATMEGA.

 

Hallo,

 

die C Bibliothek für den BMP085 steht zum download unter http://sicklinger.com/de/microcontroller-avr/60-atmel-avr-atmega-bmp085-library-in-c.html bereit.