Forum: Mikrocontroller und Digitale Elektronik ds18s20 und Uhrzeit auf Lcd


von Mirko (Gast)


Lesenswert?

Hallo,

ich habe drei ds18s20 auszulesen, was auch funktioniert. Zusätzlich
möchte ich die Uhrzeit und natürlich die Temperaturen zusammen auf ein
Lcd ausgeben. Ich habe in Bascom ein Code für die Sensoren und einen
für die Uhrzeit. Wenn ich aus den beiden Codes einen machen will,
spinnt die Sekundenanzeige. Soll heißen das Lcd zeigt die Sekunden
nicht folgend sondern zB. 38 dann 41 und dann 42 usw. Irgendwie kostet
das Temperaturauslesen soviel Zeit, dass das Lcd mit der laufenden Uhr
nicht mehr klar kommt. Gibt es dafür schon irgendwo eine Lösung die ich
noch nicht gefunden habe?

Gruß Mirko

von Hubert.G (Gast)


Lesenswert?

Ich kann dir in Bascom nicht helfen, aber wenn du die Interrupts nicht
sauber programmiert hast, kann das schon passieren. Wenn dir hier
jemand helfen soll, wäre es gut wenn du deinen Code ebenfalls
hereinstellst.

von Peter Z. (Gast)


Lesenswert?

Das Auslesen eines Sensors DS1820 dauert 0,7s. 3 * 0,7 = 2,1s
Da du alles wahrscheinlich nacheinander ablaufen läßt, kommt er
natürlich auch nur ca alle 3 Sekunden dazu die Sekundenanzeige zu
aktualisieren....
Lese halt nur einen Temperaturwert aus aktualisiere die Zeit und dann
den nächsten Temperaturwert usw...?

von Daniel L. (bucho)


Lesenswert?

Moment, 7 Sekunden dauert doch die TemperaturMESSUNG. Das auslesen müßte
schneller gehen. Wenn alle drei Sensoren gleichzeitig messen, müßte man
eigentlich hinkommen mit der Zeit.

Gruß

von marc989 (Gast)


Lesenswert?

Hi,
versuche das ganze doch erstmal zu debuggen. Also einen Pin vor und
nach dem Auslesen der sensoren zu toggeln. Dann das ganze mit einem
Oszilloskop mal messen, dann kann man den Fehler wunderbar
einschränken. Normalerweise dürftest du kein jitter im Signal haben,
wenn doch, dann werden deine Daten ungleichmäßig schnell verarbeitet,
bzw ausgewertet. Vielleicht hast du da ein problem mit dem interrupt?
Aber auch das lässt sich wunderbar oszilloskopieren. Ich mach das
jedenfalls bei solchen Timing problemen immer so.

gruß Marc989

von Peter D. (peda)


Lesenswert?

Du mußt einfach nur das Auslesen und das Starten der Messung getrennt
machen.

Ich mache das immer so, daß ich alle 5s die Meßwerte aulese und dann
die nächste Messung starte.


Peter

von Mirko (Gast)


Lesenswert?

Danke erstmal für die Antworten. Ich habe gedacht ich kann mir das
einfach machen und die beiden Codes einfach zusammenschmeissen. Da das
nicht funktioniert habe ich nun angefangen alles neu aufzubauen. Das
mit den 5 sec habe ich noch nicht wirklich verstanden. Normalerweise
sieht das so aus:
Do
1wreset
1wwrite &H55
1wwrite Id1(1) , 8
1wwrite &H44

Waitms 300
1wreset
1wwrite &H55
1wwrite Id1(1) , 8
1wwrite &HBE
Ar1(1) = 1wread(9)
1wreset

Ich weiß jetzt nicht, was Du genau mit auslesen und Messung starten
meinst ?

Gruß Mirko

von Mirko (Gast)


Lesenswert?

Ich kriegs einfach nicht hin. Die Uhr läuft über einen Uhrenquarz mit
Timer2. Aber die Messung und Auswertung der Temperatursensoren läuft in
der Schleife. Die Ausgabe ans Lcd ebenfalls. Ich glaube das ist das
Problem. Die Daten werden ans Lcd gesendet, danach werden die
Temperatursensoren ausgelesen und ausgewertet und dann Loop. Macht bei
2 Sensoren scheinbar 1,5 bis 2 Sekunden bis wieder Daten ans Lcd
geschickt werden können. Gibt es da vielleicht doch noch eine Lösung?
Oder gibt es andere Temperatursensoren die nicht so zeitintensiv
auslesen???

Gruß Mirko

von Peter D. (peda)


Lesenswert?

"Oder gibt es andere Temperatursensoren die nicht so zeitintensiv
auslesen???"


Du bist es doch, der die Wartetzeiten einbaut und sich dann wundert,
warum dann auch wirklich gewartet wird:

"Waitms 300"

bedeutet genau das, halte alles an und drehe Däumchen für 300ms.

Der Sensor kann nix dafür, daß Du schlecht programmierst.


Also nochmal:

Du hast die Uhrzeit und jedesmal, wenn die Sekunde wechselt, zählst du
eine Variable hoch. Und wenn die 5s erreicht, dann liest Du die
Sensoren aus und startest die nächste Messung. Und schon sind die
Wartezeiten verschwunden.


Peter

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.