Forum: Mikrocontroller und Digitale Elektronik mit einem Taster ein- und ausschalten eines uC


von Daniel R. (anut_peach)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,
ich habe eine Microcontrollerschaltung (ATMEGA328p) die durch eine Taste 
ein- und ausgeschaltet werden soll. Der Taster und Selbsthaltung wurde 
wie abgebildet realisiert.
Ein bekanntes Thema und ich hätte auch schon eine alternative Schaltung 
hier gefunden, nur habe ich schon die gefertigte PCB vor mir (Im 
Probeaufbau hats funktioniert) und möchte nun den Fehler in meiner 
Schaltung beheben.
Grundsätzlich funktioniert die Schaltung ja ganz gut, aber
PROBLEM:
Es gibt Phasen, da lässt sich die Schaltung partous nicht einschalten! 
Ich drücke auf die Taste, der Enable vom Vreg geht auf 3V, aber sobald 
ich die Taste wieder los lasse, ist die Spannung wieder weg. Das geht 
20-30 mal so. Dann gibt es aber wieder Phasen, da funktioniert die 
Schaltung tip-top und lässt sich 50 mal in Folge perfekt ein- und 
ausschalten.

ich komm einfach nicht dahinter, woran das liegen könnte.

Irgendwie kommt es mir so vor, als würde er uC nicht richtig hochfahren 
und die Selbsthaltung nicht richtig funktionieren, aber als ich das das 
letzte mal genauer anschauen wollte, konnte ich den Fehler mal wieder 
nicht forcieren, da gings wieder zu 100% :)

hat jemand einen Tip?

von Peter D. (peda)


Lesenswert?

Das ist ungesund, wenn ein IO-Pin vor VCC Spannung kriegt und erst 
recht, wenn die höher ist.

Ich würde den AVR einfach immer an die 3..4,2V hängen und mit der Taste 
nur zwischen aktiv und Power-Down in SW umschalten.
Aufwachen geht ja prima mit dem Pin-Change-Interrupt.

von aSma>> (Gast)


Lesenswert?

Servus,
Ein Stützkondensator für den Spannungsregler wäre nicht verkehrt.
Wieviel MHZ hast du den ATmega eingestellt?

>Speed Grade:
>0 - 4MHz @1.8 - 5.5V,
>0 - 10MHz @2.7 - 5.5.V,
>0 - 20MHz @4.5 - 5.5V

Außerdem beim Einschalten (Taster ON) fällt eine Spannung an der Diode 
ab. Es kann sein, dass es dann zu wenig Spanung zu EN ist.

mfg

von Daniel R. (anut_peach)


Lesenswert?

direkt an die Batterie ist nicht so optimal, da auch andere Komponenten 
mit drauf sind wie BT-Modul und Display, und die vertragen zum Teil nur 
3V.


aSma>> schrieb:
> Servus,
> Ein Stützkondensator für den Spannungsregler wäre nicht verkehrt.
> Wieviel MHZ hast du den ATmega eingestellt?
>
>>Speed Grade:
>>0 - 4MHz @1.8 - 5.5V,
>>0 - 10MHz @2.7 - 5.5.V,
>>0 - 20MHz @4.5 - 5.5V
>
> Außerdem beim Einschalten (Taster ON) fällt eine Spannung an der Diode
> ab. Es kann sein, dass es dann zu wenig Spanung zu EN ist.
>
> mfg


der ATMega läuft mit 8MHz, das sollte mit 3V also gut passen.

der Spannungsabfall über die Diode sollte nicht das Problem sein, der 
Spannungsregler schaltet ja immer schön seine 3V durch, nur fallen sie 
dann wieder weg, sobald ich vom Taster runter gehe.

den Stützkondensator werde ich noch testen, vielleicht bringt der was?!

von Stefan K. (stefan64)


Lesenswert?

Ich würde auch Serien-Rs zum Tastereingang und zum Selbsthaltepin 
vorschlagen (und dafür R21 weglassen). Das ist gesünder für die IO-Pins 
UND Du kannst dann auch nachmessen, was der mc am Selbsthaltepin nach 
dem Reset veranstaltet.

Gruß, Stefan

von Daniel R. (anut_peach)


Lesenswert?

