Spannungsteiler mit Transistor schalten zur Strommessung?

Die Akkus lötet man nicht selbst, die gibts im Modellbau fertig zu kaufen!

Naja Akkus parallel zu schalten, sehe ich kritisch.
Und von fertig kaufen stand da nichts.

Ich nehme mal an daß Vout 3,3V sein soll.
Dann muß ich explizit und wehement verneinen.

1.6 μA Typical Quiescent Current (max 4µA) at Vin = Vout +1V; Iout = 0;
Ruhestrom ist der Strom den der Spannungsstabilisator selbst braucht. Daraus ergibt sich mit der Eingangsspannung die (mindest) Verlustleistung der Schaltung selbst, also wenn kein Verbraucher angeschlossen ist (wobei ein gewisser Mindeststrom bei einigen (anderen) Modellen notwendig ist).

DropOut ca. 0.2V
Diese Spannung ist die minimale Spannungsdifferenz die der Spannungsstabilisator für sein funktionieren braucht. Das heißt die Eingangsspannung muß mindestens soviel höher sein als die Ausgangsspannung (meine angenommenen 3,3V) also 3,5V.

Jeder, ich sage und wiederhole (sooft Du willst), jeder lineare Spannungsstabilisator ist ein regelbarer Vorwiderstand, der seinen Widerstand (zwischen Eingnag und Ausgang) so regelt, daß sich am Ausgang die Nenn-Ausgangsspannung einstellt. Die Spannungsdifferenz zwischen Eingang und Ausgang mal den Ausgangsstrom (= Laststrom) wird in Wärme umgewandelt. Da ist es egal welche DropOut Spannung der Spannungsstabilisator hat. Der einzige Unterschied ist, daß bei einem low dropout (LDO) voltage regulator die Eingangsspannung kleiner als bei einem normalen Spannungsstabilisator ( mit größerem dropout Spannung sein kann. Daraus erfolgt daß bei Batteriebetrieb mit 3 x AAA Alkalibatterie die Spannung runter bis 3,5V gehen kann (also fast leer gesaugt) . Bei einem 78L33 braucht es bei max zulässigem Ausgangsstrom (100mA) schon 1,7V, also über 5,0V Eingangssspannung. Diesen kann man mit 3 Alkalibatterien nicht verwenden, um stabile 3,3V zu erhalten. Auch ein LM1117, der als Low Dropout beworben wird, braucht bei 100mA Laststrom schon eine Spannungsdifferenz von typisch 1,1V . Der könnte bis zu 4,4V Batteriespannung stabile 3,3V liefern. Dann sind die Batterien aber gerade etwas angebraucht.
Die DropOut Spannung ist unter anderem ausgangsstromabhängig.

Bei einer Unterschreitung dieser Spannungsdifferenz kommen am Ausgang einfach keine stabile Nennspannung heraus sondern weniger.

Kommen wir aber zu den Stein des Anstoßes.
Ein linearer Spannungsstabilisator verbraucht bei gegebener Eingangsspannung und Nennspannung immer gleichviel Verlustleitung, unabhängig von der DropOut Spannung. ( hab hier mal den Eigenbedarf Quiescent Current nicht mitbetrachtet)
Im Fall daß man aus 4,8V (niegelnagelneue Alkalibatterien) 3,3V macht ist der Wirkungsgrad ca 69%
Bei 3,5V Batteriespannung (Limit dropout des Vorgeschlagenen Spannungsstabilisators) ein Wirkungsgrad von 94%.

Der Wirkungsgrad bei leerer Batterie ist zwar sehr gut, es ist aber zu bedenken, daß der Spannungsabfall beim Strombedarf bei einer leeren Batterie sehr viel größer ist, als bei einer vollen. Und somit bei einem vermehrten Stombedarf wie zB bei eingeschaltenem NRF24 (ca 13mA) unter der Annahme 20mA des Controllers die Batteriespannung zwar für den Controller alleine genügt aber der ca 50% Mehrverbrauch durc das Funkmodul die Versorgungsspannung zusammenbrechen läßt (unter die 3,3V bringt).

Ein Stepup/Stepdownwandler wie das genannte S09 V8.0 Modul hat da einen besseren Wirkungsgrad über die meiste Batterielebensdauer und saugt die Batterie noch leerer.

Grüße Uwe

Hallo Uwe,

Du hast mit allem voll und ganz Recht! Aber ich weiß wovon @fony spricht.
Dabei gibt es, wenn an der fertigen Leiterplatte nichts modifiziert wird keine Möglichkeit einen EN-Pin am StepDown zu betätigen. Das Verhältnis zwischen ON und Sleep ist ca. 1 : 2700, oder in anders, 60s Sleep, ca. 22ms eingeschaltet.

Gruß André

Von welchen Modul reden wir?
Das einzig in diesem Tread genannte hat einen Enable Anschluß herausgeführt.

Grüße Uwe

@SpaghettiCode hat mir vorgeschlagen den MCP1700 für meinen SensEgg.light wo der nRF gönnt sich über 20µA bei Schlafen somit eine CR2032 hält nur ca halbes Jahr oder weniger, statt über 6J (Rechnerisch).

Ist das dieser Tread?

Grüße Uwe

Hallo Uwe,
das Projekt welches der TO hier beackert ist zu 90% gleich dem was ich vor geraumer Zeit gebaut habe, und dem TO vorgeschlagen sich das anzuschauen. @fony hat das SensEgg.light auch nachgebaut, und ich hatte nur den Hinweis gegeben.
Ein S09 V8.0 hat ohne den EN-Pin zu bedienen einen Ruhestomverbrauch von ca. 200µA und einen Wirkungsgrad von 75% ... 85% damit behebt man kein Problem welches 20µA ... 30µA groß ist.

Gruß André

ja. Aber wieso nicht ausschalten?

Hallo Uwe,

ich bin mir nicht sicher ob wir gerade aneinander vorbei reden. @fony hat bei seinen nachgebauten SensEgg.light, also eine PCB welche genau in ein ÜberraschungEi passt, auf der ein ATtiny814 (*), ein BME280, ein nRF24, ein Präzisions-NTC und ein wenig Hühnerfutter mit einer Knopfzelle CR2032 über Jahre betrieben werden kann (~ 6 Jahre), zwei komplett bestückte PCBs dabei, welche nicht den gefordert niedrigen Ruhestrom schaffen.
Zu 99% wird das ein nRF24 oder evtl. auch ein Kerko sein der den Ärger macht.
@fony will diese 2 Stück alternativ über 3x AAA betreiben, und das geht nur über dauerhafte Bestromung mit 3.0V ... 3.3V, wobei die auch mit 2V noch funktionieren, dann aber die nRF24 eine geringere Sendeleistung haben. Ansonsten müsste man eine PCB um eine PCB herum bauen ... dann doch lieber einfach.

Gruß André

  • ATtiny804/814/1604/1614 gehen auch.

Danke @SpaghettiCode, genau so will das machen.

Wenn dein Sensegg Jahre mit einer Knopfzelle rennt, wird eine aktive Spannungsüberwachung nicht notwendig sein. Woher hast du die Platinen für deine Eier?

Hi,

die PCB habe ich entwickelt und bei JLCPCB.com produzieren lassen. (sehr preiswert, keine 7€ mit Versand für 5 Stück). @Kai-R hat im Thread nebenan (weit hinten) auch die KiCad-Produktionsdateien eingehängt, da er die PCB woanders produzieren lassen hat, die keine Gerber-Daten wollen, ich aber noch mit Gerber-Daten arbeite. @fony hat die SensEggs mit meinen Gerberdaten auch bei JLCPCB produzieren lassen.

Gruß André

Hallo Andre,
ich habe mir deine Sens.egg Projekte angesehen und versuche gerade die light Version am Steckbrett nachzubauen. Generell funktioniert es. Jedoch bin ich drauf gekommen, dass der NTC Messwert von der Versorgungsspannung der ATTiny1614 abhängt! Nicht viel, aber zwischen 3,7 und 2,7 V ändert sich der Temperaturwert um 1-2 Grad.
Ich habe schon probiert den ADC Wert auf die Spannung zu beziehen, leider ohne Erfolg. Ich dachte mit "analogReference(VDD);" wird die Referenzspannung auf Vcc gesetzt und somit sollte beim NTC Spannungsteiler die selbe Spannung wie an der Referenz anliegen und damit quasi Spannungsunabhängig sein.
Wenn die Referenzspannung immer auf einem definierten Wert bleibt und die Spannung aus NTC_PIN variiert (was bei sinkender Versorgungsspannung passiert) , weichen die Messwerte mit sinkender Spannung immer weiter ab.
Ist es möglich die Referenzspannung (zb 2.2V oder 1,1V) des Attiny1614 auf einem Pin auszugeben? Oder braucht es einen anderen Befehl, dass ich tatsächlich die Vcc als Referenz nehmen kann?
Oder liegt mein Fehler woanders? Ich kann den fehler jedenfalls einfach reprodukzieren. Mit einer Konpfzelle habe ich eine andere Temperatur, als bei einem 3.7V Handy-LIPO oder auch mit einem Nano als 3,3V Spannungsquelle ist die Temperatur eine andere.

lg
roland

Hi Roland,

ich war ein paar Tage unterwegs ...
Der Aufbau auf einem Steckbrett ist fragiler, aber vor allem handelt man sich Streukapazitäten ein. Ob das Problem dadurch entsteht kann ich zwar nicht mit Sicherheit sagen, aber es wäre einen Versuch wert, beim messen des NTC etwas langsamer vorzugehen, und eine kurze Wartezeit nach dem Einschalten des Spannungsteilers mit dem NTC einzufügen. Also nach der Zeile digitalWriteFast(NTC_PWR, HIGH); // Spannungsteiler NTC aktivieren mal ein delay von 1ms einfügen.
Ansonsten kann ich das bei meinen SensEggs nicht nachvollziehen. Ich habe ein SensEgg was testweise mit einem kleinen SolarModul und einem 20F Kondensator bei 1.8V ... 2.5V läuft, daneben misst ein SensEgg bei knapp 3.0V ebenfalls mit, eine Differenz wg. der Spannung kann ich da nicht feststellen.
Probiere der Messung etwas mehr Zeit zu geben.

Gruß André

Hi,
danke für dein Feedback!
Ich habe zwischenzeitlich einen ATTINY1614 nur mit einem NTC betrieben und konnte das Verhalten nachstellen. Jedoch muß ich mich korrigieren! Die Abhängigkeit der Temp von VCC ist nur dann gegeben , wenn ich den Spannungsteiler direkt an VCC hänge! Versorge ich ihn über einen PIN ist alles ok!
Auf meinem Steckbrett hatte ich zwischenzeitlich die Versorgung umgesteckt, sonst wäre mir das gar nicht aufgefallen.
Trotzdem interessant. Ich dachte VCC ,die Spannung an einem PIN sowie Vref durch analogReference(VDD); würden exakt die gleichen Werte haben.

Ich habe zu deinem Code noch ein paar Fragen! In der Zeile Rt = R * (rawADC / (4096 - rawADC)); // NTC-Widerstand berechnen *** verwendest du 4096 "Teile". Hat dein ATTINY eine 12bit Auflösung? Ich muß durch 1023 teilen um auf den richtigen Wert zu kommen, entsprechend einer 10bit Auflösung.
Oder habe ich irgendwo eine 4fah Schleife übersehen? (Ich verwende aktuell noch einen verkürzten Code um die Messwerte sofort zu übertragen. )
Weiters verwendest du zwei Funktionen um NTC zu messen und die Temp. zu berechnen, Rt hingegen berechnest du im loop. Ist der Code so "gewachsen" oder hat das einen speziellen Hintergrund?
Zusätzlich habe ich noch eine Frage zu den Kondensatoren. warum verwendest du 4 100uF Kondensatoren und nicht 1-2 größere?
lg
roland

Hi Roland,

wenn der NTC direkt an Vcc angeschlossen ist, erwärmt sich dieser, da dauerhaft Strom durch diesen fließt, was auch für die CR2032 fatal wäre.
So wie es aussieht hast Du den Sketch von der ersten Seite benutzt, der war an meine Gegebenheiten (Empfänger) angepasst. Nimm lieber diesen hier, Sender und Empfänger-Sketch in Minimalausführung:
SensEgg.light - FunkSensor [ATtiny814, nRF24, BME280, NTC] **** Du solltest aber die Zeile Wire.setClock(400000); // 22ms --> 16.5ms ;-) im Setup auskommentieren, bei niedriger Vcc (~ 2.7V) läuft sonst der I²C nicht mehr!
Im Sketch auf der ersten Seite hatte ich 4x mit dem NTC gemessen, deshalb die 4096 als auch das Messen und Rechnen des NTC getrennt.
Wenn Du Dir das Foto anschaust, weißt Du warum 5x 100µF Kerko, und kein Elko:
https://www.arduinoforum.de/attachment.php?aid=6842
Größere Kerkos gibt es nicht/ sind mir nicht bekannt.
Im Thread hängt übrigens auch ein fertiges KiCad-Projekt der PCB, hat Kai-R erstellt, da ich ein anderes Programm benutze und nur Gerber zur Verfügung stellen kann, was aber bei JLCPCB kein Problem ist.

Gruß André

Danke für den Link.
Da mein ursprünglicher Ansatz quasi das selbe werden sollte, habe ich nun auf dein Egg umgestellt.
Wie hast du den NTC geeicht bzw welchen Referenzwiderstand verwendet?
Ich habe diverse digitale Temp-Sensoren und dementsprechend viele verschiedene Temperaturen.
Der NTC sollte genau sein, man müsste zur Eichung nur den exakten Rref Wert kennen. Stellt sich nun die Frage was genauer ist, die Temp Werte der digitalen Sensoren, oder die Ohm Messung eines Multimeters plus einem zusätzlichen R Wert der Schaltung, den ich nicht kenne!

Hi,

z.Zt. benutze ich diesen NTC, wie auch im Sketch angegeben, dazu die passenden c1, c2, c3 - Parameter erstellt. Der hat bei 25*C 10k +/- 0.5% ... Im Spannungsteiler ist ein 10k Widerstand verbaut, zwar "nur" 1% Genauigkeit, aber ausgemessen. Dazu rechne ich dann noch 30 Ohm internen Widerstand des Pins, der den Spannungsteiler einschaltet. Hatte ich mal ausgemessen.

float R = 10010.0;  // R1-NTC Widerstand = 9.980k + Ri_Pin (30-40 Ohm)

Ich habe die SensEggs sowohl mit HTU21D als auch mit BME280 gebaut. Die HTU21D sind bei Raumtemperatur genauer, 0.1 ... 0.2 *C Abweichung zum NTC, beim BME280 sind es bei meinen verbauten eher 0.7 *C negative Abweichung. Das ist aber kein fester Wert, sondern nur mit Offset und Steigung zu korrigieren.
Die Temperaturwerte habe ich auch gegen 2 verschiedene Tischgeräte verglichen. Noch Fragen?

Gruß André

Darf ich fragen, wie du so was machst?