Forum: Mikrocontroller und Digitale Elektronik Thermometer mit 2313 und DS18.


von Thermometerverantwortlicher (Gast)


Lesenswert?

Ich habe mir mal das 
http://chaokhun.kmitl.ac.th/~kswichit/avrthermo/avrthermo.html 
Thermometer auf einem Steckbrett nachgebaut.
Leider hat es den Nachteil das die Anzeige während des auslesens des 
Ds18... dunkelgetastet wird, was als Zimmerthermometer sehr nervig ist. 
Meine C Kenntnisse sind ein wenig bescheiden. Ließe sich der Code 
irgendwie modifizieren so das eine kontinuirliche Anzeige möglich wäre? 
Oder ist der 2313 wirklich so extrem mit der Wandlung beschäftigt, das 
er fürs multiplexen keine Zeit mehr hat.

Viele Grüße

von Alex22 (Gast)


Lesenswert?

Zunächst kannst du den Tiny2313 auch mit 16MHz anstatt der dort 
verwendeten 4MHz betreiben, dann ist die "Dunkelzeit" schon mal nur noch 
1/4 so lang.

Was genau meinst du eigentlich mit "dunkelgetastet" ?

Du könntest den Code noch so umschreiben, dass die Temperatur nur 
beispielsweise 1x pro Sekunde oder 1x jede 2 Sekunden ausgelesen wird 
o.ä....

eine Abdunklung des Displays sollte man bei guter Applikation nicht 
wahrnehmen können...

Und wenn alle Stricke reißen gibt es für diese Anwendung auch noch "SPI 
/ I2C 7-Segment Display Driver ICs" wie den SAA1064...

Schöne Grüße,
Alex

von (prx) A. K. (prx)


Lesenswert?

Vermutlich ist das Programm recht simpel gestrickt und macht entweder 
Messung oder Anzeige. Mit der Leistungsfähigkeit des Controllers hat das 
nichts zu tun. Eher schon mit der Leistungsfähigkeit des Programmierers.

Das geht locker auch anders. Beispielsweise indem man die 0,7s Wartezeit 
zwischen Start der Messung und Auslesen vom Ergebnis nicht nur mit 
Däumchen drehen verbringt. Denn es dürfte genau diese Messzeit des 
DS1820 sein, die unangenehm auffällt.

Und nein, ein schnellerer Takt des Controllers macht den Sensor nicht 
schneller, der Controller wartet nur intensiver auf ihn.

von Thermometerverantwortlicher (Gast)


Lesenswert?

> Was genau meinst du eigentlich mit "dunkelgetastet" ?

Die LED Anzeigen sind für ca. eine halbe Sekunde dunkel während der MC 
die DS18... mist und das tut er alle 5 sek.

Kann mir auch nicht vorstellen das es so kompliziert ist einen DS18S20 
auszulesen, mein Pollin AVR-NET-IO Board hat davon 8 Stück drann hängen 
und fühlt sich nicht überlastet an.

> Und wenn alle Stricke reißen gibt es für diese Anwendung auch noch "SPI
> / I2C 7-Segment Display Driver ICs" wie den SAA1064...

an den SAA habe ich auch schon gedacht, aber ich wollte die Schalung in 
einer UP-Dose verschwinden lassen und dann wird es mit dem SAA arg eng.

von (prx) A. K. (prx)


Lesenswert?

Ist eigentlich auch nicht schwierig.

Der verlinkten Seite zufolge wird eine DS1820 Funktion der Codevision 
Lib verwendet. Die wohl die komplette Messung durchführt. Im Interrupt! 
Und damit das Hauptprogramm für die entsprechende Zeit lahmlegt.

Nun kenne ich Codevision nicht. Ob es in deren Lib die Möglichkeit gibt, 
den Start der Messung und die Auslesung zu trennen. Dann liesse sich das 
leicht umbauen und die Pause verschwindet.

von (prx) A. K. (prx)


Lesenswert?

Kurzer Blick in die CV Doku sagt: Mit der DS1820-Library kommt man nur 
halb weiter.

Alle >= 5 Sekunden im Interrupt das Kommando zu Start der Messung 
absetzen. Das geht mit der DS1820-Lib nicht, ist aber mit der 1-Wire-Lib 
einfach zu machen, wenn man kapiert hat wie 1-Wire arbeitet.

Im passenden Interrupt eine Sekunde später das Ergebnis auslesen. Das 
geht mit der DS1820-Lib (ds1820_read_spd), man muss das Ergebnis aber 
selber aus den Bytes fischen.

Es spricht nicht für die CV Lib, dass man für Start und Messung keine 
getrennten Funktionen mit Temperatur als sauberem Resultat liefert.

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
Noch kein Account? Hier anmelden.