Hallo Leute, für mein Projekt in der Abendschule benötige ich einen Temperatrufühler für das Heizregister. Durch meine Regergen im www. fand ich heraus das der LM75 sehr verbreitet ist. Die Ansteruerung soll über I²C-Bus erfolgen, µC 8051 Familie (Atmel). Der LM75 hat eine Toleranz von ca. 2°C, ist das nicht etwas ungenau? Hab auch noch andere Typen durch meine Suche gefunden: DS1631, DS1621, Ds18S20 Hat wer Erfahrungen mit diesen Typen? Ich danke im Voraus für jede Info mfg. Steve
Von der Genauigkeit und vom Rauschen der Messwerte her, sin die DSxxx eindeutig die bessere Wahl. Allerdings sind diese meist nur mit dem 1-wire Interface erhältlich, und das ist vom Timing her etwas kritisch (während der Übertragung dürfen keine Interrupts an sein usw.)
> und das ist vom Timing her etwas kritisch > (während der Übertragung dürfen keine Interrupts an sein usw.) Dann muss man die Interrupts eben sperren für die 600 µs, die ein Bit über den 1Wire-Bus braucht, und danach wieder freigeben. Das ist leicht zu bewerkstelligen ("cli"-/"sei"-Befehl). Problematisch würde es erst werden, wenn man noch irgendeinen anderen sehr schnellen Prozess parallel laufen lassen muss, der in einem ähnlich kleinen Zeitraster bedient werden will. Das 1Wire-Interface ist nur von der allgemeinen Ansteuerung her etwas kniffliger als z. B. SPI; aber da kann man sich ja von entsprechenden Routinen aus der Codesammlung inspirieren lassen.
Benedikt K. wrote: > Von der Genauigkeit und vom Rauschen der Messwerte her, sin die DSxxx > eindeutig die bessere Wahl. Allerdings sind diese meist nur mit dem > 1-wire Interface erhältlich, und das ist vom Timing her etwas kritisch > (während der Übertragung dürfen keine Interrupts an sein usw.) Die DSxxxx gibts als 1-Wire, SPI oder I²C, kannst es Dir also aussuchen. Allerdings haben die 1-Wire-Typen den Vorteil, daß sie wie Transistoren aussehen, sind also wesentlich leichter wetterfest in ein Röhrchen zu vergießen. Auch braucht man nur 2 Drähte wo man dann alle Sensoren parallel schalten kann. Ein 1-Wire Bit dauert 60µs, dafür sollte man schon Interrupts sperren dürfen. Man kann natürlich das 1-Wire auch selber mit nem Timerinterrupt machen, dem man dann die höhere Priorität zuweist (beim 8051 ja kein Problem). Ich hab das mal für nen AT89C51CC01 gemacht, für einen Sensor, d.h. ohne ROM-Code-Erkennung. Dann hat man überhaupt keine Warteschleifen, da ja die 60µs bis zum nächsten Interrupt dem Main zurückgegeben werden. Peter
Hallo Peter, welchen der oben genannten Fühler soll ich nun nehmen. I²C-Bus sollen (müssen) wir nehmen. Ist da mit Problemen zu rechnen die ich bei LM75 nicht habe? Aja Sprache ist Assembler. mfg. steve
Hallo Markus, danke für den link Der LM75 ist der ungenauerste, ich denke der DS1621 ist nicht so schlecht? Nur eines noch was heist der Ausdruck: Nachteil: trotzdem die meisten Register non-volatile sind, kann man ihn nicht als Stand-Alone-Thermostat einsetzen, da er erst nach einem Start-Conversion-Befehl zu messen beginnt. Kann mir wer das näher erläutern, danke steve
Der DS1621 ist ein Thermostat. Er könnte eigentlich auch ohne Prozessor arbeiten, weil er sich nämlich seine Einstellungen auch ohne Strom merken kann (das ist mit "non-volatile Register" gemeint). Aber nach dem Einschalten fängt er nicht von selber mit dem Messen an. Er braucht ein Start-Kommando vom Prozessor. Wenn Ihr aber die Steuerung sowieso auf dem Mikrocontroller machen wollt braucht Ihr das ja nicht. Markus
Falls man einen UART Frei hat, kann man das One Wire Protokoll ganz zeitunkritisch ueber den UART implementieren: Atmel Applikation AVR318
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.