Die Flipdot Platinen sind da!

IMG_3474Mit Spannung erwartet, nun sind sie da. Die ersten „selbst gemachten“ Platinen seit fast dreißig Jahren! Wobei das mit dem „selbst gemacht“ so eine Sache ist. Geliefert aus China, das Layout erzeugt von Urs aus der Arduino Hannover Gruppe, bestellt von Luca. Aber zumindest das zugrunde liegende Schaltbild ist von mir :-)
IMG_3475Zunächst werden aus der einen Platine zwei: Mit der Sollbruchstelle in der Mitte lassen sich Controller und Flipdotträger von einander trennen. Der Controller wird mit 8 Kondensatoren 100nF und zwei Elkos 100uF bestückt und bekommt außerdem zwei 74238 Adressdecoder, sechs L293D Motortreiber und einen Arduino Nano. Wer es modular mag, bestückt außerdem noch eine 20 polige Buchsenleiste, in die die Flipdot Platine eingesteckt wird.
IMG_3477Auf der Flipdot Platine werden dann noch 35 SMD Doppeldioden eingelötet, bevor die fünf Flipdot-Riegel (7*1) eingebaut werden. Mit einer Stiftleiste versehen können die beiden Module dann aufeinander gesteckt werden. Vier Lötpads sind vorhanden, um dem Modul seine Adresse auf dem I2C Bus vorzugeben. 16 Module lassen sich in der aktuellen Version anreihen. Nach dem Power On zeigt jedes Modul kurz seine Nummer und lauscht dann auf dem Bus.IMG_3482

Ach: und einen Jumper gibt es auf der Rückseite auch noch, mit dem lässt sich der Selbstest bzw. Demomodus aktivieren. So sieht das Modul dann aus:

 

Der 5*7 Flipdot Controller auf dem Weg zur Platine

Mein Flipdot-Controller war zunächst ja nur für meine bereits fertigen 5×7 Module gedacht. Dann kam Urs, unser Platinendesigner und erzeugte das folgende Platinenpaar, das neben dem Controller eine Trägerplatine für fünf 1×7 Flipdotstreifen mitbringt. Damit wird das Set „massentauglich“, denn ein paar von den 1×7 Streifen haben wir ja noch auf Lager.

fd1

So sieht das ganze in der Theorie aus. Eine erste Charge ist bestellt und soll demnächst ihren Weg von China nach Deutschland finden. Ich werde berichten :)
fd2

Die in der Abbildung horizontal angesetzte Buchsenleiste kommt da natürlich senkrecht rein, damit der Controller auch komplett hinter der Flipdot-Trägerplatine verschwindet.

5*7 Treiberplatine an gestoppten Flipdots

Nach dem die Treiberschaltung so weit funktioniert, habe ich sie mal vom 5*7 Modul abgeklemmt und fliegend mit einem entsprechenden Bereich auf einer 19*21 Matrix verdrahtet. Auf der großen Matrix sind die Dots gestoppt – d. h. das auffällige Nachschwingen fällt weg. Mit diesem Aufbau kann ich nun weiter am Timing basteln, wobei die Änderungszyklen schon ganz flott gehen.

 

5*7 Flipdot Matrix als I2C Client

Aus Mirow habe ich auch sechs „fertige“ Flipdot Module mit fünf mal sieben Dots. Die Dioden sind auch schon drauf. Auf einer zwanzigpoligen Buchse sind die fünf Spaltenleitungen und je sieben Set- und Resetleitungen herausgeführt.

Zum Ausprobieren habe ich ein Treiberboard mit L293D und zwei Adressdecodern gebastelt. Von oben (rechtes Bild) sieht die Schaltung recht zivil aus. Links ist die Unterseite abgebildet – die Spannungen und GND sind mit Silberdraht auf den Lötpunkten verlegt, der Rest ist fliegend verdrahtet.

IMG_3183

IMG_3186Mit vier DIP Schaltern lässt sich die Modulnummer einstellen (von 0-15), der fünfte kann das Modul in einen Selbsttest Modus schicken, falls man kein I2C Master vorhanden ist. Damit wäre auch schon etwas zur Ansteuerung gesagt: Der Treiber ist mit einem Arduino Nano als I2C Client ausgestattet.

