Forum: Mikrocontroller und Digitale Elektronik 433MHz & LCD Stromsparen


von humar1990 (Gast)


Lesenswert?

Hallo

Ich habe ein Projekt mit einem Atmega328 + 16x4 LCD + 433Mhz Empfänger 
umgesetzt und möchte, da das Ganze mit 3xAA Batterien läuft, den 
Strombedarf soweit wie möglich senken.
Der Mikrokontroller benötigt im PowerDown kaum Strom.
Das Problem ist, dass LCD und 433Mhz Empfänger da nicht mitspielen und 
trotzdem ca. 4mA fließen.

Der Größere Schmarotzer ist den 433Mhz mit 3mA im Leerlauf.
Mein Plan war eigentlich, dass ich GND auf einen Ausgang (PD7) hänge, 
welchen ich im Leerlauf einfach auf HIGH schalte.
Das komische ist das der Ausgang nicht auf HIGH geschalten wird wenn ich 
den µC in PowerDown versetze.
Hab auch schon einen anderen µC getestet mit demselben Fehlerbild.
Auch ein N-Kanal MOSFET der vom Ausgang geschalten wird brachte keine 
Besserung.
Wenn ich das Gate aber manuell mit GND verbinde ist der Empfänger aus 
und der Strom fällt ab.

Was mach ich falsch?

Ach ja. Das ist der Empfänger:
https://www.amazon.de/Aukru-Superregeneration-433M-receiver-module/dp/B00R2U8OEU/ref=sr_1_1?ie=UTF8&qid=1508163600&sr=8-1&keywords=433+mhz+sender+empf%C3%A4nger

Ich weiß dass das vermutlich China Schrott ist, funktioniert aber sonst 
ganz gut.

MfG!
Martin

von Typ (Gast)


Lesenswert?

humar1990 schrieb:
> Mein Plan war eigentlich, dass ich GND auf einen Ausgang (PD7) hänge,
> welchen ich im Leerlauf einfach auf HIGH schalte.

Schlechte Idee, Digitaleingänge liegen garnicht gerne deutlich unter 
GND.
Versorg den Empfänger über einen Pin vom 328p, dann kannst du ihn 
abschalten.

von humar1990 (Gast)


Lesenswert?

Typ schrieb:
> Schlechte Idee, Digitaleingänge liegen garnicht gerne deutlich unter
> GND.
> Versorg den Empfänger über einen Pin vom 328p, dann kannst du ihn
> abschalten.

Versteh ich nicht.
Meinst du vielleicht Analogeeingänge? Also PD6 & PD7?
Und warum unter GND ich schalt sie doch auf +5V?

MfG!
martin

von Kriebel (Gast)


Lesenswert?

@ humar1990

> Ich weiß dass das vermutlich China Schrott ist, funktioniert aber sonst
> ganz gut.

Der obigen Satzes zeigt, dass du nicht denken kannst.

von Johannes S. (Gast)


Lesenswert?

humar1990 schrieb:
> Das komische ist das der Ausgang nicht auf HIGH geschalten wird wenn ich
> den µC in PowerDown versetze.

das ist nicht unbedingt ungewöhnlich, da muss man im Datenblatt des 
konkreten µC nachsehen was der im jeweiligen Modus abschaltet.

von Sascha W. (sascha-w)


Lesenswert?

humar1990 schrieb:
> Typ schrieb:
>> Schlechte Idee, Digitaleingänge liegen garnicht gerne deutlich unter
>> GND.
>> Versorg den Empfänger über einen Pin vom 328p, dann kannst du ihn
>> abschalten.
>
> Versteh ich nicht.
> Meinst du vielleicht Analogeeingänge? Also PD6 & PD7?
> Und warum unter GND ich schalt sie doch auf +5V?
Man schaltet eigentlich die +5V ab und nicht die Masse, da ansonsten 
digitale Eingänge des Moduls eine kleiner Spannung (Masse) gegenüber der 
Masse des Moduls (+5V) haben könnten. Da dein Modul ja nur einen 
Datenausgang hat der am μC ein Eingang ist sollte das in dem Fall aber 
nicht weiter stören.

Sascha

von humar1990 (Gast)


Lesenswert?

humar1990 schrieb:
> Mein Plan war eigentlich, dass ich GND auf einen Ausgang (PD7) hänge,
> welchen ich im Leerlauf einfach auf HIGH schalte.

Muss mich korrigieren. Das Funkmodul hängt an PD5.
Hatte die Schaltung nicht vor mir.

Ich hab das zum probieren mal auf PB0 gehängt. Keine Änderung.
Außerdem hab ich die Schaltung so abgeändert, dass ich VCC und nicht GND 
schalte. Keine Änderung

Dann hab ich mal eine LED zwischen VCC und GND des Funkmoduls gehängt.
Man konnte sehen wie die LED kurz aus- und wieder eingeschalten wird als 
der Sleepmode aktiviert wurde.

Daraufhin hab ich den Code so geändert, dass das Modul nicht direkt vor 
dem Sleepmode ausgeschalten wird sondern in einem anderen Programmteil.
Das Modul wird ausgeschalten und bleit aus.

Meine Vermutung:
Ich wecke den µC auf wenn auf INT0 HIGH erkannt wird.
Und ich denke das ist der Fehler.
INT0 muss durch LOW ausgelöst werden wen sich der µC im PowerDown 
befindet. Richtig?

Ich hatte das schon mal wo gelesen. Da ich dazu aber einiges um löten 
muss hab ich es mal so probiert und es hat augenscheinlich trotzdem 
funktioniert.

MfG!
Martin

von Georg M. (g_m)


Lesenswert?

humar1990 schrieb:
> INT0 muss durch LOW ausgelöst werden wen sich der µC im PowerDown
> befindet. Richtig?

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);

mode:

LOW
CHANGE
RISING
FALLING

https://www.arduino.cc/en/Reference/AttachInterrupt



Das könnte auch interessant sein:
https://glaskugelsehen.wordpress.com/2013/06/09/arduino-atmega-mit-bewegungsmelder-aufwecken/

von humar1990 (Gast)


Lesenswert?

Georg M. schrieb:
> Das könnte auch interessant sein:
> 
https://glaskugelsehen.wordpress.com/2013/06/09/arduino-atmega-mit-bewegungsmelder-aufwecken/

Das hat mir sehr geholfen. Danke!

Ich hab jetzt die komplette Schaltung so umgebaut, dass die Taster beim 
Betätigen die Eingänge auf LOW ziehen.
Außerdem schalte ich jetzt das Funkmodul und LCD über VCC ein und aus.

Die Schaltung braucht jetzt im Power Down Mode ca. 200µA. Damit bin ich 
zufrieden.

Ein Problem hab ich aber noch.
Das LCD gibt nach dem Erststart (also wenn ich die Stromversorgung 
komplett abgeschlossen hatte) nur Mist aus.
Wenn der µC in den Power Down versetzt wurde und wieder aufgeweckt wird 
funktioniert das Display wieder.

Ich hab schon versucht zwischen einschalten und Initialisierung 5 
Sekunden zu warten. Keine Änderung.

Jemand eine Idee?

MfG!
Martin

von Frickelfritze (Gast)


Lesenswert?

humar1990 schrieb:
> Jemand eine Idee?

Timing Problem bei der LCD Initialisierung, nicht vor.

Die Zeiten zwischen den einzelnen Initialisierungs-Phasen
werden gerne mal "vernachlässigt".

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.