PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere TSic auslesen



WL
05.07.2010, 20:33
Hallo,
hier ein kleines (Demo)-Projekt, das Euch vielleicht interessiert:

Eine kleine Schaltung mit Mega8 (+BasCom) um mehrere Temperatursensoren TSic_xxx zyklisch auszulesen.

Das verwendete Protokoll: ZacWire(TM)

Hier mit 4 Sensoren TSic306 (-50-+150°C/Aufl. 0.1°C/Genau. 0.3°C)......

berger38
19.07.2010, 22:17
Hallo WL,

ein toller Zacwire Code, den Du da geschrieben hast.
Wäre es möglich, dass Du uns noch einen Code hier darstellst, aber dann
nur mit einem Temperatursensor Tsic306 ?
Würde mich riesig drüber freuen.

MfG
berger38

WL
20.07.2010, 19:24
Hallo berger38,

...............aber nur weil ich ein wenig Zeit habe ! :-k 8-[

berger38
20.07.2010, 20:03
Hi WL,

recht herzlichen Dank für Deine Mühe.
Werde den Code gleich mal ausprobieren und Dir dann berichten.
Da ich jetzt keine LCD-Anzeige habe, muss ich die Ausgabe auf
Print umstellen und die Werte im Terminal anzeigen lassen.
Ich hoffe das ich das packe.

Gruß
berger38

berger38
20.07.2010, 21:07
Hallo nochmal WL,

endlich es funktioniert. Du hast mich vor der Verzweiflung bewahrt.
Ich versuche schon seit vielen Tagen diesen Tsic mit Bascom zum Laufen
zu bringen, aber immer vergebens.
Nur durch Dich geht es jetzt. Hätte ich selbst auch nie geschafft.
Nochmals aller besten Dank dafür.
Im Übrigen finde ich, dass der Hersteller mindestens auf seiner Internetseite
mehrere Codes für verschiedene Programmiersprachen hinterlegen müsste.
Zu mindest jedenfalls auch in BASCOM, das ja immer beliebter wird.
Auch in professionellen Bereichen.

Mit den besten Grüßen
berger38

WL
21.07.2010, 13:48
Hallo berger38,

schön das ich Dir helfen konnte. O:)

Geschafft hättest Du das aber auch............... \:D/

berger38
21.07.2010, 23:25
......... kann sein, fragt sich nur in wieviel Jahren ...........

Lazareth
12.12.2011, 18:48
Wobei ich deine Auswertung mit den float-Werten als nicht partikabel deute. Ich hätte erst mit 200 multipliziert und anschließend durch 2000 dividiert. Das macht dann einen 24-bit Wert, besser als mit float herumzuhantieren. Die Kommastelle kann man dann bei der Ausgabe auf dem LCD richtig setzen, bzw. bei weiteren Berechnungen mit berücksichtigen. Ich habe das mal in C programmiert und rund 30% Speicher gespart (mega8).

WL
12.12.2011, 21:15
Wobei ich deine Auswertung mit den float-Werten als nicht partikabel deute. Ich hätte erst mit 200 multipliziert und anschließend durch 2000 dividiert. Das macht dann einen 24-bit Wert, besser als mit float herumzuhantieren. Die Kommastelle kann man dann bei der Ausgabe auf dem LCD richtig setzen, bzw. bei weiteren Berechnungen mit berücksichtigen. Ich habe das mal in C programmiert und rund 30% Speicher gespart (mega8).

Das hast Du gut gemacht....
Wieder was dazugelernt. ;)

berger38
22.01.2013, 19:59
Hallo zusammen,
und alles Gute noch für das neue Jahr,