Stefan K. schrieb:
> Ich würde auch Serien-Rs zum Tastereingang und zum Selbsthaltepin
> vorschlagen (und dafür R21 weglassen). Das ist gesünder für die IO-Pins
> UND Du kannst dann auch nachmessen, was der mc am Selbsthaltepin nach
> dem Reset veranstaltet.
>
> Gruß, Stefan

ok, danke für die Tips, dann hab ich ja morgen schonmal ein paar Sachen 
zum testen ...

von Bernd K. (bmk)


Lesenswert?

Bei LDO Reglern immer gut auf die vorgeschriebene C-Beschaltung achten:

https://www.onsemi.com/pub/Collateral/NCP4625-D.PDF

Datenblatt Seite 13. Oszillatus läßt grüßen.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Bernd K. schrieb:
> Bei LDO Reglern immer gut auf die vorgeschriebene C-Beschaltung achten:
>
> https://www.onsemi.com/pub/Collateral/NCP4625-D.PDF
>
> Datenblatt Seite 13. Oszillatus läßt grüßen.

 Was bedeuten Angaben zum Strom auf Seite 11 / Fig. 35 - 37 ?
 Überlappen die sich so genau oder bin ich zu dumm um es zu verstehen ?

: Bearbeitet durch User
von Bernd K. (bmk)


Lesenswert?

Marc V. schrieb:
>  Was bedeuten Angaben zum Strom auf Seite 11 / Fig. 35 - 37 ?
>  Überlappen die sich so genau oder bin ich zu dumm um es zu verstehen ?

Beim Hochfahren der Ausgangsspannung durch Chip Enable = high wird Vout 
innerhalb von 100µs den Nennwert erreichen, unabhängig vom Ausgangsstrom
Da liegen in der Tat alle 3 Ströme auf der gemeinsamen Kennlinie.

Hingegen beim Runterfahren (Fig. 38 - 40) durch Chip Enable = low gibt 
es Unterschiede je nach Ausgangsstrom. Je höher der Ausgangstrom, desto 
schneller wird Vout 0V erreichen.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Bernd K. schrieb:
> Da liegen in der Tat alle 3 Ströme auf der gemeinsamen Kennlinie.

 Dann schreibt man doch:
 1mA <= IOut <= 300mA und gut isses.

 Zum Thema:
 Mega hat in Power-Save Mode 0.65 μA Verbrauch - was gibt es da noch
 viel einzusparen ?
 Sollte da noch etwas anderes dranhängen ist das eine andere Sache -
 aber Mega über stinknormales LDO in Power-Save, Peripherie über
 NCP4625 wäre dann viel besser gewesen, oder ?.

 Ausserdem ist da noch mögliches Tastenprellen - Mega wird
 (vielleicht) mehrmals kurz hintereinander ein- und ausgeschaltet
 - wenn da irgendwelche Zustände abgefragt und reingeschrieben werden,
 kann es sein, dass mitten in irgendeinem Schreibvorgang Prellen
 kommt - Hälfte ist geschrieben, die andere Hälfte nicht.
 RAM bleibt aber mit falschen Daten erhalten und...
 Ich hatte mal einen Taster, so etwas sollte man Prelltaster nennen
 und einen Schalter, der hat wiederum kaum geprellt...

Peter D. schrieb:
> Das ist ungesund, wenn ein IO-Pin vor VCC Spannung kriegt und erst
> recht, wenn die höher ist.

 Dem kann ich mich nur anschliessen, und ein Wort zum Schluss:

 Die Wege des Stroms sind unergründlich...

: Bearbeitet durch User
von Daniel R. (anut_peach)


Lesenswert?

ich habe die Caps angepasst wie im Datenblatt (je 1uF).
Serienwiderstände an die beiden Leitungen zum uC.
leider immer noch unverändert... solange ich am Button drauf bleibe 
liefert der Vreg schöne 3V, sobald ich den Taster loslasse, fällt die 
Spannung (EN & Vout) sofort weg.

ich untersuche gerade, ob es was mit der Batteriespannung zu tun haben 
könnte!? hab den Akku gerade kurz geladen auf ca. 3,6V und jetzt lässt 
er sich wieder des mal einschalten. Vorher war die Spannung ca. bei 
3,2V.
Aber eigentlich sollte das kein Problem sein, denn der uC läuft bis 
unter 3V mit 8MHz, und dem Spannungsregler macht das auch nichts - der 
liefert auch sauber seine 3V.
Edit: ne, daran liegts auch nicht, Spannung ist jetzt wieder bei ca. 3V 
angelangt, und er lässt sich einwandfrei einschalten.

