PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Powerpack mit Arduino an und aus machen



pupo
28.01.2018, 04:57
Hallo,

ich bin relativ neu mit dem Thema und habe wenig Ahnung.
An einem Powerpack habe ich einen RaspberryPi 3B+ hängen, und alles läuft super. Er soll nur so alle ein, zwei Wochen für fünf Minuten angehen und ansonsten aus sein, um Strom zu sparen. Dazu habe ich mir gedacht, dass ich einen Arduino Pro Mini einsetze, der ihm den Strom ausschalten soll.
Ich habe also das Powerpack auseinandergenommen, und im Inneren einen 3,7 V LiPo Akku gefunden. Daran hängt ein Chip, der sie irgendwie hochboostet auf die 5V in der USB-Buchse. Das Powerpack hat einen Taster, der die Spannung im USB-Stecker an- und ausschaltet, also genau das, was ich brauche.
Meine Frage: Wie schalte ich mit dem Arduino diesen Taster aus und an?

Ich habe einen Arduino in 3,3-Volt-Ausführung genommen und ihn direkt an die Batterie angeschlossen, passt ja ungefähr. Am Taster liegen 5 Volt an. Wenn man ihn drückt, liegen immer noch 5 Volt an, aber andersrum gepolt. Ich habe einen Transistor BC548 als Überbrückung des Tasters angelötet und die Basis testweise kurz an VCC vom Arduino gehalten, siehe da, der Raspi geht tatsächlich an (die Schaltung scheint nicht ganz zuverlässig, aber es scheint halbwegs zu gehen)
Wieder ausschalten geht nicht, da die Polung am Schalter dann ja andersrum ist. Also habe ich noch einen Transistor BC548 an den ersten gelötet, also den Kollektor vom einen an den Emitter vom anderen und umgekehrt. Trotzdem wird die Spannung in der USB-Buchse nicht abgeschaltet, wenn ich die Basis vom zweiten Transistor an VCC beim Arduino halte.

Sollte ich vielleicht ein 3V-Printrelais benutzen, denn das lässt ja glaube ich Spannung in beide Richtungen durch? Oder welche Lösung empfehlt Ihr mir?

Gruß, Pupo.

021aet04
28.01.2018, 07:40
Ich kenne die Schaltung nicht, aber ich glaube kaum das dort mit +-5V gearbeitet wird. Ich denke das du falsch misst, auf welches Potential misst du? Das 2te ist, du hältst B direkt an VCC? Das hält der Transistor nicht aus, der benötigt einen Vorwiderstand.

MfG Hannes

oberallgeier
28.01.2018, 08:21
.. RaspberryPi 3B+ .. soll nur so alle ein, zwei Wochen für fünf Minuten .. angehen ..Dir ist schon klar, dass der arduino alleine auch Strom frisst - sogar im Sleep-Modus!?

Ein arduino-nano-Clone frisst bei mir 20 mA (grad eben gemessen bei 7V Versorgung, bei 5V etwas drüber), der Controller alleine wohl nur so 1 mA. Den Rest braucht halt die Beschaltung: Leuchtdioden, Widerstände und so. Da wirst Du beim arduino selbst mit dem Controller im Sleepmodus die knappen 20 mA als Dauerbedarf haben. In einer Woche braucht der arduino dann an die 3 Ah (7 x 24 Std x 0,02 A) . Nur mal um eine Gefühl zu haben wieviel das ist: 3Ah sind etwa zwei Dreierpacks AA-Akkus in Serie - pro Woche.

Selbst der nackte Controller wird im Sleepmodus mit ner Beschaltung an einem treibenden Pinn einen merklichen Strombedarf haben. Natürlich weniger als der RasPi *gg*.