nach nun mehr 2,5 Jahren muss ich das Thema "Tsic auslesen", hier noch einmal aufgreifen. Auf meinen Wunsch hin, hat mir WL den BASCOM-Code zum auslesen eines
Tsic306 hier veröffentlicht. Bedankt hatte ich mich ja schon dafür und mit Erfolg ausprobiert auch. Dann ist das Projekt "Thermometer mit Tsic306" allerdings in der
Schublade verschwunden. Die langen Winterabende haben mich Diese aber wieder öffnen lassen und das Thermometer steht wieder auf der Agenda.
Ich weiß ja nicht ob WL hier noch zu gegen ist, aber ich muss ihm sagen, der Code funktioniert doch nicht bzw. nur zum Teil.
Als Zimmerthermometer mit positiven Temperaturwerten ist alles o.k.. Bei negativen Werten, also Temperaturen im Minusbereich werden nur Fantasie-Zahlen angezeigt.
Sobald der Sensor unter null-Grad Umgebungstemperatur ausgesetzt ist, geht es los. Es erscheinen mal die aktuellen Temperaturen, dann positive Werte im Tausender-
Bereich, dann -99 und anderes Zahlengewirr im schnellen Wechsel.
Wie gesagt WL, wenn Du noch hier bist, kannst Du Dir hier einen Reim draus machen ? Woran könnte es liegen ?
Natürlich bin ich für jeden konstruktiven Hinweis, auch von Euch allen Mitgliedern, sehr dankbar.
Der Sensor hängt an einem Mega8 mit LCD-Display.
Die vorab genannte Fehlfunktion tritt auf, wenn die gesamte Schaltung den Minustemperaturen ausgesetzt wird, aber auch dann, wenn die Schaltung im Warmen
verbleibt und nur der Sensor in der Kälte ist (über eine 2m lange Leitung). Ein Abblock-Kondensator von 100nF(keramik) ist in jedem Fall dicht am Sensor angelötet.
Auch der Austausch gegen einen Folienkondensator hat nichts gebracht.
Meiner Meinung nach ist das ein Software-Problem.
Wie gesagt, würde mich sehr freuen, wenn mir jemand helfen könnte.

Mit besten Grüßen
berger38

WL
23.01.2013, 15:04
....kannst Du Dir hier einen Reim draus machen ?

Ich werde das nochmal testen.
Die passenden Temperaturen haben wir ja jetzt. ;)

- - - Aktualisiert - - -

Bei mir läuft es prima.........

Ich lese gerade im Datenblatt:
RL >= 10KOhm !!!!

Ich kann deinen Fehler nachstellen wenn ich den Ausgang mit den 6,8KOhm gegen 0V belaste (gegen +5V dagegen nicht).
Der TSIC ist da wohl ein wenig schwach auf der Brust.

Lass den Widerstand einfach weg wenn Du nur einen Sensor am Mega hast !

Oder wenn du mehrere benutzt und die Leitungslänge nicht zu groß ist benutze den internen Pull-Up.

berger38
23.01.2013, 15:38
Hallo WL,

toll das Du Dich so schnell gemeldet hast und noch mal dem Problem widmest.
Ich habe nur einen Sensor an PIND.2 (INT0) , ohne jeglichen Widerstand dazwischen und auch nicht
gegen Masse oder Plus. Signal direkt an PIND.2 .
Der Portpin ist als Eingang deklariert und Pull-Up Widerstand ausgeschalten.

Im Netz habe ich noch einen Hinweis gefunden:
... bei Temperaturen unter 0° ist das N-Flag durch die Subtraktion schon gesetzt. ...

Was das zu bedeuten hat, kann ich nicht sagen, da ich doch eher uC-Anfänger bin.
... richtig, bei diesen Außentemperaturen kann man unter realen Bedingungen Testen.
Werde ich jetzt auch noch einmal machen. Wider erwarten wird sich der Fehler aber
nicht behoben haben.
Den Code den ich benutze, ist der von Dir WL, für einen Sensor.

Gruß
berger38

WL
23.01.2013, 17:16
Im Netz habe ich noch einen Hinweis gefunden:
... bei Temperaturen unter 0° ist das N-Flag durch die Subtraktion schon gesetzt. ...


?????
Das bezieht sich auf einen anderen Code ? Oder ist damit der resultierende (X °C) Wert gemeint ?
Sicher ist dann bei negativen Temperaturen auch das N-Flag gesetzt.

Der Sensor liefert in den 11 Bit Werte von 0 (-50°C) über 0x200 (0°C) bis 0x7FF (+150°C).
Da ist in einer 16 Bit-Variable nichts negativ !

Lass Dir die Var. "InRegister" mal ausgeben. Springen die Werte da auch ?
Wenn ja, ist das Problem wohl eher in der Hardware zu suchen.

berger38
23.01.2013, 20:53
Hallo WL,

