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
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.