Universal Arduino shield

  • Aus einen Auftrag ist noch etwas übrig vielleicht für andere interessant. Um den Zusatzplatinen Wald etwas zu lichten habe ich eine Universale Leiterkarte für den Arduino Mirco entworfen. Der Micro ist bestückt mit dem AVR Atmel 32U4. Vorteil der Arduinoumgebung ist das sie durch die C++ Klassen recht einfach programmierbar ist. Es sind auch sehr viele Beispiele im Netz vorhanden die auch Anfängern recht schnell zu Lösungen verhelfen.


    Die PCB hat folgende Möglichkeiten.


    3x High Current Outs a 2A oder einmal 4A (PWM)für LEDs,Relais,Motoren etc.
    7x GPIOs, Inputs wahlweise Pull Up oder down.
    1xI2c wahlweise pull up 5V
    4x Analog In
    RS232 oder RS422/DMX, In oder Out, Richtung per Lötjumper oder Port umstellbar.
    Versorgungsspannung 9-24V
    5V Ausgang 800mA für weitere Geräte.
    LED Anzeigen für RX,TX
    Schutzschaltung (ideale Diode) damit die Spannung vom USB Port nicht zurück drückt wenn die Versorgungsspannung fehlt.


    passt in ein Hutschienen Gehäuse. Adapter PCB die den USB Port nach oben legt ist auch vorhanden.


    Was kann man damit machen? So ziemlich alles :D LEDs Ansteuern, RS232 Telegramme versenden auf Knopfdruck. Der 32U4 hat die zweite UART auf dem USB man könnte das als IO Gateway verwenden mit DMX,RS232,MIDI. Das Wirrwarr mit verschiedenen Boards hat damit ein Ende.


    Auf dem Foto sieht man das bestückte Vormodell. Auch wenn man nicht viel sieht, das meiste ist auf der Unterseite ;). Anbei Foto.



    Kaum spezial Bauteile bis auf die Klemmen,Drossel, alles SMD und auf eine Professionell produzierten PCB gepackt.

    Einmal editiert, zuletzt von marcoboy ()

  • Funktioniert sogar. Ich habe mal zwei DMX Versionen mit Hand bestückt. Nicht benötigte Bauteile werden einfach nicht bestückt. Die FETs haben einen RDSon von 6,5mOhm die Verlustleistung ist also quasi nicht vorhanden. Laut Datenblatt sind diese für 50A ausgelegt. Einziger Flaschenhals ist die PCB und die Klemmen. 10A gehen schon die Leiterbahnen sind für 8A berechnet. Man sieht ja die zahlreichen Durchkontaktierungen um die Masse mit möglichst viel Querschnitt an die FETs zu bekommen.




  • Es gibt DMX aus ;) und steuert gleichzeitig auch auf den PWM Ausgängen einen LED Streifen.



    Aber Vorsicht die DMXLib muss im Header etwas angepasst werden damit sie auf dem Micro läuft.



    Ein Beispiel wie einfach man Dinge erledigen kann. Von der HSV_to_RGB Funktion soll man sich nicht erschrecken lassen. Man kann LEDs nicht linear dimmen. Das sieht dann etwas komisch aus ;)

    Einmal editiert, zuletzt von marcoboy ()


  • Ein Beispiel für DMX In. Mehr braucht man nicht wissen, den Rest erledigen die Klassen. Gibt den DMX Wert von Channel 1-3 auf den PWM Ausgängen aus.


    Das Signal geht jetzt aus einen Board raus und ins andere wieder rein. Der Jumper zur automatischen Richtungsumkehr ist auf Port 12 gesetzt. RDM geht also auch. DMX_Slave dmx_slave ( SLAVE_CHANNELS , RXEN_PIN ); zieht PIN 12 auf 0 also DMX In


    Zum schalten :D


    Code
    if ( dmx_slave.getChannelValue (1) > 127 )
        digitalWrite ( RED, HIGH );
      else
        digitalWrite ( RED, LOW );



    Code
    dmx_master.setChannelValue(4,analogRead(0)/4);


    Und schon ließt man den Analog In 0 aus und gibt diesen auf Channel 4 aus. Wo das andere Board schon sich freut diesen zu verarbeiten. Die weiße Strippe ist die DMX Leitung :roll:


    So einfach ist das mit dem Arduino ! Macht schon doch irrend wie Spaß :roll:

  • Arduino goes Raspberry Pi :D Der Ardunino kümmert sich um die LED und klingelt den Wert über USB zum Pi. Vorteil dieser Konstellation auf serielle Schnittstellen lässt sich unter jeden System recht einfach zugreifen. Zwar hat der PI eigene GPIOs aber auf diese lässt sich nur zugreifen wenn man direkt in die Register des BCM schreibt. Das geht nur mit Root rechten. Das bringt in vielerlei Hinsicht Probleme mit sich. Vor allen bei Webapplikationen. Man müsste den Webserver mit Root rechten laufen lassen was bei vielen Webservern im Code schon unterbunden wird. Man muss nur den User unter dem der Webserver läuft erlauben auf die Seriellen Ports zugreifen zu dürfen.
    Die zweite UART ist noch frei und darüber könnte auch DMX ausgegeben werden. Ein DMX USB Interface wäre so auch möglich :wink:


    Mit CGI lassen sich sehr einfach Daten tauschen.