Baustellensicherungsanhänger mit Beleuchtung

p1283656Nachdem von Herpa ein Baustellensicherungsanhänger als Modell im Maßstab 1:87 verfügbar war, baute ich in diesen eine funktionsfähige Beleuchtung ein.

Neben den 2 großen und 24 kleineren LEDs kommt zur eigentlichen Blinkersteuerung ein Atmel-Mikrocontroller zum Einsatz. Diese Controller sind frei programmierbar und daher ideal für diesen Einsatzzweck. Da die Controller auch in SMD-Ausführung zu haben sind, ist ein äußerst kleiner Aufbau möglich.

p1283654Auf diesem Bild ist in etwa erkennbar, wie die Verdrahtung der LEDs durchgeführt wurde.

Das Original kann drei Lichtzeichen darstellen: Pfeil nach links, Pfeil nach rechts und Kreuz. Beim Nachbau habe ich mich auf die beiden Pfeile beschränkt, da hierbei die Verdrahtung erheblich einfacher ist.

Die LEDs werden ohne Vorwiderstände direkt mit 5 Volt versorgt. Die beiden oberen, großen Blitzer sind weiße LEDs mit einer Betriebsspannung von nominell etwa 3-3,4 Volt. Durch den nur wenige Millisekunden andauernden Stromstoß leuchten sie besonders hell, nehmen aber hierdurch auch keinen Schaden. Die restlichen 24 LEDs werden durch eine Pulsweitenmodulation angesteuert. Dies sind ebenfalls extrem kurze Stromstöße, die das Auge aber aufgrund seiner Trägheit nicht erkennt und von einer dauerhaft leuchtenden LED ausgeht. Durch Variation der Pulslänge erhält man einen Dimm-Effekt. Der Pfeil wird also langsam angehen und auch noch etwas nachleuchten.

Die Leuchtennachbildungen hat Herpa auf einen einteiligen Spritzling gesetzt. Die beiden großen Leuchten müssen von diesem Spritzling gelöst und der Verbindungssteg entfernt werden. Die LEDs werden schließlich mit Sekundenkleber aufgeklebt.

Den Controller kann man gut auf der Unterseite des Anhängers unterbringen. Vom Anhänger weg führen dann nur noch 2 Leitungen für die Versorgungsspannung.

Nachbau
  • 2 superhelle, weiße SMD-LEDs PLCC2 (diese haben die nötige Helligkeit für die beiden großen Blitzer). Ich rate dringendst davon ab, direkt von vorn in den Lichtblitz zu blicken! Die Helligkeit ist doch schon so groß, daß man einen mehrere Minuten anhaltenden Lichtpunkt vor Augen hat.
  • 24 gelbe oder orange SMD-LEDs 0805
  • 1 Atmel AtTiny26 (Hinweis: dieser Baustein muss erst programmiert werden, bevor er hier eingesetzt werden kann. Ein Exemplar aus dem Laden tut zunächst rein gar nichts).
  • einen sehr feinen Lötkolben
  • und eine ruhige Hand.

p1283658Hier sieht man das Prototypen-Board mit dem Mikrocontroller (in DIL-Ausführung zwecks besserer Möglichkeiten zum Messen und Testen) und den Programmiersockel.

p1283657

p2103825Der Baustein fertig in den Anhänger eingebaut.

Mit dem kleinen Steckverbinder (im unteren Drittel des Controllers montiert), wird eingestellt, ob der Pfeil nach links oder rechts zeigt.

An den vielen noch freien Pins ist zu erkennen, dass der Controller mit dieser Aufgabe hoffnungslos unterfordert ist. Da kleinere Controller aber in der Regel teurer sind, lohnt sich dies nur, wenn wirklich absolut kein Platz im Modell vorhanden ist.

Die einzelnen Pins des Mikrocontrollers haben einen Abstand von 1.27mm. Noch kleiner geht es durch Verwendung des AtMega8. Dieser ist ca. 9x9mm groß, hat aber einen Pin-Abstand von 0.8mm.

Software
Die Software hatte ich seinerzeit mit einem Pascal-Compiler geschrieben. Da der Ablauf recht einfach ist, sollte eine Umsetzung in eine andere Sprache problemlos möglich sein.

program baustellenblitzer;

{$NOSHADOW}
{ $W+ Warnings}            {Warnings off}

Device = Tiny26, VCC=5;

Import SoftPWM;

From System Import ;

