TSIC206 TSIC306 Temperatursensor / Thermometer LCD Assembler ATmega8

OP #2266871
Lesenswert?

Ein kleines Programmierbeispiel um die Daten aus einem TSIC206 / TSIC306
auszulesen.

Besonderheiten:

- Strobe vom TSIC Sensor wird ermittelt und angezeigt

- Messung erfolgt ohne Interrupt

- die Interrupts werden für ca. 25ms gesperrt, liese sich aber
  sicherlich noch optimieren

- Programmcode ist für 1MHz Takt vorbereitet

- im Bereich von 1 bis 4 MHz (Takt) arbeitet der Programmcode
  ohne Fehler, oberhalb 4 MHz müssen ggf. die Warteschleifen
  angepasst werden

- Parität wird geprüft und Bit 7 bis 4 (MSB) auf NULL-Wertigkeit

- Die Spannung vom TSIC 206 / TSIC 306 wird nach der Messung wieder
  abgeschaltet (wegen ev. Erwärmung des Sensors).

- LED ROT signalisiert einen Fehler (z.B. Parität), lässt sich nur durch
  ein Reset löschen

- LED GELB signalisiert den Messvorgang (Interruptsperrung)

- LED GRÜN Bits der Messung



Programmablauf:

- Spannung am Sensor einschalten und etwas warten (Bootvorgang)

- Prüfung, ob Sensor-Signale am µC anliegen

- Auf eine Sendepause vom Sensor warten

- Auf Start-Bit warten und Strobe messen

- Alle folgenden Bits speichern und auswerten

- Umrechnung der Bits in Temperatur (vereinfachtes Verfahren)



Bernhard
Angehängte Dateien:
OP #2267150
Lesenswert?

...die LED Variante....

Besonderheiten:

- Aufpassen, die Schaltung ist relativ einfach aufgebaut, ein
  Kurzschluss am Display könnte den µC schädigen, da das Display mit
  9V betrieben wird (hohe Flußsspannung der Displays)

- Fehlercodes werden angezeigt (z.B. Kurzschluss am Sensor, keine Daten,
  Paritäts- und Bitfehler)

- bei der TSIC-Messung werden die Interrupts gesperrt und die 7-Segment-
  Anzeigen für einige ms abgeschaltet

- der Programmcode lässt sich relativ einfach an Beschaltungsänderung
  anpassen


Bernhard
Angehängte Dateien:
OP #2376852
Lesenswert?

...die etwas verbesserte LED Variante...

- das "flackern" der LEDs beim Messvorgang kaum noch sichtbar

- Sensorbetriebsspannung wird nicht geschaltet
  (diese Variante baucht weniger Pins)

- Strobemessung etwas verbessert

- Fehlermeldung wird als Temperaturwert angezeigt
 (z.B. "-99,9" keine Sensordaten)


Bernhard
Angehängte Dateien:
Gast #2472874
Lesenswert?

@Bernhard:
siehe oben.
http://www.mikrocontroller.net/attachment/preview/115753/page_snapshots
/001.png

hier realisierst Du wohl das für das KTY81-Thermometer gesuchte 
Low-Level-Signal hardwaremässig.

Hast du mal den Tip, wie das in der alten Software umgedreht werden 
kann.
Würde gerne PNP-Transistoren direkt ansteuern?

Gruss Peter

Da bitte lang zum KTY81:
Beitrag "Re: KTY81-121 KTY81-122 Temperatursensor / Thermometer LED 0,5°C Auflösung Assembler ATmega8"
OP #4358341
Lesenswert?

UPDATE-2015

Nun flackert bei der Messung nichts mehr :-)


Warum nicht?

Wenn der TSIC sein kurzes Datenprotokoll alle 100ms sendet,
kann der Timer-Interrupt für die 7-Segment-Anzeige die Datenabtastung 
empfindlich stören und die einzelnen Datenbits verfälschen.

Das macht nichts, denn die der Programmcode ist so gestaltet, dass drei 
Temperaturwerte (Datenpakete) gleich sein müssen.


Programmstart:

"2015"  ---> Version Jahr
"t.016" ---> Strobe
" 21,6" ---> Temperatur (Beispiel)

Werden keine Daten vom TSIC empfagen, dann leuchtet die rote LED und es 
wird "-50.0" angezeigt.



Bei jeder Messung leuchtet kurz der Punkt im Digit3 (linkes Digit).


Der TSIC kann problemlos in 1-WIRE (spart eine Leitung) oder 2-Wire 
Beschaltung betrieben werden.


Bernhard
Angehängte Dateien:

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