Forum: Mikrocontroller und Digitale Elektronik Versorgungsspannung aus uC


von Andreas P. (andyp17)


Lesenswert?

Hallo allerseits,

Ich betreibe in meiner Schaltung drei EEPROMs über I2C. Die 
Versorgungsspannungen für die EEPROMs bekommen ich aus 3 Pins des 
ATMega168, damit ich sie ein- und ausschalten kann. Soweit - sogut! 
Funktioniert auch prima! Nur stelle ich mir jetzt die Frage, ob diese 
Art der Spannungsversorgung schädlich für den uC sein kann. Die 
benötigten Ströme der EEPROMs sind alle im zulässigen Bereich des 
Atmels. Nur, was ist, wenn ich die EEPROMs immer ausgeschaltet habe. Ist 
das für irgendwelche Baugruppen im Controller schädlich?

Danke für eure Antworten!


mfg
Andy

von Hagen R. (hagen)


Lesenswert?

Geht, nur auf zwei Dinge musst du achten
1.) der AVR Pin liefert genügend Strom und die Spannung ist ausreichend
2.) wenn deine EEPROMs ohne Strom sind sollten die restlichen 
Steuerleitungen zum EEPROM auf GND oder HIGH-Z sein damit diese wenn sie 
interne Schutzdioden nach VCC hätten nicht über diese Pins die EEPROMs 
mit Strom füttern.

Theoretisch könnte man sogar ganz auf die Spannungsversorgung der 
EEPROMs aus einem Pin verzichten, also VCC der EEPROMs unbeschaltet 
lassen. Wenn diese nämlich zb. ein HIGH Aktives Chipselect hätten das 
über Inputprotection Dioden den Strom nach VCC intern ableiten, dann 
würde man die EERPOMs bei ChipSelect=HIGH mit Saft versorgen.

Nebenbei bemerkt habe ich AVRs auch schon über einen ADC Pin der nach 
VCC geschaltet ist und an dem ein Solarpanel hängt mit Saft versorgt. 
Der Strom floß dann durch den AVR vom Solarpanel nach VCC an dem ein 
LiPo-Akku angeschlossen  ist, quasi als Solarcharge Controller. Ist 
natürlich eine sehr exotische Konstruktion, funktioniert aber ;)

Gruß hagen

von Andreas P. (andyp17)


Lesenswert?

Besten Dank erstmal, für deine rasche Antwort.

Zu 1: Ja, der Strom aus dem uC reicht für die Potis!

Zu 2: Die SDA und SCL Leitung sind per Definition mit einem 4k7 auf VCC 
- auch wenn die EEPROMs nicht mir Spannung versorgt sind. Problem?

Weiters habe ich einmal gehört, dass durch andauerndes "0" schalten 
eines Pins interne Dioden beansprucht werden. Ist da was dran??

mfg
Andy

von Andreas K. (a-k)


Lesenswert?

Andreas Posch wrote:

> Zu 2: Die SDA und SCL Leitung sind per Definition mit einem 4k7 auf VCC
> - auch wenn die EEPROMs nicht mir Spannung versorgt sind. Problem?

Wird dazu führen, dass ein abgeschaltetes EEPROM diese Pins belastet und 
entsprechend runterzieht. Müsstest du nachmessen können.

Da diese Leitungen bei abgeschalteten EEPROMs ohnehin nicht verwendet 
werden, kannst du sie in dem Zustand allerdings auch auf 0 legen, dann 
passiert nichts.

von Andreas K. (a-k)


Lesenswert?

Andreas Posch wrote:

> Weiters habe ich einmal gehört, dass durch andauerndes "0" schalten
> eines Pins interne Dioden beansprucht werden. Ist da was dran??

Nichts.

Quelle? Hast du darüber irgendwelche Details?

Eingänge von (bipolaren) TTLs ziehen bei 0 mehr Strom als bei 1, aber 
das ist alles was mir dazu einfällt.

von Peter D. (peda)


Lesenswert?

Was sind denn das für komische gewaltig Strom schluckende EEPROMs, daß 
man sie abschalten muß?

