Forum: Analoge Elektronik und Schaltungstechnik Anfängerfrage: Temperatursensor steuert Gerät über LPT port


von Rocco L. (kaufparkangucker)


Lesenswert?

Hallo,

ich möchte für unser Labor einen beheizbaren Schüttler bauen.
Ich habe mir das so vorgestellt das eine Lampe (100Watt) oder eine 
Heizfolie - oder etwas vergleichbares, über ein Relais ein und aus 
geschaltet wird.
Die Temperatur soll über einen Sensor bestimmt werden. so das die 
Lampe/Heizfolie mit einer gewissen (einstellbaren?) Hysterese ein und 
aus geschaltet wird. Das Auslesen des Temperatursensors und das schalten 
des relais würde ich gern über den LPT Port erledigen weil ich damit 
schon ein paar Erfahrungen habe (LED Lauflicht).

Und jetzt kommt mein eigentliches Problem. Ich benötige dazu ein Windows 
Programm indem man sagen wir mal 50 Temperaturen eingeben kann die das 
Gerät nacheinander erzeugt und über eine bestimmte Zeit, die ebenfals 
einstellbar ist, hält.

Ich hatte vor in dem Bereich 20...45°C hin und her zu wechseln. Die 
Zeiten in denen die jeweilige Temperatur gehalten wird genügen 
Minutengenau.

Ach so, Programmieren tue ich in C bzw C++ - aber auch alles selber 
beigebracht und damit auch nur gevierteltes Halbwissen.

Vom Prinzip will ich also einen Sensor auslesen und damit einen Aktor 
ansteuern.


Es wäre wirklich toll wenn mir jemand helfen könnte womit und wie ich 
anfangen soll.

fG Rocco

von Wolfgang-G (Gast)


Lesenswert?

Was steht im Vordergrund Deines Projekts?
- beheizbarer  Schüttler  (hierfür reicht ein Bimetallschalter)
- Nutzung (Spielchen)  der  LPT  als Einstieg in die digitale Welt
- wichtig ist mir die Anwendung mit einem PC
MfG

von Rocco (Gast)


Lesenswert?

Hallo,

Wichtig ist das man sich die Temperaturen aussuchen kann und wie lange 
diese Temperaturen gehalten werden sollen.
Eine Einfache Bedienung ist mir ebenfals wichtig.

fG Rocco

von Rocco (Gast)


Lesenswert?

Hallo,

ich habe mal etwas geforscht und habe bereits den ersten Teil gefunden 
den ich benötige.

Also die Schaltung zum messen der Temperaturen:

KTY10 -> Operationsverstärker (Bsp LM741) -> A/D Wandler (Bsp ADC 0804) 
-> Transistor (BC 547) -> Drucker Port am PC


Nun meine frage Dazu, der ADC 0804 hat die Ausgänge D1...D8 die als 
eingänge zum Druckeranschluss dienen. Also liegen, so wie ich das 
verstehe da, je nach Temperatur, unterschieliche Kombinationen aus 1 und 
0 an. Diese kombinationen aus 1 un 0 symbolisieren die binären Zahlen 
von 0 bis 245.

Also muss ich in meinem geschriebenen Programm diese binären Zahlen zu 
dezimalen konvertieren. Jetzt fehlt noch eine for Schleife die wiederum 
einen Out Pin am Druckerport ein und aus schaltet. An dem out hängt dan 
das Relais mit dem Heizer.

Wie seht ihr das?
Wichtig ist das alles so Anfängerfreundlich wie möglich bleibt.

von Wolfgang-G (Gast)


Lesenswert?

>Wichtig ist das alles so Anfängerfreundlich wie möglich bleibt.
Jeder war mal Anfänger.
Dein aufgezeigter Weg ist schon mal nicht verkehrt. Aber Du wirst für 
dein Projekt Ausdauer brauchen.
>Also muss ich in meinem geschriebenen Programm diese binären Zahlen zu
>dezimalen konvertieren.
Nicht unbedingt. Der Rechner arbeitet letztendlich mit Binärzahlen.
Fang mit Teilaufgaben an. Vielleicht so:
- Zunächst solltest Du dir einen leicht beschaffbaren A/D Wandler
  aussuchen.
- an den A/D-Wandlereingang eine definierte Spannung anlegen und den
  Digitalwert in den PC einlesen.(LPT beherrscht Du ja schon)
- weitere Stufen (KTY10 -> Operationsverstärker) entwickeln und 
verbinden
- wenn Temperaturwerte im Rechner stehen --> Programm zur Verarbeitung 
entwickeln

MfG

von Rocco (Gast)


Lesenswert?

Hallo Wolfgang,

danke für Deine Tips.
dann werde ich mal gucken wo ich einen passenden AD Wandler her bekomme.
Con... ist direkt vor der Tür, da werde ich es dort mal versuchen.

fG  Rocco

von avr (Gast)


Lesenswert?

Hallo Rocco,

du kannst es dir auch leichter machen:

http://www.conrad.de/goto.php?artikel=155031