also, ich habe hier 2 Tsic306, der Eine steckt in einem Steckboard mit LCD-Display und Mega8.
Der Andere hängt an einer 2m Strippe und ist an einer fertig aufgebauten Schaltung angeschlossen.
Projekt LED-Thermometer, an dem ich nun schon einige Wochen sitze. Sollte höchstens 1 bis 2 Wochen dauern.
Dieses LED-Thermom. hat einen SAA1064, vier etwas größere 7Segment-LEDs und einen tiny44 (wegen I2C).
Weiterhin habe ich noch zwei Netzteile (ein 5V-Schaltnetzteil und ein Trafonetzteil mit 7805), die abwechselnd
an beiden Schaltungen angeklemmt waren.
Ich dachte schon das ich den Fehler gefunden habe, denn jedesmal wenn ich das Schaltnetzteil an das Steckboard
angeschlossen habe, zeigte die LCD-Anz. springende Werte. Beim Trafonetzteil war das nicht so.
Nun habe ich das Trafonetzteil an das LED-Therm. angeschlossen (weil hier sonst immer das Schaltnetzteil angelötet
war) und dachte das jetzt alles funktioniert.
Die Enttäuschung war groß, die Anzeige-Werte springen weiterhin. Am Netzteil liegt es jedenfalls beim LED-Therm. nicht.

Die Variable "InRegister" beim LED-Therm. ausgeben lässt sich erstmal nicht realisieren.
Am Besten ist, ich schicke hier mal den gesamten Code vom LED-Thermometer rüber.
Vielleicht habe ich dort einen Fehler gemacht und Du kannst mir einen Tipp zur Verbesserung geben.
O.k., die vielen If Then Anweisungen sind peinlich, aber als Anfänger wuste ich mir nicht anders zu helfen.

Gruß
berger38



' LED_Thermometer.bas


$regfile = "attiny44.dat" ' ...............................................spe cify the used micro
$crystal = 12000000 ' .................................................. ..externer Quarz mit 12MHz
$hwstack = 40 ' .................................................. .........default use 40 for the hardware stack
$swstack = 16 ' .................................................. .........default use 10 for the SW stack
$framesize = 32 ' .................................................. ........default use 32 for the frame space

Ddrb = &B0000
Portb = &B0000
Ddra = &B11111111
Porta = &B10101111

Config Sda = Porta.6
Config Scl = Porta.4

Config Int0 = Falling
On Int0 Int0int
Enable Int0

Enable Interrupts

Dim Inregister As Word
Dim Bitzaehler As Byte , Parity1 As Byte , Parity2 As Byte
Dim Parity_z1 As Byte , Parity_z2 As Byte , I As Byte
Dim Parity_err As Byte , Messungok As Bit
Dim Timeout As Word , Io As Byte
Dim Zahl As Word
Dim Ziffer1 As Integer , Ziffer2 As Integer , Ziffer3 As Integer
Dim Rest1 As Integer
Dim Hz1 As Integer , Hz2 As Integer
Dim Temperatur As Single
Dim Wert1 As Integer
Dim Wert2 As Integer
Dim Minus As Single
Dim Digi1 As Byte , Digi2 As Byte , Digi3 As Byte , Digi4 As Byte

Do
Io = 1 '................................................. ..............wir nehmen mal an das alles gut wird
Gosub Neuemessung '............................................Neue Messung vorbereiten

Do
Waitms 1 : Incr Timeout
Loop Until Messungok = 1 Or Timeout > 200 '.............Telegramm abwarten / "MessungOK" wird in "Int0Int:"
If Timeout > 200 Then '..........................................generie rt
Io = 0 : Temperatur = -99 '.....................................!!! FEHLER !!!
End If

Wert1 = Temperatur '.............................................Dezi malzahl in ganze Zahl umgewandelt

If Wert1 >= 0 Then Minus = 0 '.................................wird als 0.0 angezeigt
If Wert1 <= -1 Then Minus = - '................................wird als -0.0 angezeigt
If Wert1 >= 0 Then Wert2 = Wert1 '..........................positiver Wert bleibt positiv zum Rechnen
If Wert1 <= -1 Then '.............................................zum Rechnen muss hier negativer Wert
Wert2 = Abs(wert1) '..............................................in positiven Wert umgewandelt werden
End If

Zahl = Wert2 '................................................. ......Umwandlung in Word zum besseren Rechnen