z.B. ein AT24C512 braucht im Standby max 0,2µA (1,8V) ... 6µA (5,5V).
Das dürfte neben dem AVR-Verbrauch überhaupt nicht auffallen.


Peter

von Andreas P. (andyp17)


Lesenswert?

@Andreas Kaiser:
Nein, ich hab das irgendwann mal gelesen und gerade daran gedacht. Wenns 
nichts ausmacht, dann passt das schon.

@Peter:
Das Problem ist nicht der Stromverbrauch, sondern die Adresse der 
EEPROMs. Alle 3 haben dieselbe. Und man kann diese nicht einstellen. 
Also muss ich beim Lesen das jeweilige EEPROM einschalten und die beiden 
anderen ausgeschaltet lassen.

mfg
Andy

von Johnny (Gast)


Lesenswert?

Batteriebetriebene Geräte verbrauchen doch immer zu viel Strom, daher 
muss man schon beim Kleinen anfangen. Und so wie beschrieben benötigt 
man dazu nicht mal zusätzliche Komponenten.
Finde das eine coole Lösung, die EEPROMs vom uC zu versorgen.

von Andreas K. (a-k)


Lesenswert?

Andreas Posch wrote:

> Das Problem ist nicht der Stromverbrauch, sondern die Adresse der
> EEPROMs. Alle 3 haben dieselbe. Und man kann diese nicht einstellen.
> Also muss ich beim Lesen das jeweilige EEPROM einschalten und die beiden
> anderen ausgeschaltet lassen.

Dann hast du aber genau das Problem, dass die Pullups der I2C-Leitungen 
die beiden anderen abgeschalteten mit Teilzeit-Strom versorgen. Das geht 
also eigentlich nicht.

Was hast du denn da für EEPROM-Typen erwischt? Haben die keine Leitungen 
zur Adresseinstellung?

Hast du schon mal überlegt, an Stelle einer Batterie EEPROMs ein 
einzelnes Dataflash (SPI) zu verwenden?

von Andreas P. (andyp17)


Lesenswert?

@Andreas:
Da hast du recht - hab jetzt gar nicht dran gedacht, dass ich ja doch 
die Datenleitungen auch im ausgeschalteten Zustand benutze ups
Das sind EEPROMs von Microchip im SOT23-5 Gehäuse. Deshalb keine 
Adressleitungen.

Die Lösung funktioniert aber einwandfrei!


mfg

von Hagen R. (hagen)


Lesenswert?

Die externen Pullups kannst du meistens weglassen, benutzte mal die 
internen Pullups der AVRs, ich hatte damit bei I2C EEPROMs noch nie 
Probleme, besonders weil die Zuleitungen zum EEPROM ja verhältnismäßig 
sehr kurz gehalten werden.

Beachte aber das wenn du EEPROM #1 von VCC getrennt hast und nun mit 
EEPROM #2 eine I2C Kommunikation durchführst du niemals SDA/SCL auf 
logisch HIGH ziehst, dann versorgt nämlich der AVR wiederum den EEPROM 
#1 über SDA/SCL mit Saft, sollte aber in einer guten I2C Lib nicht 
vorkommen.

Gruß Hagen

von Andreas K. (a-k)


Lesenswert?

Hagen Re wrote:

> Beachte aber das wenn du EEPROM #1 von VCC getrennt hast und nun mit
> EEPROM #2 eine I2C Kommunikation durchführst du niemals SDA/SCL auf
> logisch HIGH ziehst, dann versorgt nämlich der AVR wiederum den EEPROM
> #1 über SDA/SCL mit Saft, sollte aber in einer guten I2C Lib nicht
> vorkommen.

Was hat das mit einer guten oder schlechten I2C-Lib zu tun? Die 
Leitungen kriegst du mit dem Pullup locker hochgezogen, denn die paar µA 
tun dem Pullup nicht weh.

Es wird so sein, dass die übrigen EEPROMs über diese Leitungen und die 
Schutzdioden mit Strom versorgt werden, aber nicht permanent und eben 
deshalb werden die sich auch nicht angesprochen fühlen, allein schon 
weil sie das Startbit nicht mitkriegen, in dem beide Leitungen 
zeitweilig 0 sind.