I²C geht auch über den LPT. Der Clock kommt nur vom
Master (PC) also ein Ausgang.
SDA hat einen PullUp, geht auf einen LPT-Eingang und über eine
Diode auf einen LPT-Ausgang.
Ist LPT-Ausgang auf high kann der Slave SDA auf low ziehen
und so senden; will der Master senden kann er mit Ausgang low
über die Diode SDA auf low ziehen.

I²C-Timing ist unkritisch da synchrone Übertragung (darf nur
nicht zu schnell sein 100/400 KHz).

Mit einem exakten Thermometer kann man Abweichungen ausmessen
und im Programm einrechnen.

avr

PS: wenn du dis 50° geheizt hast und zurück auf 25° willst
must du lange warten bei Zimmertemperatur ;)

von Rocco (Gast)


Lesenswert?

Hallo avr,

ich hbae mir gerade mal das Datenblatt angesehen.
Mal sehen ob ich das einigermasen richtig kapiere:

Also gelesen und geschrieben wird jeweils über den SDA Pin, deswegen 
diese Schaltung mit der Diode.

Du schreibst außerdem:
"Ist LPT-Ausgang auf high kann der Slave SDA auf low ziehen
und so senden; will der Master senden kann er mit Ausgang low
über die Diode SDA auf low ziehen."

Welcher Master welcher Slave - leider kapier ich das nicht. Bin wirklich 
Anfänger :-(

Außerdem verstehe ich nicht wie man genau einen Messvorgang beginnt und 
wan er zuende ist.
Und wofür sind nochmal die Pins A0, A1, A2 genau gut?

Ein weiteres Problem stellt sich mir beim Programmieren da. So weit ich 
es vertehe kommt das 12 Bit Signal nacheinander (seriell) aus einem Pin 
heraus. Bei meinem bisherigen AD Wandler käme das Signal gleichzeitig 
aus 8 Beinchen (parallel). Das könnte ich mit meinen 
Programmierfähigkeiten leicht in einer Schleife abfragen - leider weis 
ich nicht wie ich das mit einem seriellen Signal machen soll?!

fG Rocco

von avr (Gast)


Lesenswert?

Hier werden die Grundlagen für I²C recht gut erklärt:

http://www.rn-wissen.de/index.php/I2C

Damit sollte das meiste beantwortet sein.

avr

von Rocco (Gast)


Lesenswert?

Also mal sehen, ich gebe über den LPT einen Takt an den SCL Pin des 
Sensors und prüfe zum gleichen Zeitpunkt was am SDA anliegt. Ok damit 
kann ich unterscheiden was eine eins und was eine null ist.
SCL darf dabei eintweder 100 oder 400kHz betragen - Zwischenwerte sind 
verboten oder? Wenn die Zwischenwerte verboten sind weis ich leider 
nicht wie ich ein genaues Signal über den LPT ausgeben soll, schließlich 
kann ein PC ja keine Echtzeitsignale augeben - oder verstehe ich da was 
falsch?

Über die Pins A0...A2 kann man dem Sensor eine Adresse zuweisen. Leider 
habe ich nicht genau kapiert wie. In dem Bsp von Deinem Link hängt A2 an 
Vcc und A1 und A0 an GND. Wie ermittelt man daraus die Adresse?

Wenn ich dem sensor sagen möchte das ich jetzt eine Messung machen 
möchte muss ich SDA und SDC auf high legen und wärend SDC auf high ist 
SDA auf low schalten. Jetzt sollte der Sensor ein 12 Bit Signal an 
seinem SDA Pin abgeben. davon wird jedes Bit gleizeitig mit einem SDC 
Signal ausgegeben.

Hört der dann von alleine auf, wenn das 12 Bit Signal zuende ist oder 
muss ich unbedingt ein Stopsignal schicken? So wie ich es verstanden 
habe muss ich kein Stop senden sodern ich mache einfach nach ca 1 
Sekunde wieder das SDA SDC auf high und dabei SDC auf low Prozedere - 
richtig?

Auch wenn ich bis zum Ende lese kapiere ich den Teil mit der 
Adressierung nicht - obohl ich das Prinzip mehrere I²C Sensoren 
anzuschließen wirklich großartig finde. Da kann ich ja ganze 
Bioreaktoren mit steuern und das an einem PC Port.


Es ist bestimmt etwas unverschämt - so soll es aber nicht klingen aber 
kann mir jemand einen einfachen Anschlussplan für so einen Sensor geben?

vielen Dank

fG Rocco

von avr (Gast)


Lesenswert?

Ähnliche Bausteine sind LM75 und DS75.
Für den DS75 gibt es hier was fertiges:

http://hobbyelektronik.org/VB/DS75/index.htm

Trennung SDA nur mit Widerstand.

LM75 ist hier im µC hundertfach beschrieben (Suchfunktion).

Es gibt auch einfache Varianten an der RS232 (kein USB-Wandler!).

avr

von Rocco (Gast)


Lesenswert?

Der Link mit dem DS75 ist natürlich perfekt.
Das Pogie in VB sollte auch kein Problem darstellen.

Der Tip mit dem LM75 war natürlich genau so perfekt.


danke für Deine Hilfe.

nun kann ich erst mal ein bischen studieren. Wenn ich dann nicht weiter 
komme melde ich mich wieder.

fG Rocco

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
Noch kein Account? Hier anmelden.