ich möchte mit dem ATtiny85 am Analogeingang die an einem Widerstandsarray anliegende Spannung messen (10 bit). Das Projekt soll batteriebetrieben sein (AAA-Akkus mit je 1,2 V).
Wäre es sinnvoll, den µC direkt mit 2 oder 3 Akkus (2,4 bzw. 3,6 V) zu betreiben? Oder besser 6 Akkus (7,2 V) und einen Spannungsregler (auf 3,3 oder 5 V) verwenden?
Das Auflösungsvermögen bleibt ja mit 10 bit dasselbe, es werden nur die meßbaren Spannungsschritte und ihre Obergrenze geringer bei Direktbetrieb.
Handele ich mir mit der geringeren Spannung sonst noch irgendwelche Besonderheiten gegenüber dem Testaufbau mit einem Arduino nano ein?
ich möchte mit dem ATtiny85 am Analogeingang die an einem
Widerstandsarray anliegende Spannung messen (10 bit).
Wie hoch ist die?
Das Projekt soll
batteriebetrieben sein (AAA-Akkus mit je 1,2 V).
Naja.
Wäre es sinnvoll, den µC direkt mit 2 oder 3 Akkus (2,4 bzw. 3,6 V) zu
betreiben? Oder besser 6 Akkus (7,2 V) und einen Spannungsregler (auf
3,3 oder 5 V) verwenden?
Kommt drauf an. Beides geht, wenn man weiß was man tut.
Das Auflösungsvermögen bleibt ja mit 10 bit dasselbe, es werden nur die
meßbaren Spannungsschritte und ihre Obergrenze geringer bei
Direktbetrieb.
Willst du damit andeuten, daß du die Versorgungsspannung als Referenzspannung nutzen willst? Dann muss die per Spannungsregler konstant gehalten werden.
Handele ich mir mit der geringeren Spannung sonst noch irgendwelche
Besonderheiten gegenüber dem Testaufbau mit einem Arduino nano ein?
Das Signal/Rausch Verhältnis wird etwas kleiner, aber realistisch wirst du die Versorgungsspannung nicht mal halbieren können/wollen, d.g. du verliest nur 6dB. Für ein Hobbyprojekt zu verschmerzen.
Was kann man also tun?
1.) 4x AAA in Reihe, dahinter ein sehr sparsamer Linerregler.
2.) Nur eine Zelle und einen passenden Schaltregler, welcher die Spannung auf 3,3V bringt. Ich hab mal den MCP1640 benutzt, den gibt es auch bei Reichelt.
3.) 2-3 Zellen ohne Spannungsregler verwenden und die interne 1,1V Referenz verwenden. Die ist zwar recht ungenau, aber stabil. Mit einer Kalibierung per Software wird sie ausreichend genau.
Dann muss die per Spannungsregler konstant gehalten werden.
Jein, für eine ratiometrische Messung müsste sie nur ausreichend lange stabil sein, z.B. durch ausreichende Entkopplung.
Was soll also wirklich gemessen werden, eine absolute Spannung oder ein relativer Spannungsabfall bezogen auf die Versorgung?
Welcher Spannungsbereich?
Schaltplan?
Die zu messende Spannung beträgt zwischen 0 V und 1/2 VCC.
Ich messe eine relative Spannung an einem Spannungsteiler.
Ja, ich hätte Die VCC als V_REF verwenden wollen. Die sollte doch relativ leicht stetig abfallen, aber damit einhergehend ja auch die zu messende Spannung.
Ich tendiere aktuell zu Lösung #3, da sie so simpel wirkt. Befasse mich aber auch mal mit dem MCP1640.
Die zu messende Spannung beträgt zwischen 0 V und 1/2 VCC.
Ich messe eine relative Spannung an einem Spannungsteiler.
Dann braucht es keinen Spannungsregler und auch keine stabile Referenz. Einfach den Spannungsteiler an VCC klemmen, VCC als Referenz für den ADC einstellen, fertig. Ist immer genau. Das Wunder der ratiometrischen Messung.
Das Projekt soll
batteriebetrieben sein (AAA-Akkus mit je 1,2 V).
Erzähle etwas über Dein Projekt und dessen benötigte Versorgungsspannung. Davon würde ich es abhängig machen, welche Spannungsquelle gewählt wird.
3 x AAA-Akkus 'hasse' ich, da einfache Ladegeräte meist nur zwei oder vier Zellen laden können. Je nach Gesamtstromaufnahme und Umgebungstemperatur würde ich zu LiIon tendieren.
Ich habe 6 Schalter, die jeweils einen Widerstand (100/200/400/800/1600/3200 Ohm) kurzschließen, um die Werte 0-63 darzustellen. Es ist ein Vorwiderstand von 6300 Ohm verbaut, so daß bei komplett geöffneten Schaltern V_analogPin = 1/2 VCC anliegt.
Zwischen VCC und GND liegen also 6300-12600 Ohm. Bei 3,6 V fließen also maximal 0,57 mA durchs R-Array.
Dazu kommen 3 Taster mit Pulldown-Rs von je 10 kOhm, die nur alle paar Minuten betätigt werden --> vernachlässigbare Ströme.
Der einzige Aktor ist ein BC547 o.ä., der mit ca. 1 kOhm an der Basis angesteuert wird. Sein Kollektor ist an einem anderen Verbraucher angeschlossen.
Ich wollte AAA-Eneloops verwenden, die ich in einer 6er-Halterung transportiere. Habe bereits ein geschlossenes AAA-Gehäuse mit An-/Ausschalter für 3 Zellen.
Pro Session liefe die Anlage ca. 5 Stunden und das für 2-3 Wochen, dann wäre wieder ein Ladegerät verfügbar und längere Zeit kein Einsatz geplant, Aufladen also kein Thema.
Da ich nur 6 bit messen will, komme ich mit dem einen, verlorenen bit gut aus.
Ich habe 6 Schalter, die jeweils einen Widerstand
(100/200/400/800/1600/3200 Ohm) kurzschließen, um die Werte 0-63
darzustellen. Es ist ein Vorwiderstand von 6300 Ohm verbaut, so daß bei
komplett geöffneten Schaltern V_analogPin = 1/2 VCC anliegt.
Zwischen VCC und GND liegen also 6300-12600 Ohm. Bei 3,6 V fließen also
maximal 0,57 mA durchs R-Array.
Ja. Aber das Ding kann man per IO-Pin abschalten, dann braucht es nur Strom, wenn man mißt, und das wird vermutlich eher selten sein. Und selbst wenn, ist es nur für ein paar Dutzend Mikrosekunden (ADC auslesen). Das alle paar hundert Millisekunden kostet im Mittel nur wenige Mikroampere! Außerdem kann man das locker um Faktor 10 hochohmiger machen. Einfach 10nF an den ADC-Eingang, fertig.
Dazu kommen 3 Taster mit Pulldown-Rs von je 10 kOhm,
Kann man machen, die internen Pull-Ups reichen aber auch.
Der einzige Aktor ist ein BC547 o.ä., der mit ca. 1 kOhm an der Basis
angesteuert wird.
und das für 2-3 Wochen, dann
wäre wieder ein Ladegerät verfügbar und längere Zeit kein Einsatz
geplant, Aufladen also kein Thema.
5h * 21 Tage = 105h
geschätzt 5mA = 500mAh. Das macht jeder AAA Akku mit.
Da ich nur 6 bit messen will, komme ich mit dem einen, verlorenen bit
gut aus.
Naja, 6 Bit per ADC ist schon grenzwertig, da bleibt nicht viel Luft für Meßfehler. Ich würde bestenfalls 4 Schalter auswerten. In deinem Fall leg lieber je 3 Schalter an einen ADC-Eingang, das ist einfacher und robuster. Ok, viele IOs hast du nicht. Aber deine Taster kannst du ja auch so auswerten. Macht dann drei ADC-Eingänge und einen Digitalausgang.
3 x AAA-Akkus 'hasse' ich, da einfache Ladegeräte meist nur zwei oder
vier Zellen laden können.
Ich denke, das war mal in den 80er Jahren so üblich - heute nicht mehr. Jedenfalls würde ich solche Ladegeräte schon lange nicht mehr kaufen. Muss man auch nicht. Selbst die Angebote der Supermärkte laden die Zellen in der Regel einzeln.
Den Strom würde ich mir auch noch sparen, indem der Spannungteiler
anders aufgebaut ist.
Man könnte (falls es die Anwendung erlaubt) den Spannungsteiler nicht an VCC sondern an einen AUsgang des Mikrocontrollers hängen und dann in gewissen Intervallen nur kurz zur Messung einschalten.
Richtig, täglich ca. 5 h à 20 Tage = 100 h und sagen wir mal 1 mA für alle Verbraucher ergibt 100 mAh durch den Spannungsteiler. Dann lassen wir den µC im selben Zeitraum 500 mAh verbrauchen und kommen auf 600 mAh, während die AAA-Eneloops 750 mAh Kapazität haben - und dann hätte ich noch einen zweiten Satz Akkus dabei, das reicht also locker.
Danke für den Tip mit dem MOSFET BS170, wird angeschaut!
Habe leider keinen weiteren I/O-Pin zur Verfügung, um den Spannungsteiler darüber zu versorgen.
Aber ich könnte den Spannungsteiler nicht generell an VCC hängen, sondern an den Schaltkontakt der Taster, die bei HIGH dem µC befehlen, die Messung durchzuführen.
Ich werde demnächst mal einen Testaufbau des R-Arrays mit dem Arduino nano realisieren und mit die Meßwerte über Serial rausschreiben lassen. Habe übrigens 0,1%-Widerstände und hoffe auf geringe Meßfehler. Sehen wir mal, wie viele Bit ich da rausbekomme.
Aber ich könnte den Spannungsteiler nicht generell an VCC hängen,
sondern an den Schaltkontakt der Taster, die bei HIGH dem µC befehlen,
die Messung durchzuführen.
Anders herum: den Pullup an VCC und den ADC-Eingang. Die sechs Einzelwiderstände dann gegen GND schalten.
Ich werde demnächst mal einen Testaufbau des R-Arrays mit dem Arduino
nano realisieren und mit die Meßwerte über Serial rausschreiben lassen.
Habe übrigens 0,1%-Widerstände und hoffe auf geringe Meßfehler. Sehen
wir mal, wie viele Bit ich da rausbekomme.
Lass Dich nicht veräppeln: 1% Widerstande reichen erfahrungsgemäß aus, wenn Du alle von einer Rolle verwendest (seriell/parallel).
..., kostet in diesem Fall aber ein Bit der ADC-Auflösung.
Deine (gelöschten) Bedenken sind unbegründet. Gerade ratiometrisch betrieben ist der ADC sehr stabil. Und bei dem niederohmigen Spannungsteiler muß auch nicht weiter gefiltert werden.
Hier mal mit aktuellem Schaltplan (statt 3,3 V liegen real eher 3,6 V an).
Taster S löst eine Aktion im µC aus und hat nen Pulldown spendiert bekommen, soweit nicht dramatisch.
Die Taster V und I schalten den linken Transistor durch, so daß der Spannungsteiler bestromt wird und lösen auch die Aktion im µC aus, daß die am Spannungsteiler anliegende Spannung gemessen wird. Durch die Dioden kommen sich die Taster und Aktionen nicht gegenseitig in die Quere. Beide mit externem Pulldown, ich hab ja nen Sack voller Widerstände :)
Je nach Programmstatus wird der rechte Transistor durchgeschaltet und schließt den Stromkreis, welcher ans Schraubterminal angeklemmt wird.
Stromverbrauch entsteht nur noch:
durch den Betrieb des µC, was nun mal notwendig ist (~5 mA?)
kurzzeitig wenn V oder I gedrückt sind und der Spannungsteiler bestromt wird (0,57 mA)
kurzzeitig wenn V, I oder S gedrückt werden durch den Pulldown (~0,3 mA)
dauerhaft der Strom von 3V3 durch den 6k3-Vorwiderstand des R-Arrays zum Pin des µC <-- fließt da viel Strom oder ist der Pin eher hochohmig?
längere Zeit wenn der rechte Transistor durchgeschaltet ist (3,6 mA) <-- könnte ich noch durch den BS170 verringern
R2R klingt klasse, nur habe ich meine Widerstände bereits gekauft... nächstes Mal dann!
R2R klingt klasse, nur habe ich meine Widerstände bereits gekauft...
nächstes Mal dann!
Der Charme von R2R-Netzwerken ist, dass alle Widerstände vom selben Gurt stammen können (Aufbau aus Einzel- bzw. paarweise parallelgeschalteten Widerständen), so dass Fertigungstoleranzen sehr gering sind, weil Chargenschwankungen dich dann nicht interessieren.
Nachteil ist, dass man Umschalter SPDT braucht.
Hier mal mit aktuellem Schaltplan
Bei deiner Schaltung musst du auf besser als 7mV genau messen und nichtliniear ist die Angelegenheit auch noch. Du solltest auf jeden Fall ein paar Kondensatoren am ADC-Eingang und für die Referenzspannung einplanen.
Der BJT mit seiner U_CE-Kennlinie erzeugt eine Spannungsverschiebung in der Größenordnung von der erforderlichen Auflösung (4..8 mV), abhängig von der Schalterstellung (Änderung von des Querstromes und damit I_C). Das wirst du bei der Auswertung berücksichtigen müssen.
Der BJT mit seiner U_CE-Kennlinie erzeugt eine Spannungsverschiebung in
der Größenordnung von der erforderlichen Auflösung (4..8 mV), abhängig
von der Schalterstellung (Änderung von des Querstromes und damit I_C).
Und wenn ich statt der beiden BC547 diesen BS170 ohne R am Gate verwende?
Mal angenommen, die Ergebnisse wären nicht verwertbar: würdet Ihr 6 (bis max. 8) Schalter eher mit einem ATtiny84 auslesen oder mit einem ATtiny85 und 74HC165?
Der ATtiny84 hätte 11 I/O-Pins, bei 6 Schaltern und einem Ausgang wären also noch 4 für Schnickschnack frei, alles wäre auf einem Chip, auch relativ günstig und ab 1,8 V lauffähig.
Mit dem 74HC165 habe ich bereits gewerkelt, der bräuchte 2 Pins zum Betrieb und einen zum Einlesen, dann der eine Ausgangspin, bliebe von einem ATtiny85 also noch ein Pin für Schnickschnack frei. Außer dem Schieberegister auch keine weiteren Bauteile notwendig, in Summe vielleicht ein paar Cent teurer, auch ab 2,0 V betreibbar (meine Akkus liefern 2,4 V).
Gehupft wie gesprungen? Jacke wie Hose?
Oder bietet eine der Lösungen immense Vorteile?
Ja, schon parallel notwendig.
Ich möchte einen, per Schalterarray binär eingestellten, Wert mehrfach einlesen - ohne Rückgabemöglichkeit wie ein Display, sondern eben durch die On/Off-Zustände an den Schaltern erkennbar.
Hoppala! Eben erinnert, daß ich noch 2 Buttons auslesen will, mit dem ATtiny85 und 74HC165 würden die Pins also nicht ausreichen.
Gut, dann fiele die Wahl wohl auf den ATtiny84.
Mal angenommen, die Ergebnisse wären nicht verwertbar:
Und ich dachte, Du wärest schon längst fertig.
Wenn die Gehäusegröße nicht stört, kannst Du doch auch 20- oder 28-pol. Typen verwenden. Das Gegurke mit den Transistoren könnte vermieden werden.
Mit einem Arduino UNO kannst Du auch testen, ob Deine Schaltung mit ADC genau genug arbeitet und per UART/USB-Ausgabe der Werte kontrollieren.
Wo ist das Problem? Platz? Kosten?
Der Arduino Uno wäre definitiv zu teuer, zu groß und zu sehr stromfressend. Es wird ein ATtiny84/85 werden.
Eben bei Reichelt gelesen, daß das 74HC165-IC (bei 6 V?) satte 0,5 Watt also etwa 83 mA saugt... damit taugt das definitiv nicht für meine Batterieversorgung. Also wohl eher der ATtiny85 mit den Widerständen oder der ATtiny84 ohne Transistorherumgegurke.
R2R-Netzwerke gibt es übrigens auch bei Reichelt, damit hielte sich die schiere Anzahl der Rs in Grenzen.
Mir fehlt dank Abendschule aktuell die Zeit zur Vollstreckung und über Weihnachten bin ich in Urlaub, habe aber mal den Kram für die verschiedenen Varianten bestellt und werde sie dann im Laufe der nächsten Monate zusammenlöten und gegeneinander testen.
Eben bei Reichelt gelesen, daß das 74HC165-IC (bei 6 V?) satte 0,5 Watt
also etwa 83 mA saugt
Das ist ein CMOS Baustein. Für praktisch alle CMOS Bausteine gilt, dass sie nur Impulsweise bei jedem Takt Strom aufnehmen. Je niedriger die Taktfrequenz, umso geringer die Stromaufnahme.
NXP gibt einen Ruhestrom von maximal 8 µA bei 25°C an und einen Cpp von 35 pF.
I = 2·π·F·Cpp·U
Bei F = 1 Khz Taktfrequenz an U = 5 V ergibt das 1,1 µA, also zusammen 9,1 µA Stromaufnahme.
Eben bei Reichelt gelesen, daß das 74HC165-IC (bei 6 V?) satte 0,5 Watt
also etwa 83 mA saugt... damit taugt das definitiv nicht für meine
Batterieversorgung.
Du solltest ein richtiges Datenblatt lesen und nicht an das, was unter "Technische Daten" vorne steht, alleine glauben.
Bei den dort angegebenen 500mW steht auch nicht, unter welchen Bedingungen das gilt.
Im Datenblatt von TI (https://www.ti.com/lit/ds/symlink/sn74hc165.pdf) habe ich "500mW" auch nicht gefunden.
Danke für die Erklärungen!
Werde die Varianten mit ATtiny84 sowie ATtiny85+74HC165 im neuen Jahr ausprobieren. Jetzt muß erstmal auf Klausuren gelernt werden.
Die Variante mit den Widerständen funktioniert bereits erstaunlich gut, lediglich bei den beiden kleinsten Widerständen gibt es kleinere Abweichungen.
Habe die Schaltung testweise an nem Nano laufen lassen, der seriellen Ausgabe wegen.