Daher funktioniert das also, aber sauber ist das wirklich nicht.

von Hagen R. (hagen)


Lesenswert?

>Was hat das mit einer guten oder schlechten I2C-Lib zu tun? Die
>Leitungen kriegst du mit dem Pullup locker hochgezogen, denn die paar µA
>tun dem Pullup nicht weh.

Naja, hängt halt vom EEPROM ab, falls sie wirklich nur µA benötigen dann 
reicht der Strom über die Pullups auch aus. Ich meinte mit schlechter 
Lib zb. eine die SDA/SCL auf Ausgang/High schalten, was aber nicht sein 
dürfte.

>Daher funktioniert das also, aber sauber ist das wirklich nicht.

jo meine Meinung.

Gruß hagen

von Andreas K. (a-k)


Lesenswert?

@Andreas Posch: Schaltest du die Ausgänge, wie den Strom der EEPROMs 
liefern, auf hochohmig (Eingang) oder auf 0, wenn abgeschaltet wird?

Wenn Ausgang 0, dann stellt das einen Kurzschluss für die Pullups dar. 
Dürfte dann eigentlich nicht funktionieren, und die I2C-Leitungen 
sollten im inaktiven Zustand gemessene ~0,7V anzeigen.

Muss also wohl so sein, dass du die hochohmig schaltest.

von Hagen R. (hagen)


Lesenswert?

>Wenn Ausgang 0, dann stellt das einen Kurzschluss für die Pullups dar.
>Dürfte dann eigentlich nicht funktionieren, und die I2C-Leitungen
>sollten im inaktiven Zustand gemessene ~0,7V anzeigen.

Eben deswegen empfehle ich die exteren Pullups durch die internen zu 
ersetzen. So kann man nämlich sauber SDA/SCL auf GND ziehen (ohne 
aktiviere Pullups). Was auch noch par µA Strom spart.

Gruß Hagen

von Andreas P. (andyp17)


Lesenswert?

Eigentlich schalte ich die Ausgänge auf "0". Wenn ich auf hochohmig 
schalte, dann könnte es doch sein, dass der Vcc-Pin eines EEPROMs 
"schwimmt" und irgendwas macht, oder? Nicht, dass da noch Daten verloren 
gehe...

Wie könnte ich das "sauberer" lösen??

mfg

von Peter D. (peda)


Lesenswert?

Andreas Posch wrote:
> Das Problem ist nicht der Stromverbrauch, sondern die Adresse der
> EEPROMs. Alle 3 haben dieselbe. Und man kann diese nicht einstellen.

Dann gib doch jedem seinen eigenen SDA-Pin und mach das I2C in Software 
(Auswahl des SDA per Bitmaske). Das ist kaum aufwendiger als HW-I2C.


> Also muss ich beim Lesen das jeweilige EEPROM einschalten und die beiden
> anderen ausgeschaltet lassen.

Schließe mich den anderen an, auch wenn es zu funktionieren scheint, ist 
das keine saubere Lösung.
Was sind denn das für Chips und was fürne maximale Eingangsspannung 
bezogen auf VCC steht denn im Datenblatt?


Peter

von Andreas K. (a-k)


Lesenswert?

Andreas Posch wrote:

> Eigentlich schalte ich die Ausgänge auf "0".

Mir ist nicht klar, wie das dann funktionieren kann.

> Wie könnte ich das "sauberer" lösen??

Ein grösseren EEPROM oder Dataflash an Stelle der 3 EEPROMs verwenden. 
Oder lass den Strom dran und verwende die eingesparten Pins für Peters 
getrennte Software-I2Cs.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Habne die EEPROMs nicht nen Enable oder Chipselect?

von Hagen R. (hagen)


Lesenswert?

>Wie könnte ich das "sauberer" lösen??

Erstmal indem du die SDA Leitungen statt VCC Leitungen separierst und 
dann eine Soft-TWI benutzt.

