Hallo. :)
Ich habe folgendes Problem, zu welchem ich gerade etwas verzweifelt nach
einer guten Lösung suche und entsprechend schon seit ein paar Tagen alle
möglichen Themen durchgehe. Dabei habe ich mich auch bereits intensiv in
FETs eingelesen, hier fehlt mir allerdings Praxiserfahrung. Ebenso habe
ich OPs bisher noch nie verwendet.
Aber einmal zu den Details ...
Meine Schaltung wird mit einem 9V-Block versorgt, soll eine lange
Laufzeit haben und ist entsprechend auf Stromsparen ausgelegt. Mit Hilfe
eines bistabilen Signalrelais wird ein Servo in die eine oder die andere
Endposition gefahren und dort über einen Endschalter abgeschaltet.
Das bistabile Relais wird, neben Display und Encoder von einem ATMEGA
gesteuert - soweit alles kein Problem.
Tritt ein Brownout auf oder ist der µC im Reset oder wird die
Stromversorgung für die Steuerung abgeschaltet, dann soll der Motor
ZWINGEND in eine bestimmte Endposition fahren und anschließend den
Stromverbrauch auf 0 reduzieren (Endschalter kann das übernehmen).
Grundsätzlich bin ich gedanklich so weit, dass ich wohl am µC einen Pin
zur Laufzeit dauerhaft auf einen bestimmten Zustand (z.B. Ausgang Hi)
schalte und damit den Sicherheitsschaltkreis über die Betriebszeit
deaktiviere. Pins sind noch frei, von daher kein Problem.
Der Sicherheitsschaltkreis müsste den Motor vom Relais abkoppeln (da
dessen Zustand unbekannt ist) und den Motor in Endposition fahren,
sobald der µC-Pin NICHT in seinem definierten Zustand ist. Anschließend
könnte der Sicherheitsschaltkreis über den Endschalter ebenfalls
vollständig abgeschaltet werden.
Aber wie umsetzen?
In FETs habe ich mich zwar eingelesen und mir gefällt, dass sie über
Spannung geschaltet werden, aber weder wüsste ich, welche Typen ich
dafür am besten nehmen könnte (prinzipiell Logic-Level, Verarmungstyp,
kein SMD, maximaler Schaltstrom ca. 1-2A für den Motor), noch wie etwas
in die Schaltung integrieren könnte, um das gewünschte zu erreichen und
dabei den Gesamtverbrauch während des Betriebs nicht bedeutsam erhöhen.
Zudem möchte ich das bistabile Relais dabei außen vor lassen, da auch
ein Ausfall von selbigem durch die Sicherheitsschaltung erfasst werden
soll.
Für Vorschläge und Ideen wären ich wirklich dankbar.
Lg, Torsten
Torsten K. schrieb:> Tritt ein Brownout auf oder ist der µC im Reset oder wird die> Stromversorgung für die Steuerung abgeschaltet, dann soll der Motor> ZWINGEND in eine bestimmte Endposition fahren und anschließend den> Stromverbrauch auf 0 reduzieren (Endschalter kann das übernehmen).
Hallo Torsten,
das verstehe ich nicht oder nicht ganz:
Du hast einen Teil der Steuerung der - wenn kein Strom mehr vorhanden
ist trotzdem etwas tun soll.
Torsten K. schrieb:> Meine Schaltung wird mit einem 9V-Block versorgt, soll eine lange> Laufzeit haben und ist entsprechend auf Stromsparen ausgelegt.
das ist schon mal kontraproduktiv um einen Motor zu fahren.
Torsten K. schrieb:> Der Sicherheitsschaltkreis müsste den Motor vom Relais abkoppeln (da> dessen Zustand unbekannt ist) und den Motor in Endposition fahren,
Hmm, vielleicht wäre ein Blockdiagramm ganz hilfreich um "Schaltung",
"Steuerung", "Sicherheitsschaltkreis" und deren Zusammenwirken besser zu
verstehen.
rgds
Die Brownout-Detection ist eigentlich dazu da, im Falle eines
Stromausfalles, oder während des Einschaltens für geregelte Zustände zu
sorgen.
Natürlich kannst Du irgendeinen Pin auf einen beliebigen Pegel legen,
aber beim Zusammenbruch der Spannung kannst Du diesen nicht auf Deinen
Signalzustand legen.
Brownout ist keine definierte Unterbrechungsroutine, zumindest bei den
mir bekannten Prozessoren.
Folglich bleibt die Möglichkeit:
Du misst selber die Spannung. Ein fest eingestellter Komparator reicht
hierfür. Dieser wird so eingestellt, dass er minimal vor dem Brownout
kommt. So kannst Du deinen Prozessor gezielt in's Bett schicken.
Ob die Power dann noch reicht um die Heimreise zu beenden ist eine
andere Sache bzw. hängt von der Schaltschwelle ab. Dein Motor hat ja
auch noch Bedürfnisse.
Übrigens: Manche Prozessoren haben einen eigenen Komparator eingebaut.
Das Kernproblem wird nicht sein, die Ansteuerung der FETs oder Relais
hinzubekommen, sondern den Motor zu versorgen. Brownout bedeutet ja
wohl, dass die Spannung zusammengebrochen ist.
Oder geht es dir nur um eine Batterie-leer-Erkennung, nach der der Motor
in die sichere Position fährt und dann die Ansteuerung sich schlafen
legt, bis es eine neue Batterie gibt?
Max
Ich vergaß:
An Deiner Schaltung brauchst Du nichts zu ändern.
Irgendwo hast Du ja die Routinen: Fahre_Links und Fahre_Rechts.
Normalerweise bestehen diese aus den Sequenzen:
Fahre nicht in die andere Richtung plus fahre in Richtung xy.
Bei der Low-Voltage-Erkennung springst Du einfach eine der beiden
Fahrrichtungen an und schickst das Teil anschließend ins Bett. Viele
Rechner haben hierfür einen eigenen Befehl.
Aufgeweckt wird das Teil ja dadurch, dass die Spannung kurzzeitig "echt"
null Volt ist (Batterie raus) und anschließend (neue Batterie rein) die
Betriebsspannung wieder kommt.
Wie bereits vorher gesagt: Ob der Motor dort ankommt hängt von der
Schaltschwelle ab.
Erst schon mal vielen Dank für die ganzen Antworten in der kurzen Zeit.
:-)
Ich habe meinen ersten Schaltungsdraft mal angefügt, wobei sich
folgendes noch ändern wird:
- µC wird ein ATmega328P (oder - softwareabhängig - auch mit weniger
Flash)
- der Quarz wird gegen einen 32kHz getauscht (zwecks RTC und PowerDown)
- das bistabile Relais wird direkt an den Pins betrieben (< 35mA)
- Display werde ich vermutlich ebenso direkt via Pin bestromen
- im Schaltplan ist momentan keine Endposition erreicht
(sonst wäre S3 oder S4 betätigt)
So ... jetzt mal der Reihe nach zu den Fragen ...
@Dirk:
Brownout setze ich auf 4,7V. Ich gehe davon aus, dass ein 9V-Block dann
immer noch das Minimum an Saft hat, um den Servo zumindest ein paar
Milimeter weit zu bewegen - das würde bereits genügen. Notfalls ginge
aber auch eine Reservebatterie (würde ich dann noch testen).
@6A66:
Nicht ganz. Ich habe eine Steuerung (µC). Sobald diese nichts mehr tut,
soll ein anderer Schaltungsteil für einen definierten Motorzustand
sorgen.
Das ein 9V-Block nicht ideal zum Betreiben von Motoren ist, ist mir
bewusst. Der Motor wird voraussichtlich nur ein- oder zweimal die Woche
laufen - von daher ist eine hohe Batterieleistung nebensächlich.
Schaltplan hängt an, vom Sicherheitskreis ist da aber noch nichts drin.
Und sobald ich rausfinde, was Du mit "PL" meinst, kann ich Dir ggf.
darauf anworten. ;)
@Amateur:
Genau das - tritt ein Fehlzustand (Reset durch Watchdog oder Brownout
oder auch plötzliche Vaporisierung des µCs) auf, dann möchte ich -
soweit irgend möglich - genau diesen definierten Zustand. Der µC wird -
im Falle eines Neustarts - ebenso den definierten Zustand ansteuern und
bis auf weiteres dort verweilen (um Softwarefehler und/oder Reset durch
Watchdog abzudecken).
Allerdings ... wie kann ich den erreichen, wenn alle Pins dann hochohmig
sind? ;)
@IOwside:
Siehe weiter oben. Ich schau mir das noch an, wie ein fast auf 4V
leergelutschter 9V-Block reagiert und ob ich ggf. eine
Alternativbatterie verwende.
und nochmal @Amateur:
Ich möcht' jedoch ein kleines Notfall-Backup für den µC. Sicherlich
werde ich auch dem µC noch eine Batterie-Leer-Erkennung spendieren und
dann alles nötige bis zur neuen Batterie einleiten. ;)