Hallo
ich versuche gerade, einen PIC an einem kleinen Solarmodul mit dem hier
schon öfter beschriebenen Puffer aus Kondensator und Schottky-Diode zu
betreiben. Nahe einer Lampe liefert das Modul genug Energie für den
Dauerbetrieb, weiter entfernt sinkt der Strom unter 200 µA, der PIC
stoppt (verzögert durch den Kondensator), die Solarspannung bleibt aber
noch bei 2,5 V. Nun habe ich den PIC so programmiert, dass er per
Watchdog nur ca. 4 x pro Sekunde aufwacht, einen Piezo knacken lässt und
sofort wieder in den SLEEP-Modus geht. Während dem SLEEP sollte doch
eigentlich der Kondensator laden können und dann ausreichend Energie für
ein paar Millisekunden Betrieb bereithalten. Das ist aber nicht der
Fall, der PIC geht bei der gleichen Lichtmenge aus wie im Dauerbetrieb
(auch mit Piezodauerton). Das habe ich sowohl mit einem Goldcap als auch
mit einem kleinen Tantal getestet, der für ca. eine Sekunde Betrieb
Energie speichern kann.
Nun habe ich den Stromverbrauch mal gemessen und festgestellt, dass auch
im SLEEP der gesamte verfügbare Strom (bis einige mA gestestet) durch
den PIC fliesst (keine weiteren Teile, wirklich nur ein PIC12F675 und
das Solarmodul). Muss ich die Pins noch irgendwo anschließen (+, -,
Widerstände) oder im Programm was konfigurieren damit wirklich nur 1 µA
verbraucht wird?
Vielen Dank
Ohne Schaltplan/Programm wirst du wohl kaum Antworten bekommen.
Ein paar Tips: Schalte das AD-Modul aus bevor du schlafen gehst.
Schalte unbenutzte Pins auf Ausgang.
@Busoni
Wo wird der sleep-Befehl aufgerufen? Der Controller geht nicht in den
Sleep-Modus, wenn der sleep-Befehl am Ende einer
Interrupt-Service-Routine (z.B. Timer-Interrupt) aufgerufen wird --> er
muss in der main-Schleife aufgerufen werden.
Gruss
>Interrupt-Service-Routine (z.B. Timer-Interrupt)
Interrupts verbieten bevor du schlafen gehst ist auch
eine gute Idee wenn der WDT zum wecken benutzt wird.
Und das Komparatormodul ausschalten könnte auch helfen.
> Ohne Schaltplan/Programm wirst du wohl kaum Antworten bekommen.
tut mir leid, ich bekomm' da nichts hochgeladen, sondern nur immer
wieder die meldung "Bitte den Dateianhang vor dem Absenden noch einmal
auswählen!" und externe bilder gehn auch nicht einzubetten.
die mess-schaltung ist eh sehr simpel: + und - an den entsprechenden
pins am PIC, das war's. den strom hab ich zwischen masse und PIC sowie
zwischen pluspol und PIC gemessen.
der PIC wird so initialisiert:
1
BCF STATUS,RP0
2
CLRF GPIO
3
MOVLW 07h
4
MOVWF CMCON ;
5
BSF STATUS,RP0
6
CLRF ANSEL ; alle digital
7
CLRF TRISIO ; alle output
und dann geht's am anfang von main auch schon in den SLEEP.
ich hab das gefühl, dass irgendwas grundsätzlich verkehrt ist. wie
können da mehrere mA durchfließen wo es nur ein uA sein sollte?
OK, bei der Solarschaltung lag es vielleicht doch an der zu geringen
Spannung unter Last (hatte vorher nur die Leerlaufspannung gemessen).
Bei nur 1 V hilft natürlich auch kein Kondensator.
Trotzdem versteh' ich nicht, warum der Strom durch den PIC fast wie
kurzgeschlossen hindurchweht. Selbst wenn man alle Stromfresser
aktiviert hat, sollten es doch nie mehr als ein paar 100 uA sein bei 4
MhZ mit internem Oszillator. Oder messe ich falsch? Ich verbinde die
Masse am Messgerät mit der des Solarmoduls und den Pluspol vom Messgerät
mit der Masse am PIC.
Mess doch mal welchen Innenwiderstand dein Multimeter bei der mA Messung
hat.
Sicher einige Dutzend bis Hundert Ohm.
Kann gut sein das der Controller einschaltet, der Stromverbrauch
ansteigt, die Versorgungsspannung zusammenbricht und der Controller
resetet, sodass es wieder von vorne losgeht.
Kann sein, dass das beim SLEEP so ist, ich kann das nicht messen - oder
kann ich den Widerstand des Gerätes messen ohne ein zweites? Der
Controller läuft ja durchaus, bei der Variante mit Piezo piepst er
kontinuierlich, wenn etwa 200 uA fließen. Nur wenn ich dann noch mehr
Licht scheinen lasse, fließt auch entsprechend mehr Strom, bis zu
einigen mA.
Wenn ich dann den SLEEP Befehl einbaue, klickt der Piezo erwartungsgemäß
mit der WDT-Frequenz (der Pin an dem der Piezo hängt wird ein- und
gleich wieder ausgeschaltet, dann wird geschlafen), woraus ich schließe,
dass das schlafen funktioniert. Nur der gemessene Strom ist der selbe.
Wenn ich jetzt das ganze genau in der Beleuchtung liegen lasse, wo der
Controller gerade nicht mehr genug Strom für den Vollbetrieb hat, müsste
doch eigentlich der Kondensator während dem SLEEP laden und die paar
Millisekunden des aufwachens jeweils überbrücken können. Tut er aber
nicht, weil anscheinend der Strom auch im Sleep über den PIC fließt.
Ich kenn diesen PIC nicht und PIC im Allgemeinen wenig. Aber bei den AVR
ist das Thema Stromspar ein laengeres Kapitel im Datenblatt wert.
Mutmassungen bringen wenig. Was spricht dagegen, dieses Kapitel beim PIC
genau durchzulesen ?
Direkt über Stromsparen steht da kein eigenes Kapitel, nur ne Tabelle
wieviel im Sleep verbraucht wird und was die einzelnen Funktionen noch
extra kosten (WDT, A/D, usw). Alles vernachlässigbar wenig. Es steht
nirgends, dass man diese oder jene Option an- oder ausschalten soll weil
der PIC sonst allen Strom verbraucht der zur Verfügung steht und mehrere
mA zieht.
Ich dachte, ich müsste vielleicht die nicht benötigten Pins mit Masse
oder Spannung verbinden oder irgendeine Option in der Konfiguration
setzen um das Ding abzudichten.
Naja, vielleicht ist es ja wirklich nur die Messung bzw die schwache
Solarzelle. Aber dass die Solarzellenspannung bei angeschlossenem PIC im
Sleep so stark einbricht (von 4 auf 1) ist doch auch komisch. Wenn nur
ein paar uA verbraucht werden, sollte sie eigentlich nahe an der
Leerlaufspannung der Zelle bleiben. Siehe auch die Kurvengrafik
"Solarzelle unter Last" hier:
http://www.sprut.de/electronic/solar/solar.htm
Ich kann leider nicht genau helfen. Aber beim AVR spart man sehr viel,
wenn man den Oszillator abstellt. Und dafuer einen 32kHz quarz an einem
Pinpaar laufen laesst. Noch mehr spart man wenn man keinen solchen hat
und auch keinen Clock mehr hat. Zum periodischen Aufwecken kann man
einen RTC nehmen, der braucht noch 300nA. Zu beachten ist jeweils die
Aufweckzeit, bis der Oszillator des AVR wieder stabil laeuft. Ich wuerd
mal annehmen, dass das der PIC alles auch kann...
Es ist ja eh 99% der Zeit nur der WDT an und auch sonst sind alle
Sparmaßnahmen getroffen. Es sollten höchstens 10 uA verbraucht werden,
aber man kann trotzdem das über 100-fache durchschicken. Als ob alle
Pins auf Ausgang gestellt wären und direkt an Massen hängen würden. Sie
sind aber garnicht verbunden.
Wie auch immer, es ist jedenfalls großartig, dass sich hier rund um die
Uhr hilfsbereite Menschen tummeln. Das lindert zumindest meien
Verzweiflung etwas. Vielen Dank allerseits.
Oliver V. wrote:
> Naja, vielleicht ist es ja wirklich nur die Messung bzw die schwache> Solarzelle.
Warum machst Du die Versuche resp. Messungen nicht zuerst mal an einer
sauberen Stromquelle wie Labornetzteil oder so?
Wenn der PIC dann im Sleep in den uA Bereich geht, weisst Du, dass die
Register und die Peripherie korrekt eingestellt sind.
Wenn der aber auch dann im Sleep im mA Bereich verbraucht, musst Du
weder bei der Solarzelle noch beim Goldcap suchen.
Was ist denn an dem PIC sonst noch so angeschlossen ?
Mach doch mal den Piezo ab und miss dann nochmal.
>Ich verbinde die>Masse am Messgerät mit der des Solarmoduls und den Pluspol vom Messgerät>mit der Masse am PIC.
Wenn du da mal nicht den Ladestrom vom Kondensator misst.
> Warum machst Du die Versuche resp. Messungen nicht zuerst mal an einer> sauberen Stromquelle wie Labornetzteil oder so?
ja das werd ich machen, hab zwar kein labornetzteil, aber der PIC
programmer kann auch 2 bis 5 V zum betrieb der beispiel-schaltung
liefern. dann poste ich hier die schaltung und den quelltext.
> Wenn du da mal nicht den Ladestrom vom Kondensator misst.
den hab ich schon rausgenommen.
So, nachdem ich die Schaltung mit dem PICkit als Stromquelle gemessen
habe ist alles wie es sein soll, minimale Ströme im Sleep. Mit
Solarzelle & Kondensator funktioniert es jetzt plötzlich auch, ich weiss
nicht ganau was zuvor das Problem war. Ich hatte erst eine Demo-Platine
verwendet, vielleicht war die so aufgebaut, dass da immer Ströme
flossen. Bei der später selbst aufgebauten war dann der MCLR Pin nicht
verbunden, obwohl der Master Clear Reset aktiviert war - da kann man
dann natürlich alles mögliche messen.
Jedenfalls läuft jetzt alles so wie geplant, der PIC bildet mit einer
Taschenrechner-Solarzelle, einem Kondensator und einem Piezo ein
Taktell, das auch im Dämmerlicht noch regelmäßig klickt (die
WDT-Frequenz ist allerdings zu instabil und zu grob einstellbar für eine
ernsthafte musikalische Verwendung, war ja auch nur als Test gedacht).
Das einzige Problem ist jetzt noch, dass der PIC, einmal ganz
ausgegangen, eine recht hohe Leistung braucht, um wieder anzuspringen.
Bei der Messung mit Spannung vom Programmer zeigte sich, dass ca 180 uA
fließen, wenn der PIC aus ist (MCLR low). Um über diese Leistung zu
kommen und den Kondensator zu laden, muss man das ganze schon ein paar
Sekunden direkt vor die Lampe halten.