Oder idem du AND/MUX Gatter über deine jetzigen VCC Pins schaltest. 
Diese schalten die SDA Leitungen vom AVR SDA Pin zu den SDA Pins der 
EEPROMs.

Aber vielleicht auch indem du GND statt VCC der EPROMs schaltest, könnte 
aber eine noch verrücktere Idee sein ;)

Gruß Hagen

von Hagen R. (hagen)


Lesenswert?

>habne die EEPROMs nicht nen Enable oder Chipselect?

bei SOT23-5 entweder Writeprotect oder Enable oder NC.

Gruß hagen

von Andreas K. (a-k)


Lesenswert?

Hagen Re wrote:

> Aber vielleicht auch indem du GND statt VCC der EPROMs schaltest, könnte
> aber eine noch verrücktere Idee sein ;)

Ja, denn bisher habe ihn die Pullups vor dem niederohmigen Kurzschluss 
gerettet. Dann nicht mehr, d.h. bei SDA=0 und GND=1 qualmt es.

von Hagen R. (hagen)


Lesenswert?

>>Dann nicht mehr, d.h. bei SDA=0 und GND=1 qualmt es.

nene, nicht GND=1 das wäre fatal, sondern den GND der E2 auf High-Z = 
Input.

Gruß Hagen

von Andreas P. (andyp17)


Lesenswert?

OK, das sind ja mal nicht so rosige Nachrichten - d.h. dass es 
funktioniert ist eigentlich nur Glück?

Der Vorschlag mit dem AND-Gatter gefällt mir jedoch. D.h. ich könnte das 
EEPROM dauerhaft mit 3,3V versorgen - die SDA-Leitung und ein 
"Enable-Pin" vom Mega zu einem AND und dessen Ausgang an den SDA-Pin des 
EEPROMs.
Würde das gehen??

mfg

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Bei soviel Zusatzaufwand frag man sich natürlich: Warum kein größeres 
EEPROM (wie schon mehrfach gefragt...) Oder nutz software TWI, dan hast 
du 1 Dataleitung und 3xSCK für jedes EEPROM einen..

von Andreas P. (andyp17)


Angehängte Dateien:

Lesenswert?

Ich muss drei separate EEPROMs verwenden, da diese nicht auf derselben 
Platine wie der Atmel sitzen. Sie sind unabhängig voneinander angeornet.

Anbei hab ich schnell eine Skizze angefertigt, würde das so gehen? Kann 
ich den SDA-Pin so auf die ANDs aufteilen?

THX

von Andreas K. (a-k)


Lesenswert?

SDA mit Gattern aufzutrennen ist nicht so genial, denn SDA geht in beide 
Richtungen. So kannst du zwar Daten reinschreiben, aber nie wieder 
auslesen.

Wenn Gatter, dann SDA an alle, aber SCL in dieser Weise auftrennen. Und 
hoffen, dass die EEPROMs nicht selber SCL runterziehen, denn rein formal 
dürfen die das wenn sie grad ein bischen mehr Zeit brauchen (clock 
stretching). Tun sie aber wahrscheinlich nicht, also sollte das machbar 
sein.

Völlig korrekt geht es mit Analogschalter 74HC4051 für SDA und 
hochohmigen Pullups dahinter (für definierten Zustand von SDA).

von Andreas P. (andyp17)


Lesenswert?

Stimmt, natürlich muss ich SCL aufsplitten.

Und das dürfte ich dann einfach so auf 3 ANDs aufteilen, oder brauch ich 
da noch irgendwelche Logik-Gatter dazwischen??

von Andreas P. (andyp17)


Lesenswert?

Zum 74HC4051:
Gibts den auch kleiner? Ich brauch nur 3 Channel IN/OUT. Gibts den?
Hab platzmäßig schon Probleme!

THX

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Spricht was gegen Soft TWI und dan jeder sein eigenen Pin für SCL?
Dan brauchts nichtmal nen neues Bauteil + eine Leitung gespart..

von Andreas K. (a-k)


Lesenswert?

Andreas Posch wrote:

> Gibts den auch kleiner? Ich brauch nur 3 Channel IN/OUT.

