
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:
- Temperaturmessbereich: -55°C to 125°C
- Für positive Temperaturwerte wird eine Nachkommastelle ausgegeben (Temperaturschrittweite: 0.1°C) (Wenn auch nur eine Messgenauigkeit von 0.5°C garantiert wird)
- Für negative Temperaturwerte beträgt die Temperaturschrittweite 0.5°C
- Der Rückgabewert von ds1820_read_temp(uint8_t DS1820_pin) ist float.
- Es kann nur ein Sensor pro ATMEGA Pin benutzt werden
- 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.