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
...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
...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
Hallo, die Berechnung ist so witzig. *2000 durch 2000 Additionen. Hier steht ein verkuerztes Verfahren in Assembler: Beitrag "Re: Temp.Sensor TSIC 306 - Temperaturwert"
@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"
@alle mich störte bis jetzt, dass immer 3 Leitungen nötig waren, um den TSIS-206 zu versorgen, mit wenigen Hadgriffen kann eine 2 Leitungs-Schaltung (1-WIRE) realisiert werden: Beitrag "TSIC206 im 1WIRE 1-WIRE ONE-WIRE Betrieb Schaltung Diskussion" Bernhard
:
Bearbeitet durch User
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
:
Bearbeitet durch User
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.