Schlagwort-Archiv: avr

BCM-Baustein

IMG_20140520_121058BCM, eine Variante von PWM, ist eine  sparsame Methode um viele LEDs gleichzeitig zu dimmen.

Um in Zukunft neue Projekte schnell mit BCM-Funktionalität auszurüsten, ohne den verwendeten Mikrocontroller damit belasten zu müssen (Pins, mindestens ein Timer, Programmspeicher, hinreichend hohe Frequenz), gibt es nun einen fertigen BCM-Baustein. Weiterlesen

WIP II: LED-Würfel

IMG_20140325_114659

Die Unterseite.

IMG_20140325_123023

Der LED-Cube mit den acht Zeilenanschlüssen und dem dickeren Z-Anschluss.

 Der LED-Würfel ist jetzt einsatzbereit, es fehlt nur noch ein passendes Gehäuse. Hier ist der eigentliche Aufbau zu sehen – nach vielen Stunden Arbeit sind die acht Ebenen aufeinander gelötet, die untersten Anoden wurden mit Schrumpfschlauch isoliert und durch eine Bodenplatte aus Alu geführt. Auf der Unterseite wurden sie dann unter passender Spannung verbogen (um die unterste Ebene wieder plan zu bekommen), verdrahtet und mit Heißkleber ganz fixiert und isoliert.

Während des Zusammenlötens wurden leider einige wenige LEDs durch die Hitze zerstört, bei etlichen anderen stellte sich hinterher heraus, dass sie auch in Sperrrichtung schwach durchlässig sind und daher zu unerwünschten Ghosting-Effekten führen (weil nicht leuchtende Anoden durch die Schieberegister auf Low gesetzt werden statt hochohmig zu werden). Weiterlesen

RS-232-Pegelwandler

IMG_20140206_021053

Ab und zu lassen sich AVR-Probleme doch nicht nur aus dem Code heraus oder anhand der “Symptome” genau erkennen. Da kann die USART-Schnittstelle hilfreich werden, damit man schnell mal ein paar Debugging-Ausgaben vom Code sehen kann.
Da die Beschaltung eines RS-232-Pegelwandlers immer gleich ist, ist sie jetzt in einer kompakten, Breadboard-kompatiblen Box verfügbar.

Weiterlesen

ISP-Programmierbox

IMG_20140130_215951Diese Box enthält selbst fast keine Bauteile außer einer winzigen Platine:

  • zwei ISP6-Header, ein ISP10-Header (wofür auch immer der gut sein mag)
  • ein Resetschalter (mit PullUp und 100nF gegen Masse)
  • ein “Mini-ISP6-Header”
  • zwei LEDs (eine gegen SCK, eine gegen +5V)
  • und natürlich 100nF zwischen +5V und GND.

Hauptgrund für das Ding war, dass der Diamex-ISP-Programmer ein viel zu kurzes Kabel hat. Davon abgesehen geht es mit den paar eingebauten Teilen schneller, Testschaltungen zusammenzustecken.

IMG_20140130_220137Die Box dient gleichzeitig zur Aufbewahrung der passenden Kabel und einer kleinen Steckplatine mit passenden Wannensteckern:

WIP: LED-Würfel

LED-Cube: Steuerplatine, Unterseite

Steuerplatine, Unterseite

LED-Cube: Steuerplatine

Steuerplatine

Dies wird die Steuerplatine. Der große Sockel fasst einen ATmega16 (oder 32), daneben ist ein 14,7456 MHz-Quarz verbaut. Der obere Sockel ist für einen MAX232 vorgesehen, der 3-polige PSS daneben für einen RS232-Anschluss (GND tx rx). (Die vier 2-poligen Buchsen sind für die Kondensatoren des MAX232 vorgesehen, die schwarz markierten Buchsen sind die Kathoden.)
Darunter gibt es einen 6-poligen ISP-Header, um das Programm ohne IC-Tausch ändern zu können, und einen Reset-Taster. Der 16-polige Header unten führt zu den beiden anderen Platinen.
Der LED-Cube soll einmal bis zu 3 LEDs und bis zu 3 Taster an seinem Gehäuse bekommen (Statusanzeige und Steuerung). Diese sind auch schon auf der Platine untergebracht (die LEDs können bei Bedarf durch Abziehen des gelben Jumpers deaktiviert werden), externe können über die beiden 4-poligen PSS angeschlossen werden (GND <T1 <T2 <T3, GND +L1 +L2 +L3).
Die offene Steckbrücke in der Nähe des Quarzes (“PU”) schaltet einen 10kΩ-PullUp für die G-Leitung der ICs auf den anderen Platinen ein.

LED-Cube: XY-Platine, Unterseite

XY-Platine, Unterseite

LED-Cube: XY-Platine

XY-Platine

Diese Platine speichert mit acht Schieberegistern (74HC595) den Inhalt einer kompletten Ebene des 8x8x8-Würfels. Von hier aus werden die 64 LEDs der untersten Ebene direkt angeschlossen (mit 8-poligen PSK), dafür sind auch 68Ω-Vorwiderstände verbaut. (Auch wieder ein gutes Stück über den Datenblatt-Angaben zum maximalen Ivcc der 595, aber der Versuchsaufbau dazu hat gehalten.)
Jeder 595 hat unter dem Sockel seinen eigenen 100nF-Abblockkondensator, außerdem gibt es unten auf der Platine noch jede Menge Kapazität, um Schwankungen auszugleichen (1000µF + 100µF + 10µF + 0,1µF).
Die beiden LEDs rechts unten dienen nur Diagnosezwecken und hängen an den gemeinsamen SCK- und RCK-Leitungen der 595. Bei Bedarf können sie beide durch Abziehen des “L”-Jumpers deaktiviert werden.
Der 6-polige Header daneben (“C-Z”) verbindet diese Platine mit dem Ebenenselektor:

LED-Cube: Z-Platine, Unterseite

Z-Platine, Unterseite

LED-Cube: Z-Platine

Z-Platine

Diese Platine sorgt dafür, dass jeweils nur eine Ebene des LED-Würfels leuchten kann. Dazu gibt es acht Transistoren (BD433, Vorwiderstand 120Ω) in Emitterschaltung, die von einem 3/8-Decoder (74HC238) angesteuert werden.
Die Platine hat auch noch einen zuschaltbaren 10kΩ-PullUp für die G-Leitung des Decoders. Damit soll verhindert werden, dass der Würfel wild flackert, wenn im Betrieb der “C-Z”-Konnektor abgezogen wird, da dann die drei Eingänge des Decoders in der Luft hängen – mit der G-Leitung auf H gehen automatisch alle acht Ausgänge des Decoders auf L, so dass die Ebenen-Transistoren alle dicht machen.
Der 8-polige PSK (“Z”) führt direkt zu den acht gemeinsamen Kathoden der Würfel-Ebenen.

eine Würfel-Ebene

eine Würfel-Ebene

Hier ist eine der acht Ebenen des Würfels zu sehen. Die Anoden stehen alle senkrecht nach unten. Es gibt eine gemeinsame Kathode, die gleichzeitig auch das “Gerüst” der Ebene bildet.
Die Ebenen werden demnächst alle aufeinandergelötet, sodass mit den 64 nach unten hin freien Anoden jeweils eine komplette Spalte adressiert wird, während mit den 8 nicht miteinander verbundenen Ebenenkathoden jeweils eine Ebene aktiviert wird.
Es handelt sich um weiße, diffuse 3mm-LEDs mit einer Durchlassspannung von 3,2 – 3,4V (~20mA).