1. Home
  2. Chat
  3. Forum
  4. Kalender
    1. Termine
    2. Karte
  5. Lexikon
    1. Letzte Änderungen
  6. Marktplatz
    1. Bewertungen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Termine
  • Lexikon
  • Marktplatz-Eintrag
  • Seiten
  • Erweiterte Suche
  1. PA-Forum
  2. Forum
  3. Selbstbau
  4. Selbstbau und Reparatur Technik

Universal Arduino shield

  • marcoboy
  • 16. Dezember 2014 um 16:19
  • marcoboy
    Verifiziert
    Reaktionen
    190
    Beiträge
    6.814
    Marktplatz Einträge
    3
    • 16. Dezember 2014 um 16:19
    • #1

    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 (18. Dezember 2014 um 21:01)

  • marcoboy
    Verifiziert
    Reaktionen
    190
    Beiträge
    6.814
    Marktplatz Einträge
    3
    • 18. Dezember 2014 um 20:58
    • #2

    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.


  • bemi
    Reaktionen
    64
    Beiträge
    1.755
    • 18. Dezember 2014 um 23:36
    • #3

    das schaut ziemlich cool aus (y)

    Viele Grüße aus dem Allgaeu - Michael "bemi" Bernhard
    https://bemiton.wordpress.com/

  • marcoboy
    Verifiziert
    Reaktionen
    190
    Beiträge
    6.814
    Marktplatz Einträge
    3
    • 19. Dezember 2014 um 18:17
    • #4

    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.

    Code
    #include <Conceptinetics.h>
    #define DMX_MASTER_CHANNELS   100 
    #define RXEN_PIN                12 // pin for direction
    #define RED       9// pin for red
    #define GREEN    10 // pin for green
    #define BLUE     11 // pin for blue 
    #define SIZE    255
    #define DELAY  5
    #define HUE_MAX  6.0
    #define HUE_DELTA 0.01
    DMX_Master        dmx_master ( DMX_MASTER_CHANNELS, RXEN_PIN );
    
    
    
    
    long rgb[3];
    long rgbval;
    float hue=0.0, saturation=1, value=1;
    long bright[3] = { 256, 256, 256}; //color adjust
    long k;
    
    
    
    
    
    
    
    void setup() {             
     
      dmx_master.enable ();    
    }
    
    
    
    
    void loop() 
    { 
    
      hue += HUE_DELTA;
      if (hue > HUE_MAX) {
        hue=0.0;
      }
      rgbval=HSV_to_RGB(hue, saturation, value);
      rgb[0] = (rgbval & 0x00FF0000) >> 16; 
      rgb[1] = (rgbval & 0x0000FF00) >> 8;
      rgb[2] = rgbval & 0x000000FF;
      for (k=0; k<3; k++) { 
        analogWrite(RED + k, rgb[k] * bright[k]/256);
        dmx_master.setChannelValue ( 1+k,rgb[k] * bright[k]/256  );
    }
    delay(DELAY);
    }
    
    
    
    
    long HSV_to_RGB( float h, float s, float v ) {
      /* modified from Alvy Ray Smith's site: http://www.alvyray.com/Papers/hsv2rgb.htm */
      // H is given on [0, 6]. S and V are given on [0, 1].
      // RGB is returned as a 24-bit long #rrggbb
      int i;
      float m, n, f;
    
    
    
    
      // not very elegant way of dealing with out of range: return black
      if ((s<0.0) || (s>1.0) || (v<1.0) || (v>1.0)) {
        return 0L;
      }
    
    
    
    
      if ((h < 0.0) || (h > 6.0)) {
        return long( v * 255 ) + long( v * 255 ) * 256 + long( v * 255 ) * 65536;
      }
      i = floor(h);
      f = h - i;
      if ( !(i&1) ) {
        f = 1 - f; // if i is even
      }
      m = v * (1 - s);
      n = v * (1 - s * f);
      switch (i) {
      case 6:
      case 0: 
        return long(v * 255 ) * 65536 + long( n * 255 ) * 256 + long( m * 255);
      case 1: 
        return long(n * 255 ) * 65536 + long( v * 255 ) * 256 + long( m * 255);
      case 2: 
        return long(m * 255 ) * 65536 + long( v * 255 ) * 256 + long( n * 255);
      case 3: 
        return long(m * 255 ) * 65536 + long( n * 255 ) * 256 + long( v * 255);
      case 4: 
        return long(n * 255 ) * 65536 + long( m * 255 ) * 256 + long( v * 255);
      case 5: 
        return long(v * 255 ) * 65536 + long( m * 255 ) * 256 + long( n * 255);
      }
    }
    Alles anzeigen

    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 (19. Dezember 2014 um 22:20)

  • marcoboy
    Verifiziert
    Reaktionen
    190
    Beiträge
    6.814
    Marktplatz Einträge
    3
    • 19. Dezember 2014 um 20:06
    • #5
    Code
    #include <Conceptinetics.h>
    #define RED       9// pin for red
    #define GREEN    10 // pin for green
    #define BLUE     11 // pin for blue 
    #define SLAVE_CHANNELS 3
    #define RXEN_PIN       12
    
    
    
    
    
    
    
    
    
    
    DMX_Slave dmx_slave ( SLAVE_CHANNELS , RXEN_PIN );
    
    
    
    
    
    
    
    
    
    
    void setup() {             
     dmx_slave.enable ();
     dmx_slave.setStartAddress (1); 
     pinMode (RED,OUTPUT);
     pinMode (GREEN,OUTPUT);
     pinMode (BLUE,OUTPUT);
    }
    
    
    
    
    void loop() 
    { 
    
          analogWrite(RED,dmx_slave.getChannelValue (1) );
          analogWrite(BLUE,dmx_slave.getChannelValue (2) );
          analogWrite(GREEN,dmx_slave.getChannelValue (3) );
    
    
    }
    Alles anzeigen

    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:

  • marcoboy
    Verifiziert
    Reaktionen
    190
    Beiträge
    6.814
    Marktplatz Einträge
    3
    • 21. Dezember 2014 um 13:44
    • #6

    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.


