Interessante LCD Ausgabe

OP #3261729
Lesenswert?

Habe kurz mal einen neuen Thread aufgemacht.

Gestern wo ich mit meinem 100W LED weiter experimentiert hatte, hatte 
plötzlich was spannendes entdeckt.

Nach dem Einschalten ist die Anzeige geweisse Zeit lang OK, so habe ich 
bisher gesehen. Siehe Bild Anzeige2. Nach einige Minuten sieht die 
Anzeige so aus wie auf dem Bild Anzeige1

Aber erstmal evtl. ein paar Eckdaten :
Atmega8
16 MHz Quarz
100nF Kerkos direkt an den Versorgungspins
10K Pullup beim Reset Eingang
100nF Am AREF nach GND
also alles standard Beschaltung, wie ich immer verwende.

Das Kabel zum LED Modul wo auch der DS18B20 Sensor sitzt ist etwa 5 
Meter lang. Das Kabel, wurde in einem anderen Thread empfohlen 10x 
0.25mm2
2 x 3 Adern verdrillt für LED 3 Adern für den Sensor.
Sensorausgang mit 4K7 Pullup an 5V

Nun jetzt das spannende.
Wenn die Anzeige "spinnt" schalte ich kurz das Gerät aus dann gleich 
wieder ein, ist die Anzeige wieder normal, die Temperatur wird richtig 
wieder geben.Gewisse Zeit lang

Nun meine Frage. Was wird denn bei der "verwirrte" Anzeige dargestellt 
??

Der Code ist auch soweit standard hier mal ein Ausschnitt was zum Theman 
gehört:

$regfile = "M8def.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 100

Dim Sc(9) As Byte
Dim Temperatur As Integer
Dim Celsius As Single

Config 1wire = Portc.5

Locate 2 , 8
Lcd Fusing(celsius , "##.##")

1wreset
1wwrite &HCC    ' Überspringe Rombefehl Seriennummer weglassen
1wwrite &H44    'messen
Waitms 1000
1wreset
1wwrite &HCC
1wwrite &HBE    ' Start Daten lesen
Sc(1) = 1wread(9) ' Gelesene Daten ins Array
Waitms 500

Temperatur = Makeint(sc(1) , Sc(2)) ' Die oberen und unteren 8Bit in 
eine 16Bit Integer Variable speichern


Print Bin(sc(1)) ; Bin(sc(2))
Celsius = Temperatur / 16
Angehängte Dateien:
OP #3261751
Lesenswert?

Es muss irgandwas mit dem Temperaturanzeige zusammenhängen.

Die Anzeige PWM Wert 0 bis 100% funktioniert aber tadellos

Hier der betreffende Code Zeile :

Locate 2 , 1
Lcd Chr(223) ; "C/PWM:"
Locate 2 , 15
Lcd Fusing(pwm_perc , "##.#")
Locate 2 , 20
Lcd "%"
Locate 2 , 8
Lcd Fusing(celsius , "##.##")


W = Getadc(0)
Waitms 250
Perc = W / 50
Pwm = W / 4
Pwm_perc = Pwm / 2.55
OP #3261790
Lesenswert?

hp-freund schrieb:
> Was passiert bei celsius>99.99 ?

Gute Frage, bisher hatte ich nur Temperaturen gehabt bis ca 60 C

Im muss noch folgendes beobachten ( was mir so gerade einfiel )
- Tritt die Störung nur dann auf, wenn PWM sich ändert
- Nach welche Zeit
- Sensor mit kurze Leitung

Fakt ist, wenn diese Störung auftritt bleibt es dabei.
Wenn die Steuerung aus und eingeschaltet wird, also die Einstellung PWM 
Wert ist identisch und die Temperatur ändert sich nicht in 5 Sec, dann 
ist die Anzeige OK..wieder gewisse Zeit lang.

Spannend ist, daß ich schon einige Temperaturmessgeräte gebaut habe, 
sowas habe ich nicht nicht gesehen.
#3261792
Lesenswert?

Thomas der Bastler schrieb:
> Es muss irgandwas mit dem Temperaturanzeige zusammenhängen.

Dann würde ich vorschlagen, du verzichtest mal auf die 4. Zeile deines 
LCD und lässt dir dort die Bytes, so wie du sie vom DS1820 bekommst, 
einfach mal ausgeben.

Debuggen heißt nicht, dass man endlos lange auf eine Anzeige starrt, 
sondern dass man anfängt sich die beteiligten Variablen und ihre Werte 
näher anzusehen. Und das beginnt ganz vorne, dort wo die "Werte" das 
erste mal die Bühne betreten. In deinem Fall: nachdem die Bytes vom 
Sensor abgegriffen wurden.
OP #3261836
Lesenswert?