HaWe
28.01.2018, 12:22
ist das denn überhaupt gefahrlos möglich, dem Raspi immer einfach den Strom auszuschalten, ohne ihn korrekt mit shutdown herunterzufahren? Er ist ja keine einfache MCU wie ein Arduino, und ich habe da immer etwas Bedenken wegen des Linux OS mit -zig ständig laufenden Programmen und Daemons, die u.U gerade Schreibzugriffe auf SD-Files haben, was dann beim brutalen Ausschalten zu Dateischäden führen kann...?

Ceos
28.01.2018, 12:31
ohne ihn korrekt mit shutdown herunterzufahren

das ist möglich per GPIO einzuleiten und auch ne feedbackleitung zu machen für "fertig mit shutdown"

außerdem kann man schäden vermeiden wenn man darauf verzichtet unnötige dienste zu laden

ich habe hier einen rpi, der nur ein und ausgeschalten wird und bisher zumindest noch keine schäden, der schreibt aber aucgh nciht sondern macht nur read only aufgaben

HaWe
28.01.2018, 12:50
das ist möglich per GPIO einzuleiten und auch ne feedbackleitung zu machen für "fertig mit shutdown"
das ist auch immer meine Lösung, ich selber schalte möglichst nicht einfach ab ohne vorherigen shutdown Befehl. Ich meine auch nicht, dass sonst ständig was passiert, aber es könnte mit zunehmender Häufigkeit auch zunehmend wahrscheinlicher werden.

pupo
28.01.2018, 13:42
Danke soweit für die Antworten.

Hannes: Okay, also mit Widerstand - wie hoch sollte der sein? Ich habe noch eine ganze Menge Transistoren und kann es ggf. noch mal mit einem neuen versuchen. -
Die Spannung messe ich direkt am Schalter, also zwischen den Kontakten. Da ist mal minus, mal plus 5 Volt (um genau zu sein 4,63 V, habe noch mal nachgemessen). Ich hatte den Verdacht, dass das Ausschalten deshalb nicht geht, denn die Basis hatte ja Bezug direkt zum Potential der Batterie und Emittor/Collektor wären dann ja aber auf das Potential dieses Boosters bezogen.

Ceos:
Der Chip soll ja die meiste Zeit im Powerdown laufen. In dem Link hier
http://home-automation-community.com/arduino-low-power-how-to-run-atmega328p-for-a-year-on-coin-cell-battery/
steht etwas von 0.05 mA, also werde ich einfach die LED entfernen, sobald alles klappt. (ohne jetzt zu wissen, wieviel MHz mein Arduino hat)

HaWe: Der Raspi wird angehen, zwei Minuten lang anbleiben, und sich dann automatisch per shutdown -h wieder herunterfahren, da schreibe ich dann einfach ein Skript. Wenn er nach weiteren drei Minuten immer noch nicht geschafft hat, sich runterzufahren, ist er selber schuld.

021aet04
28.01.2018, 20:57
Einen genauen Wert kann ich dir nicht nennen, den sollte man berechnen (Basisvorwiderstandsberechnung), der Wert sollte aber etwa 5kOhm betragen. Der genaue Wert hängt vom Transistor, der Steuerspannung und den Laststrom ab, dadurch muss man diesen berechnen.
Spannung misst man immer gegen ein Bezugspotential (Masse).

Bevor du am Arduino herumbastelst würde ich einen frischen AVR (Atmega oder Attiny) nehmen und diesen programmieren. Bei Bedarf kannst du den Arduino Bootloader hochladen. Für die erste Programmierung, wenn du einen Bootloader hochlädst, oder sonst bei jeder Programmierung benötigst du ein Programmiergerät. Soweit ich weiß gibt es für Arduino eine eigene Firmware damit der Arduino zum ISP Adapter (Programmiergerät) wird. Diese dürfen, im Gegensatz zum Arduino, mit max. 5V versorgt werden, da diese keinen Spannungsregler besitzen.

MfG Hannes

pupo
28.01.2018, 22:00
Ist es für mich als Anfänger nicht etwas kompliziert mit dem Setzen der Stopbits oder wie die heißen, bootloader hochladen, und was es da alles gibt? Der Arduino hat keine 2 Euro gekostet und ist so groß wie zwei Fingenägel.

