Hallo,
ich möchte anfangen, mit Arduinoboards einfache Steuerungen aufzubauen
und habe ein paar Verständnisfragen:
Ich würde den Arduino hauptsächlich mit Batterie betreiben. Vergisst der
Arduino sein Programm, wenn die Versorgungsspannung kurz unterbrochen
wird (z.B. Batteriewechsel)? Muss das Programm dann erneut per USB
geuploadet werden? Wenn ja, gibt es Möglichkeiten, das zu umgehen
(Programm ins EEPROM speichern, SD-Karte anschließen, ...)?
Lassen sich die üblichen Arduinoboards (Uno,Due,...) in einen Sleepmodus
schalten, in dem sie batteriebetrieben 1-2 Wochen überleben? Oder gibt
es spezielle Boards, die genau dafür ausgelegt sind? Der Arduino soll
nur bei einem externen Signal gelegentlich aufwachen, ein paar Daten
aufnehmen und dann weiterschlafen.
Sind die Steckverbinder eigentlich irgendwie "standardisiert"? Ich
bräuchte z.B. in jedem Fall ein LCD- und ein SD-Karten-Shield. Kann ich
den Arduino und die Boards von verschiedenen Anbietern kaufen, oder muss
ich dann sehr genau auf die Kompatibilät achten?
Danke
Patrick
Patrick schrieb:> Vergisst der> Arduino sein Programm, wenn die Versorgungsspannung kurz unterbrochen> wird
nein.
die lebensdauer der batterie hängt davon ab wie leistungsfähig sie ist,
ob du entsprechende sleep modi im programm einbauen kannst (siehe
datenblatt µc) und welche peripherie du wie angeschlossen hast.
weitere infos:
http://arduino.cc/ (ff.)
Patrick schrieb:> Ich würde den Arduino hauptsächlich mit Batterie betreiben. Vergisst der> Arduino sein Programm, wenn die Versorgungsspannung kurz unterbrochen> wird (z.B. Batteriewechsel)? Muss das Programm dann erneut per USB> geuploadet werden? Wenn ja, gibt es Möglichkeiten, das zu umgehen> (Programm ins EEPROM speichern, SD-Karte anschließen, ...)?
Also der µC vergisst sein Programm nach Spannungsabfall nicht, da du es
ja in den Flash geschrieben hast. lediglich der Inhalt des RAM ist nach
Spannungsabfall verloren.
c.m. schrieb:> Patrick schrieb:>> Vergisst der>> Arduino sein Programm, wenn die Versorgungsspannung kurz unterbrochen>> wird>> nein.
Nenn bitte einen Link, der das belegt. Auf arduino.cc finde ich dazu
nichts. Dagegen habe ich hier ein Buch, das besagt, dass der Arduino bei
jedem Anschließen der Versorgungsspannung seinen Bootloader startet.
> die lebensdauer der batterie hängt davon ab wie leistungsfähig sie ist,> ob du entsprechende sleep modi im programm einbauen kannst (siehe> datenblatt µc) und welche peripherie du wie angeschlossen hast.
Es geht mir um die maximale Laufzeit des reinen Arduinos. Der zieht im
Leerlauf um die 40mA, das machen Mignonakkus höchstens 2-3 Tage mit.
AVRs können ihren Stromverbrauch im Sleepmodus (nicht bloß Leerlauf!) um
den Faktor 100-1000 reduzieren. Die Frage ist, ob der Arduino dies
unterstützt?
Danke
Patrick
Patrick schrieb:> c.m. schrieb:>> Patrick schrieb:>>> Vergisst der>>> Arduino sein Programm, wenn die Versorgungsspannung kurz unterbrochen>>> wird>>>> nein.
Hä? Was versteh ich an der Frage nicht? Also der Bootloader ist da um es
dir sehr bequem zu machen, damit du deine HEX Datei auf den µC brennst.
Befindet sich bereits eine Software auf dem µC dann wird diese
überschrieben. Wenn du allerdings das Teil startes und KEIN Programm
auf den µC laden willst, so startet das normale Programm.
Patrick schrieb:> Dagegen habe ich hier ein Buch, das besagt, dass der Arduino bei> jedem Anschließen der Versorgungsspannung seinen Bootloader startet.
Das ist richtig, wenn aber keine Loadsequenz kommt, startet nach wenigen
Augenblicken das vorhandene Programm.
Wenn du ein Programm über USB in den Arduino laden willst, wird über DTR
der Reset ausgelöst der Bootloader startet und der Ladevorgang läuft.
Patrick schrieb:> Es geht mir um die maximale Laufzeit des reinen Arduinos. Der zieht im> Leerlauf um die 40mA, das machen Mignonakkus höchstens 2-3 Tage mit.> AVRs können ihren Stromverbrauch im Sleepmodus (nicht bloß Leerlauf!) um> den Faktor 100-1000 reduzieren. Die Frage ist, ob der Arduino dies> unterstützt?
Die Frage ist, ob du akzeptierst, dass das Herz deines Arduinos ein
AVR-Prozessor ist. Was der kann oder nicht kann hängt nicht davon ab,
auf welche Platine er gelötet ist.
Ein Ferrari Motor hat auch dann noch 280PS, wenn man ihn in einen VW
Käfer einbaut.
Patrick schrieb:> Nenn bitte einen Link, der das belegt.
Guck ins Datenblatt. Da mußt du, unabhängig vom Arduino, beim Hersteller
des Prozessors gucken und dir Grundlagen über Flash-Speicher anlesen.
http://de.wikipedia.org/wiki/Flash-SpeicherPatrick schrieb:> Die Frage ist, ob der Arduino dies unterstützt?
Die Frage ist nicht, ob Arduino dies unterstützt, sondern ob du das dem
ATmega/SAM ggf. auch ohne Unterstützung durch die Arduino-Libs
beigebracht kriegst.
Patrick schrieb:> Die Frage ist, ob der Arduino dies> unterstützt?
Glaube ich kaum, du müsstest dazu auch den ATmega16U2, beim UNO, mit
schlafen legen.
Patrick schrieb:> c.m. schrieb:>> Patrick schrieb:>>> Vergisst der>>> Arduino sein Programm, wenn die Versorgungsspannung kurz unterbrochen>>> wird>>>> nein.>> Nenn bitte einen Link, der das belegt.
ich werde dir die arbeit dir die grundlagen anzueigenen nicht abnehmen.
lies dich erstmal ein damit du die richtigen fragen stellen kannst.
Patrick schrieb:> Es geht mir um die maximale Laufzeit des reinen Arduinos.
Die maximale Laufzeit hängt nur vom Stromverbrauch und von der Kapazität
der verwendeten Batterie ab.
> Der zieht im> Leerlauf um die 40mA, das machen Mignonakkus höchstens 2-3 Tage mit.
Ja, mindestens 99% aller "fertigen" Arduino-Boards ziehen 45 bis 55 mA
Strom, und das ist unvermeidbar wegen dem ganzen Plumpatsch, der auf die
Developer-Boards draufgelötet ist: Eine Power-LED, ein Spannungswandler,
das USB-Gedöns.
> AVRs können ihren Stromverbrauch im Sleepmodus (nicht bloß Leerlauf!) um> den Faktor 100-1000 reduzieren. Die Frage ist, ob der Arduino dies> unterstützt?
Ja, die Arduino-Boards enthalten Atmega-Controller, die
Atmega-Controller unterstützen das und Du kannst die
Stromspar-Sleepmodes auch alle mit der Arduino-Software aktivieren.
Der Sleepmodus verringert aber nur den Stromverbrauch des Controllers
und NICHT den Stromverbrauch von dem ganzen anderen Plumpatsch auf dem
Board.
Deshalb nützt Dir der Sleepmodus mit den üblichen Developer-Boards
nichts. Rechenbeispiel:
Arduino-Board braucht 47 mA, davon der Controller 17 mA.
Mal angenommen, Du bringst den Controller auf einen Verbrauch von null,
dann zieht das Board immer noch 30 mA Dauerstrom. Für die Power-LED, den
Spannungswandler, das USB-Gedöns.
Aber mit 30 mA vs. 47 mA hast Du bei Batteriebetrieb noch nicht viel
gewonnen.
Für Batteriebetrieb mußt Du Dir im Regelfall eine eigene Schaltung mit
einem "nackten" Controller aufbauen. Ohne Spannungswandler, ohne
Power-LED, ohne USB-Gedöns. Und wenn Du diesen Controller (Verbrauch im
Aktiv-Modus 17 mA) dann in den maximalen Sleepmode versetzt (sagen wir
mal 0,01 mA), dann kannst Du die Schaltung monatelang mit einer Batterie
betreiben, wenn sie zu 99,5% der Zeit im Sleepmode verbringt.
Den nackten Controller kannst Du dann mit einem ISP-Programmer
programmieren, oder einem richten "Arduino as ISP-Programmer". Oder mit
einem TTL-USB-Serialadapter, den Du nur zum Programmieren anschließt und
danach wieder aus der Scahltung entfernst.
Mit fertig gekauften Arduino "Developer" Boards kannst Du einen
längerfristigen Batteriebetrieb fast immer vergessen, die sind alle für
Betrieb mit USB-Stromversorgung oder Netzteilbetrieb vorgesehen.
Mike schrieb:> Die Frage ist nicht, ob Arduino dies unterstützt, sondern ob du das dem> ATmega/SAM ggf. auch ohne Unterstützung durch die Arduino-Libs> beigebracht kriegst.
Ok. Also meine Frage an die Arduino-Nutzer: Kann ich den Arduino
softwaregesteuert schlafen schicken?
Ich frage, weil ich nicht weiß, inwieweit die Assemblerbefehle über die
Wiring-Sprache erreichbar sind.
Jürgen S. schrieb:> Für Batteriebetrieb mußt Du Dir im Regelfall eine eigene Schaltung mit> einem "nackten" Controller aufbauen. Ohne Spannungswandler, ohne> Power-LED, ohne USB-Gedöns. Und wenn Du diesen Controller (Verbrauch im> Aktiv-Modus 17 mA) dann in den maximalen Sleepmode versetzt (sagen wir> mal 0,01 mA), dann kannst Du die Schaltung monatelang mit einer Batterie> betreiben, wenn sie zu 99,5% der Zeit im Sleepmode verbringt.
Also müsste ich den Arduino programmieren, Spannungswandler und LED
auslöten und meinen eigenen, effizienten Wandler anschließen. Gut. Und
es gibt wirklich kein Board, das für diesen Zweck ausgelegt ist?
Patrick
@Patrick
Das mit dem Programm vergessen und Bootloader ist ja schon geklärt
-Programm wird nicht vergessen
-Bootloader startet bei neustart kurz und lauscht, wenn nichts für ihn
kommt dann startet er das Programm
Die üblichen Arduinoboards lassen sich in einen Sleepmodus versetzen
aber das betrifft nur den ATMega, die anderen Bauteile ziehen nach wie
vor Strom(der Spannungswandler, der FT232)
http://hackaday.com/2009/08/13/sleepy-arduino-saves-batteries/
Du könntest entweder einen nackten ATMega328 oder einen Arduino Pro Mini
nehmen(da ist das alles nicht drauf, brauchst dann alledings einen ISP
Programmer)
Die Anschlüsse sind soweit standardisiert das die Shields passen
allerdings würde ich dir raten das ganze auf einer Lochrasterplatine
aufzubauen.
Und du musst berücksichtigen dass dem LCD und der SD Karte der Sleep
Modus des Prozessors egal sind und die fleissig weiter Strom
verbrauchen.
c.m. schrieb:> ich werde dir die arbeit dir die grundlagen anzueigenen nicht abnehmen.> lies dich erstmal ein damit du die richtigen fragen stellen kannst.
Er schreibt "Grundlagenfragen" in den Betreff und du antwortest, dass du
ihm nicht hilfst, die Grundlagen anzueignen. Geht's noch dümmer?
Wenn du nicht helfen willst, einfach mal die Fresse halten, gelle?