Hi,
ich hab von der Schule eine C-Control Pro, also App-Board mit Mega128,
bekommen und will da ein paar Sensoren anschließen.
Hab bis jetzt leider noch nie sowas gemacht. Komme zwar so ganz gut
zurecht, nur beim AD-Wandler hab ich einige Probleme:
Ich hab einen Pin auf ADC-Messung umgeschaltet und jetzt mein
Sensorboard angeschlossen (DS18S20 Temperatursensor mit 4,7k Widerstand
laut Datenblatt). Einen Pin auf GND und einen auf 5V VCC geschaltet und
entsprechend alles angeschlossen. Da der Sensor aber etwas absurde Werte
ausspuckt hab ich die Pins mal mit einem Multimeter ausgemessen.
Der AD-Wandler gibt mir dann auch wenn nichts angeschlossen ist und
keine anderen Pins geschaltet sind Rückgabewerte aus, die bei meist um
die 0,56V (ca. 0x006F) liegen, aber teilweise stark schwanken. Wenn ich
ihn direkt mit GND verbinde wird 0V (0x0000) ausgegeben, beim Verbinden
mit VCC die entsprechenden 5V (0x03FF).
Ist das normal, dass der AD-Wandler da auch Werte empfängt, ohne, dass
etwas angeschlossen ist?
Und wie kann ich da bessere Messwerte erziehlen?
Wäre wirklich dankbar für ein paar Denkanstöße, hänge jetzt schon einige
Zeit vor dem Problem ohne wirklich weiter zu kommen...
Gruß,
Balu
Der DS1820 ist ein 1-wire sensor, d.h. er gibt die Messwerte digital
raus. Den an den ADC anschliessen macht nicht viel Sinn...
Vielleicht nochmal den Rest vom Datenblatt durchlesen ;-)
Gruss,
Thorsten
> Ist das normal, dass der AD-Wandler da auch Werte empfängt, ohne,> dass etwas angeschlossen ist?
Ja.
In deiner Umgebung schwirrt jede Menge elektromagnetischer
Strahlung rum. Der ADC Eingang ist hochohmig genug um die
Aufzufangen.
> Und wie kann ich da bessere Messwerte erziehlen?
Bis jetzt hast du noch nicht gesagt, was an deinen
realen Messwerten schlecht ist. Die mit dem
offenen Eingang zählen nicht. Ein offener Eingang
ist ein Zufallszahlengenerator.
Ansonsten: Da wirst du wohl deine Beschaltung des
Sensors verändern müssen.
Hi,
vielen Dank für die schnellen Rückmeldungen.
@ Thorsten (Gast):
>Der DS1820 ist ein 1-wire sensor, d.h. er gibt die Messwerte digital>raus. Den an den ADC anschliessen macht nicht viel Sinn...>Vielleicht nochmal den Rest vom Datenblatt durchlesen ;-)
Den 1-wire verwende ich nicht. Ich benutze alle drei Pins des Sensors
(VCC, GND, I/O).
Ich dachte, dass die digitalen Ports lediglich 0 und 1 als Rückgabewert
und die durch den ADC zu analogen Ports umgestellten dann den 1024bit
Wert liefern können. Und da der DS1820 laut Datenblatt einen
Hexadezimalwert ausgibt und ich diesen auch über die mittels ADC
definierten Ports auslesen kann dachte ich, dass es so richtig wäre.
An welchen Port sollte ich den Sensor denn sonst anschließen? Mir fällt
jetzt keine Alternative ein, sorry wenn ich auf dem Schlauch stehe...
@ Karl heinz Buchegger (kbuchegg):
>In deiner Umgebung schwirrt jede Menge elektromagnetischer>Strahlung rum. Der ADC Eingang ist hochohmig genug um die>Aufzufangen.
Danke, dass klingt logisch :)
>Bis jetzt hast du noch nicht gesagt, was an deinen>realen Messwerten schlecht ist. Die mit dem>offenen Eingang zählen nicht. Ein offener Eingang>ist ein Zufallszahlengenerator.
Mit offenem Eingang meinst du die Pins, die nicht verbunden sind?
Ja, die können keine Werte liefern die aussagekräftig sind.
In meinem Zimmer sind nach Quecksilbertermometer ca 20°C, der DS1820
gibt allerdings einen Wert von 0053h aus, was 42,5°C entspricht. Der
Wert lässt sich allerdings nicht verändern sondern wird konstant
ausgegeben.
>Ansonsten: Da wirst du wohl deine Beschaltung des>Sensors verändern müssen.
Ich bin jetzt den Anweisungen im Datenblatt nachgegangen und habe die
GND direkt mit dem GND Pin und VCC ist über einen 4,7k Widerstand mit
I/O verbunden.
Oder is der Auslesecode einfach falsch?
>#define SPACE 0x20>>void main(void)>{> Port_DataDirBit(40,1); //F0 Ausgang> Port_WriteBit(40,1); //F0 VCC=5V> Port_DataDirBit(41,1); //F1 Ausgang> Port_WriteBit(41,0); //F1 GND>> word wert;>> ADC_Set(ADC_VREF_VCC,ADC2); //F2 AD-Wandler> while (1)> {> wert=ADC_Read();> Msg_WriteHex(wert);> Msg_WriteChar(SPACE);>> AbsDelay(1000);> }>}
> Den 1-wire verwende ich nicht. Ich benutze alle drei Pins des Sensors
(VCC, GND, I/O).
Hmm, laut Datenblatt hat der Sensor aber nur 1-wire interface. Du meinst
wahrscheinlich den "parasitic power" mode, in dem Sensorspeisung und
Daten über die gleiche Leitung gehen. In jedem Fall gibt der DS1820 die
Temperatur als Digitalwert raus und mit dem ADC kannst Du da nicht viel
anfangen. Du musst das serielle Datenübertragungsprotokoll
implementieren.
Zur Verdeutlichung: Der ADC gibt Dir einen Messwert zurück, der einer
Spannung am Pin entspricht. Der Sensor gibt Dir den Messwert als
zeitliche Folge von Nullen und Einsen raus. Das passt nicht zusammen.
Gruss,
Thorsten
Hi,
hm, ok, dann hab ich den 1-wire mit p.-power verwechselt. Sorry.
Das is jetzt dumm, dann kanns ja nich gehn...
Kann ich den Sensor dann irgendwie anders an die C-Control anschließen?
Wie implementiere ich denn ein serielles Datenübertragungsprotokoll?
Sorry für die blöden Fragen. Das Datenblatt hab ich dann wohl nicht ganz
kapiert beim kaufen und es mir zu leicht vorgestellt.
Würde mich freuen, wenn du bzw ihr mir n wenig auf die Sprünge helfen
könntet.
Args, das ärgert mich jetzt...
Vielen Dank!
Balu
Balu,
Beim Implementieren des 1-wire kann ich Dir nicht helfen, aber für den
Anfang ist es wahrscheinlich einfacher, einen PTC oder NTC Sensor in
einem Spannungsteiler mit dem ADC zu messen (von daher war Dein Ansatz
gar nicht so verkehrt). Guck mal hier für weitere Infos:
http://www.sprut.de/electronic/temeratur/temp.htm
Gruss,
Thorsten
Hi,
(hab mich grade angemeldet, bin Balu, der Threadersteller)
Danke für den Link, werde ich mir durchlesen.
Dachte am Anfang von dem Projekt, dass die Sensoren vll nicht so genau
sein würden und hab mich deshalb für den DS entschieden.
Aber den kann ich ja erstmal in die Ecke legen und vll später wenn ich
mehr Ahnung von hab wieder auspacken ;)
Noch ne zweite Frage dann:
Ist das beim MPXA6115A Drucksensor das gleiche Problem?
Den Sensor müsste ich doch an den ADC anschließen können oder?
Hab jetzt zumindest nichts mit 1-wire gefunden und da stand auch Vout im
Datenblatt.
Auf jeden Fall vielen Dank für deine Hilfe.
Werde mich vll später noch mal mit weiteren Fragen melden :)
Gruß,
Benny
Keine Sorge - der MPXA6115A hat einen Analogausgang :-) Noch dazu ist
der Ausgangsspannungsbereich gross genug, um ihn direkt (ohne
Vorverstärker) an einen ADC anzuschliessen (je nach Anwendung bzw.
geforderter Auflösung muss aber doch noch ein eine Beschaltung davor).
Gruss,
Thorsten