Ein DS1820 in einem mit feinem Sand gefülltem und mit Silikon vergossenem kleinen Reagenzglas leistet mir mit der entsprechenden Elektronik dahinter seit Jahre gute Dienst. Pimmelschilz
Platinen·klugscheissender Rahul, manchmal auch fies··22 Antworten
'Hauptschleife 'Diese Sequenz dient zum Auslesen des DS1820 (vgl.Datenblatt vom DS1820) 1wreset ' 1wire Reset 1wwrite Skip_rom ' Read ROM command 1wwrite Convertt
allerdings bleibt der Prozessoer dann immer in einer Endlosschleife. Muss ich beim Anschluss des DS1820 noch irgend etwas beachten, wie z.B. Pullup-Widerstand oder ähnliches? Einen anderen Port u. DS1820 habe ich auch schon probiert, um einen defekt auszuschliessen. Tom
Hallo, ich möchte einen DS18S20 mit dem C-Control Pro 128 Board von Conrad mit einem Atmega128 betreiben. Ich habe das ApplicationNote von Dallas versucht auf das Board anzupassen... Es funktioniert aber nicht. Kann mir da jemand helfen? Der Quelltext befindet sich im Anhang.
Komparator vom AVR (+ Hysterese) gemacht. -> Was soll der Widerstand in der Versorgungsleitung des DS1820? -> Keine Ahnung, wie die AT89er funktionieren, aber bei den AVRs muss man noch zwei Kondensatoren von den XTAL Pins nach Masse legen. -> Das nächste mal evtl. etwas mehr Zeit für sowas einplanen
sollte und man dadurch auch etwas mehr Spannungsabfall an den Dioden hat), dann zerstörst Du Dir den DS1820 auf jeden Fall und den Atmel wahrscheinlich auch, da diese nur max. 5V Versorgung vertragen. Den Rest kann man im Prinzip so lassen. Vielleicht noch 100nF Blockkondensatoren an den Atmel und den DS1820
Ich habe mir von Reichelt die Bauteile bestellt. Die sind auch heute gekommen. Ich habe das nach der Bauanleitung http://lena.franken.de/hardware/temperaturmessung.html zusammengebaut. Wenn ich das Programm aufrufe: I:\test3>digitemp -i -s1 -a DigiTemp v1.2 Win95 Copyright 1999 by Nexus Computing Error Searching for ROMs Dann habe ich mal die Spannung an Com1 Port Pin 4 und 5 gemessen. 0,7V wenn angeschlossen. Wenn ich das Kabel von Platine abziehe habe ich 5,5 V am Laptop. Habe noch anderne Pc der hat Platinenlos 11V und mit Platine ca 1,2 V. Das ist doch irgendwie zuwenig oder ? Wo
Hallo, hat irgendjemand auch schon so einen Fehler bekommen? Ich lese mit Digitemp aus. Es hat gestern funktioniert und heute erscheint auf einmal der Fehler. Kann mir jemand da helfen oder ein anderes Prog empfehlen? Danke EgoMann
Hallo, ich habe gerade mal meinen alten DS1820 Sensor an die serielle Schnittstelle meines PC´s geklemmt und kann jetzt wunderschön die Temperatur mittels "digitemp" von Brian Lane unter Windows ermitteln. (DOS-Konsole) Wie schaffe ich es, dass
Dein Programm ändern :-) Ne im Ernst, 85°C ist der Reset Wert des DS1820. Wenn du ihn einschaltest, musst du ja zunächst eine Messung starten, dann dauert es eine gewisse Zeit (je nach Auflösung bis zu 750ms) und erst dann kannst du den fertigen Temperaturwert auslesen.
davon aus, dass das do zu einer Endlosschleife gehört, die du immer wieder durchläufst. Hast du den DS1820 in seiner Standardkonfiguration gelassen? Dann gibt er 12Bit Daten aus. Dafür braucht er allerdings 750ms. Als ersten Versuch würde ich daher einfach mal die Waitms 300 auf 800 erhöhen. Meld dich
Hallo Florian, ich habe grad mal nach DS1820 gesucht und Deinen Beitrag gefunden. Mir geht es eigentlich um die Ansteuerung des Sensors. Kannst Du mal das komplette Projekt mit allen Hilfsdateien *.c *.h reinstellen, ich kenne sonst nur die Routinen
Version : 1.3 Date : 19.11.2006 Author : Florian Hämmerle Displays the temperature value of max 4 ds1820 sensors on a 16x2 intelligent lcd display and in a terminal window on computer by serial communication CHIP: AVR 90S2313 Compiler: Codevision AVR Sensors: DS1820 LCD: Hitachi HD44780 chip or equivalent
Version : 1.3 Date : 19.11.2006 Author : Florian Hämmerle Displays the temperature value of max 4 ds1820 sensors on a 16x2 intelligent lcd display and in a terminal window on computer by serial communication CHIP: AVR 90S2313 Compiler: Codevision AVR Sensors: DS1820 LCD: Hitachi HD44780 chip or equivalent
in Finnland und sollte für ein Projekt Temperaturmessungen mit einem AVR 90S2313 und dem Dallas DS1820 machen. Prinzipiell eigentlich kein Problem aber bei mehreren Sensoren funktioniert die Temperaturabfrage nur beim 1.Mal, danach gibt es nur noch das Error-Signal. Irgendwie gehen die Adressen verloren
Such mal in den Codebeispielen nach dem DS1820. zB das von Peter: http://www.mikrocontroller.net/topic/14792
{ int i; for (i=0; i<us; i++); } //---------------------------------------- // Reset DS1820 //---------------------------------------- bit ResetDS1820(void) { bit presence; DQ = 0; //pull DQ line low DelayUs(29); // leave it low for about 490us DQ = 1; // allow line
n<9; n++) // read 9 bytes but, use only one byte { buff[n]=ReadByte(); // read DS1820 } EA=1; }
nur noch die nötigen Programmzeilen Mein aktuelles Programm sieht so aus, das ich über einen DS1820 alle 10 Minuten Temperaturwerte erfasse und diese über UART am PC ausgebe. Zusätzlich ist jeder Werte mit einem Zeitstempel versehen. (etwa 0610231145 10.4) Ich möchte nun diese Textzeile(n) zusätzlich
falschen Auslesen, verhindert aber die Symptome :-), ja, ich weiss, nicht die feine Art. Habe mit DS1820 noch nichts gemacht, aber es gibt Unmengen von threads mit Problemen darüber :-) Oder gib der SUB 18s20_auslesen erst mal einen festen Rückgabewert, dann kannst du den Fehler schon mal eingrenzen.
seit der Aufgabenstellung. Verwende jetzt einen SHT75 (2-wire-bus) zur Feuchtemessung und einen DS1820 (1-wire) zur Temperaturmessung.Temperatur wird an einer anderen Stelle, wie die Feuchte gemessen. Daraus wird in einem ATmega8 der Taupunkt berechnet und als Ausgabe dient ein LCD display und LEDs.
;programm für 8515M @ 8MHz zur ansteuerung eines ds18s20-temp-sensors (bzw ds1820) ;anschluss des ds18s20an pinb0 ;an den ds1820 müss noch ein pull-up widerstand von 4,7kohm nach +5V ; angeschlossen werden .include "m8515def.inc" .def count_remain_flash = r13 .def controll = r15
;programm für 2313 @ 8MHz zur ansteuerung eines ds18s20-temp-sensors (bzw ds1820) ;anschluss des ds18s20an pind0 ;an den ds1820 müss noch ein pull-up widerstand von 4,7kohm nach +5V ; angeschlossen werden .include "d:\avr\2313def.inc" .def befehl = r0 ;enthält den auszugebenden
{" : : TIME"},{" . . DATE"}, //2,3 {"OK to edit DATE "},{"Down to continue"}, //4,5 {"OK to con DS1820"},{"Down to continue"}, //6 {"OK to START prog"},{"Down to continue"}, //8 {"VL RL KK WW "},{" "}, //10 {"IT AT Abg"},{" "}, //12 {"BR PV PWW "},{" "}, //14 {"temp wasser "},{"interwall s"}, //16 {
; ; ds1820.asm ; ; dieses programm ist die software für eine temperaturanzeige mit mehreren temperatursensoren ; von dallas vom typ ds18(s)20 an einem avr-mikrocontroller vom typ at90s2313, wobei die ; ermittelten
{" : : TIME"},{" . . DATE"}, //2,3 {"OK to edit DATE "},{"Down to continue"}, //4,5 {"OK to con DS1820"},{"Down to continue"}, //6 {"OK to START prog"},{"Down to continue"}, //8 {"VL RL KK WW "},{" "}, //10 {" AT IT Abg"},{" "}, //12 {"BR PV PWW "},{" "}, //14 {"temp wasser "},{"interwall s"}, //16
$crystal = 8000000 $regfile = "4433def.dat" Cursor Off Config Lcd = 16 * 2 Initlcd 'Display initialisieren Cursor Off ' Cursor ausschalten Cls ' Display löschen Config 1wire = Portc.5 'Pin für 1wire ' Port für 1wire Temperatursensor Dim Ar(2) As Byte Dim A As Byte Dim I As Byte Dim Temperatur As Integer Dim Halb As Byte Dim Fehler As Integer Key: Do Temper: Fehler = 138 ' Fehler ist wegen def. Sensor Waitms 300 1wreset ' Gerät zurücksetzen 1wwrite &HCC ' ROM commando lesen 1wwrite &H44 Waitms 200 'ROM commando lesen 1wreset ' Gerät zurücksetzen 1wwrite &HCC 'ROM commando lesen 1wwrite &HBE 'ROM commando
only one port pin for communication DALLAS NC 1 8 NC • Each device has a unique 64-bit serial code DS1820 S stored in an on-board ROM NC 2 1 7 NC 1 2 3 2 • Multi-drop capability simplifies distributed VDD 3 0 6 NC temperature sensing applications • Requires no external components DQ 4 5 GND • Can be powered
device are on the port Output: Temp in C * 10 or 9999 if no device present Misc: for DS18B20 NOT DS1820 **********************************************************/ int GetTemp(unsigned char mask) { unsigned char msb,lsb; unsigned char negative; int i; if (!OneWireReset(mask)) return 9999; OneWireWriteByte
DS1820 DS1820 TM 1–Wire Digital Thermometer FEATURES PIN ASSIGNMENT Unique1–Wire TM interface requires only one port pin for communication DALLASS DS18204 1 2 3 Multidropcapabilitysimplifiesdistributedtemperature
#include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h> //#include "ds1820.c" // 4 Bit Mode //Initialize the LCD //Sets ports up FIRST #define LCDPORT PORTB #define LCDDR DDRB // LCD commands // Display on off control // 0 0 0 0 1 D C B // D = display on, C = cursor on, B
txt2lcd ;out portb, temp2l ; ldi temp, 0b11110000 ; brcc c2 ;sbis PIND, PD6 ; Vergleichen, ob der DS1820 den Bus auf 0 setzt, ; ldi temp, 0b00001111 ; und dann die Leds auf Port B einschalten ; c2: ; out portb, temp ; ============================= ; Warteschleifen-Generator ; 1000 Zyklen: ; ----------
; Generiert 1-Wire Reset und prüft ob ein Slave (DS1820) gefunden wird ; ; Wird ein Slave gefunden, so werden die Leds (Port B) zeitweise gesetzt. .nolist .include "2313def.inc" .list ; R17-19 für Schleifen !! .def temp = r20 .def leds = r21 .def wirest
; Generiert 1-Wire Reset und prüft ob ein Slave (DS1820) gefunden wird ; ; Wird ein Slave gefunden, so werden die Leds (Port B) zeitweise gesetzt. .nolist .include "2313def.inc" .list ; R17-19 für Schleifen !! .def temp = r20 .def leds = r21 .def wirest