Forum: Mikrocontroller und Digitale Elektronik Atmega328P SIM900 Spannungsversorgung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Alex (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Experten,
ich benötige mal eure Hilfe.

Projekt: Alarmanlage für abgelegene Garage ohne Stromversorgung.
Bei auslösen des Alarms, wird eine SMS von einem SIM900 Modul (Arduion 
Shield) versendet. Programmiert wird das Ganze in der Arduino IDE.
Die Spannungsversorgung sollen 4x 1,2V Akkus übernehmen.

Realisierung: (Schaltung und Code im Anhang)
Ein Atmega328P befindet sich im PowerDown Modus und soll über einen 
Interrupt aktiviert werden. Der Interrupt-Impuls soll über einen 
Magnetschalter am Garagentor gegeben werden. Sobald der Magnetkontakt 
unterbrochen wird, liegt am Pin4 HIGH an und der Arduino startet das 
Programm. Ausgang 12 wird auf HIGH gesetzt, Transistor schaltet die 
Masse zu und das Relais zieht an. Mit dem Relais-Schließer, wird die 
Betriebsspannung vom SIM900 Modul geschalten und im Anschluss die SMS 
versendet. Danach geht der Atmega wieder in den PowerDown Modus.

Problem:
Ohne die Last (SIM900 Modul) funktioniert alles. Sobald ich aber das 
SIM900 Modul zuschalten will, stoppt der Atmega das Programm und beginnt 
den Code von vorn. Am Anfang hatte ich Probleme, dass das Relais 
überhaupt schaltet. Nach dem ich aber die beiden Elkos integriert habe, 
zieht zu mindestens das Relais an. Kann es sein, dass beim Schalten des 
Relais(mit Last), der Atmega durch Störimpulse nicht richtig arbeitet? 
Reichen vielleicht die beiden Elkos zur Spannungsstabilisierung nicht 
aus? Wenn ich das SIM Module direkt an die Betriebsspannung klemme 
(nicht über den Atmega zuschalte), funktioniert auch alles. Leider ist 
dies keine Option, da das Arduino-Shield so 4mA zieht und damit der 
Stromverbrauch zu hoch ist.

Ich hoffe ihr habt eine Idee und könnt mir vielleicht helfen.
Schon mal vielen Dank an alle fleißigen Helfer hier im Forum. Eure 
Beiträge sind immer sehr hilfreich.

VG
Alex

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Du solltest wenigstens einen 10kΩ Pull-Up und einen 100nF Kondensator an 
den Reset Pin machen. So ein offener Pin reagiert empfindlich auf 
elektromagnetische Felder.

C4 und C5 helfen, das war eine gute Idee.

Wenn du die Stromversorgung des SIM900 so hart einschaltest hast du ein 
Problem mit dem Einschaltstrom. Das Ding enthält ja Kondensatoren, die 
geladen werden wollen.

Benutze eine Strombegrenzung. Wenn du anstelle des Relais einen 
Transistor verwendest, ist das relativ einfach über den ausreichend 
begrenzten Basis-Strom des Transistors machbar.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Ich sehe gerade noch was: Wenn du AREF fest mit VCC verbindest, kannst 
du die interne Referenz mit 1,1V nicht nutzen. Da gehört normalerweise 
nur ein Kondensator dran! Du kannst dann immer noch per Software VCC 
drauf legen (oder eben 1,1V).

Hast du alle unbelegten Pins mittels internem Pull-Up auf eine 
definierte Spannung gebracht? Wenn nicht, mache das mal. Oder 
konfiguriere sie als Ausgang.

: Bearbeitet durch User
von Alex (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

vielen Dank für deine Antwort.
Habe ich den 10kΩ und den 100nF richtig eingezeichnet? Wenn ja, werde 
ich die Schaltung morgen anpassen.

"Wenn du anstelle des Relais einen
Transistor verwendest"
Welchen Transistor würdest du mir hier empfehlen? Für eine relativ kurze 
Zeit, sind ja laut Datenblatt beim SIM900 Ströme von 2A möglich.

VG
Alex

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Alex schrieb:
> Habe ich den 10kΩ und den 100nF richtig eingezeichnet?

Jein. Der Widerstand ist Ok.

Du hast jetzt mit den 100nF die Versorgungsspannung stabilisiert, was 
ein weiterer Fehler war. Also lass den mal so drin.

Ich meinte aber einen Kondensator vom Reset-Eingang nach GND. Füge das 
noch hinzu.

von Alex (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

ich konnte nicht bis morgen warten. ;-)
Habe den Widerstand und die beiden Kondensatoren wie beschrieben 
hinzugefügt. Des weiteren habe ich die Brücke zwischen AVCC und AREF 
entfernt. Die unbelegten PINs noch als Output deklariert und nun läuft 
das Teil so wie es soll.

Vielen Dank für deine schnelle Unterstützung. Für die Nachwelt habe ich 
noch einmal den Schaltplan aktualisiert. (siehe Anhang)


VG
Alex

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Verschiebe C6 zwischen Pin 20 und 22, dann sitzt er dort, wo er auch 
physisch hin gehört und es ist klar, was er stabilisieren soll.

von Alex (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Done ;-)
Auf der Platine hatte er schon den richtigen Platz gefunden.

VG

von Du sollst nicht ohne Abblock-Cs (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Alex schrieb:
> Auf der Platine hatte er schon den richtigen Platz gefunden.

Es gehört an Pin 7 und Pin 20 jeweils ein Kondensator.
Wer hier spart wird später auf die Schnauze fallen.

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
statt einem fetten Relais (wieviel Strom braucht das denn?) könntest du 
Strom sparen mit einem Photomos Relais AQV252g welches mit 3mA bis 5mA 
>1A (bis 2,5A) schalten kann und das sogar soft ohne Freilaufdiode.

Der Photomos dürfte in der Ontime deutlich genügsamer sein.

Mehr Strom sparst du mit 8 MHz denn dort funktioniert der 328p bis 
runter auf 3,2V (Entladespannung 4 x 0,8V der Akkus!)

Ich weiss ja nicht ob du zwingend 16MHz brauchst!
Dein Sim Modul wird sicher keine 5V benötigen, soweit ich weiss arbeiten 
alle mit 3,3V ausser das Modul hat ebenfalls Regler auf 3,3V drin, es 
gibt sogar Regler mit power off PIN spart das Relais und den Photomos 
oder du schaust nach einem low drop Regler mit power off und das dein 
3,3V Regler für die SIM auch mit weniger als 5V zurecht kommt!

: Bearbeitet durch User
von 5G Virus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das Datenblatt mein:
IVBAT VBAT current Power down mode 30µA

=> lass das Relais weg!

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Du sollst nicht ohne Abblock-Cs schrieb:
> Es gehört an Pin 7 und Pin 20 jeweils ein Kondensator.

Ach, mach dir nicht in die Hose. Er benutzt den ADC sowieso nicht.

Damit der Einschaltstrom den SIM900 Mouduls nicht so sehr die 
Stromversorgung des ATmega328 herunter zieht, könntest du eine Diode und 
einen Elko hinzufügen:
1
X2-1 o---|>|---+---o VCC vom ATmega
2
               |
3
              === 100µF
4
               |
5
              GND

Im Einschaltmoment versorgt der Kondensator den Mikrocontroller, und 
zwar nur diesen. Ich denke, dass du C5 dann auch deutlich kleiner machen 
kannst. Da würde ich auch 100µF versuchen. Die Kontakte des Relais 
werden es dir danken.

: Bearbeitet durch User
von Dummschwätzer (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Ach, mach dir nicht in die Hose. Er benutzt den ADC sowieso nicht.

Rede keinen Scheiss, AVcc wird auf jeden Fall gebraucht um Port C
zu versorgen.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Dummschwätzer schrieb:
> Rede keinen Scheiss, AVcc wird auf jeden Fall gebraucht um Port C
> zu versorgen.

Ja, aber es genügt, wenn AVCC auf exakt dem gleichen Potential liegt, 
wie VCC. Ob du da 2x 47nF oder 1x100nF verwendest ist praktisch 
vollkommen egal.

Die Pins liegen sowieso direkt nebeneinander. Wenn das nicht der Fall 
wäre, würde ich auch zwei Kondensatoren empfehlen.

von Alex (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für euren Input.

@5G Virus
"IVBAT VBAT current Power down mode 30µA"
Laut Datenblatt soll dieser Befehl AT+CFUN=0 das Modul in den Minimum 
Functionality Mode versetzen. Stromaufnahme wären dann 651uA. Wenn das 
funktionieren würde, hätte ich alle Probleme gelöst und könnte auf das 
Relais verzichten. Leider zieht das SIM900 Shield trotz sleep Mode 4mA. 
Bin auch schon direkt am VBAT voltage Eingang und trotzdem zieht das 
Ding so viel Strom. Nur deshlab bin ich auf die Idee gekommen die VCC zu 
schalten. Sobald ich die Batterriespannung anlege, kommt es zur 
genannten Stromaufnahme auch wenn das Modul noch nicht eingeschalten 
ist. (PWR-LED habe ich schon entfernt) Bild vom Modul im Anhang

@Joachim B.
"Photomos Relais AQV252g"
Das Teil schaue ich mir mal an. Danke für den Tipp.

"Ich weiss ja nicht ob du zwingend 16MHz brauchst!"
Sicher nicht. Aber die 8MHz intern benötigen glaube ich einen anderen 
Bootlader und dann würde ich doch Probleme mit meiner Arduino IDE 
bekommen.
Mir ist auch klar, dass der bessere Weg das Atmel Studio ist, da fehlt 
mir aber einfach das Wissen dafür. (Flashen, Programmieren etc.)

@Stefan
Sollte ich beim Relais bleiben, werde ich die Elkos nochmal anpassen.

Vielen Grüße

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Alex schrieb:
> Leider zieht das SIM900 Shield trotz sleep Mode 4mA.

Du benutzt ja nicht das nackte SIM900 Modul, sondern ein Board mit 
vielen Bauteilen drumherum. Stromsparen stand bei Arduno Shields noch 
nie im Fokus.

Oft reicht es schon, diverse LEDs zu entfernen und den Spannungsregler 
auszuwechseln.

von Alex (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die Option ein weiters SIM900  Modul (nacktes) zu kaufen habe ich ja 
noch.
Das Teil habe ich halt da und wollte es verwenden. Ich dachte mir halt, 
wenn ich die Betriebsspannung direket auf VBAT gebe, kommt doch gar kein 
Spannungsregler zum Einsatz oder liege ich da falsch? Die Power-LED habe 
ich schon entfernt.

VG

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Alex schrieb:
> Ich dachte mir halt,
> wenn ich die Betriebsspannung direket auf VBAT gebe, kommt doch gar kein
> Spannungsregler zum Einsatz oder liege ich da falsch?

Der Spannungsregler ist auf dem Baord drauf und verbraucht trotzdem 
Strom (von hinten herum).

von Joachim B. (jar)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Alex schrieb:
> "Ich weiss ja nicht ob du zwingend 16MHz brauchst!"
> Sicher nicht. Aber die 8MHz intern benötigen glaube ich einen anderen
> Bootlader und dann würde ich doch Probleme mit meiner Arduino IDE
> bekommen.

nö einfach nur den richtigen auswählen oder die boards.txt erweitern 
oder patchen

Klar muss einmal der Bootloader per ISP neu aufgespielt werden, das war 
es aber auch schon!

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Klar muss einmal der Bootloader per ISP neu aufgespielt werden, das war
> es aber auch schon!

Oder man nimmt einfach hin, dass der unveränderte Bootloader nur halb so 
schnell kommuniziert, als üblich. Wie du schon sagtest, kann man das ja 
in der boards.txt anpassen.

: Bearbeitet durch User
von Stefan (Gast)


Bewertung
0 lesenswert
nicht lesenswert
nimm doch einen zweiten Akku für Relais und Modul- schönen Sonntag

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.