Forum: Projekte & Code AVR-Lauflicht


von Rolf Magnus (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rolf Magnus (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Rolf Magnus (Gast)


Angehängte Dateien:

Lesenswert?

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ß ;-)

von Jens D. (jens) Benutzerseite


Lesenswert?

fuer so etwas brauchst du gleich einen mikrocontroller, der 3 .. X EUR
kostet??

von Herr Mueller (Gast)


Lesenswert?

@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 ;-)

von Rolf Magnus (Gast)


Lesenswert?

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.

von felmster (Gast)


Lesenswert?

tiny11@digikey: 0.44€ o.Mwst., also mit gerade mal nen halben
Euro! da gehen sich viele lauflichter aus!!!

von Peter (Gast)


Lesenswert?

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

von Jens (Gast)


Lesenswert?

> tiny11@digikey: 0.44€ o.Mwst., also mit gerade mal nen halben
> Euro!

Stimmt, fast billiger als ein TTL-Baustein bei Reichelt.

von Jens (Gast)


Lesenswert?

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

von Rolf Magnus (Gast)


Lesenswert?

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

von Bernhard WALTER (Gast)


Lesenswert?

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

von Hubert (Gast)


Lesenswert?

Yoctogeil
Zeptogeil
Attogeil
Femtogeil
Picogeil
Nanogeil
Mikrogeil
Milligeil
Zentigeil
Dezigeil

geil

Dekageil
Hektogeil
Kilogeil
(Myriageil)
Megageil
Gigageil
Terageil
Petageil
Exageil
Zettageil
Yottageil

von Jadeclaw (Gast)


Lesenswert?

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.

von Sebastian Schildt (Gast)


Lesenswert?


von Bernhard W. (Gast)


Lesenswert?

Vielen Dank für den Tipp, die Lernunterlagen auf
deutsch, sind mir eine große Hilfe

von Michael K. (Gast)


Lesenswert?

@Rolf Magnus

danke dir für die Mnemo- Codes und es geht wunderbar auf dem STK500...

Thx, Michael

von lightninglord (Gast)


Lesenswert?

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

von netdive (Gast)


Lesenswert?

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?

von Jadeclaw D. (jadeclaw)


Lesenswert?

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.

von Michael U. (tolle)


Lesenswert?

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.

von Bella (Gast)


Lesenswert?

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?

von Bella (Gast)


Angehängte Dateien:

Lesenswert?

Code Darstellung zu meine vorherige Frage.

von TobyTetzi (Gast)


Lesenswert?

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

von TobyTetzi (Gast)


Angehängte Dateien:

Lesenswert?

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

von Franz H. (Firma: Atelier34) (ledart)


Lesenswert?

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

von Rolf Magnus (Gast)


Lesenswert?

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

von Franz H. (Firma: Atelier34) (ledart)


Lesenswert?

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

von Alexander S. (esko) Benutzerseite


Lesenswert?

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)

von Thilo M. (Gast)


Lesenswert?

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

von Rolf Magnus (Gast)


Lesenswert?

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.

von Henrik Haftmann (Gast)


Angehängte Dateien:

Lesenswert?

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

von Sam .. (sam1994)


Lesenswert?

Mit Charlieplexing kommt man auf 20 Leds bei 5 Pins und auf 30 bei 6.
Nur als Anregung.

von Henrik Haftmann (Gast)


Angehängte Dateien:

Lesenswert?

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

von Henrik Haftmann (Gast)


Angehängte Dateien:

Lesenswert?

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

von Michael (Gast)


Lesenswert?

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

von STK500-Besitzer (Gast)


Lesenswert?

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.

von SVEN L. (sven_l732)


Lesenswert?

Gibt es eine Möglichkeit das ganze invertieren?
hab mit Assembler überhaupt keine Erfahrung.

LG
Sven

von Frank Q. (franki)


Angehängte Dateien:

Lesenswert?

ja, achte auf TEMPx

von SVEN L. (sven_l732)


Lesenswert?

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
Noch kein Account? Hier anmelden.