Zunächst mal eine kleine Funktionsprüfung (oben), danach der Versuch, wie weit man mit dem Timing so gehen kann (unten). Abschließend beurteilen kann man das Verhalten aufgrund der auf den Modulen verwendeten ungestoppten Dots nicht, aber das untere Video zeigt schon einen gewissen Fortschritt :-)

Nun noch der Test mit einem weiteren Arduino Nano als I2C Master und einem passenden Text:

Noritake 5*7 VFD Matrix

Einer der Schätze, der mir auf der Einkaufstour in MV in die Händer fiel, waren VFD Displays der Firma Noritake itron mit der Typenbezeichnung DM5X7A. Danach kann man im Netz eine Weile suchen, so richtig fündig wird man aber nicht. Die Leitungsverlegung kann man auf der Rückseite des Displays direkt erkennen – da ist kein Datenblatt von Nöten.

Noritake DM5X7A

Anders sieht es bei den Spannungen für Heitzung, Gitter und Anode aus. Vorsichtig herangetastet habe ich mich an die folgenden Werte – die sind für den statischen Betrieb und zum Ausprobieren durchaus OK:

  • Heizung: 2V,
  • Gitterspannung: 8V
  • Anodenspannung: 8V

Damit ergibt sich das folgende Bild:

Später habe ich dann die Werte schrittweise angehoben. Damit sieht die Anzeige immer noch „ganz gesund“ aus:

  • Heizung: 3V,
  • Gitterspannung: 12V
  • Anodenspannung: 12V

Shopping!

Manchmal fallen einem ja Dinge vor die Füße, zu denen man einfach nicht nein sagen kann. So ging es mir neulich irgendwo in den Weiten von Mecklenburg-Vorpommern. Jemand aus der Arduino Hannover Gruppe hatte einen Forumsbeitrag aufgetan, der unglaubliches verhieß: Ein Lager voll mit Flipdots, Bauteilen und VF Displays und alles musste raus. Große Mengen, kleine Preise.

Was soll ich sagen: Es stimmte Wort für Wort. Und so verfüge ich jetzt über einen kleinen Vorrat an Flipdots – teils auf fertigen Displays, teils als 7*1 Riegel zum selber löten. Ein paar VFDs sind auch noch abgefallen und liegen hier als Versuchsobjekte bereits auf meinem Basteltisch. Die Richtung für kommende Projekte ist jedenfalls vorgegeben ;-)

VFDAuswahlIMG_2947

Der Strandbeest Arduino Sketch

Ursprünglich sollte der Quelltext eigentlich beim Make Magazin auf der Seite gehostet werden, ich übernehme das jetzt mal hier. Die nachfolgenden Zeilen machen zusammengefasst folgendes: Nach der Initialisierung in setup() wird in loop() zunächst geprüft, ob an einem der beiden RC Kanäle (hier: chA) überhaupt ein Puls anliegt. Falls nein, so ist das (mindestens) beim FlySky Receiver das Signal dafür, dass keine Verbindung zum Sender besteht. Dann bekommen die Servos ein Stoppsignal.

Ist auf Kanal A ein Puls messbar, so wird auch noch der zweite Kanal gemessen. Je nach Wertebereich werden dann die Servos angesteuert.

// Strandbeest RC V1.1 -- 2016-01-19
// OHNE 45° Steuerknüppel-Stellungen
// FlySky Receiver

#include <Servo.h> 

Servo links;
Servo rechts;

#define RechtsFwd 180
#define RechtsBck 0
// Neutral kann angepasst werden, wenn Servos "kriechen"
#define RechtsNeutral 90

#define LinksFwd 0 
#define LinksBck 180
// Neutral kann angepasst werden, wenn Servos "kriechen"
#define LinksNeutral 90

#define RCchA 9
#define RCchB 8

long chA;
long chB;

void setup()
{
  // Pins für den RC Receiver auf Input
  pinMode(RCchA, INPUT);
  pinMode(RCchB, INPUT);

  //Servos anmelden und auf Neutral stellen
  rechts.attach(5);
  rechts.write(RechtsNeutral);
  links.attach(6);
  links.write(LinksNeutral);
}