Möglicherweise gibt es 4fache, aber nicht unter den Standard-ICs. Musst 
dann mal bei den üblichen Verdächtigen für Analogkram suchen (Analog 
Devices, Maxim, ...).

von Andreas P. (andyp17)


Lesenswert?

Könnte ich die Datenleitungen auch mit einem Transistor bei Bedarf 
durchschalten??

von Andreas K. (a-k)


Lesenswert?

Könnte funktionieren, ähnlich 
Beitrag "Re: 1 Transitor + 2 Widerstände = Verwirrung", nur muss der 
Basisanschluss via R1 dann an den Enable-Pin statt an 3,3V (nicht aber 
R2,R3 - das sind ja die üblichen I2C-Pullups).

von MM (Gast)


Lesenswert?

Mit den internen Pullups des AVR habe ich bei I²C EEPROMS schon
schlechte Erfahrungen gemacht. Die Flanken werden so flach, das
es nicht mehr unter allen Umständen (Temperatur ...) zuverlässig
funktioniert.
Die internen Pullups des AVR haben immerhin rund 20K, das ist weit
jenseits der Spezifikationen für I²C.

Gruß, Marcus

von Hagen R. (hagen)


Lesenswert?

Also ich habe mit 3.6V gearbeitet und die E2s waren für 2.7V ausgelegt 
und da gabs bisher keine Probleme mit internen Pullups, selbst bei 
extremeren Temperaturen, allerdings 100KHz SCL. Ich habe dabei den E2, 
alleine am I2C, ebenfalls über einen Pin versorgt und um weiter Strom zu 
sparen eben die internen Pullups verwendet. Aber man sollte auf Nummer 
sicher gehen.

Gruß Hagen

von Andreas P. (andyp17)


Angehängte Dateien:

Lesenswert?

OK, mit Transistoren würds dann so aussehen, oder...
Welche Transistoren wären dafür geeignet.

Zum SW-I2C: Müsste ich dann bei jeder SDA-Leitung einen Pull-Up 
dranmachen, oder?

von Andreas K. (a-k)


Lesenswert?

Erst wenn du jetzt noch die SDA Leitungen der EEPROM auch mit Pullups 
versiehst. Typ beispielsweise BC547/847.

Pullups: ja klar. SDA muss definierten 1-Pegel haben, wenn nicht 
verwendet. Sonst ist das Verhalten undefiniert. Das gilt für alle 
Varianten, egal ob Muxer, Transistoren oder Software.

von Andreas P. (andyp17)


Lesenswert?

OK, dann werd ich das ganze Mal mit SW-I2C versuchen. Leider kenn ich 
mich da nicht so aus. Wird aber sicher genug Beispiele hier geben, oder?
Kann ich dann jeden beliebigen Pin als SDA definieren?

von Hagen R. (hagen)


Lesenswert?

>Kann ich dann jeden beliebigen Pin als SDA definieren?

nö, GND,VCC und evtl. RESET gehen nicht, alle anderen frei steuerbare 
Pins schon ;)

von Hagen R. (hagen)


Lesenswert?

Aber nochmal meinerseits nachgefragt: Was wäre nun wenn man GND der E2 
per Pin schalten würde, also Pin=GND oder Pin=Input/ohne Pullups ?

Könnte es Ströme geben die dann zwischen SDA und SCL am E2 fließen ?

Gruß Hagen

von MM (Gast)


Lesenswert?

Der I²C Takt ist natürlich bei den Pullups ein Thema - da ich teilweise
größere Datenmengen aus dem EEPROM durchsuchen muß, arbeite ich mit dem
max. Takt - bei 8MHz AVR Takt waren das 400kHz wenn ich mich recht
entsinne. Da ist natürlich die Anstiegszeit nur noch ein viertel im
Vergleich zu 100kHz.

Außerdem lief da alles mit 5V - macht wahrscheinlich auch was aus.

Gruß, Marcus

von Alexander S. (esko) Benutzerseite


Lesenswert?