Ziffer1 = Zahl / 100 '..............................................Rec henzyklus um eine max. 3 stellige Zahl
Hz1 = Ziffer1 * 100 '..............................................in ihre einzelnen Ziffern zu zerlegen
Rest1 = Zahl - Hz1
Ziffer2 = Rest1 / 10
Hz2 = Ziffer2 * 10
Ziffer3 = Rest1 - Hz2
Waitms 200


If Minus = - Then Digi1 = &H40
If Minus = 0 Then Digi1 = &H00
If Ziffer1 = 0 Then Digi2 = &H00
If Ziffer1 = 1 Then Digi2 = &H06
If Ziffer1 = 2 Then Digi2 = &H5B
If Ziffer1 = 3 Then Digi2 = &H4F
If Ziffer1 = 4 Then Digi2 = &H66
If Ziffer1 = 5 Then Digi2 = &H6D
If Ziffer1 = 6 Then Digi2 = &H7D
If Ziffer1 = 7 Then Digi2 = &H07
If Ziffer1 = 8 Then Digi2 = &H7F
If Ziffer1 = 9 Then Digi2 = &H6F

If Ziffer2 = 0 Then Digi3 = &H3F + 128
If Ziffer2 = 1 Then Digi3 = &H06 + 128
If Ziffer2 = 2 Then Digi3 = &H5B + 128
If Ziffer2 = 3 Then Digi3 = &H4F + 128
If Ziffer2 = 4 Then Digi3 = &H66 + 128
If Ziffer2 = 5 Then Digi3 = &H6D + 128
If Ziffer2 = 6 Then Digi3 = &H7D + 128
If Ziffer2 = 7 Then Digi3 = &H07 + 128
If Ziffer2 = 8 Then Digi3 = &H7F + 128
If Ziffer2 = 9 Then Digi3 = &H6F + 128

If Ziffer3 = 0 Then Digi4 = &H3F
If Ziffer3 = 1 Then Digi4 = &H06
If Ziffer3 = 2 Then Digi4 = &H5B
If Ziffer3 = 3 Then Digi4 = &H4F
If Ziffer3 = 4 Then Digi4 = &H66
If Ziffer3 = 5 Then Digi4 = &H6D
If Ziffer3 = 6 Then Digi4 = &H7D
If Ziffer3 = 7 Then Digi4 = &H07
If Ziffer3 = 8 Then Digi4 = &H7F
If Ziffer3 = 9 Then Digi4 = &H6F

I2cstart '................................................. ................I2c-Bus starten
I2cwbyte &H70 '................................................. ......schreibe Empfangsadresse
I2cwbyte &H00 '................................................. ......schreibe Register-Adresse
I2cwbyte &H27 '................................................. ......schreibe Einstellungen, auch LED-Helligkeit
I2cwbyte Digi1 '................................................. .......Digit 1 = ( z.B. Ziffer 2 )
I2cwbyte Digi2 '................................................. .......Digit 2 = ( z.B. Ziffer 3 )
I2cwbyte Digi3 '................................................. .......Digit 3 = ( z.B. Ziffer 7 )
I2cwbyte Digi4 '................................................. .......Digit 4 = ( z.B. Ziffer 9 )
I2cstop '................................................. .................Ende der Durchsage
Loop

Neuemessung:
Timeout = 0
Messungok = 0
Parity_err = 0
Inregister = 0
Bitzaehler = 0
Parity_z1 = 0
Parity_z2 = 0
Return

Int0int:

Incr Bitzaehler

Select Case Bitzaehler
Case 1 '................................................. ..........................Start-Bit MSB

Case 2 To 9 '................................................. ...................Daten MSB
Waitus 60 '................................................. ......................ungefähr Mitte (gesamt-Bitbreite=125µs)
Shift Inregister , Left
If Pinb.2 = 1 Then '................................................. ...........Bit="1" ?
Inregister = Inregister Or 1 '................................................d ann rein damit
Incr Parity_z1 '................................................. ................."1"-Bits zählen
End If

Case 10 '................................................. .........................Parity-Bit MSB
Waitus 60
Parity1 = Parity_z1 Mod 2 '................................................. .gerade ?
If Pinb.2 = 1 And Parity1 = 0 Then
Incr Parity_err '................................................. .................FEHLER !
End If