Aber vor allem, ist meine Idee mit dem Relais sinnvoll oder nicht? Das Powerpack war als Ersatzakku gedacht, falls das Handy mal alle ist. Im Innern besteht er aus einem großen Akku und diesem komischen Computerchip. Ich habe keine Ahnung, wie er funktioniert, und wo ich die Spannung messen soll, die am Schalter anliegt. Wieso am Schalter mal hier und mal da der Pluspol liegt, ist mir ein Rätsel. Ich bin langsam schon am überlegen, ob ich noch einen Stellmotor einbauen soll, der auf den blöden Schalter drückt.

Gruß, Pupo

Rabenauge
28.01.2018, 23:34
Andere Idee (mangels Ahnung vom Raspi weiss ich nicht, ob das so geht): lässt sich ein Raspi mit High auf irgendeiner Leitung starten?
Würd mich nicht wundern, wenn....dann könnte man eine externe RTC (DS3231) auch benutzen, die liefern nämlich (mittels eingebautem Wecker) ein solches Signal auch dann, wenn ringsrum alles tot ist.
Da die RTC sowieso ne eigene Stromversorgung hat, läuft die auch alleine weiter, und schickt halt zu eingestellten Zeiten das Aufwach-Signal. Und wenn der Raspi dann mal läuft, kann er sich selber den Wecker aufs nächste Datum stellen.
Runterfahren kann er ja selber, wurde weiter oben gesagt...das dürfte die einfachste Lösung sein.