Hagen Re wrote:
> Nebenbei bemerkt habe ich AVRs auch schon über einen ADC Pin der nach
> VCC geschaltet ist und an dem ein Solarpanel hängt mit Saft versorgt.

Ich komme nicht ganz dahinter was du damit bezweckst.
1
       .-------------------.
2
       |                   |
3
       |           _____   |
4
       |     .----|-   +|--'
5
      ---    |   -|     |-
6
 Lipo  -     |   -|  ADC|-----.
7
       |     |   -|_____|-    |
8
       |     |      AVR      --- <--
9
       |     |        Solarz. -  <--
10
       |     |                |
11
       '----------------------'
Und der Strom fließt dann über die Schutzdiode zum Lipo?

von Hagen R. (hagen)


Lesenswert?

Nicht Schutzdiode sondern wenn der AVR es möchte fließt der Strom über 
den intenernen P-MOSFET des Pins vom Solarpanel nach VCC -> Akku. Wenn 
der AVR aber diesen Pin auf Ausgang/GND setzt dann schließt er das 
Solarpanel kurz (übliche Vorgehensweise bei Solaranlagen wenn die Akkus 
voll geladen wurden).

Nun, der Spannungsabfall beim Laden über den internen P-MOSFET ist 
weitaus geringer als über eine Shottkydiode.

Somit hat der AVR 5 Möglichkeiten:
1.) er kann Solarpanelspannung ausmessen, dazu Pin auf Eingang und per 
ADC Spannung messen
2.) er kann VCC=Akku gegen interne AREF messen, sprich den 
Akkufüllstand, dabei wird Solarpanel nach GND kurzzeitig kurzgeschlossen 
geschlossen
3.) er kann Solarpanel nach GND kurzschließen falls der Akku voll ist
4.) er kann Solarpanel nach VCC schalten und somit versorgt sich der AVR 
fast ohne Verluste direkt aus dem Solarpanel, Rest des Stroms fließt in 
Akku

Man hat damit einen Solar-Akku-Charger mit geringstem Aufwand. 
Allerdings setzt das alles bestimmte Rahmenbedinungen an Akku und 
Solarpanel. Als Solarpanel eines aus den Gartenlampen, als Akku ein 
robuster Typ wie zb. 3x 1.2 NiMH oder wie bei meinen Test (die übrigens 
jetzt schon par Wochen laufen) ein LiPo Akku.

Nur auf eines muß man aufpassen: Niemals die Schaltung ohne Akku treiben 
und dann das Solarpanel mit voll Power, vielleicht noch ohne 
Spannungsbegrenzung nach oben. Das kann den AVR zerschießen. Sollte aber 
das Solarpanel nicht mehr als 5V liefern, oder aber der Akku ist 
angeschlossen und damit am Solarpanel immer auch eine Grundlast so 
funktioniert das wunderbar. Wiegesagt, meine Testschaltung läuft seit 
Wochen und lädt den Akku.

Natürlich ist das ebenfalls eine der verückteren Schaltungen und man 
sollte wissen was man tut ;)

Übrigens sind wir auf die Idee durch mein Glühwürmschenprojekt hier in 
der CodeLib gekommen. Erst nach Nachfrage bei anderen Experten habe ich 
mich überhaupt getraut dieses Idee lauter auszusprechen ;)
Falls man einen Tiny benutzt hat man so sogar noch einen Pin im 
Vergleich zu meiner Glühwürmchenschaltung mehr frei und kann nun 20 LEDs 
ansteueren.

Gruß Hagen

PS: ist aber hier im Thread fehl am Platze, sorry das ich mal wieder OT 
bin.
PPS: bin mir nicht sicher aber ich denke das die internen Schutzdioden 
nichts anderes sind als die Dioden des P/N-MOSFETS des Ausgangstreibers

von Simon K. (simon) Benutzerseite


Lesenswert?

Hagen Re wrote:
> Nicht Schutzdiode sondern wenn der AVR es möchte fließt der Strom über
> den intenernen P-MOSFET des Pins vom Solarpanel nach VCC -> Akku.

Über dessen interne Substratdiode wohl eher.