Case 11 '................................................. .........................Start-Bit LSB

Case 12 To 19 '................................................. ................Daten LSB
Waitus 60 '................................................. ......................ungefähr Mitte (gesamt-Bitbreite=125µs)
Shift Inregister , Left
If Pinb.2 = 1 Then '................................................. ...........Bit="1" ?
Inregister = Inregister Or 1 '................................................d ann rein damit
Incr Parity_z2 '................................................. ................"1"-Bits zählen
End If
Case 20 '................................................. ........................Parity-Bit LSB
Waitus 60
Parity2 = Parity_z2 Mod 2 '................................................. gerade ?
If Pinb.2 = 1 And Parity2 = 0 Then
Incr Parity_err '................................................. ................FEHLER !
End If

If Parity_err = 0 Then
Temperatur = Inregister * 250
Temperatur = Temperatur / 256
Temperatur = Temperatur - 500
Temperatur = Temperatur
Parity_err = 0
Inregister = 0
Bitzaehler = 0
Parity_z1 = 0
Parity_z2 = 0
Messungok = 1
Waitms 3
Else
Temperatur = -99
Io = 0 '................................................. .....................Parity-Fehler
End If

End Select
Return


'.............so ist es etwas übersichtlicher !..................

WL
24.01.2013, 13:48
Die Variable "InRegister" beim LED-Therm. ausgeben lässt sich erstmal nicht realisieren.


Bestimmt aber in der LCD-Version.


If Minus = - Then Digi1 = &H40
Was der Compiler so alles schluckt !!!
Sollte bestimmt "If Minus < 0" werden.


Wert1 = Temperatur '.............................................Dezi malzahl in ganze Zahl umgewandelt

An dieser Stelle könntest Du mal Wert1 mit einer Variablen füttern die von z.B. -200 bis +200 (-20°C bis +20°C) läuft und damit deine Ausgabe auf die Anzeige überprüfen.

Leider habe ich die nächsten Tage wenig Zeit um das alles nachzuvollziehen.

Vielleicht hat aber jemand anderes.....................

berger38
26.01.2013, 01:09
Hallo an WL und an die Runde,

habe Deinen Rat beherzigt und beim LED_Thermom. (mit ISP Interface) Wert1 mit einer Var.X durch Incr hochzählen und mit Decr wieder
runterzählen lassen, öfters und in mehreren Geschwindigkeiten. Die Anzeige war immer ohne Störungen, auch mit Minus-Vorzeichen.
Dann hab ich das LCD_Thermom. umgebaut, statt Mega8 jetzt mit tiny44 und den original zacwire-Code für 1 Sensor geladen.
Den Sensor mit der 2m Strippe bei <-10°C aus dem Fenster gehängt und beobachtet.
Auch hier lief alles reibungslos, keine zappelnden Werte, Minus-Anzeige in Ordnung.
Nun nahm ich wieder das LED-Thermom., die 2m Strippe hier dran und siehe da, die Werte und Minus haben wieder fantasiert.
Als nächstes tauschte ich mal die Sensoren, den vom Steckboard jetzt an die 2m Strippe (nur mal so zum testen).
Auf einmal funktionierte das LED-Thermom., auch längere Zeit ohne zu mucken. Ich habe mich schon gefreut.
Dann kam ich auf den Gedanken, den Sensor mal in das Gefrierfach vom Kühlschrank zu packen. Dort sollen ja mehr als
-18°C sein. Gesagt, getan. Hier ging der Fall der Temperaturwerte zusehens schneller als am Fenster.
Ich dachte ich seh nicht recht, ab -13°C fingen auch hier die Werte und das Minus an zu zappeln. Also, zu früh gefreut.
Ergebnis: ein Sensor wird schon mal ab -4 bis -5°C instabiel und der Andere ab ca. -13°C . Ich bin erstmal bedient.
Was ist denn hier los, ist das nun ein Software oder Hardware Problem. Bei Plustemperaturen funktioniert immer alles.
Nach einer schöpferischen Pause, werde ich mal versuchen den Tsic auf anderem Wege auszulesen. Der Hersteller zeigt
in seinem Datenblatt ja eine andere Variante. Aber ob ich das packe weiß ich nicht.
Vor 25 oder 30 Jahren war Thermometer bauen noch einfach, ein A/D-Wandler, ein BCD-Decoder IC mit multiplex LED-Anzeige
und fertig. Heute brauch man ein abgeschlossenes Hochschulstudium in Informatik und vor allem perfekte Englisch-Kenntnisse.
Egal, bis hier her erst einmal recht herzlichen Dank WL für Deine Unterstützung.
Sollte ich in dieser Sache (LED-Thermometer) irgendwann zu einem guten Ergebnis gekommen sein, melde ich mich hier.

