Hallo, ich beschäftige mich seit ein paar Wochen mit einem STM32F103 Entwicklerboard und bin auch schon ganz gut voran gekommen (für meine Begriffe). Nun habe ich 2 Potentiometer (5kOhm und 100kOhm) mit Vref + GND verbunden und an ADC1 (Pin A1 und A2) angeschlossen und kann die Werte auslesen. Je nach Stellung wird 4096, 0 oder irgendwas dazwischen angezeigt, je nach Stellung der Poti's. Die eingestellten Werte schwanken dabei um +/- 3, wenn ich nichts ändere. Nun wollte ich einen einfachen 2-wire analogen Temperatursensor auslesen, was aber nicht klappt. Ich weiß nicht, wie ich die 2 Kabel anschließen soll. Zwischen ADC und GND/Vref wird immer 0 oder 4096 angezeigt. Das gleiche passiert, wenn ich zwischen Vref und GND einen Widerstand klemme und dann den Sensor zusätzlich an ADC und GND/Vref. Schließe ich nur ein Potentiometer an, ändert sich der 2. Wert bei Veränderung mit (aber nicht, wenn ich beide Poti's anklemme!). Wenn ich beide Anschlüsse frei lasse, schwankt A1 permanent stark zwischen 1.000 und 2.900, A2 deutlich weniger stark zwischen 2.600 und 2.800. Was mich auch irgendwie wundert. Kann mir jemand erklären, was da nicht stimmt? Geht es überhaupt, einen 2-Draht-Sensor ohne Zusatzschaltung zu lesen? Deutet das Verhalten auf einen Fehler in meinem Programm? Dann würde ich als nächstes natürlich den Code beisteuern. Vielen Dank für Eure Hilfe!
Hans M. schrieb: > Nun wollte ich einen einfachen 2-wire analogen Temperatursensor > auslesen, was aber nicht klappt. Und welcher das ist bleibt ein Geheimnis. Das darf auf keinen Fall verraten werden.
Wenn das was vom Typ NTC oder PTC ist, musst du diesen in einen Spannungteiler integrieren. Nehmen wir mal an, das du da einen 10k NTC hast, dann legst du den z.B. zwischen VRef und ADC und von ADC nach GND einen 10k Widerstand. Dann liegt bei der Nominaltemperatur des NTC (meistens 25°C) genau die halbe VRef am ADC. Steigt die Temperatur, wird die Spannung am ADC höher.
Schau Dir mal das Beispiel in diesem Büchlein in Kapitel 11.4 an. http://stefanfrings.de/mikrocontroller_buch2/index.html Und das hier wäre auch noch von Interesse: http://www.electronicdeveloper.de/MesstechnikNTCLinearR.aspx Für sachdienlichere Hinweise wäre es nötig, zu wissen, welchen konkreten Sensor du meinst. Es gibt nämlich nicht nur einen, nicht 10, nicht hundert, sondern tausende die sehr unterschiedlich funktionieren.
Hans M. schrieb: > Kann mir jemand erklären, was da nicht stimmt? Geht es überhaupt, einen > 2-Draht-Sensor ohne Zusatzschaltung zu lesen? Das kommt darauf an(tm). Einige NTC Typen könnten man vermutlich mit Hilfe des internen Pullups auslesen - bekommt dann aber natürlich keine ernstzunehmende Genauigkeit hin. P100 und P1000 gehen AFAIK nicht ohne Verstärkerschaltung und 4-Leitermessung.
Tausend Dank an alle! Ich habe die Sensoren nicht benannt, da mein Problem nicht die Umwandlung der Werte war, sondern "irgendeine" nachvollziehbare Reaktion zu erzielen. Ich habs jetzt nach Matthias's Hinweis geschaltet und es funktioniert. Vielen Dank für die einfache Erklärung! Ich habe einen PT500 probiert und einen "noName" Temperatursensor aus einem PC-Gehäuse. Der PT500 hat (wer hätt's gedacht ;-) bei Raumtemperatur um 550Ohm, der andere Sensor um 12kOhm. Testweise, und wens interessiert: ich hab die Poti's mal auf ~500 Ohm und ~12kOhm eingestellt und lt. Matthias mit dem Sensoren angeklemmt (nacheinander, nicht 500Ohm und 12kOhm gemeinsam). Damit ist dann jeweils eine deutliche und nachvollziehbare Änderung zu merken, wenn ich die Sensoren anfasse. Beim PT500 kann ich mit meinem Aufbau (Temperaturänderung < 15°) eine Veränderung um etwa 45 "messen", was bei einer Spanne von 0-4095 nicht viel ist (der noName Sensor ist da um Größen "flexibler"). Nach dem Kommentar von Jim Meba werde ich mal interessehalber versuchen, ob ich ohne Zusatzschaltung vernünftige Messungen hinbekomme, wenn ich die Durchschnittswerte von 30 sek. oder so auswerte. Vielen Dank an nochmal! ach so: und vielen Dank für den Link auf das Buch. Das ist ja toll. Ich denke, heute wird's nichts mit zeitig Bettl gehen :-)
:
Bearbeitet durch User
Hans M. schrieb: > Nach dem Kommentar von Jim Meba werde ich mal interessehalber versuchen, > ob ich ohne Zusatzschaltung vernünftige Messungen hinbekomme, wenn ich > die Durchschnittswerte von 30 sek. oder so auswerte. Eher nicht. Die Pullups sind furchtbar ungenau, und alle Schwankungen von VCC schlagen voll auf die Messung durch. Da ist mit Sicherheit die interne Temperaturdiode genauer - und die misst bei aktivem µC die meistens um 5-10°C wärmere Sperschicht-Temperatur.
Jim M. schrieb: > Eher nicht. Die Pullups sind furchtbar ungenau, und alle Schwankungen > von VCC schlagen voll auf die Messung durch. Die Frage ist, welche Density das Gehäuse hat. Wimre haben zumindest die HighDensity beim STM32F103 auch getrennte VRef Pins. Sonst ist es Vcc, die dann natürlich besonders sauber sein sollte - wobei die absolute Höhe den Fehler nicht so beeinflussen sollte.
:
Bearbeitet durch User
Hast an Vref eigentlich auch eine Referenz-Spannungsquelle angeschlossen? Ein Poti hat 3 Anschlüsse. Ich habe dich so verstanden, dass du sie so angeschlossen hast:
1 | Vref o------[====]-------| GND |
2 | ^ |
3 | | |
4 | o |
5 | ADC Eingang |
Nun ist der Vref Pin aber kein Ausgang für irgendwelche Lasten. Er ist dazu gedacht, entweder einen stabilisierenden Kondensator anzuschließen oder mit einer externen Spannungsquelle verbunden zu werden. Mehr dazu: http://www.st.com/content/ccc/resource/technical/document/application_note/group0/3f/4c/a4/82/bd/63/4e/92/CD00211314/files/CD00211314.pdf/jcr:content/translations/en.CD00211314.pdf Seite 23. Richtig wäre es also so:
1 | 10nF |
2 | Vref o---+---||----------| |
3 | | (optional) |
4 | +---||----------| |
5 | 1µV |
6 | |
7 | 3,3V |
8 | VDDa o------[====]-------| GND |
9 | ^ |
10 | | |
11 | o |
12 | ADC Eingang |
Oder so:
1 | Referenzquelle |
2 | z.B. 2V o---+-------------------o Vref |
3 | | |
4 | +------[====]-------| GND |
5 | ^ |
6 | | |
7 | o |
8 | ADC Eingang |
> ich hab die Poti's mal auf ~500 Ohm und ~12kOhm eingestellt > und lt. Matthias mit dem Sensoren angeklemmt Da kann man mit Phantasie alles rein interpretieren. Die Sprache der Elektronik nennt sich "Schaltplan". Bitte zeichne einen. In meinem oben empfohlenen Büchlein habe ich vorgeführt, wie ein vereinfachter aber ausreichender Schaltplan aussehen kann. Das bekommt jeder hin, ohne das Fach gelernt oder studiert zu haben. Ein Foto von einer Bleistiftzeichnung wäre schon 10x besser, als Prosa. So kann es funktionieren:
1 | Fühler Festwiderstand (oder anders herum) |
2 | VDDa o---[===]---+---[===]-------| GND |
3 | | |
4 | | |
5 | o |
6 | ADC Eingang |
Vielen Dank, Stefan, für Deine Erklärungen. Ich dacht Vref ist die "Referanzspannung", die der Controller definiert und damit genau messen kann. Ich habe meine Versuchsschaltung jetzt auf VDDa umgestellt. Wegen der Darstellung hast Du natürlich Recht. Aber die Erklärung von Matthias und meine Ausführungen fand ich als relativ einfach bzw. einfach genug, um keinen großen Spielraum zuzulassen. Ich habe nun die Schaltung so aufgebaut (wie Du zuletzt beschrieben hast ;-):
1 | Poti |
2 | Fühler -[===]-------| GND |
3 | VDDa o---[===]--+-----| |
4 | | |
5 | o |
6 | ADC Eingang |
Das funktioniert auch. Allerdings wundert mich nach wie vor, dass Eingang 2 sich mit Eingang 1 ändert, wenn ich an 2 nichts anschließe. Gibts dafür eine Erklärung? ... und DU hast also das "Büchlein" geschrieben. Coole Sache das! Ich hab den Einstieg noch recht schnell überflogen, aber spätestens mit der Erklärung der Register, wird es für mich interesant. Mein größter Respekt vor Deiner Mühe! Vielen Dank!
> Ich habe nun die Schaltung so aufgebaut Irgendwas stimmt bei deiner Zeichnung nicht. jetzt hängt das Poti ja am linken Ende in der Luft und der ADC Eingang ist nach GND kurzgeschlossen. > Allerdings wundert mich nach wie vor, dass > Eingang 2 sich mit Eingang 1 ändert, wenn ich an 2 nichts anschließe. Offene Eingänge haben zufällige Spannungspegel. Ein gewisses Übersprechen von Kanal zu Kanal ist in diesem Fall normal. Im Referenzhandbuch oder Datenblatt wird deshalb ein gewisser minimaler Eingangswiderstand empfohlen. > spätestens mit der Erklärung der Register, wird es für mich interesant. Das Büchlein ist aber wirklich nur ein Einblick. Der Chip kann viel viel mehr, als dort beschrieben ist.
Stefan U. schrieb: > Irgendwas stimmt bei deiner Zeichnung nicht. jetzt hängt das Poti ja am > linken Ende in der Luft und der ADC Eingang ist nach GND > kurzgeschlossen. Ja, ich hab die Poti (bzw. dort das eine) so eingestellt, wie die Nennwiderstände der Sensoren. Also auf 500Ohm bzw. 12k. Die dienen mir jetzt als Festwiderstand, zum ausprobieren, da das am schnellsten zu machen war. Ich hab die Einstellung spaßeshalber vorher mit der alten Schaltung errechnet, dann am Controller den Wert eingestellt. Und siehe da, beim nachmessen stimmte es sogar. Stefan U. schrieb: > Das Büchlein ist aber wirklich nur ein Einblick. Der Chip kann viel viel > mehr, als dort beschrieben ist. Klar, ich habe ja auch schon "viel mehr" damit gemacht. Aber eher in Richtung programmieren. Da ist ein Diplay mit Touch dran, für das ich mir eben eine Grafikbibliothek baue. Ich habe auch RTC aktiviert mit Backup-Register, Uhr und Kalender (samt grafischer Einstellung) dazu geschrieben und jetzt bleibt die Zeit dank Batterie sogar ohne Strom erhalten. Da bin ich stolz drauf ;-) Als nächstes möchte ich eben an den Eingängen div. Temperaturen auslesen, die Berechnungsvariablen im Backup ablegen, damit ich auch andere Sensoren "errechnen" kann ohne neu zu kompilieren und dann ein paar Ausgänge schalten. Es gibt noch viel zu tun :-) und ich werde sicher noch ein paar mal hier Anfängerfragen stellen.
Stefan U. schrieb: > Offene Eingänge haben zufällige Spannungspegel. Ein gewisses > Übersprechen von Kanal zu Kanal ist in diesem Fall normal. Das ist nicht Übersprechen, sondern die Ladung des Speicherkondensators (Sample & Hold). Dieser wird vom Eingangswahlschalter gespeist (Multiplexer) und während des ADC Messzyklus vom Eingang getrennt und vom ADC abgetastet. Schaltet man dann den Eingang um, liegt es bei der Quelle an diesem Eingang, den S&H Kondensator auf die neue Ladung zu bringen. Ist der Eingang offen, passiert nichts mit der Ladung und sie bleibt auf dem alten Wert. Das ist auch der Grund, warum ADC Quellen niederohmig sein sollten, so wird der Kondensator schnell umgeladen.
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.