von Hagen R. (hagen)


Lesenswert?

>Über dessen interne Substratdiode wohl eher.

Sind das separate Dioden am Pin oder die der Ausgangstreiber-MOSFETs ?

Gruß Hagen

von Alexander S. (esko) Benutzerseite


Lesenswert?

So halbwegs hab ich das jetzt kapiert.
Aber du kannst die Solarspannung nicht unbelastet messen, wegen der 
Schutzdiode. Und wie Simon anmerkte ist die Substratdiode auch noch 
parallel zu der Schutzdiode.

Hagen Re wrote:
> 2.) er kann VCC=Akku gegen interne AREF messen, sprich den
> Akkufüllstand, dabei wird Solarpanel nach GND kurzzeitig kurzgeschlossen
Wohl kaum über den selben Pin?

von Hagen R. (hagen)


Lesenswert?

Akku=VCC misst man gegen die interne AREF, oder anderst ausgedrückt du 
misst die interne AREF gegen VCC, da aber AREF stabil zb. 1.1 Volt ist 
rechnet man einfach in umgekehrter Richtund die variable VCC aus. Für 
diese Messung muß also nur der Akku direkt an VCC angeschlossen sein. In 
diesem speziellen Fall  sollte man das SOlarpanel aber kurzzeitg 
kurzschließen indem der Pin an dem das Solarpanels angeschlossen ist 
gegen GND zieht, also Ausgang/GND. Somit belastet das Solarpanel nicht 
VCC und somit Akku+ und kann sauber gemessen werden. Solarpanel kann 
denoch direkt am Pin gemessen werden, solang es ein ADC Pin ist. Dazu 
wird der Pin als Eingang geschaltet und gemessen mit AREF=VCC=Akku. Als 
Information gekommt man entweder raus das Solarspannung=VCC=Akkuspannung 
ist, ergo die Solarspannung ist mindestens so hoch wie die des Akkus. 
Ansonsten gibts nur noch eine Möglichkeit nämlich das die Solarspannnung 
< VCC =Akku ist. IN diesem Fall haben wir ja vorher VCC gegen AREF 
gemessen und wissen wie hoch VCC=Akkuspannung ist. Nun können wir mit 
dieser Referenz auch die Solarspannung ausrechnen falls sie < VCC ist.

Bei korrekt gewähltem Solarpanel kann dieses niemals den Akku überladen 
da dessen Innenwiderstand von ~3k dies verhindert (vom SOlarpanel der 
Innenwiderstand beträgt meistens 3k). Das Solarpanel wird bei vollem 
Akku so stark belastet das nur noch par hundert µA fließen können.

Solange der ADC Pin auf Input ist kann kein Strom vom Akku=VCC zurück 
ins Solarpanel fließen, selbst wenn dessen Spannung kleiner VCC ist.

Bei richtiger Softwaresteuerung fließt also niemals ein Strom über die 
internen Schutzdioden vom SOlarpanel nach Akku=VCC, und selbst wenn 
werden das selbst bei voll bestahltem Panel nicht mehr als 10-20mA sein. 
Dieser Strom über die Dioden würde sowieso nur für kurze Zeit der ADC 
Messung fleißen, nach der Messung schaltet man ja sofort diesen Pin als 
Ausgang entweder nach VCC oder GND.

Wenn also der AEDC Pin auf Inout ist muß die Solarspannung mindestens um 
+.5V größer sein als die an VCC, wegens dem Spanungsabfall an der 
Schutzdiode. Setzt man den Pin auf Ausgang/High so überbrückt man quasi 
die interne Schutzdiode mit einem P-MOSFET und umgeht so den 
Spannnungsabfall an der Schutzdiode. Da es ein P-MOSFET ist wird dieser 
leitend wenn dessen Gat auf GND gezogen wird, ergo ebenfalls keine 
Problem damit das nun Drain > Source ist.

Gruß Hagen

von Alexander S. (esko) Benutzerseite


Lesenswert?

Für die ausführliche Erklärung vielen Dank an dich Hagen.

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
Noch kein Account? Hier anmelden.