Mit besten Grüßen
berger38

WL
26.01.2013, 14:31
Hallo Berger38,

Ich habe in anderen Beiträgen zum TSIC den Hinweis gefunden das die "Baudrate" sehr variabel sein soll (50-200% !!!).
Ich habe die Bitbreite (125µs) bei Raumtemperatur ermittelt.

Hast Du ein Oszilloskop um das Tastverhältnis (bei den kritischen Temperaturen) zu messen ?

Wenn nicht, spiel mal an den Wait's:




Int0int:

.
.
.
.
Case 2 To 9 '................................................. ...................Daten MSB
Waitus 60 '................................................. ......................ungefähr Mitte (gesamt-Bitbreite=125µs)
Shift Inregister , Left
If Pinb.2 = 1 Then '................................................. ...........Bit="1" ?
Inregister = Inregister Or 1 '................................................d ann rein damit
Incr Parity_z1 '................................................. ................."1"-Bits zählen
End If

Case 10 '................................................. .........................Parity-Bit MSB
Waitus 60
Parity1 = Parity_z1 Mod 2 '................................................. .gerade ?
If Pinb.2 = 1 And Parity1 = 0 Then
Incr Parity_err '................................................. .................FEHLER !
End If

Case 11 '................................................. .........................Start-Bit LSB

Case 12 To 19 '................................................. ................Daten LSB
Waitus 60 '................................................. ......................ungefähr Mitte (gesamt-Bitbreite=125µs)
Shift Inregister , Left
If Pinb.2 = 1 Then '................................................. ...........Bit="1" ?
Inregister = Inregister Or 1 '................................................d ann rein damit
Incr Parity_z2 '................................................. ................"1"-Bits zählen
End If
Case 20 '................................................. ........................Parity-Bit LSB
Waitus 60
Parity2 = Parity_z2 Mod 2 '................................................. gerade ?
If Pinb.2 = 1 And Parity2 = 0 Then
Incr Parity_err '................................................. ................FEHLER !
End If


Sollte das nicht fruchten muß ich einen Timer bemühen............

berger38
26.01.2013, 16:22
.... Danke Willi für Dein Engagement, lass es gut sein. Bemühe Dich nicht weiter in dieser meinen Angelegenheit.
Wenn es bei Dir gut funktioniert ist es doch o.k.. Ich gebe hier erst einmal auf.
Seit ca. 30min hängt der Sensor im Tiefkühlfach, angeschlossen am LCD-Therm. mit original zacwire Code.
Es zeigt -22,3°C und bis jetzt hat die Anzeige noch nicht gezappelt. Das wird schon alles Funktionieren, auch mit der
Erfassung des 60us Zeitfensters.
Der Fehler bei der LED-Variante wird wohl in meinen vielen Umrechnungs-u. Umbennenungsroutinen liegen.
Ich glaube da passt irgendwas nicht.
Ja, ich habe einen Oszi und ja ich hatte mir die letzten Tage mal das Signal vom Sensor angesehen.
Konnte aber keinen Makel feststellen. Auch die Tastverhälnisse der einzelnen Bits konnte ich erkennen.
Ist nämlich nicht ganz einfach gewesen. Der Oszi ist schon etwas altersschwach, EO211 von RFT (reicht fünf Tage).
Direkt zum Messen kaum geeignet, aber zur Signalkontrolle reicht er noch.
Da das Datenpaket alle 100ms (10Hz) vom Tsic ausgesendet wird, hat die Anzeige auf dem Oszi auch ganz schön
geflackert. Der ist fast 30 Jahre alt und hat sich eher kaputt gestanden.
Wie gesagt, ich klink mich hier erst mal aus und wünsche Dir und Euch ein angenehmes Wochenende.

mfg
Lutz

