Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Heißkleber LED-Matrixlampe

Komponenten und Verbrauchsmaterialien

Adressierbarer LED-Streifen WS2812 von Digilent
IP60 (60 LEDs pro Meter, nicht wasserdicht, insgesamt 128 LEDs)
× 128
Arduino Nano R3
× 1
3A Mini-DC-DC-Abwärtswandler-Spannungsregler
× 1
Widerstand 10k Ohm
× 1
Widerstand 330 Ohm
× 1
Kondensator 470 µF
10V Low-Profile-Typ
× 1
10K lin 45mm Slider Potentometer (30mm Hublänge zB:Bourns PTA3043 )
× 1
Kleiner Druckknopf
× 1
Kleiner Wippschalter
× 1
DC-Steckdose (Panel-Version)
× 1
7 mm x 100 mm Klebestift
× 64

Notwendige Werkzeuge und Maschinen

3D-Drucker (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Diese Lampe basierte auf einer ähnlichen Lampe namens "Fiber Optic" LED Matrix von jbumstead. Unter Verwendung von OpenSCAD bestand das Ziel darin, die im jbumstead-Design verwendete 12-mm-Diffused-Digital-RGB-LED durch billige WS2812B-RGB-Streifen zu ersetzen und den Behälter für die LEDs und die Elektronik so dünn wie möglich zu machen, sodass billigere 7-mm-Klebestifte verwendet werden können.

Drucken der Hülle

Der einzige Teil, der Unterstützung benötigt, ist "Hot Glue Matrix - Bottom.stl". Ich habe eine Schichthöhe von 0,2 mm und eine Füllung von 15% verwendet. Ich habe festgestellt, dass es durch das Erhöhen der Lochgröße mit einem 19/64-Zoll-Bohrer nach dem Drucken einfacher wurde, die Klebestifte in die entsprechenden Löcher einzuführen.

Zusammenbau des Lampenabschnitts

1. Schneiden Sie die WS2812B LED-Streifen in 16 Streifen mit jeweils 8 LEDs.

2. Sie können die LED-Streifen nicht direkt auf den oberen oder unteren Formularen miteinander verdrahten, da sie auf jedem Formular verkehrt herum platziert werden. Kleben Sie 8 Streifen auf eine ebene Fläche, wobei die Mitte jedes Streifens 15 mm vom benachbarten Streifen entfernt ist. Ordne die Streifen so an, dass jeder alternative Streifen in die entgegengesetzte Richtung zeigt.

Stellen Sie sicher, dass sich DIN in der oberen linken Ecke befindet. Verdrahten Sie die Streifen wie oben gezeigt. Ich habe Wire-Wrap-Draht verwendet, aber Sie können jeden dünnen isolierten Kupferdraht verwenden. Sobald es verdrahtet ist, fügen Sie drei lange mehradrige Drähte zu GND, DIN und +5V hinzu. Diese Drähte gehen durch ein Loch und verbinden sich mit GND, DOUT und +5V des unteren Abschnitts. Führen Sie nun die drei Drähte durch das Loch auf dem Formular "Heißkleber-Matrix - Halter Top" und legen Sie die Streifen vorsichtig kopfüber in die entsprechenden Kanäle. Die Streifen sollten flach sitzen. Wenn nicht, überprüfen Sie, ob die Streifen richtig herum sind. Sie gehen nur in eine Richtung. Es gibt auch Kanäle für die Drähte. Sobald die LED-Streifen in Position sind, verwenden Sie Blue Painters Tape, um sie zu befestigen.

3. Verdrahten Sie die Bodenplatte auf ähnliche Weise. DOUT ist oben rechts. Fügen Sie die drei langen mehradrigen Drähte zu VCC, DIN und GND hinzu, bevor Sie die Streifen verkehrt herum auf das Formular legen. Diese Drähte gehen zur Platine.

4. Schließen Sie die Drähte des oberen Abschnitts noch nicht an, bis alle Klebestifte angebracht sind.

Hinzufügen der Klebestifte

Dies erfordert etwas Geduld. Zuerst müssen Sie die Klebestifte aussortieren. Die 7-mm-Klebestifte, die Sie bei eBay erhalten, sind etwa 100 m lang. Ich fand, dass sie ein bisschen variierten. Meins kam in Packungen mit 30, also hatte ich 90 Stöcke, um 64 von ähnlicher Länge zu finden. Außerdem musste ich die Lochgröße nach dem Drucken mit einem 19/64-Zoll-Bohrer erhöhen, damit sie leichter in die Löcher passen.

Ich habe auch einen durchsichtigen Trinkhalm verwendet, um die drei Drähte zu platzieren, die die oberen und unteren Streifen miteinander verbinden.

Fügen Sie die Klebestifte eine Reihe nach der anderen hinzu, beginnend an einem Ende und arbeiten Sie sich bis zum anderen Ende vor. Wenn alle an Ort und Stelle sind, messen Sie den Abstand zwischen oben und unten an jeder Ecke. Sie sollten alle GENAU gleich sein. Wenn nicht, passen Sie die Tiefe der Klebestifte entsprechend an. Wenn Sie mit der Ausrichtung zufrieden sind, entfernen Sie die Klebestifte von jeder Ecke und bringen Sie sie mit einer kleinen Menge Sekundenkleber wieder an ihren Platz. (Kein Superkleber auf die LED bekommen). Dies sollte die Struktur ziemlich robust machen.

Verbinden Sie die oberen und unteren Streifen

Heben Sie den unteren Streifen in der Nähe des Lochs vorsichtig an, schneiden Sie die drei Drähte ab und verlöten Sie sie. +5V bis +5V, DIN (oben) an DOUT (unten), GND an GND.

Herstellung der Platine

Ich habe die Eagle-Dateien beigefügt, wenn Sie das Board kommerziell herstellen lassen oder es wie ich selbst machen möchten. Ich habe mein Board mit der Tonermethode hergestellt. Sie können einfach ein Stück Proto-Platine verwenden, wenn Sie möchten, da der Schaltplan sehr einfach und leicht zu verdrahten ist. Die 4 Befestigungslöcher sollten mit einem 2,5-mm-Bohrer aufgebohrt und ein Gewinde mit einem 3-mm-Gewindebohrer erstellt werden. Verwenden Sie 6 mm M3-Schrauben, um die Platine an Ort und Stelle zu halten.

WICHTIG:Stellen Sie den Ausgang des DC-Reglers auf 5V, BEVOR Sie ihn an der Platine befestigen.

Endverkabelung

Verdrahten Sie das Schiebepotentiometer, den Druckschalter, den Netzschalter und die Gleichstrombuchse wie unten gezeigt:

Verbinden Sie die Drähte von den LED-Streifen mit der Platine.

Software

Die mitgelieferte Software führt eine Reihe von Testanimationen aus. Die Schaltfläche blättert durch die verfügbaren Animationen. Das Potentiometer passt die Geschwindigkeit der Animationen an.

Code

  • GlueMatrixTest.ino
  • Button.h
  • Button.cpp
GlueMatrixTest.inoC/C++
#include #ifdef __AVR__ #include #endif#include "Button.h"#define PIN_LED 2#define PIN_SWITCH 3#define PIN_POT A0#define LEDs 128// Parameter 1 =Anzahl der Pixel im Streifen // Parameter 2 =Arduino-Pinnummer (die meisten sind gültig) // Parameter 3 =Pixeltyp-Flags, addieren Sie nach Bedarf:// NEO_KHZ800 800 KHz Bitstream (die meisten NeoPixel-Produkte mit WS2812-LEDs)/ / NEO_KHZ400 400 KHz (klassische 'v1' (nicht v2) FLORA-Pixel, WS2811-Treiber)// NEO_GRB Pixel sind für GRB-Bitstream verdrahtet (die meisten NeoPixel-Produkte)// NEO_RGB-Pixel sind für RGB-Bitstream verdrahtet (v1 FLORA-Pixel, nicht v2) // NEO_RGBW Pixel sind für RGBW Bitstream verdrahtet (NeoPixel RGBW Produkte)Adafruit_NeoPixel strip =Adafruit_NeoPixel(LEDS, PIN_LED, NEO_GRB + NEO_KHZ800);Button mode =Button(PIN_SWITCH);bool modePressed =false;//Physical top . LED map for bottom and top LED-Arrays//LED unten (Rückseite von oben)//064 049 048 033 032 017 016 001//063 050 047 034 031 018 015 002//062 051 046 035 030 019 014 003/ /061 052 045 036 029 020 013 004//060 053 044 037 028 021 012 005//059 054 043 038 027 022 011 006//058 055 042 039 026 023 010 007//057 056 041 040 025 024 009 008/ /(Frontblick von oben)//LED Top (Rückblick von oben)//065 080 081 096 097 112 113 128//066 079 082 095 098 111 114 127//067 078 083 094 099 110 115 126//068 077 084 093 100 109 116 125//069 076 085 092 101 108 117 124//070 075 086 091 102 107 118 123//071 074 087 090 103 106 119 122//072 073 088 089 104 105 120 121//( Frontansicht von oben)const uint8_t botLED[] PROGMEM ={ 64,49,48,33,32,17,16,1, 63,50,47,34,31,18,15,2, 62,51,46 ,35,30,19,14,3, 61,52,45,36,29,20.13,4, 60,53,44,37,28,21.12,5, 59,54,43,38 ,27,22,11,6, 58,55,42,39,26,23,10,7, 57,56,41,40,25,24,9,8,};const uint8_t topLED[] PROGMEM ={ 65,80,81,96,97,112.113,128, 66,79,82,95,98,111.114,127, 67,78,83,94,99,110,115.126, 68,77,84,93,100,109.116,125, 69,76,85,92,101,108,117.124, 70,75 ,86,91,102,107.118,123, 71,74,87,90,103,106.119,122, 72,73,88,89,104,105,120,1 21}; // Speicher für aktuelle Werteint red =128;int green =128;int blue =128;int pattern =1;// WICHTIG:Um das NeoPixel-Burnout-Risiko zu reduzieren, fügen Sie 1000 uF Kondensator über // Pixelstromkabel hinzu, fügen Sie hinzu 300 - 500 Ohm Widerstand am Dateneingang des ersten Pixels // und minimieren den Abstand zwischen Arduino und dem ersten Pixel. Vermeiden Sie den Anschluss // an einen stromführenden Stromkreis ... wenn Sie müssen, verbinden Sie GND zuerst.void setup () { Serial.begin (115200); pinMode (PIN_LED, AUSGANG); pinMode (PIN_SWITCH, EINGANG); pinMode (PIN_POT, INPUT); // Pixelstreifen Serial.println ( "Setup ()"); strip.begin(); Strip-Show(); // Alle Pixel auf 'off' initialisieren //Button-Callbacks //mode.Background(ButtonBackground); // ISR für Pin-Wechsel am MODE-Pin setzen Button::PinChangeSetup (PIN_SWITCH);}void loop () { if (modePressed) { pattern =(pattern % 8) + 1; strip.clear(); } modePressed =false; Serial.print ("Modus"); Serial.print (Muster, DEZ); Serial.println(); Schalter (Muster) {Fall 1:colorWipe(strip.Color(255, 0, 0)); brechen; // Roter Fall 2:colorWipe(strip.Color (0, 255, 0)); brechen; // Grüner Fall 3:colorWipe(strip.Color(0, 0, 255)); brechen; // Blauer Fall 4:theaterChase(strip.Color(127, 127, 127)); brechen; // Weißer Fall 5:Regenbogen (); brechen; Fall 6:rainbowDifference(); brechen; Fall 7:rainbowCycle(); brechen; Fall 8:rainbowCycleDifference(); brechen; Fall 9:theaterChaseRainbow(); brechen; } if (!modePressed) { modePressed =mode.Pressed(); }} // Mode-Tasten-Interrupt zum Ausbrechen von Schleifen usw. // PCINT1 verarbeitet Pin-Änderungen für Pins für A0 bis A5ISR (PCINT2_vect) { modePressed =modePressed | (mode.State() ==LOW);}void ButtonBackground(void){} // Fülle die Punkte nacheinander mit einem colorvoid colorWipe(uint32_t c) { int total =strip.numPixels() / 2; for(uint16_t i=0; i  0 &&!modePressed; i--) { uint8_t botIndex =pgm_read_byte(&botLED[i]) - 1; strip.setPixelColor(botIndex, 0); uint8_t topIndex =pgm_read_byte(&topLED[i]) - 1; strip.setPixelColor(topIndex, 0); Strip-Show(); Verzögerung (map (analogRead (PIN_POT), 0, 1024, 100, 0)); }}void rainbow () {int total =strip.numPixels () / 2; for(uint16_t j=0; j <256 &&!modePressed; j++) { for(uint16_t i=0; i  
Button.hC-Header-Datei
/*Klasse:ButtonAutor:John Bradnam ([email protected])Zweck:Arduino-Bibliothek zum Umgang mit Schaltflächen*/#pragma einmalig#include "Arduino.h"#define DEBOUNCE_DELAY 5//Geschwindigkeit wiederholen#define REPEAT_START_SPEED 500# definiere REPEAT_INCREASE_SPEED 50#define REPEAT_MAX_SPEED 50class Button{public://Einfacher Konstruktor Button(int Pin); //Hintergrundfunktion, die in einer Warte- oder Wiederholungsschleife aufgerufen wird void Background(void (*pBackgroundFunction)()); //Wiederholungsfunktion, die aufgerufen wird, wenn die Schaltfläche gedrückt wird void Repeat(void (*pRepeatFunction)()); //Testen, ob die Taste gedrückt und losgelassen wird // Ruft die Wiederholungsfunktion auf, wenn eine bereitgestellt wird bool Pressed(); // Zustand der Zurück-Taste (HIGH oder LOW) - LOW =Gedrückt int State (); // Pin Change Interrupt Setup // ISR (PCINT0_vect) Pin Change Interrupt für D8 bis D13 // ISR (PCINT1_vect) Pin Change Interrupt für A0 bis A5 // ISR (PCINT2_vect) Pin Change Interrupt für D0 bis D7 static void PinChangeSetup (Byte Stift); privat:int _pin; void (*_repeatCallback)(void); void (*_backgroundCallback)(void);};
Button.cppC/C++
#include "Button.h"Button::Button(int pin){ _pin =pin; pinMode(_pin, INPUT);} // Funktion zum Aufrufen in einer Verzögerungs- oder Wiederholungsschleife einstellenvoid Button::Background(void (*pBackgroundFunction)()){ _backgroundCallback =pBackgroundFunction;} // Funktion zum Aufrufen einstellen, wenn Systemwiederholung erforderlichvoid Button ::Repeat(void (*pRepeatFunction)()){ _repeatCallback =pRepeatFunction;}static void Button::PinChangeSetup(byte pin) { *digitalPinToPCMSK(pin) |=bit (digitalPinToPCMSKbit(pin)); // Pin PCIFR aktivieren |=Bit (digitalPinToPCICRbit (pin)); // alle ausstehenden Interrupts löschen PCICR |=bit (digitalPinToPCICRbit (pin)); // Interrupt für die Gruppe aktivieren } // Testet, ob eine Taste gedrückt und losgelassen wird // gibt true zurück, wenn die Taste gedrückt und losgelassen wurde // wenn Repeat Callback angegeben ist, wird der Callback aufgerufen, während die Taste gedrückt wirdbool Button::Pressed( ){ bool gedrückt =false; if (digitalRead (_pin) ==LOW) { lange Wartezeit ohne Vorzeichen =millis () + DEBOUNCE_DELAY; while (millis() =time) { _repeatCallback(); vorzeichenlos lang schneller =Geschwindigkeit - REPEAT_INCREASE_SPEED; if (schneller>=REPEAT_MAX_SPEED) { Geschwindigkeit =schneller; } Zeit =Millis() + Geschwindigkeit; } } gedrückt =wahr; } } Return gedrückt;} // Aktuellen Button zurückgeben stateint Button::State(){ return digitalRead(_pin);}

Kundenspezifische Teile und Gehäuse

STL-Dateien für den 3D-Druck stl_files_vSNeOCJWDn.zip

Schaltpläne

Schaltplan und PCB im Eagle-Format eagle_files_D8oAM5ngf5.zip

Herstellungsprozess

  1. Halogenlampe
  2. Kleber
  3. Hotdog
  4. Lavalampe
  5. Heißluftballon
  6. Superkleber
  7. LED-Matrix + Bewegungssensor-Türanzeige [Arduino Holiday]
  8. 8x LED-Beleuchtung mit Ton
  9. Arduino-Vierbeiner
  10. Materialien für die LED-basierte Datenkommunikation der nächsten Generation