Anstehende Termine

  • Kombiseminar Sachkundiger für Anschlagmittel und Traversensysteme (AnschlägerPlus)

    Dienstag, 29. September 2026 – Donnerstag, 1. Oktober 2026
  • Sachkunde für Fliegende Bauten

    Dienstag, 29. September 2026 – Donnerstag, 1. Oktober 2026
  • Virtueller Stammtisch im Chat

    Dienstag, 29. September 2026, 21:00 – 23:00
  • PA-Forum Stammtisch LeatCon

    Dienstag, 6. Oktober 2026, 13:00 – 14:00
  • PA-Forum Stammtisch LeatCon

    Mittwoch, 7. Oktober 2026, 13:00 – 14:00

Letzte Themen

  1. 17. - 18. November | PA Rigging & Truss Safety mit Tom Greber

    Soundchecker
    23. September 2026 um 10:33
  2. 13. - 14. Oktober | Live Mixing Workshop mit Jörn Müller in Köln

    Soundchecker
    23. September 2026 um 10:30
  3. können das hier (Foto) die original Weichen der KMT CS215 / CM215 sein ?

    phattomatic
    23. September 2026 um 09:12
  4. RCF: "Bass Motion Control" vs. "XBoost" => Ähnliche Funktionalität unter zwei verschiedenen Etiketten oder relevante Unterschiede?

    Hanseat
    21. September 2026 um 22:21
  5. Suche Lichteffekt

    Schreddl
    21. September 2026 um 12:22
  6. QLC+4 in MagicQ Visualsieren - wie richtig einstellen?

    metal-shot
    19. September 2026 um 17:44
  7. Verschiedene Verteiler mit Powercon Anschluss bzw. Ausgang kompatibel?

    tenderboy
    19. September 2026 um 12:22
  8. Suche Optocore Spezialisten - trouble shooting eines SANE Verbunds

    georg.h
    19. September 2026 um 10:21
  9. Quick & dirty reverse engineering - wie gehts weiter?

    phlownd
    19. September 2026 um 10:13
  10. DSP Preset für The Box Pro TP218 MKIII

    dxnny074
    18. September 2026 um 15:16
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™