WL
26.01.2013, 17:12
o.K. , ich bin schon still........................;)

5Volt-Junkie
30.01.2013, 07:39
Für Quellcode bitte den Button "[CODE]" (Raute Symbol) verwenden ;)

berger38
02.02.2013, 00:42
Hallo 5Volt-Junkie,

beim besten Willen, aber ich kann hier keinen Button für "Code" finden. Oder hab ich Tomaten auf den Augen ?
Ich sehe Buttons für die Schrift, Smilay, Link, Link entfernen, Grafik, Video, Zitat einfügen und sonst nichts.


Hallo WL,

wie an den vielen Hits zu sehen ist, besteht offensichtlich ein recht großes Interesse an der Thematik "Tsic auslesen".
Wenn ich mal fragen dürfte, ist der hier von Dir vorgestellte Programmcode "zacwire.bas" eine eigene Kreation oder ist
das Firmware vom Sensorhersteller ?
Oder hast Du den Assembler-Code vom Hersteller einfach nur in Bascom umgeschrieben ?
Ist die Frage zu indiskret - dann vergiss sie.

Gruß
berger38

WL
02.02.2013, 10:08
..............ist der hier von Dir vorgestellte Programmcode "zacwire.bas" eine eigene Kreation ............

Ja, das habe ich mir so aus dem Hirn geleiert.
Ansonsten wäre auch ein Hinweis auf die Quelle fällig gewesen.

Nicht die eleganteste, aber eine einfache Variante.
Besser (für die Abarbeitung des restlichen Programmes) wäre eine Telegrammauswertung mittels Timer und Interrupts.
Außerdem wäre damit auch das Problem (ist bei meinen TSIC's nicht nachzuvollziehen) der variablen "Bitlänge" erledigt.

Wenn ich mal wieder ein wenig Zeit dafür finde ...............:-b

5Volt-Junkie
02.02.2013, 14:52
@berger38: wenn du unter dem Thread auf "Antworten" klickst, findest Du rechts unter dem Textfeld "Erweitert" Button. Klickt man drauf, stehen einem mehr Funktionen zur Verfügung.
Beim Bearbeiten eines Beitrags gilt das Selbe.;)

berger38
02.02.2013, 21:32
...... o.k., 5Volt-Junkie, wird das nächste mal berücksichtigt.

@ WL

Ja, das habe ich mir so aus dem Hirn geleiert.

Respekt, hat Dein Gehirn gut gemacht.
Das mit der temperaturabhängigen Bitbreite sollte aber dennoch beachtet werden.
Wenn man im Inet etwas querliest, stellt man fest, dass auch andere Tsic-Anwender Probleme mit einer fehlerfreien
Temperaturanzeige haben.
Weiterhin bin ich auf einen Code von "Plasmagerd" hier im Roboternetz gestoßen, den ich mal ausprobiert habe.
(einfach in der Suchmaske Plasmagerd eingeben, sind 2 txt-Dateien, letztere ist die Verbesserte.)
Mit diesem Code, natürlich nur das wesentliche übernommen und die Fehler korrigiert, zusammen mit meiner
Umrechnungs-u. Anzeigeroutine, dann funktioniert das Thermometer bestens und fehlerfrei.
Bei einem ca. 8 stündigen Test (Sensor im Tiefkühlfach) hat die Anzeige nicht einmal verrückt gespielt und das Minus
war auch konstant vorhanden.
Die Anzeige war sehr ruhig, wie man es von einem Thermometer erwartet. Pro Sekunde nur einmal wird das Display
bzw. die LED-Anzeige aktualisiert. Es zappelt also nichts.
Der Code besteht aus vielen While Wend Schleifen. In der Do Loop Schleife ist ein Eintrag, der auch die Dynamik der
Bitbreite berücksichtigt. Außerdem spart man mit diesem Code ca. 500 Byte.
Mal vorsichtig gesagt, ich bin damit zufrieden. Es funktioniert alles wie gewünscht. Projekt erfolgreich abgeschlossen.
Muss nur noch ein Gehäuse drumherum.

Gruß
berger38

WL
03.02.2013, 09:52
................. ich bin damit zufrieden. Es funktioniert alles wie gewünscht.

Na dann ist ja alles supi. :Strahl
Weiterhin viel Erfolg !