void loop()
{
  //Fernbedienungskanal A abfragen
  chA = pulseIn(RCchA, HIGH, 30000);
  //Wenn =0, dann kein RC Connect
  if (chA==0)
  {
    //Servos stoppen, falls keine RC Verbindung
    rechts.write(RechtsNeutral);
    links.write(LinksNeutral);
    chA = pulseIn(RCchA, HIGH, 30000);
  }
  else
  {
    //RC Verbindung vorhanden, also auch noch 
    //Fernbedienungskanal B abfragen
    chB = pulseIn(RCchB, HIGH, 30000);
    
    if (chB < 1200) //Steuerknüppel nach links 
    { 
      if ((chA > 1300)&&(chA < 1600)) 
      // Vor/Rück in etwa in Mittelstellung? 
      { //rechtes Servo vorwärts, linkes Servo rückwärts 
        rechts.write(RechtsFwd); 
        links.write(LinksBck);
      }
    } 
    else if (chB > 1700) //Steuerknüppel nach rechts
    {
      if ((chA > 1300)&&(chA < 1600)) 
      // Vor/Rück in etwa in Mittelstellung? 
      { //rechtes Servo rückwärts, linkes Servo vorwärts 
        rechts.write(RechtsBck); 
        links.write(LinksFwd); 
      } 
    } 
    else //Steuerknüppel Kanal B etwa auf Mitte 
    { 
      if (chA > 1700) //Steuerknüppel nach vorn
      {
        //Rechtes und linkes Servo vorwärts
        rechts.write(RechtsFwd);
        links.write(LinksFwd);  
      }
      else if  (chA < 1200) //Steuerknüppel nach hinten
      {
        //Rechtes und linkes Servo rückwärts
        rechts.write(RechtsBck);
        links.write(LinksBck);        
      }
      else // Kanal A und B etwa auf Mitte - also Stopp
      {
        //Beide Servos Stopp
        rechts.write(RechtsNeutral);
        links.write(LinksNeutral);
      }
    }
  }
}

Die gedruckte Strandbeest Bauanleitung…

Achtung, es folgt Werbung ;-)100

Über meine lokale offene Werkstatt und über Twitter hatte ich schon seit einer Weile immer mal wieder lose Kontakt mir der Make Redaktion beim Heise Verlag. Eine erste Seite im Heft kam dann auch durch einen Tweet zustande. Gedruckt wurde sie in der Ausgabe 4/2015. Nichts großes, aber fühlte sich schon ganz witzig an, sich selbst mal in der Zeitung zu lesen.

Ende vergangenen Jahres gab es dann Gespräche zum Thema Strandbeest. Das ganze bewegte sich zwischen „wir machen mal zwei Seiten“ und „ich hab hier mal eine etwas längere Gliederung für Euch“. In den Weihnachtsferien habe ich mich dann mal hingesetzt und angefangen das Projekt zu beschreiben.

Was soll ich sagen: Es ist dann doch eher ausführlich geworden ;-) Das Resultat gibt es spätestens ab morgen am Kiosk!

Make Magazin 01-2016

Was ist neu in Version 1.5?

Ein weiteres Mal habe ich am Strandbeest-Bausatz herumoptimiert. Ich hatte ja bereits Verstärkungen für die Trägerplatten der Beinpaare eingeführt, aber was soll ich sagen: Einem Achtjährigen halten die so noch nicht Stand.

Also habe ich die Platten noch ein wenig größer gemacht. Gewissermaßen als Bonus gibt es Halter für die Muttern der Zahnradachsen inklusive, so dass es jetzt ausreicht, die Achsen von einer Seite mit einem Inbus nachzuziehen, ohne gleichzeitig auf der anderen Seite die Mutter halten zu müssen. Außerdem neu: die Muttern, mit denen die Deck- und die Bodenplatte gehalten werden, können nun nicht mehr durchfallen. Die Ausschnitte in der Verstärkung sind ein wenig kleiner gewählt, so dass die Muttern alle zusammen vor dem Einbau eingelegt werden können. Neu auf die Teileliste kommt dafür Holzleim, außerdem sind ein paar Spann- oder Klemmzwingen hilfreich. Notfalls tun es auch Wäscheklammern ;-)Material

Mit auf dem Bild: Schrauben und Muttern. Weshalb? Nun, wenn die Verstärkung aufgeklebt wird, ist es wichtig, dass sie überall genau passend sitzt. Daher mein Tipp: Schrauben und Muttern anbringen, Verstärkungsplatte ausrichten, Schrauben festziehen, Platte abnehmen, mit Leim einstreichen und dann zurück damit auf die Muttern. Passt.

So sieht das aus:7K2_40967K2_40987K2_4101