Natürlich kann man einen Pro Mini nackig machen (LED's runter, Spannungsregler runter) und dann mit zwei Mignonbatterien laufen lassen.
Im Tiefschlaf braucht sowas dann wenige µA- und zum aufwecken nimmt man ebenfalls ne RTC, mit eingebautem Wecker.
Die löst dann einen Interrupt aus, der den Arduino weckt.
Das läuft mit zwei Mignonzellen (ab ungefähr 2.5V läuft ein nackter ProMini schon) mal locker zehn Jahre....(eher entladen die Batterien sich selber früher) aber ist definitiv nix für Anfänger. Die Gefahr, dass der Schlaf zu tief wird, ist gross (und dann bekommt man den Arduino nicht mehr wach).
Hier (http://www.instructables.com/id/Arduino-Sleep-and-Wakeup-Test-With-DS3231-RTC/) dazu was (auf die Schnelle gefunden).

Versuch erst gar nicht, in einer Powerbank rumzubauen, das wird ziemlich sicher schiefgehn, hab ich grade durch (mit drei verschiedenen, nicht eine taugt _dafür_). Da steckt mehr drin, als man glaubt-einige schalten sich auch bei zu geringer Stromaufnahme wieder ab. Inzwischen hab ich das ad acta gelegt-und benutze nen ganz normalen LiPo samt Spannungsregler, wesentlich stressfreier.

021aet04
28.01.2018, 23:37
Relais würde gehen, du könntest ein Signalrelais nehmen und diesen parallel zum Taster hängen. Mit einem kurzen Impuls (z.b. 100ms) das Relais ansteuern der den Pack ein/ausschaltet. Den Taster würde ich aber nicht entfernen, so kannst du auch ohne Controller den Akku schalten.

So schwer ist es nicht einen uC zu programmieren. Die Fusebits (nicht Stopbits) sollte man mit bedacht ändern bzw wenn man sich nicht auskennt lassen. Grundsätzlich läuft ein AVR mit einem internen RC-Oszillator bei 8MHz, jedoch wird dieser noch durch 8 geteilt. Somit hast du eine Frequenz von 1MHz. Damit ein neuer AVR läuft musst du nur die Versorgung (max. 5V) anschließen, zwischen VCC (pos. Versorgungsspannung) und Reset einen Widerstand (10k), gegen Störungen je 1nen 100nF Keramikkondensator zwischen VCC und GND bzw Reset und GND. Noch ein Programm laden und er läuft. Damit du direkt aus der Arduino IDE programmieren kannst musst du noch einen Bootloader hochladen, das geschieht aber nur 1malig, danach kommen nur deine Programme.

PS: Stopbits hast du bei seriellen Datenverbindungen wie z.b. RS232.

MfG Hannes

pupo
29.01.2018, 21:01
Hallo Rabenauge,

so eine RTC habe ich sogar irgendwo hier rumliegen, aber eigentlich dachte ich mir, dass ich die Zeit einfach mit dem internen Oszillator des Arduinos berechne. Das delay() geht ja glaube ich bis maximal 72 Minuten oder so. Ich teile einfach eine Woche durch diese 72 Minuten und baue eine Zählschleife ein. Denn erstens habe ich nur noch ganz wenig Platz - es passt alles gerade so rein - und zweitens brauche ich es wahrscheinlich nicht so sehr genau.
Es reicht übrigens nicht, wenn der Raspi sich runterfährt, denn er braucht im runtergefahrenen Zustand fast genausoviel Strom wie normal. Man MUSS ihm den Strom abwürgen.

Mit der Powerbank will ich es versuchen, weil ich es schon ausprobiert habe, den Raspi drüber laufen zu lassen, es funktioniert über viele Stunden super, ich habe also keine Bedenken.
Danke für den Link, es steht aber nichts davon drin, wann und wieso er nicht wieder aufwacht.


Hannes,
danke für die Info, dann kann ich es ja machen mit einem Relais. Ist ein Signalrelais dasselbe wie ein Printrelais?
Das mit dem Mikrocontroller will ich auf jeden Fall mal probieren, aber im Moment kommt es mir ehrlich gesagt noch etwas heftig vor. Bis kurz vor "noch ein Programm laden und er läuft" würde ich mir ja alles zutrauen, aber wo ich dann wie das Programm drauflade... und den Bootloader... na ja vielleicht stelle ich es mir alles viel komplizierter vor, als es ist. Im Moment bin ich jedenfalls froh, wenn ich einfach den Arduino nehme, paar Käbelchen anlöte und alles ist gut. Für den Augenblick bin ich froh über die Lösung mit dem Printrelais.
Also danke nochmal für die Antworten, ich hoffe das Signalrelais ist nicht so groß, ich habe schon eines bestellt.

AAAAH wichtige Frage fällt mir gerade ein. Kann ich die RTC auch ohne einen Arduino benutzen? Also dass die ihr Signal direkt an das Relais abgibt?

021aet04
29.01.2018, 22:14
Printrelais und Signalrelais muss nicht zwingend das gleiche sein. Printrelais ist einfach ein Relais das man auf eine Platine lötet, das kann auch ein leistungsstarkes Relais sein das z.b. 16A Schaltet. Ein Signalrelais ist, wie der Name schon sagt, für Signale (niedrige Spannungen und Ströme) ausgelegt. Bei Relais für hohe Ströme kann es sein das die nicht richtig schalten wenn der Strom bzw die Spannung zu niedrig ist.

Das mit dem uC stellst du dir zu kompliziert vor.

MfG Hannes

pupo
30.01.2018, 19:46
Mein Signalrelais ist eben per Post gekommen. Es ist gleichzeitig auch ein Printrelais, aber ich werde es trotzdem einfach so benutzen, ohne Platine. Im Vergleich zu den anderen Komponenten ist es ziemlich riesig. Aber trotzdem scheint es die sinnvollste Lösung zu sein. Ich habe mir einige ATtinys85 in China bestellt. Eigentlich mehr aus Neugier, denn die Arduinos sind meiner Meinung nach für die meisten Aufgaben klein genug und irgendwie super praktisch. Sobald sie hier sind, werde ich probieren, sie zu programmieren. Vermutlich grille ich sie einen nach dem anderen ;-)

Viele Grüße, Pupo

P.S. - Da mir auf die Frage mit der RTC keiner geantwortet habe, soll einfach der Arduino hochzählen, wird schon ungefähr hinkommen, ich brauch es nicht auf die Sekunde genau.

Rabenauge
30.01.2018, 20:58
Vielleicht weil wir es nicht wissen? Dafür ist eine RTC nicht gedacht, ohne Verstärkung des Signals wird es nich klappen.
Aber das steht im Datenblatt zu deinem Relais.

Ich wollte noch was sagen, aber da du wild entschlossen bist, das so durchzuziehen, wie du denkst (mach dir nix draus, ich bin auch son Ochse manchmal), dich aber nicht wirklich beraten lässt, mach mal- und berichte.

i_make_it
31.01.2018, 06:20
AAAAH wichtige Frage fällt mir gerade ein. Kann ich die RTC auch ohne einen Arduino benutzen? Also dass die ihr Signal direkt an das Relais abgibt?

Wenn das Relay das Protokoll der Uhr verstehen würde und das was da kommt mit einem Sollwert vergleichen könnte, könnte das gehen.
Aber in der Praxis versteht ein Relay 1Bit (0=aus, 1=an) und so eine Uhr sagt:"beim nächsten piep ist es: 4 Stellen Jahr, 2 Stellen Monat, 2 Stellen Tag, 2 Stellen Stunde, 2 Stellen Minute, 2 Stellen Sekunde, 2-4 Stellen Sekundenbruchteile" (kommt auf die RTC an).
Und das ganze sagt die RTC jedes mal wenn man sie anruft (pollt) und nicht von selbst (zumindest die die man so für Arduino für kleines Geld bekommt).

Also in der Praxis geht es nicht.

021aet04
31.01.2018, 07:41
Mit dem RTC sollte es auch funktionieren. RTCs haben normalerweise einen Alarmausgang. Du musst jedoch die Uhrzeit einstellen, willst du einen Alarm generieren stellst du auch eine Alarmzeit ein. Man müsste noch testen wie lange das Signal ein/ausschalten anliegen darf. Wenn es nur eine gewisse Zeit anliegen darf muss man das Alarmsignal zurücksetzen.

Das Relais darf aber nich direkt angeschlossen werden (beim Arduino bzw uC auch nicht), sondern benötigt einen Verstärker (Transistor oder Mosfet), Freilaufdiode nicht vergessen.

MfG Hannes

pupo
01.02.2018, 22:00
Hannes, danke für die Hinweise, ich habe mir schon Dioden bestellt. Zwischendurch habe ich überlegt, zwei Kontakte eines Transistors als Diode zu missbrauchen, aber ich warte doch lieber auf die richtigen Dioden. Ja und das mit dem Transistorverstärker wusste ich schon, es gibt ja genügend Hinweise im Netz. Ich werde wahrscheinlich doch den Arduino benutzen, obwohl die RTC mit der von dir beschriebenen Lösung eindeutig besser wäre. Der einzige Grund ist, dass ich noch nie etwas mit einer RTC gemacht habe und das ganze eh schon kompliziert genug für mich als Anfänger ist. Auch vom Platz her ist es bequemer, weil die RTC noch da Batteriefach hat und der Platz eh schon sehr sehr eng ist. Das ganze muss in den Bembel unseres Gesangvereines passen und darf nur wenige cm hoch sein.
Das Signal kann unbegrenzt lange anliegen, ich hatte beim Powerpack, bevor ich es auseinandergenommen hatte, mal ziemlich lange auf den Kontakt gedrückt, es geht an und bleibt dann einfach an, egal wie lange man drückt. Ebenso beim Ausschalten. Wahrscheinlich deshalb auch die Verpolung der Kontakte, damit der Microcontroller im Powerpack weiß, ob er gerade an- oder ausschalten soll.

Sly, ist gut, ich werde dann berichten ob es geklappt hat.