Hab grade für eine Rundumleuchte für den Modellbau ("Blaulicht", aber bei mir isses rot) ein AVR-basiertes Lauflicht mit 5 LEDs gebastelt. Damit die Rotation nicht so ruckelig aussieht, wird ein weicher Übergang per Software-PWM gemacht. Das Ganze braucht nur 50 Bytes Speichr. Wieso gibt's eigentlich noch keine AVRs mit 64 Bytes Flash? ;-) Es müßte im Prinzip auf jedem AVR-Mikrocontroller tun, da außer den 5 Digital-Ausgängen nichts (keine Timer, keine PWM, kein Stack, keine Interrupts) verwendet wird. Primär ist es natürlich für die kleinen 8-Pin-Typen gedacht. Das ist zwar nix besonderes, aber könnte für Einsteiger vielleicht als Beispiel interessant sein. Über den DELAY-Wert kann die Rotationsgeschwindigkeit angepasst werden.
Hier noch der dazugehörige Schaltplan. Abblockkondensator und Reset-Pullup-Widerstand hab ich mal mit eingezeichnet. Es geht aber wohl zur Not auch ohne. Da zu jedem Zeitpunkt genau eine LED an ist, braucht man nur einen einzelnen gemeinsamen Vorwiderstand für alle. Da der Mikrocontroller bei low-Pegel mehr Strom schafft, sind die LEDs nach +5V verschaltet. Die Software berücksichtigt das und verwendet für eine eingeschaltete LED low-Pegel, für aus high-Pegel. Es folgt noch ein kleines Video, das die Sache in "action" zeigt, falls ich den PC überreden kann, die Videos von der Kamera anzunehmen.
Also, hier noch das Video. Man sieht ein kleines selbstgebasteltes Rundumlicht mit 5 LEDs in Bauform 0603 und einem kleinen 1mm-Metallröhrchen in der Mitte (hatte ich grad rumliegen), an das die Anoden aller LEDs direkt angelötet sind. Unterhalb dieser Stelle ist dann etwas Schrumpfschlauch drauf, damit die Katoden nicht an das Röhrchen kommen. An die Katoden ist jeweils 0,2mm-Kupferlackdraht gelötet, der dann zur Zugentlastung nochmal mit Schrumpfschlauch am Röhrchen fesgehalten wird. Das Gebilde hat inklusive LEDs einen Durchmesser von ca. 4mm. Für ein H0-Polizeiauto wäre es wohl noch zu groß ;-)
@Jens Der Bauteile-Aufwand mit 4 Bauteilen ist, denke ich, nicht zu unterbieten. Ausserdem kostet der Tiny12 nur 1.20 Euro. Auch das kann man mit diskretem Aufbau nur schwer toppen. Wenn man den SMD Tiny nimmt, braucht man weniger als 1 cm². - Und ausserdem ist das ein Mikrocontroller Forum ;-)
Etwas skrupel davor, gleich einen ganzen Mikrocontroller für sowas einfaches zu nehemn, hatte ich ja schon irgendwie. Aber: Der Tiny11 kostet bei Reichelt nur 82 cent. Wo anders hab ich ihn sogar für 65 cent oder so gesehen. Einen HV-Programmer wollte ich mir eh basteln, um bei den Achtbeinern auch mal den Reset-Pin als I/O nutzen zu können, und damit kann ich dann auch den Tiny11 programmieren. Das Ganze ist als Ersatz für ein 5-Kanal- Lauflichtmodul vom blauen Klaus gedacht, das vorher für das Rundumlicht eingesetzt wurde. Es ist deutlich größer, mit €4,29 auch teurer und macht keinen sanften Übergang. Wie Herr Müler schon schreibt, gibt's kaum eine kleinere, billigere und einfachere Lösung als einen Mikrocontroller, selbst wenn ich den "teuren" Tiny12 nehme. @ Jens: Wo kaufst du eigentlich deine Mikrocontroller? Ich hab bisher noch keinen 8-Pin-AVR gesehen, der 3 Euro oder gar mehr kostet.
tiny11@digikey: 0.44€ o.Mwst., also mit gerade mal nen halben Euro! da gehen sich viele lauflichter aus!!!
Sieht ja süß aus, das wär was als (in blau) für ein Polizeiauto für die Modelleisenbahn. Geht wahrscheinlich sogar in Spur N. Lecker :)
> tiny11@digikey: 0.44€ o.Mwst., also mit gerade mal nen halben > Euro! Stimmt, fast billiger als ein TTL-Baustein bei Reichelt.
@Rolf Habs jetzt endlich geschafft, dein AVI anzusehen, mußte mir dazu erst MPLayer ziehen weil der Mediaplayer von XP den Codec nicht hatte und auch nicht ziehen konnte :( Ich find dein Lauflicht cool!
> ...weil der Mediaplayer von XP den Codec nicht hatte und auch > nicht ziehen konnte Hmm, hatte eigentlich gedacht, das würde mit dem auch funktionieren. Ist doch gewöhnliches divx (zumindest sollt es das sein).
"Terrageil" das 1s Video,echt toll bunt. Respekt! Tipp: nur zu C1 noch etwa 1nF (560pF - 2.2nF)(paral.), und die Schaltung geht durch. (EMV -Prüfung). (100nF haben bei 40Mhz ein neg. Loch)im blocken bei HF. Spendiere gerne 5 EL Folien mit DIN A3 Format, nebst High Speed HV Optokoppler. (OK anstatt LED). Wunsch:avr asm doku in deutsch, habe vor einer 1 Kw beschlossen , als Oldi, Analogknispel mit 48j noch avr asm (ohne engl.)(Vorkenntnisse) reinzuziehen.
Yoctogeil Zeptogeil Attogeil Femtogeil Picogeil Nanogeil Mikrogeil Milligeil Zentigeil Dezigeil geil Dekageil Hektogeil Kilogeil (Myriageil) Megageil Gigageil Terageil Petageil Exageil Zettageil Yottageil
Quote: "Ist doch gewöhnliches divx (zumindest sollt es das sein)." Microsoft in seinem grenzenlosen Egoismus weigert sich schlicht, Fremdcodecs mit in den Codec-Verteiler aufzunehmen. Wem DivX fehlt, schaue hier: http://www.divx.com/ Zum Gucken den Free Download nehmen.
Vielen Dank für den Tipp, die Lernunterlagen auf deutsch, sind mir eine große Hilfe
@Rolf Magnus danke dir für die Mnemo- Codes und es geht wunderbar auf dem STK500... Thx, Michael
Hi Leute, tolles Lauflicht echt. Nur eine Sache: Mir ist die Funtion des Codes nicht so wirklich verständlich, wie machste den so nen schönen PWM übergang, ich Progge zwar auch asm aber ich steige nciht durch den Code, wie läuft das denn genau ab? Denke schonmal greezle lightninglord
hmm, ich bin leider ncoh nicht so sehr in sachen µC bewandert. ab kannst du mir sagen, warum du den PB5 über nen Widerstand auf Vcc gelegt hast?
PB5 ist im Normalfalle der Reseteingang bei diesem Controller. Da der interne PullUp-Widerstand recht hochohmig ist ( >= 100kOhm ), schlagen Störungen natürlich voll durch und sorgen für unerwünschte Resets. Ein zusätzlicher PullUp von 10kOhm reduziert das Problem deutlich. Gruss Jadeclaw.
Hallo Rolf, ich habe Dein Lauflicht nachgebaut.Super! Welchen Wert müsste ich für den Delay eingeben, um die Rotationsgeschwindikeit halb so schnell zu erhalten? Ich habe schon einige Versuche unternommen, bin jedoch zu keinem Ergebnis gekommen.
Hallo ich versucht gerade eine Aufgabe mit dem Mikrocontroller von MyAvr zu lösen. Da ist mir teilweise gelungen.Ich sollte ein lauflicht mit taste 1 von oben nach unten über die lEDs aktivieren und mit Taste 2 in umgekehrte Richtung. Ich habe zwar die Code für die zwei Taste getrennt programmiert aber ich kann es leider nicht auf eine laufen Lassen. Kann jemand mir ein tipps geben?
Hallo, ich bin grade dabei, ein 4 Kanal PWM lauflicht in C zu erstellen. Leider klappt die Logik nicht so ganz. ich habe 4 Soft PWM Kanäle mit je 100 Schritten. In einem Timer lasse ich einen PWM Wert hoch und runter zählen. So weit so gut, faden geht also, aber wie bekomme ich es nun hin, das die erste LED 50% leuchtet, wenn die 2. LED 100% hat, und die 3. wieder 50%. Das ganze muss dann natürlich auch noch "rotieren". Danke für die Hilfe. Gruß Toby
Hallo nochmal. Anliegend mein bisheriges Programm. ich habe eine Software PWM auf PORTB 0-3 mit 100 Schritten. Nun fehlt mir nur noch die Möglichkeit, ein Rotationslicht daraus zu bauen. Wer kann mir dabei weiter helfen? Gruß Toby
Hallo Rolf vielen dank für das assg lauflicht mit pwm. wenn ich dies gleiche lösung mit logikbauteilen machen würde, wäre der aufwand sehr gross! Ich arbeite erst seit ca. 2 wochen mit einem tiny13. ich bin künstler und bauen interaltive lichtobjekte. mehr hier www.atelier34.ch diese sind alle mit logikbausteinen (cmos 4000-familie) und opamp aufgebaut. jetzt versuche ich, avr für die lösungen zu verwenden. deine lösung für eine lauflicht auf pwm-basis finde ich sehr gut. habe mich zwar mit assem auseinandergesetzt, verstehe aber den lösungsansatz nicht ganz. die werte 29 und 30 (store und store2) bezw. 1 und 5 verstehe ich nicht. kannst du mir mehr details geben? vielen dank für deine hilfe! Franz
> die werte 29 und 30 (store und store2) bezw. 1 und 5 verstehe ich > nicht. kannst du mir mehr details geben? 30 ist einfach ein Wert, bei dem bit 1 bis 4 gesetzt und bit 0 gelöscht sind (11110). Der Wert 29 ist einfach das gleiche mit bit 1 (11101). Da die LEDs nach +5V geschaltet werden, steht also in STORE der Wert, den man ans PORTB-Register schicken muß, damit die erste LED an ist und in STORE2 der Wert für die zweite LED. Meine PWM schaltet dann einfach zwischen diesen beiden Werten um und verändert dabei das Tastverhältnis, so daß die erste LED immer dunkler wird und die zweite gleichzeitig immer heller. Ich nehme an, mit 1 und 5 meinst du die Werte:
1 | ori STORE2, 1 ; the lsl makes the lsb 0, we need a 1 |
2 | sbrs STORE2, 5 ; do we need to wrap around? |
Ich mache hier einen Bitshift, um das Rotieren zu erzeugen. Das heißt, beim nächsten Schritt wird aus meinem 11110 ein 11100 und aus dem 11101 ein 11010. Wie man sieht, wird dadurch aber das letzte Bit 0, und wir bräuchten eine 1, damit immer nur ein Bit 0 ist und damit nur eine LED leuchtet. Also setze ich hier das unterste Bit wieder auf 1, also kommen dann die Werte 11101 und 11011 raus. Die 5 ist die Bitnummer. Hier prüfe ich, ob die 0 schon einmal komplett durch die 5 Bits durchgelaufen ist und ich daher wieder von vorne anfangen muß.
Hi Rolf vielen Dank für deine rasche Antwort. Es hilft mir weiter, trotzdem muss ich mich noch mehr in avrasm hineinarbeiten. Ich verstehe zwar Enlisch recht gut, aber die Zusammenhänge der Fachausdrücke muss ich noch verstehen. Meine nächste Aufgabe ist dann ein ADC-avrasm Prog mit dem Lauflicht zu verbinden. Vielleicht ist der ATtiny13 mit 5 I/O Ports überfordert mit einem zusätzlichen Port für den analog Eingang. Ich habe mir da eine echte Herausforderung gestellt. Ich bin zwar dipl. El.Ing, aber mit JG 1943... Falls du mir weitere Links geben kannst, um mich noch besser in die AVR-Thematik einarbeiten zu können und/oder eine Quelle von Anwendungen geben könntest, wäre das sehr hilfreich. Schöne Grüsse aus Basel Franz
Franz Hägeli schrieb: > vielen Dank für deine rasche Antwort. Es hilft mir weiter, trotzdem muss > ich mich noch mehr in avrasm hineinarbeiten. Eventuell willst du mal C ausprobieren, ist zwar ganz anders als Assembler aufgebaut, aber m.E. nach leichter zu verstehen, da es eben eine Hochsprache ist. ASM vs C Hier mehr Informationen zu C: AVR-GCC-Tutorial > Ich bin zwar dipl. El.Ing, aber mit JG 1943... Respekt! Ich hoffe, dass ich mal in deinem Alter auch noch so am Puls der Zeit sein kann. > Falls du mir weitere Links geben kannst, um mich noch besser in die > AVR-Thematik einarbeiten zu können und/oder eine Quelle von Anwendungen > geben könntest, wäre das sehr hilfreich. AVR-Tutorial und AVR Softwarepool (fertige Programme)
Hübsches Projekt! Dar Film hat mir gefallen. Wenn du das Teil jetzt noch in ein halbkugelförmiges Gießharzblöckchen tauchst, dann hast du ein perfektes Rundumlicht. ;)
Inzwischen hat mein Vater das auch noch mit den leistungsfähigeren LEDs und vorgeschalteten Treibertransistoren in seinen Modellhubschrauber eingebaut. Muß ich mal bei Gelegenheit auch aufnehmen.
Hier ein Schaltplan für 9 LEDs. Die LED-Matrix ist derart angeschlossen, dass diese beim ISP-Programmiervorgang in-system nicht stört. Wenn die Firmware auf Anhieb stimmt, braucht man kein Hochvolt-Programmiergerät. Bei Firmware-Änderung per Hochvolt-Programmierverfahren muss man R1 und R2 temporär auslöten. Bei Verzicht auf die obere LED-Reihe kommt man auf 6 LEDs (immer noch mehr als 5) und kann bei SPI-Programmierung bleiben. Die Firmware-Änderung ist marginal: Am sinnvollsten ist eine Tabelle für die 9 auszugebenden Bitmuster. So bleibt auch das tatsächliche Routing sowie der Umlaufsinn der Rundumleuchte wahlfrei. Bei geschickter Wahl der ATtiny-Betriebsspannung kann man sogar auf die Widerstände verzichten und stellt die Helligkeit der LEDs mit der Speisespannung ein. henni
Mit Charlieplexing kommt man auf 20 Leds bei 5 Pins und auf 30 bei 6. Nur als Anregung.
Korrekter Einwand. Für zehn antiparallele Zweifarb-LEDs an 5 Portpins sähe das dann so aus. Widerstände nicht eingezeichnet. Ausprobieren, ob man die weglassen kann. Interessanterweise machen unterschiedliche Flussspannungen (bspw. zwischen Rotlicht und Blaulicht) nichts aus, sofern man die LEDs immer gleich herum orientiert. Ob die Flussspannung der LEDs über die ISP-Pins beim Programmieren stört muss man wohl ausprobieren; blaue LEDs sind eh' unkritisch. Die vorherige 9-LED-Schaltung hatte dieses Problem nicht. Die Firmware muss nun zwei Bitmuster mitschleppen, eins für PORTB und eins für DDRB. Genug Register sind ja dafür noch frei ...
Hier ist die 9-Einfarb-LED- und die 10-Zweifarb-LED-Variante auf je einer runden, zweiseitigen Platine mit 11 mm Durchmesser geroutet. Als Weihnachtsbastelei vielleicht ... Die LEDs sind jeweils 0603-SMD-Typen, die auf Kante (also seitlich strahlend) auf die Leiterplatte gelötet werden sollen. Bei der ersten Variante ist die Polarität der LEDs verschieden, um beim Layout Durchkontaktierungen zu minimieren, daher beim Bestücken aufpassen! Bei der zweiten Variante waren für Widerstände und Stützkondensatoren kein Platz mehr; dafür sind hier die 10 LEDs schön regelmäßig. Falls keine Zweifarb-LEDs zur Hand, kann man auch einfarbige bestücken, oder zwei übereinander. henni
Hallo Zusammen, ich kann aus dem Code nicht herauslesen, an welcher Stelle die Pins definiert werden, welche dann tatsächlich im Lauflicht genutzt werden. Dass zu Beginn alle Pins auf "Ausgang" gesetzt werden ist mir klar. Doch an welcher Stelle sage ich dem Chip, dass er z.B. für ein 3Kanal-Lauflicht die Pins PB0 bis PB2 verwenden soll? viele Grüße Michael
Michael schrieb: > Doch > an welcher Stelle sage ich dem Chip, dass er z.B. für ein > 3Kanal-Lauflicht die Pins PB0 bis PB2 verwenden soll? In den letzten Yeilen wird der neue Portstatus "berechnet". Da kommt acu die 31 wieder vor.
Gibt es eine Möglichkeit das ganze invertieren? hab mit Assembler überhaupt keine Erfahrung. LG Sven
Vielen lieben Dank, so funktioniert das ganze auch mit einem ULN 2803 an den Ausgängen. Was heisst achte auf TEMPx? LG Sven
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.