Ich will mit einem Arduino ein Anti Coolision Light (ACL) für ein Segelflugzeug realisieren. Dazu steuert ein Digitalausgang z.B. D6 über ein Logic Level MOSFET IRLZ34N mehrere 12V Power Leds an. Diese sollen einmal länger aufblitzen und dann soll ein kurzer Doppelblitz folgen. Das Programm dazu:
void setup() {
pinMode(6, OUTPUT); // Den digitalen Pin 6 (D6) als Ausgang deklarieren.
}
// Die Haupt-Schleife (Main-Loop)
void loop() {
digitalWrite(6, HIGH); // Den Ausgang D6 HIGH setzen.
delay(70); // 0,07 Sekunde warten.
digitalWrite(6, LOW); // Den Ausgang D6 LOW setzen.
delay(1000); // 1 Sekunde warten.
digitalWrite(6, HIGH); // Den Ausgang D6 HIGH setzen.
delay(50); // 0,05 Sekunde warten.
digitalWrite(6, LOW); // Den Ausgang D6 HIGH setzen.
delay(200); // 0,2 Sekunde warten
digitalWrite(6, HIGH); // Den Ausgang D6 HIGH setzen.
delay(50); // 0,05 Sekunde warten.
digitalWrite(6, LOW); // Den Ausgang D6 HIGH setzen.
delay(2000); // 2 Sekunden warten.
}
Das ganze funktioniert mit einer LED sehr gut. Wird dann die Last durch parallel schalten mehrer LED erhöht, blinkt die LED nur noch gleichmäßig. Durch Experimente fand ich heraus, dass nach dem ersten Blitz das Programm offensichtlich zum Programmanfang zurück springt! Gleichzeitig blinkt die onboard Led "L" syncron dazu auf. Also wird D13 auch auf High gesetzt! Wird die Last wieder veringert, läuft das Programm wieder ganz normal durch. Mit einem UNO-Board funktioniert die Sache auch ohne Probleme.
Da gibt es natürlich verschiedene Möglichkeiten als Ursache und als Lösung.
Die onboard LED (Pin 13) wird bei Reset durch den üblichen Bootloader kurz eingeschaltet. Das ist soweit normal.
Wenn du Code in Code-Tags setzt und die Kommentare korrigierst (geht sogar nachträglich),
kriegst du auch ein "Herzlich Willkommen"
Nachtrag:
Nano und Uno haben unterschiedliche Spannungsregler, und evtl. auch unterschiedliche Level bei der "Brown-Out-Detection (BOD)" also ab wann der Controller wegen Unterspannung abschaltet.
Das könnte man modifizieren, so dass der Nano genausolang bei Unterspannung weiterläuft, das ist aber nach meiner Meinung nicht der erste Ansatz.
Das mit dem Reset wegen Spannungseinbruch dachte ich auch schon. Scheint es aber nicht zu sein. Passiert nämlich auch, wenn ich über die USB-Buchse 5V das Nano-Board zusätzlich mit Spannung versorge.
@Tommy Ohne Vorwiderstand hatte ich auch erst Bauchschmerzen. LED´s sind aber für 12V zertifiziert und werden nur für sehr sehr kurze Zeit eingeschaltet (Blitze). Wird auch so schon über mehrere Jahre in einer diskreten Schaltung so genutzt, ohne das sie ihren Geist aufgegeben haben
matti5: @Tommy Ohne Vorwiderstand hatte ich auch erst Bauchschmerzen. LED´s sind aber für 12V zertifiziert und werden nur für sehr sehr kurze Zeit eingeschaltet (Blitze). Wird auch so schon über mehrere Jahre in einer diskreten Schaltung so genutzt, ohne das sie ihren Geist aufgegeben haben
Dann sollten die über eine Konstantstromquelle betrieben werden.
gelöst! In der Tat war der Reset durch Spannungseinbruch die Ursache. Wenn ich das Nano-Board mit einer seperate Spannungsquelle mit 5V über die USB-Buchse bei getrenntem Vin (12V) läuft es. (Bei paralleler Einspeisung dieser 12V resetet es trotz der 5V USB! Deswegen hatte ich es erst ausgeschlossen)
Vielen Dank für die vielen, schnellen und nützlichen Hinweise
Könnte evtl.
Das hängt davon ab, wie tief und wie lange Deine Versorgung einbricht.
Eine leistungsfähigere Versorgung wäre der bessere Weg.
Meinst Du, dass Du dafür überhaupt eine Zulassung vom LBA bekommst?
Über dieses "Problem" wird in der Szene kräftig diskutiert. Zuständig ist nicht mehr das LBA sondern die EASA, die europäische Behörde. Die Vorschriften, und das was es auf dem Markt gibt, ist schon lange nicht mehr Stand der Technik. Max 2000-3000 lm. Sinvoll ist aber, wenn es wirklich vor Kollision (am Tage mit Sonne) schützen soll >10.000 lm. Also nach dem Motto "hilf dir selbst, so hilft dir Gott" will ich (andere haben das bereits schon seit ein paar Jahren) eine nicht fest verbaute Lösung. Für meine ersten Versuche mit dem Arduino habe ich einen Bleiakku 12V/7,2 Ah genommen und LED´s von insgesamt 100W. Deswegen konnte ich mir kaum vorstellen, dass der Akku bei ca. 10 A so weit einfbricht, dass die 5V des Arduino gefährtet sind. Im Flugzeug ist dann ein Akku von 20Ah
Du willst damit doch nicht etwa sagen, dass das "größte beleuchtete deutsche Luftfahrthindernis" (Zitat eines ehemaligen Kollegen) in Braunschweig arbeitslos wird?
Nein, gaaaanz sicher nicht. Sie arbeiten für die EASA auf dem Gebiet von D. Und da die Bürokratie durch Europa nicht weniger wird, haben sie ganz sicher genug zu tun. Gegenwärtig werden da sogar reichlich neue Stellen geschaffen.
Deine Schaltung kann helfen. Reicht evtl. auch schon, die Arduino 5V mit einem dickeren Kondensator zu stützen. Das (dickerer Elko) könnte der beobachtete Unterschied Uno / Nano sein.
Dann noch BOD Fuses auf disabled setzen.
Mit Power-LED würde ich nicht direkt eine Batterie kurzschliessen. Solch eine Schaltung rechnet doch mit dem Innenwiderstand der Batterie als Strombegrenzer. Das reduziert dann die "12V" an Vin.
Oder eine extra Batterie für den Arduino vorsehen.
ok, die nehmen den Innenwiderstand als Begrenzung, wie Michael schon schrieb. Das kann schief gehen.
Zusätzlich noch die Parallelschaltung. Es gibt immer Streuungen in den Fertigungsdaten. Die LED mit dem geringsten Spannungsabfall bekommt den höchsten Strom und stirbt zuerst.
Beim Impulsbetrieb kannst Du in der Hinsicht Glück haben, dass die Wärme nicht hoch genug wird.
Eine stabile Schaltung ist das allerdings nicht und da hängt im Zweifelsfall real Dein A... dran..