Hallo, 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?
Norbert schrieb: > Wäre es sinnvoll, den µC direkt mit 2 oder 3 Akkus (2,4 bzw. 3,6 V) zu > betreiben? Ja, der kann 1,8-5,4V. Es wäre vermutlich am besten diesen Bereich möglichst weit auszunutzen. Norbert schrieb: > Oder besser 6 Akkus (7,2 V) und einen Spannungsregler (auf 3,3 oder 5 V) > verwenden? SNT oder LDO braucht halt wieder Strom. Bei einer Batterielösung nicht gut. Norbert schrieb: > irgendwelche Besonderheiten gegenüber dem Testaufbau mit einem Arduino > nano ein? Das ist halt kein nackter Atiny wie oben erwähnt. Also stellt sich die oben gestellte Frage nicht. Bei dem ganzen Krempel was auf der Platine ist.
Norbert schrieb: > 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. https://www.mikrocontroller.net/articles/Versorgung_aus_einer_Zelle#Vier_Mignonzellen_mit_LowDrop-Linearregler 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.
Falk B. schrieb: > 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?
:
Bearbeitet durch User
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. Danke schon mal!
:
Bearbeitet durch User
Norbert schrieb: > Ich tendiere aktuell zu Lösung #3, da sie so simpel wirkt. Mach das. Die AVR Mikrocontroller sind dafür ideal geeignet. Ich habe immer 3 Zellen genommen, weil a) das nahe an 3,3V liegt womit viele andere Sachen auch laufen b) zwei Zellen (1,8 - 2,5V) für eine LED arg knapp wären c) die Programmierung des Flash nach mindestens 2,7 verlangt (https://microchip.my.site.com/s/article/How-to-program-an-AVR-Microcontroller)
Norbert schrieb: > 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.
Norbert schrieb: > 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.
Falk B. schrieb: > Ist immer genau. Das Wunder der ratiometrischen Messung. ..., kostet in diesem Fall aber ein Bit der ADC-Auflösung. Evtl.: Spannungsteiler für VRef = VDD/2
:
Bearbeitet durch User
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. LEDs, Displays etc. sind nicht verbaut. 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.
:
Bearbeitet durch User
Norbert schrieb: > Zwischen VCC und GND liegen also 6300-12600 Ohm. Bei 3,6 V fließen also > maximal 0,57 mA durchs R-Array. Den Strom würde ich mir auch noch sparen, indem der Spannungteiler anders aufgebaut ist. Aber gut, so werden die Akkus zumindest auch einmal leer ;-)
Norbert schrieb: > 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. Mit MOSFET als BS170 spart man 3-4mA Steuerstrom. > Pro Session liefe die Anlage ca. 5 Stunden Pro Tag? >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.
Mi N. schrieb: > 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.
Mi N. schrieb: > 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.
Steve van de Grens schrieb: >> 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. Gerade bei Reichelt und Pollin nachgesehen: voll die 80er! > Selbst die Angebote der Supermärkte laden die > Zellen in der Regel einzeln. Na gut, alle drei nacheinander. Norbert schrieb: > 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).
:
Bearbeitet durch User
Beitrag #7543618 wurde vom Autor gelöscht.
Rainer W. schrieb: > ..., 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.
Norbert schrieb: > Ich habe 6 Schalter, die jeweils einen Widerstand > (100/200/400/800/1600/3200 Ohm) kurzschließen, um die Werte 0-63 > darzustellen. Lies dich mal über R2R-Netzwerke schlau.
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!
:
Bearbeitet durch User
Norbert schrieb: > durch den Betrieb des µC, was nun mal notwendig ist (~5 mA?) Mit niedriger Taktfrequenz (siehe CLKPR Register) kommst kommst du weit darunter.
Norbert schrieb: > 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.
Rainer W. schrieb: > Bei deiner Schaltung musst du auf besser als 7mV genau messen und > nichtliniear ist die Angelegenheit auch noch. Läßt sich aber recht simpel berechnen:
1 | R_Spgteiler = R_Vorwid/((maxWerte/analogRead(Pin))-1); |
Mit R_Vorwid = 6300 und maxWerte = 1024 Rainer W. schrieb: > 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 ATtiny*84* auslesen oder mit einem ATtiny*85 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?
Müssen wirklich alle Tasten parallel erkannt werden oder reicht eine 1 aus n Bedienung vollkommen aus. Beitrag "Tastenmatrix auslesen über nur 2 Leitungen" Für die Eingabe von Analogwerten eignen sich Drehencoder und brauchen nur 2 Anschlüsse.
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 ATtiny*85* und 74HC165 würden die Pins also nicht ausreichen. Gut, dann fiele die Wahl wohl auf den ATtiny*84*.
:
Bearbeitet durch User
Norbert schrieb: > 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.
:
Bearbeitet durch User
Norbert schrieb: > Eben bei Reichelt gelesen, daß das 74HC165-IC (bei 6 V?) satte 0,5 Watt > also etwa 83 mA saugt Lies es einfach solange, bis Du es verstanden hast. Konzentriere Dich dabei auf die Werte mit der Dimension "µA".
Norbert schrieb: > 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.
Norbert schrieb: > 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.
Norbert schrieb: > Die Variante mit den Widerständen funktioniert bereits erstaunlich gut, > lediglich bei den beiden kleinsten Widerständen gibt es kleinere > Abweichungen. Vielleicht gibt es noch einen kleinen Offset? Wird aber vermutlich egal sein. > Habe die Schaltung testweise an nem Nano laufen lassen, der seriellen > Ausgabe wegen. Das ist gut. Dann könntest Du die Schaltung mit gleichen Programm auch auf einem ATmega328P im 28-pol. DIL-Gehäuse verwenden.
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.