Hallo, Spricht etwas dagegen, mittels PMOS (Wühlbox) einen primitiven A/D Signal Multiplexer zu bauen, da der MCU (attiny861) zwar noch ausreichend gpio, aber keine freien ADC Eingänge mehr hat? Zwischen den Eingangspins und Gnd soll praktisch nur zwischen 6 verschiedenen Widerstandswerten grob unterschieden werden können (open, close, 1500, 680, 220, 100 Ohm) - der 1k ist da als Bias für den PMOS, damit ein pull-low auf dem GPIO diesen niederohmig schalten kann - auch wenn das die Spannungslevel näher zueinander rückt (8bit ADC - kann also gut auf 4-5 LSB verzichten, nur um die Größenordnung richtig zu haben). Oder hat jemand eine andere idee, wie man auf "überzählichen" GPIO einen eizelnen verbleibenden ADC port aufmuliplexen kann? Danke, Richard (Und nein, ich mag keinen größeren MCU mit mehr ADC ports kaufen für das Projekt, soll aus der bastelkiste aufgebaut werden)
Anstelle der MOSFET würde ich ein IC benutzen. Schau dir dieses Datenblatt an: https://www.ti.com/lit/ds/symlink/cd4053b.pdf
Richard S. schrieb: > Spricht etwas dagegen, Überlege mal was passiert. Dein "aktiver" Kanal hat 5V d.h. der Ausgang hat auch 5V. Alle "inaktiven" Kanäle haben 0V. -> über die Body-Diode der inaktiven Kanäle wird das Signal am Ausgang heruntergeteilt. Richard S. schrieb: > Oder hat jemand eine andere idee, wie man auf "überzählichen" GPIO einen > eizelnen verbleibenden ADC port aufmuliplexen kann? Früher hätte man einen CD4051B genommen. Gruß Anja
Christian schrieb: > Sind warscheinlich grade nicht vorhanden. Kein problem mit Draht, Nackel, Spiralfeder, Unterlage: https://www.kreativekiste.de/magnet-realis-kupferlackdraht-bauanleitung
Richard S. schrieb: > da der MCU (attiny861) zwar noch > ausreichend gpio, aber keine freien ADC Eingänge mehr hat? Der ATtiny861 hat doch 10 ADC-Eingänge, dann bleiben nur noch 5 IOs übrig. Die 15V Schutzdioden kannst Du weglassen, bei 15V ist eh alles kaputt.
Peter D. schrieb: > Die 15V Schutzdioden kannst Du weglassen, bei 15V ist eh alles kaputt. Zuallererst die Dioden, wenn nicht davor noch etwas Strombegrenzendes ist.
Wenn die Widerstaende nicht unbedingt am GND haengen muessen kann man so eine schaltung benutzen. ADC input am mitte. Um Rref1vsR1 zu messen setzt mann GP0 auf PULLDOWN und die andere auf High-Impedance. Gleich fuer die andere GPx. Als letzte messt man Rref1vsRref2 Dann kann man R1/2/3/... berechnen. zB Rref1=1k; Rref2=1k. Davon aus gehende das die PullDown impedanz fuer alle GPx gleich ist kann man so eine gute messung machen. Nur weisz ich nicht ob dein prozessor die GPx auf Pulldown und High-Impedance schalten kann Ich benutze die schaltung ein bisschen anders (differential) wenn ich mich nicht irre musz dies so auch funktionieren Grusze aus die Niederlaende Patrick
Peter D. schrieb: > Richard S. schrieb: >> da der MCU (attiny861) zwar noch >> ausreichend gpio, aber keine freien ADC Eingänge mehr hat? > > Der ATtiny861 hat doch 10 ADC-Eingänge, dann bleiben nur noch 5 IOs > übrig. > > Die 15V Schutzdioden kannst Du weglassen, bei 15V ist eh alles kaputt. Er hat sogar 11 ADC Eingänge (ADC0 .. ADC10); einer ist aber wegen OC1D (hardware PWM mit Software OCR reload) nicht nutzbar; die anderen 9 A/D Kanäle müssen relativ Zeitkritisch (~10 usec) in Abstimmung mit dem jeweiligen PWM Ausgängen gemessen werden. Für AUX Messungen bleibt daher leider nur 1 AD Eingang übrig... Die 15V Schutzdioden sollten doch mit den Vorwiderständen zumindest den Strom in den MCU soweit begrenzen, dass dort nicht sofort alles kaputt ist... Sind eher elektrostatische Ladungen (hohe Spannung, geringe Kapazität, hohe Impedanz) die da abgebaut werden müssen, nicht harte 15V aus einem Netzteil o.dgl...
Anja schrieb: > Richard S. schrieb: >> Spricht etwas dagegen, > > Überlege mal was passiert. > Dein "aktiver" Kanal hat 5V d.h. der Ausgang hat auch 5V. > Alle "inaktiven" Kanäle haben 0V. > -> über die Body-Diode der inaktiven Kanäle wird das Signal am Ausgang > heruntergeteilt. Danke! Ich wusste, irgendwas habe ich sicher übersehen... > Früher hätte man einen CD4051B genommen. Leider nicht in der Wühlkiste ;) Aber vielleicht doch besser ein RC nur mit den GPIOs aufbauen (interner Pull-Up, vs. active Ground) und die Zeit messen, bis der Digitalpin auf high geht... Fürchte nur, dass das mit den PWM Interrupts kollidieren könnte... Danke jedenfalls. Vielleicht die Widerstände so bemessen dass man sich nur in einem Interval von 0,5V bewegt und die Body Dioden keinen nennenswerten Strom leiten?
Patrick C. schrieb: > Wenn die Widerstaende nicht unbedingt am GND haengen muessen kann man so > eine schaltung benutzen. ADC input am mitte. > Um Rref1vsR1 zu messen setzt mann GP0 auf PULLDOWN und die andere auf > High-Impedance. Gleich fuer die andere GPx. Gute Idee... Leider ist der zu messende Widerstand immer zw. Gnd und dem gezeigten Eingang, also nicht floating... ich denke, mit Bias-Widerständen (damit Vth groß genug werden kann) und NMOS sieht sowas besser aus:
Richard S. schrieb: > Die 15V Schutzdioden sollten doch mit den Vorwiderständen zumindest den > Strom in den MCU soweit begrenzen, dass dort nicht sofort alles kaputt > ist Das sind 10mA bei 5V Versorgung. Ich hoffe du hast da auch genug Verbraucher dran hängen die diese 10mA aufnehmen, sonst werden aus den VCC=5V ganz schnell wesentlich mehr. Suche mal im Datenblatt die Angabe, wie viel Strom die internen ESD Dioden des Mikrocontrollers vertragen. Wenn da nichts stehts, dann sollte man sie besser gar nicht belasten oder die Konsequenzen tragen können.
Was genau möchtest Du denn eigentlich messen? Die Widerstände R23,24,26 oder R25,27,28? Und wofür sind die da, also was ist der eigentliche Zweck, wenn es nicht die Erkennung ist? Also was misst Du mit GND enabled und was ohne? Und welche Spannung kann "nicht Vcc" während einer Messung maximal haben? Vermutlich kannst Du mit einem Widerstandsnetzwerk und ein wenig Rechnerei das ganze mit einem ADC hinbekommen, dafür fehlt aber die konkrete Aufgabenstellung.
Anja schrieb: > Überlege mal was passiert. > Dein "aktiver" Kanal hat 5V d.h. der Ausgang hat auch 5V. > Alle "inaktiven" Kanäle haben 0V. > -> über die Body-Diode der inaktiven Kanäle wird das Signal am Ausgang > heruntergeteilt. Dagegen könnte man statt dem einen PMOS dann 2 PMOS antiseriell verbauen. Der 4066er wäre natürlich die bessere Lösung. Gibt es auch als 1G im Little Logic Katalog, z.B. 74LVC1G66.
A. S. schrieb: > Was genau möchtest Du denn eigentlich messen? Die Widerstände R23,24,26 > oder R25,27,28? Und wofür sind die da, also was ist der eigentliche > Zweck, wenn es nicht die Erkennung ist? > Also was misst Du mit GND enabled und was ohne? Und welche Spannung kann > "nicht Vcc" während einer Messung maximal haben? > > Vermutlich kannst Du mit einem Widerstandsnetzwerk und ein wenig > Rechnerei das ganze mit einem ADC hinbekommen, dafür fehlt aber die > konkrete Aufgabenstellung. +5V (links oben) wird erst nach der Initialisierung des MCU aktiviert; Bevor diese Versorgung anliegt, wäre es wünschenswert, zwischen open, short oder einem Widerstand zw. 100..1500 Ohm unterscheiden zu können, der zwischen Gnd und PPdnX angelegt wird. (Siehe 2. Anhang von mir aus der Simulation). GND - Rx ist somit immer gegeben, Rx (zw. PPdnX und Gnd) kann somit nur einseitig irgendwie verbunden werden...
Richard S. schrieb: > Bevor diese Versorgung anliegt, wäre es wünschenswert, zwischen open, > short oder einem Widerstand zw. 100..1500 Ohm unterscheiden zu können, > der zwischen Gnd und PPdnX angelegt wird. Mal ganz dumm gefragt: Es handelt sich also nur um EINEN Widerstand, dessen Wert grob bestimmt werden soll?
Richard S. schrieb: > 5V (links oben) wird erst nach der Initialisierung des MCU aktiviert; > Bevor diese Versorgung anliegt, wäre es wünschenswert, zwischen open, > short oder einem Widerstand zw. 100..1500 Ohm unterscheiden zu können, > der zwischen Gnd und PPdnX angelegt wird. > > (Siehe 2. Anhang von mir aus der Simulation). > > GND - Rx ist somit immer gegeben, Rx (zw. PPdnX und Gnd) kann somit nur > einseitig irgendwie verbunden werden... Also ist der zu messende Widerstand gar nicht eingezeichnet und parallel zur 15V-Diode. OK. das war mir nicht klar. Darf dieser Widerstand z.B. mit 15k belastet werden? Dann führe die Verbindungen Rx/PPdnX mit je 10k oder so zusammen auf den ADC (alle Mosfets etc. weg). Um den ersten zu messen, stellst Du die anderen beiden auf 1. Dann hast Du einen Spannungsteiler von 5k und Rx1, den Du messen kannst. Falls das nicht geht: 4.ter GPIO der einen Pullup am ADC steuert und 3 Dioden in Richtung Verbindung Rx/PPdnX. Wenn der GPIO high ist und 2 der 3 PPdnX high sind, misst Du den übrig gebliebenen. Die Diodenstrecke kannst Du einfach abziehen, so genau braucht es ja nicht zu sein.
Nun, jeweils 1 Widerstand pro PPdnX Eingang. Der Eingang kann offen sein, oder einen Widerstand von ~1500, 680, 220, 100, 50 Ohm annehmen, oder kurz geschlossen sein (Fehlerzustand). A. S. schrieb: > Darf dieser Widerstand z.B. mit 15k belastet werden? Jeder der Rx kann mit mindestens 1/4W belastet werden (nominell 1/2W). Bei 5V sollte das also kein Thema sein. > Dann führe die Verbindungen Rx/PPdnX mit je 10k oder so zusammen > auf den ADC (alle Mosfets etc. weg). > Um den ersten zu messen, stellst Du die anderen beiden auf 1. Dann hast > Du einen Spannungsteiler von 5k und Rx1, den Du messen kannst. > > Falls das nicht geht: 4.ter GPIO der einen Pullup am ADC steuert und 3 > Dioden in Richtung Verbindung Rx/PPdnX. Wenn der GPIO high ist und 2 der > 3 PPdnX high sind, misst Du den übrig gebliebenen. Die Diodenstrecke > kannst Du einfach abziehen, so genau braucht es ja nicht zu sein. Ich kann mir nicht aussuchen, ob, und welche Kombination von PPdnX offen oder einen Widerstand (oder eine direkte Verbindung auf Gnd) haben... Und nur 1 ADC Eingang frei (aber noch 3 GPIOs verfügbar). Nachdem PPdnX auch gegen Gnd Kurzgeschlossen sein kann (oder ESD hereinkommen kann), wäre wohl die direkte Verbindung ohne Widerstand mit einem GPIO keine so gute Idee... Aber die Idee mit 1k Widerstand nach dem GPIO und PPdnX, und dann von allen PPdnX mit einer Diode auf ADC zu gehen ist sehr gut.
Richard S. schrieb: > Nun, jeweils 1 Widerstand pro PPdnX Eingang. Der Eingang kann offen > sein, oder einen Widerstand von ~1500, 680, 220, 100, 50 Ohm annehmen, > oder kurz geschlossen sein (Fehlerzustand). Ah, jetzt wird es klar. Es wäre schön gewesen, wenn Du Rx schematisch eingezeichnet hättest, ich glaube, es hat hier keiner wirklich verstanden. Oder wenn Du geschrieben hättest, wofür das gut ist, dann hätte man sich das erschließen können. Es ist mir z.B. noch immer nicht klar, wofür die 3 Stränge jetzt gut sind, also Z-Diode, Diode, 240R und 1k. Also ob die vorgeben sind, also einen anderen Zweck erfüllen, oder ob Du sie für die Messung irgendwie brauchst. Für die wären sie überflüssig. Jedenfalls freue ich mich, dass Du nun eine Lösung hast. Und wünsche Dir ein frohes Fest! Wenn noch Probleme sind, am besten einen Schaltplan von der neuen Lösung und dabei schreiben, was für die Messung ist und was gegeben.
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.