Hallo Forum ! Ich habe folgende Problemstellung : Ich habe einen Arduino Mega dazu verwendet, einen LED-Cube zu Multiplexen. Jetzt bin ich allerdings an das Problem geraten, dass beim Einspielen neuer Software natürlich der Multiplex-Vorgang gestoppt wird und wenn der Zeitpunkt des Einspielen unglücklich gewählt ist, bleiben alle Transistoren eingeschaltet, was zur Folge hat, dass bis der Einspielvorgang beendet ist, ein viel zu hoher Strom in die Schaltung fließt (da die Vorwiderstände auf eine Pulsung mit 10% ausgelegt und daher viel zu klein für eine dauerhaft anliegende Spannung sind). Daher meine Frage : gibt es einen Pin am Arduino Mega, der NUR während des Programmiervorganges sein Potenzial ändert ? (ob von 5V auf 0V oder anders herum wäre (fast) egal). Hoffe ihr könnt mir weiterhelfen ! LG Florian
:
Bearbeitet durch User
Ich rate mal, Deine Schaltung benutzt 74HC595. Da kann man einfach den /OE auf nen IO-Pin legen und noch nen Pullup dran. Im Programmiermodus sind alle IOs hochohmig und damit auch die Ausgänge der 74HC595. Die Frage ist natürlich, ob der Arduino Bootloader auch die IOs abschaltet oder einen echten (Watchdog-)Reset auslöst. Das solltest Du aber leicht testen können.
Florian D. schrieb: > und wenn der Zeitpunkt des Einspielen unglücklich gewählt ist, bleiben > alle Transistoren eingeschaltet, was zur Folge hat, dass bis der > Einspielvorgang beendet ist, ein viel zu hoher Strom in die Schaltung > fließt Ich habe da in einer LED Matrix damals so gelöst, dass ich einfach einen Jumper an die Stromversorgung der Matrix gesetzt habe. Da das Programmieren ja nicht per Zufall erfolgt, sondern ich ja weiß, wenn ich starte, habe ich die ganze Matrix stromlos gemacht.
Ja, die Beschaltung des AVR muss natuerlich so sein, dass im Programmiermodus, bedeutet Alle normalen Ports tristate, in einem sicheren, Zustand sind. Das bedeutet, du hast entweder externe pulldown, oder externe pullup Widerstaende an den relevanten Ports. Falls du die Programmierpins, die ISP, meist MOSI & MISO, fuer das Projekt verbraucht hast, musst du die entkoppeln, und dem du sie zB mit einem 74LV126 oder so umschaltest. Das macht man mit dem Reset, der im Programmiermodus=low ist. Also, der Umschalter muss bei Reset=high auf die Applikation geschaltet sein, bei Reset=low auf den ISP Anschluss. Der Reset hat sowieso einen 10k Pullup und einen 100nF nach GND.
:
Bearbeitet durch User
Sapperlot W. schrieb: > Ja, die Beschaltung des AVR muss natuerlich so sein, dass im > Programmiermodus, bedeutet Alle normalen Ports tristate, in > einem sicheren, Zustand sind. > Das bedeutet, du hast entweder externe pulldown, oder externe pullup > Widerstaende an den relevanten Ports. > > Falls du die Programmierpins, die ISP, meist MOSI & MISO, fuer das > Projekt verbraucht hast, musst du die entkoppeln, und dem du sie zB mit > einem 74LV126 oder so umschaltest. Das macht man mit dem Reset, der im > Programmiermodus=low ist. Also, der Umschalter muss bei Reset=high auf > die Applikation geschaltet sein, bei Reset=low auf den ISP Anschluss. > > Der Reset hat sowieso einen 10k Pullup und einen 100nF nach GND. Danke schonmal für deine schnelle Antwort! Das Potenzial an dem Reset Pin ändert sich währen des Programmierens nicht! Das habe ich gerade nachgemessen. MOSI und MISO sind bei mir frei. Abschalten würde ich gerne ein L293D ( der hat ja einen Enable Pin) mit dem ich die MOSFets schalte.
:
Bearbeitet durch User
Eigentlich wuerde ein pulldown von 2.2k genuegen um Fets anzusteuern.
:
Bearbeitet durch User
alles klar wird gemacht ! Vielen Dank für die schnelle und kompetente Antwort !
Peter D. schrieb: > Die Frage ist natürlich, ob der Arduino Bootloader auch die IOs > abschaltet oder einen echten (Watchdog-)Reset auslöst. Das solltest Du > aber leicht testen können. Der Arduino Bootloader kommt nach einem Reset an die Reihe. Der muss also nix abschalten. Ist alles Hochohmig. Ok, der Bootloader zappelt mit der LED, und nutzt die Serielle. Das gilt es zu beachten. An dem WDT fummelt der Bootloader nur rum, wenn der WDT vor dem Reset aktiv war. Muss er. Sonst schlägt der WDT zu, bevor der Bootloader fertig ist.
Sapperlot W. schrieb: > Der Reset hat sowieso einen 10k Pullup und einen 100nF nach GND. Aus welchem Datenblatt stammt eigendlich die Idee, !Reset müsse einen Kondensator bekommen?
Alexander J. schrieb: > Da das Programmieren ja nicht per Zufall erfolgt, sondern ich ja weiß, > wenn ich starte, habe ich die ganze Matrix stromlos gemacht. Das löst das Problem beim Programmieren, aber nicht grundsätzlich. Wenn so hohe Ströme fliessen, dass etwas zerstört werden kann, sollte man die Anzeigenschaltung auch gegen sonstige Software-Hänger usw. absichern. Ich nehme dazu einen dynamisch angesteuerten Transistor, der von einer der Multiplexleitungen eingeschaltet wird, oder die Watchdog-Funktion eines Überwachungsbausteins (MAXxxx). Bleibt das Multiplexen stehen, egal warum, wird abgeschaltet. Georg
Könntest du auf die Variante mit dem dynamisch angesteuerten Transistor ein bisschen genauer eingehen ? Wie genau sollte der denn angesteuert werden ?
:
Bearbeitet durch User
Georg schrieb: > Wenn so hohe Ströme fliessen, dass etwas zerstört werden kann, sollte man > die Anzeigenschaltung auch gegen sonstige Software-Hänger usw. absichern. Jetzt wo du es beschreibst, komme ich ins grübeln. Allerdings habe ich meine Schaltung damals so dimmensioniert, dass selbst wenn alle LED auf einmal leuchten sollten, nichts beschädigt wird. Das habe ich einfach mit eine kleinen Programm getestet, dass alle LED einschaltet und dann an lässt. Den Zustand habe ich dann 24h stehen lassen und die 595 und die Transistoren im Auge behalten. Florian D. schrieb: > Könntest du auf die Variante mit dem dynamisch angesteuerten Transistor > ein bisschen genauer eingehen ? Interessiert mich auch. Danke.
das Problem liegt nicht darin alle LEDs gleichzeitig leuchten zu lassen. Da die (bei mir 10) Ebenen ja gemultiplext werden, ist jede Ebene nur 10% der Zeit aktiv. Wenn der Controller aber aufhört zu multiplexen, sind alle 10 Ebenen für 100% der Zeit aktiv was dann den 10fachen Strom für die LEDs bedeutet, wenn ich also die Vorwiderstände nicht um das 10-fache zu groß mache, sterben die alle innerhalb von wenigen Minuten!!
Florian D. schrieb: > Könntest du auf die Variante mit dem dynamisch angesteuerten Transistor > ein bisschen genauer eingehen ? Ist schon so alt, dass es kein CAD-File gibt, sorry. Aus einem Medizincomputer, hat immer einwandfrei funktioniert bei 6 x 8 7Segment-Anzeigen. Georg
Hallo, zur Ergänzung: derzeit verwende ich diese Schaltung nicht, weil heutige Anzeigen mit wenig Strom auskommen. Eine 7Segment-Anzeige, die mit 2 mA betrieben wird und mit 8fach Multiplexing, bekommt im Fehlerfall 16 mA ab, das hält sie aus ohne kaputtzugehen. Das ist die einfachste Lösung, auch wenn es nicht schön aussieht. Aber Fehler sind allgemein nicht schön. Georg
Horst schrieb: > Aus welchem Datenblatt stammt eigendlich die Idee, !Reset müsse einen > Kondensator bekommen? eigendlich = eigentlich ? Wie Du den Reset bedienst, ist Dir überlassen, aber für den Programmiervorgang muß wohl frei sein, da bietet sich der Kondensator an.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.