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?
Geht doch ;) Immer nur eine Datei dranhängen und nicht die Vorschau anklicken. Keine BMP Dateien benutzen !
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.
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.