Im Datenblatt steht :

Byte 0 and byte 1 of the scratchpad contain the LSB and the MSB of the 
temperature register,

Also wäre dies richtig:

Temperatur = Makeint(sc(1) , Sc(2)) ' Die oberen und unteren 8Bit in 
eine 16Bit Integer Variable speichern

ich vermute, das Problem könnte woanders liegen. Wie ich schon gesagt 
habe auf dem Steckbrett habe ich sowas nicht beobachtet, aber kann mich 
auch täuschen.

Ähnlich wird es hier auch so verwendet :

http://pc-rentner.de/index.php/ds18b20-bascom

Die Grundlagen habe ich hier gelesen.
Gast #3261839
Lesenswert?

Grundsätzlich sollte man Darstellungen auf einem LCD immer 
softwareseitig begrenzen, damit es einem halt nicht die Anzeige 
zerschießt... Es ist auch ratsam das LCD alle 10min mal neu zu 
initialisieren, falls mal n Wackler am Stecker oder auftaucht, läuft es 
dann selber wieder an.

Ingo
#3261849
Lesenswert?

Thomas der Bastler schrieb:
> Im Datenblatt steht :
>
> Byte 0 and byte 1 of the scratchpad contain the LSB and the MSB of the
> temperature register,
>
> Also wäre dies richtig:

Es geht nicht darum was richtig ist oder nicht, sondern WELCHE WERTE DU 
VOM SENSOR BEKOMMST!

Datenübertragungen können auch schon mal gestört sein!

Also sieh dir die Werte an! Direkt vom Sensor. So wie die Bytes 
daherkommen.
Geh doch nicht so naiv in die Welt hinein, dass technische Dinge immer 
100% zuverlässig und korrekt funktionieren.
OP #3261859
Lesenswert?

Ich versteh es so :

target = FUSING(source, "mask")

Target:
Die Zeichenfolge, die mit der formatierten Zeichenfolge zugeordnet ist.

Source:
Die Quelle Variable vom Typ SINGLE, die konvertiert werden

Meine Quelle ist vom Datentyp Single

Mask:
Die Maske für die Formatierung der Zeichenfolge.
also ##.##

Theoretisch kann maximal dies ausgegeben werden
99.99

Vermute das Problem liegt am Kabel.
Werde aber die anderen Tipps auch anschauen.
Gast #3261875
Lesenswert?

Hi

>Theoretisch kann maximal dies ausgegeben werden
>99.99

Nein. Die Vorkommastellen werden überhaupt nicht beeinflußt. Nur die 
Zahl der Nachkommastellen werden auf die Zahl der # (gerundet) oder & 
(nicht gerundet) nach dem Komma begrenzt. Deshalb ist es egal, ob du 
#.##, ##.## oder ###.## hinschreibst. Angezeigt wird das gleiche.

MfG Spess
#3262091
Lesenswert?