Als würde sich irgendwas "aufladen" und dann gehts einwandfrei. Wenn die 
Schaltung über Nacht liegt, gehts die ersten 50 mal drücken wieder nicht 
...

Tasterprellen ist nicht das Problem, es ist so eine Silikontaste 
(Fernbedienung), und habs grad mit dem Oszi gecheckt, die prellt nicht.

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Daniel R. schrieb:
> ich untersuche gerade, ob es was mit der Batteriespannung zu tun haben
> könnte!? hab den Akku gerade kurz geladen auf ca. 3,6V und jetzt lässt
> er sich wieder des mal einschalten. Vorher war die Spannung ca. bei
> 3,2V.

 Wie sieht es mit BOD aus ?

von Daniel R. (anut_peach)


Lesenswert?

BOD ist deaktiviert.

hab jetzt nochmal rumgemessen, aber ich finds nicht raus.

der Level des Selbsthaltepins wird trotz Vorwiderstand vom Level der 
Taste mitgezogen!? Als würde er nicht aktiv treiben, aber der Code ist 
ok, und die halbe Zeit funktioniert es auch.
Wenn ich den Silikonbutton fester oder weniger fest drücke, sehe ich 
eine Spannungsschwankung, und die ist auch am Output-Pin zu sehen!
Hätte jetzt mal eine Diode in die Leitung des Selbsthaltepins dazu 
gegeben (wired OR), aber auch das brachte nichts.
als könnte der Output den Level nicht auf HIGH halten!?
Der Pin steht nicht sauber auf HIGH.
Quarz schwingt schön mit an, also der Controller sollte laufen.

aktuell immer noch eine 50/50 chance, ob das System hochfährt, oder 
nicht ...

von Daniel V. (danvet)


Lesenswert?

Was bisher noch nicht erwähnt wurde, ist, dass du deinen µC beim Drücken 
der Taste über den IO-Pin versorgst (wegen der internen Dioden). Der 
Lipo ist dann über 1 Ohm mit dem IO-Pin verbunden.
D.h. am IO-Pin liegt in diesem Augenblick eine höhere Spannung an, als 
VCC. Im Einschaltmoment sogar eine deutlich höhere Spannung, da VCC noch 
auf 0 Volt ist. Damit liegst du ausserhalb der Spec.

Ob das mit das mit deinem Problem zusammenhängt, kann ich nicht sagen.

von Stefan K. (stefan64)


Lesenswert?

Hast Du Code drin, der den Selbsthaltepin wieder auf Low oder HighZ 
schaltet? Dann kommentiere den ggf. aus. Vielleicht Hast Du ein Problem 
mit der Funktion, die den Controller wieder ausschalten soll.

Gruß, Stefan

von Route_66 H. (route_66)


Lesenswert?

Daniel V. schrieb:
> Was bisher noch nicht erwähnt wurde, ist, dass du deinen µC beim Drücken
> der Taste über den IO-Pin versorgst

...doch, die erste Antwort von PeDa!

von Daniel V. (danvet)


Lesenswert?

Route 6. schrieb:
> Daniel V. schrieb:
>> Was bisher noch nicht erwähnt wurde, ist, dass du deinen µC beim Drücken
>> der Taste über den IO-Pin versorgst
>
> ...doch, die erste Antwort von PeDa!

Stimmt, hatte ich übersehen, aber da steht was von "ungesund".
Allerdings ist es auch so, dass der µC versorgt wird und los läuft...!

von Daniel R. (anut_peach)


Lesenswert?

Vermutlich war der Hinweis mit "ungesund" letztlich sogar der richtige.
da der Pin den Level partous nicht mehr halten konnte trotz 
Serienwiderstand hab ich zum testen mal einen anderen Pin missbraucht, 
und jetzt sieht die Sache gleich wieder viel besser aus!
Ich vermute, dass ich tatsächlich den Pin mit der miesen Beschaltung 
zerstört habe.

ich habe inzwischen ja auch eine Diode beim Selbsthaltepin eingefügt, 
damit da von außen nichts mehr rein kommt (wired or). das sollte 
eigentlich ausreichen, um den Pin zu schützen, dann kann ich die 
Serienwiderstände wieder weggeben, oder?

danke schonmal für eure tatkräftige Unterstützung!

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.