Guten Tag ! Habe einen Temperatursensor mit dig. Ausgang an den LPT angeschlossen und würde gerne wissen wie ich die Temperatur auslesen kann. Der Ausgang ist ein: "Single-wire 11-bit digital serial signal output". Ich arbeite mit VB 2005 und verwende die inpout32.dll. Befehle: Inp und Out. Was ich nicht recht verstehe ist wie ich diese Daten auslesen kann und wie das überhaupt funktioniert. Das ich den Inp Befehle brauche ist mir schon klar, aber der Rest eben nicht. In dem µC & Elektronik Bereich hat man mir diesen Code in C gegeben mit dem ich nichts Anfangen kann. BTW: Der Output vom Sensor hängt an Ausgang 1, also PIN3 des LPT's. a = inp(BASE); if(a & (1 << BIT#)) {...} else {...} Nur als Ergebnis kommt doch eine Zahl zwischen 0 - 255 oder nicht ? Die Formel im Datenblatt ist folgende: Temperature = (Digital Signal / 2047 * 70 - 10)°C Dazu ist eine kleine Tabelle: Temp(°C) Temp(°F) Digital Value ------------------------------------------------------------- -10 14 0x000 0 32 0x124 25 77 0x3FF 60 140 0x7FF Zum Beispiel ist ja 25 °C = Hex 3FF bzw. in dez. 1023, aber wie soll man in einem Zahelbereich von 0-255 die Zahl 1023 anzeigen lassen ? Ich versteh dieses ganze Prinzip noch nicht und bitte um Erklärung. Ich war schon in einem anderen Forum, aber dort sind nicht so viele User im Hardware Bereich aktiv. Bedanke mich für jeden Hinweis. x86
Deine Annahmen über den Zahlenbereich sind falsch, der ist nicht nur 8 Bit groß, sondern eben 11. Also nicht 0..255 (00..FF), sondern 0..2048 (000..7FF).
Wie meinst du das ? Der LPT hat auch 11 Bit ? Wie das denn ? Ich hatte immer 8 Bit. Wie muss ich das denn auslesen ? Ich steh da echt aufm schlauch...
> Der LPT hat auch 11 Bit ? Hm? > ist ein: "Single-wire 11-bit digital serial signal output". > Nur als Ergebnis kommt doch eine Zahl zwischen 0 - 255 oder nicht ? Nein. Bei 11 Bit kommt ein Wert im Bereich 0 bis 2048 raus.
> Wie muss ich das denn auslesen ? Ich steh da echt aufm schlauch... ja schon (eigentlich gewaltig) > Single-wire 11-bit digital serial signal output Single wire = 1 Datenleitung = 1 Bit 11-bit = Sensorwert serial signal output != parallel Du kannst mit dem Parallelport 8 Datenleitungen gleichzeitig ein/auslesen (darum heißt er Parallelport) Wenn du jetzt einen Sensor an nur eine Datenleitung anschließt, interessiert dich nur was an dieser anliegt. dies kann entweder 1 oder 0 sein. Im Prinzip* musst deshalb den Parallelport 11 mal hintereinander auslesen, so dass du auf deinen Sensorwert kommst. ( *: Ganz so einfach ist es natürlich nicht, da die Kommunikation nach den 1-wire specs erfolgt. Hierzu gibts für den DS1820 ja ne Menge Beispielcode im Netz.
Hallo Roland ! Vielen vielen dank ! Das hat mir schon sehr viel geholfen. Das heißt ich muss den Wert von PIN3 auslesen und diesen speichern und diesen den anderen Werten dazu addieren oder wie ? Also ebenhalt 11 mal. Könnt ihr mir da Source Code mäßig etwas weiter helfen ? Danke
Sorry unsere Glaskugel ist defekt... verrate uns doch mal - welchen Sensor du hast - wie du ihn angeschlossen hast Dann werden sich glecih 2 Fragen stellen: - wie ist das genaue Datenformat (steht im Datenblatt vom Sensor) - ist die Schaltung dafür überhaupt geeignet für einen DS1820 macht man es nämlich so: http://lena.franken.de/hardware/temperaturmessung.html
@ Roland, deine Glaskugel werde ich gleich kaputt schlagen und die Scherben aufessen :P ^^ Read: Beitrag "Gleiches Problem: Temperatursensor"
>Das heißt ich muss den Wert von PIN3 auslesen und diesen speichern und >diesen den anderen Werten dazu addieren oder wie ? Du kannst den Wert von Pin 3 nicht auslesen sondern nur den Wert des gesamten Ports. In diesem Gesamtwert mußt du dann überprüfen, ob Pin 3 gesetzt ist: if((Gesamtwert & (1<<3))==(1<<3)) {...} / Bit ist gesetzt
Danke Jupp. Aber ich habe jetzt eine andere Methode gefunden, die ist etwas komplizierter, aber sie ist schonmal ein guter Anfang.
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.