Welches Problem?`Weißt du denn überhaupt schon, WAS überhaupt das 
Problem ist?

Es gibt praktisch fast immer mehrere Möglichkeiten, was passiert sein 
KÖNNTE.

Nur, mit KÖNNTE kann man nicht Bug-fixen. Erst mal muss Gewissheit her, 
was denn überhaupt das Problem ist. Und das beginnt damit, das man sich 
die zu verrechnenden Daten ansieht.


Ich versteh gar nicht, warum du dich so mit Händen und Füssen wehrst, 
das absolut naheliegenste zu tun, und dir mal die Bytes vom Sensor 
anzusehen und deren Werte mit denen zu vergleichen, bei denen du eine 
vernünftige Ausgabe bekommst. Vielleicht sieht man da tatsächlich 
nichts. Aber dann hat man zumindest diesen Punkt schon mal 
ausgeschlossen.

Mir wird das jetzt ehrlich zu bunt. Auch weiterhin fröhliches 
Weiterraten und Stochern im Nebel.
Gast #3262092
Lesenswert?

Hi

>Würde die Funktion "Format" was bringen um das Problem zu lösen ?

Nein. Der Wert ist falsch. Was willst du da an der Ausgabe herumdoktern? 
Wenn du den Fehler behoben hast stimmt auch die Ausgabe.

MfG Spess
#3264183
Lesenswert?

Thomas der Bastler schrieb:
> Das Problem liegt an der Kabellänge bzw Störung von der LED ( Adern im
> Kabel)
>
> Nicht am Code..

Ja
Und was glaubst du, warum wir auf dich eingeredet haben, wie auf eine 
kranke Kuh, dass du dir mal die Bytes vom Sensor ansehen sollst?

Da hätte man das nämlich gesehen, dass sich die Bytewerte vom Sensor 
plötzlich verändern, obwohl sich die Temperatur nicht verändert hat.
OP #3264194
Lesenswert?

Karl Heinz Buchegger schrieb:
> Und was glaubst du, warum wir auf dich eingeredet haben, wie auf eine
> kranke Kuh, dass du dir mal die Bytes vom Sensor ansehen sollst?

Hihi..Ich liebe Dich....

Aber ich mag den einfachen Weg..direkt durch...
Spass bei Seite, ganz klar, hätte ich machen können als nächstes wäre 
gewesen.

Aber dafür die Kiste aufschrauben, Programm umfrickeln flashen 
usw..bestimmt eine halbe Stunde "Abeit" und 2 flaschen Bier 2 Kippen.
Einfacher ist es den Sensor direkt an AVR dran...

OK folgende Frage.

Gibt es 2 Lösungsansätze

1) Kabel kürzen, so eine Sache wieviel, wissen die Götter ( Kann ich 
nicht über Wasser laufen und habe auch keine Löcher in den Händen )
2) 2 getrennte Leitungen ..hmmm
3) Sensorausgang "entstören" ?

Nochmal kurz Kabel ist 10 x 0.25
OP #3266367
Lesenswert?

So damit dieses Projekt abgeschlossen werden kann.

Habe alles soweit jetzt fertig.

Das EINZIGE Problem war ja, das die Sensorleitung zusammen mit der LED 
Leitung in einem Kabel war.

2 getrennte Leitungen gleiche Länge als ca 5 Meter, absolut kein 
Problem, keine Geisterzahlen und die Temperaturmessung ist super.

Soviel zum Thema....also der Code war von anfang an richtig..LoL
#3266379
Lesenswert?

Thomas der Bastler schrieb:

> Soviel zum Thema....also der Code war von anfang an richtig..LoL

Niemand hat das Gegenteil behauptet.

Aber es ist keine Schande, wenn man den Computer dazu benutzt, dass er 
einem bei der Fehlersuche hilft. Ja, das geht!

Und ehe man ein Gehäuse zuschraubt, macht man sowieso einen 
Funktionstest. Von daher geht mir das Argument "Ja, aber Gehäuse 
aufschrauben und neu flashen wäre so viel Arbeit gewesen" am 
Allerwertesten vorbei. Im Endeffekt hat es so länger gedauert, als wenn 
man von Anfang an gleich Nägel mit Köpfen gemacht hätte.
OP #3266390
Lesenswert?

Karl Heinz Buchegger schrieb:
> Im Endeffekt hat es so länger gedauert, als wenn
> man von Anfang an gleich Nägel mit Köpfen gemacht hätte.

Eben nicht...
Sensor in die Ausgangbuchse gesteckt alls OK.
Also muss ich nicht am Code herumwurstelt und LCD Ausgaben basteln
Sensor am langen Kabel OK

Also die ursache für das Problem ist je erkannt.

Mann kann eben ein Gericht auf verschiedene Weise zubereiten..smile..
Gast #3266590
Lesenswert?

Mr. X schrub:
>Zentimeter, Millimeter, Meter, Kilometer?

Zitat:
>Das Kabel, wurde in einem anderen Thread empfohlen 10x
>0.25mm2
>2 x 3 Adern verdrillt für LED 3 Adern für den Sensor.
>Sensorausgang mit 4K7 Pullup an 5V

MfG Paul
#3266596
Lesenswert?

Hallo Thomas,

ich würde schon den Programmteil ergänzen und eine Fehlerüberprüfung 
einbauen.

Könnte ja ganz einfach sein, dass zwei Messwerte des DS18B20 verglichen 
werden und wenn
 |Messwert_alt - Messwert_neu| > FEHLER_SCHWELLE
ist, dann wird der Messwert verworfen.

Mach mal ein Test mit einem 2m (145MHz) Funkgerät in der Nähe deiner 
Schaltung.

Ich habe hier so ein 15V NG1620-BL Netzteil, da laufen dann alle 
Anzeigenwerte weg, auch die Ausgangsspannug stimmt nicht mehr mit 
dem eingestellten Wert überein.

Auch großzügige Abblockkondensatoren haben bisher nur die 
LCD-Pannelmeter zur passenden Reaktion bewegt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren