Forum: Mikrocontroller und Digitale Elektronik Arduino Grundlagenfragen


von Patrick (Gast)


Lesenswert?

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

von c.m. (Gast)


Lesenswert?

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

von Dennis X. (Gast)


Lesenswert?

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.

von Patrick (Gast)


Lesenswert?

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

von Dennis X. (Gast)


Lesenswert?

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.

von Hubert G. (hubertg)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Mike (Gast)


Lesenswert?

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-Speicher

Patrick 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.

von Hubert G. (hubertg)


Lesenswert?

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.

von c.m. (Gast)


Lesenswert?

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.

von Jürgen S. (jurs)


Lesenswert?

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.

von Patrick (Gast)


Lesenswert?

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

von Chr. M. (snowfly)


Lesenswert?

@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.

von Heiner (Gast)


Lesenswert?

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?

von Markus (Gast)


Lesenswert?

Patrick schrieb:
> 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?

Du könntest einen "Arduino Mini" oder "Arduino Micro" nehmen, wenn du 
nicht alles von Grund auf selber bauen möchtest. Die haben nur noch das 
Nötigste darauf. Und so könnten die auch eher mit Batterie versorgt 
werden.

http://arduino.cc/de/Main/ArduinoBoardMini
http://arduino.cc/de/uploads/Main/arduino_mini_schematic05.pdf

http://arduino.cc/de/Main/ArduinoBoardMicro
http://arduino.cc/de/uploads/Main/arduino-micro-schematic.pdf

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.