Hallo Zusammen
ich habe mein eigenes PIC32 Board mit ADP 1111 Step Up Wandler
aufgebaut..3,3V auf 5 V ( % deshalb weil ich noch 5 V für andere
Sensoren auf der Platiene brauche) die 5 Volt werden dann mit einem LDO
033C0 wieder auf 3,3 V geregelt.( sicher nicht die beste Lösung)
Der PIC mißt 3 AD Werte und sendet sie via UART @ 9600 weiter...
dabei nimmt er pro Kanal 25 Messewerte für eine Mittelwertbildung
Das ganze Programm läuft als Schleife
Mein Problem der PIC scheint fast 200 mA zu verbrauchen.
kann das Stimmen ?
Wenn der PIC nicht an ist ... also "Blank" zieht die Schaltung nur
ca. 10 mA.
Wie kann ich den Stromverbruach des PICs senken ?#
Gruß
Raph
Den genauen Typ hast du nicht angegeben, aber 200mA scheinen zu viel zu
sein.
Wirf einen Blick in das Datenblatt, dann siehst du die typische
Stromaufnahme unter bestimmten Bedingungen.
Zudem, miss einmal hinter dem LDO um zu sehen was der PIC wirklich
verbraucht.
Zur Reduktion des Stromverbrauchs solltest du ebenfalls das Datenblatt
lesen, dort stehen die Methoden drin.
Generell gilt:
Desto niedriger die Taktfrequenz, desto geringer der Stromverbrauch. Für
deinen Einsatz kannst du den Takt sehr sehr stark reduzieren, der PIC32
muss ja fast gar nichts machen.
Ebenso scheint der PIC nach deiner Beschreibung nach, ständig und somit
viel zu oft zu messen, was vermutlich quatsch ist. Überdenke wieviele
gemittelte Werte du letztendlich pro Sekunde am USART ausgeben willst.
Vielleicht jede Sekunde? Versuche mit Timer (bspw. Periode 100ms) und
Interrupts zu arbeiten. Der Timer löst einen Interrupt alle 100ms aus,
welcher bspw. die AD Wandlung startet (vermutlich hat der PIC einen
Buffer, in den du automatisch alle drei Messungen auf einmal legen
kannst.) und einen Counter jedes mal hochzählt. Mehr machst du im
Interrupt nicht. Also nur AD-Wandlung starten, Counter incrementieren,
Interrupt verlassen, nicht warten bis die Wandlung fertig ist.
In deiner Schleife wartest du nun bis die Wandlung abgeschlossen ist
(Flag überprüfen). Den Wert speicherst du, verrechnest du, ... Hat der
Counter 10 erreicht gibst du den Mittelwert auch gleich noch über USART
aus.
In der Zeit nach abgeschlossener Messung und vor neuer Messung liegen
sicherlich 99ms in der der uC nichts tun muss. In dieser Zeit kannst du
ihn schlafen legen. Aufgeweckt wird er durch den Timer, der den
Interrupt auslöst, der einen neue Messung startet, ...
Das mit dem Schlafen legen ist optional, das mit dem Timer und Interrupt
würde ich aber auf jeden Fall so wie erwähnt oder anders (vielleicht
noch geschickter) realisieren, damit du den USART nicht unnötig
voll-müllst und brauchbare Messwerte in festen Intervallen erhälst.
Raph schrieb:> Wenn der PIC nicht an ist ... also "Blank" zieht die Schaltung nur> ca. 10 mA.
klingt für mich, als sei was krank. Kann man dem µC denn schon anfühlen,
dass er warm wird (0,6W)?
Aber mit deiner Versorgung (3,3V -> 5V -> 3,3V) weiß man natürlich nicht
wirklich, wie viel Strom der Pic wirklich zieht und welcher Faktor an
Wandlerverlusten abgezogen werden muss. Kannst du den Controller nicht
mal auf die "primären" 3,3V klemmen um zu sehen, wie viel er wirklich
zieht?
Wenn es dann immer noch >60mA sind würde ich zuerst suchen, ob nicht
versehentlich ein IO eine niederohmige Last oder einen Kurzschluss
treibt. Ohne externe IO-Ströme sollte der interne Verbrauch laut
Datenblatt bei typ. 0,5mA / MHz Taktfrequenz liegen.
Falls es wirklich der interne Verbrauch sein sollte, den du reduzieren
musst:
1) niedrige Taktfrequenz wählen (so hoch, dass die Rechenleistung noch
für deine Aufgabenstellung reicht. Allzu viel rechnen muss der Bursche
in deiner Anwendung ja nicht).
2) keine Zeit in Warteschleifen verbringen (auf ADC warten bzw. auf UART
warten) sondern so oft wie möglich in den Sleep-Mode gehen und sich von
den Interrupts (ADC, UART, Timer) wecken lassen.
Vielen Dank für die guten Antworten !
ja der PIC32MX460F512L wird ein bisle warm wird er schon, circa 30-45
°C, sollte eigentlich nicht sein.
Da ich in selber eingelötet habe schon möglich das ein Kurzsschluß wo
sein kann...bei den 100 Pins
Ich betreibe ihn grad mit 8 MHZ Quarz und intern mit 80 MHZ
sicher reichen da auch schon 10 MHZ völlig aus ?
Könnte ich auch den internen Oscilator nehmen um Strom zu sparen ?
"0,5mA / MHz Taktfrequenz liegen" interner Takt oder externer Quarz ?
0.5 mA * 80 = 40 mA
Werde dann die nächsten Tage das Programm von einer Schleife auf
Interrupt Timer basiert umschreiben...
In der tat ist das nicht optimal mit meiner Spannungsversorgung bei der
nächsten Version der Platine werde ich das noch mal ändern...
Gruß
Raphael
Laut Datenblatt sollte er so um die 55mA verbrauchen. Vermutlich hast du
ein Pin kurzgeschlossen. Benachbarte Pins kannst du ja auch kurz mit
einem Multimeter durchmessen, dann siehst du ja am schnellsten ob ein
kurzer wo ist. Oder unter einer guten Lupe bzw. Mikroskop die Pins genau
betrachten.
Oder es ist etwas generelles falsch an deiner Schaltung.
Für das was du machst reichen 8MHz völlig aus.
Ein externer Quarz ist genauer, der interne wird auch für UART, vor
allem bei der geringen Geschwindigkeit, noch mehr als ausreichen. Zudem
braucht er nicht so lange zum Anschwingen, wodurch, falls du Sleep
nutzen willst, das Aufwecken schneller geht.
Wenn du von 3.3V auf 5V hochregelst um von da wieder auf 3.3V runter zu
kommen, warum verwendest du nicht gleich die schon vorhandene 3.3V?
Danke !
Die 3 Volt kommen von 2 AA Batterien (sorry hab ich vorher ausgelassen)
die am ADP1111 angeschlossen sind
Mikroskop hab ich da.
Im Falle eines Kurzschluß müßte dann wohl ein Pin der beim
initialisieren auf High geht... mit Masse kurzgeschlossen sein ? ...
weil der Stromverbrauch nur beim "rechnenden PIC" auftritt ?
Gruß
Raph
Du initialisierst ja vermutlich nicht alle Pins, also würde ich nicht
davon ausgehen, dass nur die im Programm verwendeten Pins das Problem
machen.
Zudem kann es ja auch an einem nicht I/O Pin liegen. Also einfach mit
dem Mikroskop die Zwischenräume anschauen, Flussmittel auftragen und mit
dem Lötkolben nochmal über die Pins, damit sich eventuelle Brücken lösen
und mit Entlötlitze überschüssiges Lötzinn entfernen. Ebenso kannst du
ja mit dem Multimeter alle benachbarte Pins durchpiepsen. Auch wenn's
100 Pins sind, ist es in 5 Minuten getan.
Was ist das für ein LDO? Vielleicht packt der gerade nur 200mA und es
ist dein Glück dass der PIC noch nicht abgeraucht ist ^^
Ich habe gerade einmal dein Step-Up Wandler angeschaut, sieht nicht
geeignet für deinen Einsatzzweck aus.
1. Es ist ein Buck/Boost-Converter, du brauchst nur einen Boost.
2. Er packt gerade einmal 100mA, dein uC braucht aber unter Vollast
schon 50mA, da bleibt nicht mehr viel übrig.
3. Die Schaltfrequenz ist sehr niedrig (vielleicht bewusst?), jedoch
brauchst du deswegen große Bauteile. Es gibt Wandler die Arbeiten mit
1MHz.
4. Er arbeitet nur bis 2V runter. Deine Akkus können aber auf 1.8V
entladen werden.
Der scheint auch nur 100mA liefern zu können. Also lastest du diesen
momentan voll aus, zum Glück liefert er nicht mehr, sonst wäre der PIC
vermutlich schon hinüber, wenn er es nicht schon ist.
Ansonsten ist es nicht allzu unüblich Step-Up -> LDO. Sonst brüchtest du
ja zwei Step-Up Wandler, und Step-Up Wandler sind meist kniffliger als
ein simpler LDO.
Raph schrieb:> Im Falle eines Kurzschluß müßte dann wohl ein Pin der beim> initialisieren auf High geht... mit Masse kurzgeschlossen sein ? ...
So wie du zu Beginn die Arbeit des µC beschrieben hast, benötigst du ja
eigentlich nur einen einzigen Ausgang zur UART. Setze alle anderen IOs
mal explizit auf Tristate (auch wenn dann irgendwelche Statusanzeigen
wegfallen). Wenn sich am Strom nichts wesentliches ändert, brauchst du
auch nicht nach einem Kurzschluss zu suchen. Falls doch, kannst du durch
Tristaten einzelner Ports herausfinden, wo der Kurzschluss liegt.
Als weiteren Schritt würde ich auch die von Frank vorgeschlagenen 8MHz
ausprobieren. Wenn sich der Strom (abzüglich der "Grundlast" von 10mA)
ca. um den Faktor 10 reduziert, hast du es tatsächlich nur mit den
internen Strömen des µC zu tun. Wahrscheinlich sind die 200mA ja an der
Batterie gemessen, und dort musst du ungefähr doppelt so viel Strom
reinstecken, wie auf der 5V-Seite rauskommt.
Hallo Zusammen
Vielen Dank für die konstruktive Hilfe
Ich hab jetzt mal den Strom der vom Programmiergerät and mein Board
gelifert wird gemessen ...ca 70 mA was ungefähr den 80 MHZ aus dem
Datenblatt entspricht...
hab jetzt den PIC32 auf 8 MHZ laufen und erzieht circa 40 mA ...
zuammen mit meinem ZIGBEE Modul kommt die Schaltung auf ca 170 -160 mA
der ADP 1111 packt das noch so ganz gut wird leicht warm, aber okay
Hier nochmal die genaue Konstelation
170 mA fliesen von der Battery rein...
und wenn man vom Programierprot misst sind es 47 mA was der PIC und das
Zigbee Modul verbrauchen
Wo gehen woll die anderen 120 mA hin ?...
Raph schrieb:> 170 mA fliesen von der Battery rein...>> und wenn man vom Programierprot misst sind es 47mA was der PIC und das> Zigbee Modul verbrauchen
Der Programmierport speist auf der 5V-Schiene ein?
Na ja, einen Faktor ~2 erwarte ich alleine als unerfreulichen
Nebenaspekt der Energieerhaltung beim Aufwärtswandler:
2,5V * 170mA (Batterie) = 5V * 85mA.
Egal wie man zur Physik als Fachrichtung steht, im realen Leben ist sie
oft eine Spaßbremse.
Dass auf der 5V-Schiene (bzw. der daraus linear runtergeregelten
3,3V-Schiene) keine 85mA ankommen sondern nur 47mA deutet darauf hin,
dass die Effizienz deines Aufwärtswändlers nicht nahe bei 100% liegt.
47mA/85mA=55% Nicht besonders gut, aber auch nicht ganz abwegig.
Hallo Achim
Na, der Programmieradapter von Mikroe ist nach dem LDO auf 3,3 V
angeschlossen...
2,5V * 170mA (Batterie) = 5V * 85mA. und danach LDO auf 3,3V
-> Danke für den Hinweis.mit den Wirkunggrad.. okay das ist vom
Wirkungsgrad nicht sehr clever
im Prinzip werden dabei 100 mA verschenkt...
am 3,3 V Strang sind auch noch 2x OPs MCP6004 die aber nicht aktive
sind...
Vielleicht ist bei experimentieren ein Tantal Kondensator kaputt
gegangen und liefert jetzt ein Stromverlust...?
Hallo Raph,
Raph schrieb:> das ist vom> Wirkungsgrad nicht sehr clever> im Prinzip werden dabei 100 mA verschenkt...
bin nicht ganz sicher, ob wir das selbe meinen.
Wenn du vom Wirkungsgrad redest, dann betrachte die Leistung, nicht den
Strom. Hätte dein ADP1111 einen Wirkungsgrad von 100%, dann würde er aus
die Eingangsleistung 2,5V*170mA=425mW aufnehmen und die selbe
Ausgangsleistung 5V*85mA=425mW abgeben. Es ginge keine Leistung
verloren, aber weil die Spannung doppelt so groß ist, bleibt nur der
halbe Strom. In Wirklichkeit ist der Wirkungsgrad des Aufwärtswandlers
natürlich kleiner als 100% und es kommen also weniger als 85mA auf der
5V-Schiene an.
Wie hoch der Wirkungsgrad des Aufwärtswandlers tatsächlich ist, kann man
nicht so ohne weiteres sagen. Du setzt die Spannung um ca. 2,5V hoch,
und am Schalter des ADP1111 bzw an der Diode bleiben rund 0,5V hängen.
Daher schätze ich mal grob, dass der Wirkungsgrad des ADP1111 nicht viel
besser als 2,5/(2,5+0,5)=83% werden kann. Er kann aber wesentlich
schlechter werden, wenn du schlecht geeignete Bauelemente (Spule, Diode,
Kondensatoren) gewählt hast oder die Schaltung schlecht aufgebaut ist.
Auch 55% Wirkungsgrad wären dann keine Überraschung.
Zu Beginn hattest du mal erwähnt, dass an den 5V noch Sensoren hängen.
Ein Teil des Stroms kann also dorthin abfließen und kommt gar nicht erst
zum LDO.
Der LDO regelt von 5V auf 3,3V runter hat damit bestenfalls einen
Wirkungsgrad von 3,3/5=66%. Hier teilt sich die Leistung zwangläufig auf
in 33%, die den LDO heizen, und 66%, die dein µC verheizen darf. In
Wirklichkeit werden natürlich auch die 66% nicht ganz erreicht, weil der
LDO auch einen Querstrom direkt nach GND hat.
Raph schrieb:> Vielleicht ist bei experimentieren ein Tantal Kondensator kaputt> gegangen und liefert jetzt ein Stromverlust...?
Na ja, ich kann nicht ausschließen, dass etwas kaputt ist. Ich kenne
deine Schaltung ja auch nicht im Detail sondern nur aus den
verschiedenen Teilbeschreibungen, die du gegeben hast. Aber ich habe
inzwischen den Eindruck, dass sich die hohen Ströme aus der Batterie
auch ohne ein defektes Bauteil erklären lassen.