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
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.
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.
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
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.
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
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.
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!
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.
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.
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.
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
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.
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
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).
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!
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.