Define
  ProcClock      = 4000000;       {Hertz}
  StackSize      = $0010, iData;
  FrameSize      = $0020, iData;
  SoftPWMport    = PortA;          {use PortA for PWM output}
  SoftPWMtimer   = Timer0, 10;     {use timerx, PWM cycle time msec}
  SoftPWMres     = 254;            {PWM resolution is 254 points}
  SoftPWMchans   = 2, 2;           {x channels, bity is the first bit}

Implementation

{$IDATA}

{--------------------------------------------------------------}
{ Const Declarations }
const
  DAUER_BLITZ: Word = 85;         // Leuchtdauer des Blitzes          100
  DAUER_PFEIL: Word = 300;         // Leuchtdauer des Pfeils          350
  PAUSE_BLITZ_PFEIL: Word = 220;   // Pause zwischen Blitz und Pfeil  220
  PAUSE: Word = 450;               // Pause zwischen zwei Sequenzen   680
  

{--------------------------------------------------------------}
{ functions }

procedure InitPorts;
begin
  PortA:= %11111111;
  DDRA:=  %11111111;
end InitPorts;


{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

var
  i: Byte;
  
begin
  InitPorts;
  EnableInts;

  loop
    SoftPWM1 := 255;
    SoftPWM2 := 255;

    Excl(PortA, 0);  // Blitzer einschalten
    mDelay(DAUER_BLITZ);
    Incl(PortA, 0);  // Blitzer ausschalten
    
    mDelay(PAUSE_BLITZ_PFEIL);  // Pause zwischen Blitz und Pfeil
    
    for i := 255 downto 150 by 5 do
      SoftPWM1 := i;
      SoftPWM2 := i;
      mDelay(8);
    endfor;

    mDelay(DAUER_PFEIL);  // Leuchtdauer Pfeil

    for i := 150 to 255 by 5 do
      SoftPWM1 := i;
      SoftPWM2 := i;
      mDelay(2);
    endfor;

    mDelay(PAUSE);  // Sequenz-Pause
  endloop;
end pwm02.

 

4 Kommentare:

  1. Hallo Andreas,
    vielen lieben Dank für die Vorstellung deines genialen Projektes. Das muss ich definitiv nachbauen. Der Anhänger ist schon bestellt. Steuern werde ich das Ganze aber mit der MobaLedLib (=> Stummiforum). Daher muss ich jede LED einzeln anschließen, zumindest die Kathoden.

    Kannst du uns vielleicht noch verraten, welche Zeiten du programmiert hast (Dauer für: Aufblenden, Leuchten, Abblenden, Pause, Blitz, Pause)?

    Das wäre wirklich sehr cool. Ich sag schon mal Danke!

    Viele Grüße, Michael

    • Andreas Schulze (Admin)

      Hallo,
      ich habe folgende Werte im Quellcode gefunden:
      Leuchtdauer des Blitzes 85ms
      Leuchtdauer des Pfeils 300ms
      Pause zwischen Blitz und Pfeil 220ms
      Pause zwischen zwei Sequenzen 450ms


      loop
      SoftPWM1 := 255;

      Excl(PortA, 0); // Blitzer einschalten
      mDelay(DAUER_BLITZ);
      Incl(PortA, 0); // Blitzer ausschalten

      mDelay(PAUSE_BLITZ_PFEIL); // Pause zwischen Blitz und Pfeil

      for i := 255 downto 150 by 5 do
      SoftPWM1 := i;
      mDelay(8);
      endfor;

      mDelay(DAUER_PFEIL); // Leuchtdauer Pfeil

      for i := 150 to 255 by 5 do
      SoftPWM1 := i;
      mDelay(2);
      endfor;

      mDelay(PAUSE); // Sequenz-Pause
      endloop;

      Viele Grüße
      Andreas Schulze

      • Hallo Andreas,
        vielen lieben Dank. Ich konnte es in die MobaLedLib übertragen und es sieht mit zwei Test-LEDs schon sehr gut aus. Kann es sein, dass der Quellcode sich schon hinter dem Spoiler verborgen hat, bevor ich nach den Zeiten gefragt hab? Das wäre ja peinlich…
        Viele Grüße, Michael

        • Andreas Schulze (Admin)

          Hallo Michael,
          nein, ich hatte den Beitrag umgehend erweitert. Ansonsten wäre es aber auch nicht schlimm 🙂
          Viele Grüße
          Andreas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.