Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Lâmpada de matriz LED com cola quente

Componentes e suprimentos

Faixa LED endereçável Digilent WS2812
IP60 (60 LEDs por metro, não à prova d'água, total de 128 LEDs)
× 128
Arduino Nano R3
× 1
Regulador de voltagem do conversor abaixador Mini DC-DC 3A
× 1
Resistor 10k ohm
× 1
Resistor 330 ohm
× 1
Capacitor 470 µF
Tipo de baixo perfil 10V
× 1
10K lin 45mm Slider Potentometer (curso de 30mm, por exemplo:Bourns PTA3043 )
× 1
Botão pequeno
× 1
Small Rocker Switch
× 1
Soquete de alimentação DC (versão do painel)
× 1
Cola em bastão 7 mm x 100 mm
× 64

Ferramentas e máquinas necessárias

Impressora 3D (genérica)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Esta lâmpada foi baseada em uma lâmpada semelhante chamada Matriz de LED de "Fibra Óptica" da jbumstead. Usando o OpenSCAD, o objetivo era substituir o LED RGB digital difuso de 12 mm usado no design do jbumstead por tiras RGB WS2812B baratas e tornar o recipiente para LEDs e eletrônicos o mais fino possível, permitindo o uso de bastões de cola de 7 mm mais baratos.





Imprimindo o caso


A única parte que requer suporte é "Hot Glue Matrix - Bottom.stl". Usei uma camada de 0,2 mm de altura e um preenchimento de 15%. Descobri que, ao aumentar o tamanho do furo usando uma broca de 19/64 "após a impressão, ficou mais fácil inserir os bastões de cola em seus respectivos furos.





Montagem da seção da lâmpada


1. Corte as tiras de LED WS2812B em 16 tiras, cada uma contendo 8 LEDs.

2. Não é possível conectar as faixas de LED diretamente nos formulários superior ou inferior, pois elas são colocadas em cada formulário de cabeça para baixo. Cole 8 tiras em uma superfície plana com o centro de cada tira a 15 mm de sua tira adjacente. Organize as tiras de modo que todas as tiras alternativas fiquem na direção oposta.

Certifique-se de que DIN está no canto superior esquerdo. Faça a ligação das tiras conforme mostrado acima. Usei fio de arame, mas você pode usar qualquer fio de cobre fino e isolado. Assim que estiver conectado, adicione três fios longos multifilares a GND, DIN e + 5V. Esses fios passarão por um orifício e se unirão com GND, DOUT e + 5V da seção inferior. Agora alimente os três fios através do orifício no formulário "Hot Glue Matrix - Holder Top" e coloque cuidadosamente as tiras de cabeça para baixo em seus respectivos canais. As tiras devem ficar planas. Se não, verifique se as tiras estão do lado correto. Eles só vão em uma direção. Existem canais para os fios também. Assim que as tiras de LED estiverem posicionadas, use a fita Blue Painters para prendê-las no lugar.

3. Conecte a placa inferior de maneira semelhante. DOUT está no canto superior direito. Adicione os três fios longos multifilares ao VCC, DIN e GND antes de colocar as tiras de cabeça para baixo no formulário. Esses fios irão para o PCB.

4. Não conecte os fios da seção superior ainda até que todos os bastões de cola estejam no lugar.





Adicionando os bastões de cola


Isso exigirá um pouco de paciência. Em primeiro lugar, você precisa separar os bastões de cola. Os bastões de cola de 7 mm que você compra no eBay têm cerca de 100 m de comprimento. Eu descobri que eles variaram um pouco. O meu veio em embalagens de 30, então eu tinha 90 paus para encontrar 64 de comprimento semelhante. Também precisei aumentar o tamanho do furo usando uma broca de 19/64 "após a impressão para facilitar o encaixe nos furos.

Também usei um canudo transparente para colocar os três fios que conectam as tiras superior e inferior.

Adicione os bastões de cola uma linha de cada vez, começando de uma extremidade e avançando até a outra extremidade. Depois que todos estiverem no lugar, meça a distância entre a parte superior e a inferior em cada canto. Eles devem ser EXATAMENTE iguais. Caso contrário, ajuste a profundidade dos bastões de cola de acordo. Quando estiver satisfeito com o alinhamento, remova os bastões de cola de cada canto e coloque-os de volta no lugar com uma pequena quantidade de supercola. (Não coloque super cola no LED). Isso deve tornar a estrutura bastante robusta.





Conecte as tiras superior e inferior


Levante cuidadosamente a tira inferior perto do orifício, corte os três fios e solde-os no lugar. + 5V a + 5V, DIN (superior) para DOUT (inferior), GND para GND.





Fazendo o PCB


Incluí os arquivos Eagle se você deseja que a placa seja feita comercialmente ou faça como eu fiz e faça você mesmo. Eu fiz minha prancha usando o método de toner. Você pode usar apenas um pedaço de placa protótipo se desejar, pois o esquema é muito simplista e fácil de conectar. Os 4 orifícios de montagem devem ser perfurados com uma broca de 2,5 mm e uma rosca criada com um macho de 3 mm. Use parafusos M3 de 6 mm para segurar a placa no lugar.

IMPORTANTE:Ajuste a saída do regulador DC para 5V ANTES de fixá-lo na placa.





Fiação final


Conecte o potenciômetro deslizante, botão de pressão, botão liga / desliga e tomada DC conforme mostrado abaixo:

Conecte os fios das tiras de LED ao PCB.





Software


O software incluído executa uma série de animações de teste. O botão percorre as animações disponíveis. O potenciômetro ajusta a velocidade das animações.

Código

  • GlueMatrixTest.ino
  • Button.h
  • Button.cpp
GlueMatrixTest.ino C / C ++
 #include  #ifdef __AVR__ #include  # endif # include "Button.h" #define PIN_LED 2 # define PIN_SWITCH 3 # define PIN_POT A0 # define LEDS 128 // Parâmetro 1 =número de pixels na faixa // Parâmetro 2 =número do pino Arduino (a maioria são válidos) // Parâmetro 3 =sinalizadores de tipo de pixel, some conforme necessário:// NEO_KHZ800 800 KHz bitstream (a maioria dos produtos NeoPixel com LEDs WS2812) / / NEO_KHZ400 400 KHz (clássico 'v1' (não v2) pixels FLORA, drivers WS2811) // NEO_GRB Pixels são conectados para GRB bitstream (a maioria dos produtos NeoPixel) // NEO_RGB Pixels são conectados para RGB bitstream (v1 FLORA pixels, não v2) // NEO_RGBW Pixels são conectados para RGBW bitstream (produtos NeoPixel RGBW) Adafruit_NeoPixel strip =Adafruit_NeoPixel (LEDS, PIN_LED, NEO_GRB + NEO_KHZ800); Modo de botão =Botão (PIN_SWITCH); modo bool pressionado para fundo falso e mapa de topo Físico Matrizes de LED // LED inferior (vista de cima para trás) // 064 049 048 033 032 017 016 001 // 063 050 047 034 031 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 027 022 011 006 // 058 055 042 039 026 023 010 007 // 057 056 041 040 025 024 009 008 / / (Vista frontal de cima) // Parte superior LED (Vista traseira de cima) // 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 // ( Frente olhando de cima) 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}; // Armazenamento para valores atuaisint red =128; int green =128; int blue =128; int pattern =1; // IMPORTANTE:Para reduzir o risco de queima do NeoPixel, adicione um capacitor de 1000 uF em // cabos de alimentação do pixel, adicione Resistor de 300 - 500 Ohm na entrada de dados do primeiro pixel // e minimizar a distância entre o Arduino e o primeiro pixel. Evite conectar // em um circuito ativo ... se necessário, conecte GND primeiro.void setup () {Serial.begin (115200); pinMode (PIN_LED, OUTPUT); pinMode (PIN_SWITCH, INPUT); pinMode (PIN_POT, INPUT); // Pixel Strip Serial.println ("Setup ()"); strip.begin (); strip.show (); // Inicializa todos os pixels para 'off' // Retornos de chamada do botão //mode.Background(ButtonBackground); // Definir ISR para alteração de pino no botão de pino MODE ::PinChangeSetup (PIN_SWITCH);} void loop () {if (modePressed) {pattern =(pattern% 8) + 1; strip.clear (); } modePressed =false; Serial.print ("Modo"); Serial.print (padrão, DEC); Serial.println (); switch (padrão) {case 1:colorWipe (strip.Color (255, 0, 0)); pausa; // Caixa vermelha 2:colorWipe (strip.Color (0, 255, 0)); pausa; // Caso verde 3:colorWipe (strip.Color (0, 0, 255)); pausa; // Caixa azul 4:theaterChase (strip.Color (127, 127, 127)); pausa; // Caixa branca 5:rainbow (); pausa; caso 6:rainbowDifference (); pausa; caso 7:rainbowCycle (); pausa; caso 8:rainbowCycleDifference (); pausa; caso 9:theatreChaseRainbow (); pausa; } if (! modePressed) {modePressed =mode.Pressed (); }} // Botão de modo interromper para quebrar loops etc // PCINT1 lida com alterações de pinos para A0 para A5ISR (PCINT2_vect) {modePressed =modePressed | (mode.State () ==LOW);} void ButtonBackground (void) {} ​​// Preencha os pontos um após o outro com um colorvoid colorWipe (uint32_t c) {int total =strip.numPixels () / 2; para (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 (); atraso (mapa (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.h Arquivo de cabeçalho C
 / * Classe:ButtonAuthor:John Bradnam ([email protected]) Objetivo:Biblioteca Arduino para lidar com botões * / # pragma uma vez # inclui "Arduino.h" #define DEBOUNCE_DELAY 5 // Velocidade de repetição # define REPEAT_START_SPEED 500 # define REPEAT_INCREASE_SPEED 50 # define REPEAT_MAX_SPEED Botão 50class {public:// Construtor simples Botão (int Pin); // Função de fundo chamada quando em um loop de espera ou repetição void Background (void (* pBackgroundFunction) ()); // Função de repetição chamada quando o botão é pressionado void Repeat (void (* pRepeatFunction) ()); // Testa se o botão está pressionado e solto // Chamará a função de repetição se houver uma bool Pressed (); // Retornar estado do botão (HIGH ou LOW) - LOW =Pressed int State (); // Configuração de interrupção de alteração de pino // ISR (PCINT0_vect) interrupção de alteração de pino para D8 para D13 // ISR (PCINT1_vect) interrupção de alteração de pino para A0 para A5 // ISR (PCINT2_vect) interrupção de alteração de pino para D0 para D7 estático void PinChangeSetup (byte alfinete); privado:int _pin; void (* _repeatCallback) (void); void (* _backgroundCallback) (void);}; 
Button.cpp C / C ++
 #include "Button.h" Button ::Button (int pin) {_pin =pin; pinMode (_pin, INPUT);} // Definir função para invocar em um atraso ou repetir loopvoid Button ::Background (void (* pBackgroundFunction) ()) {_backgroundCallback =pBackgroundFunction;} // Definir função para invocar se repetir sistema requeridovoid Botão ::Repeat (void (* pRepeatFunction) ()) {_repeatCallback =pRepeatFunction;} estático void Button ::PinChangeSetup (byte pin) {* digitalPinToPCMSK (pin) | =bit (digitalPinToPCMSKbit (pin)); // habilita o pino PCIFR | =bit (digitalPinToPCICRbit (pin)); // limpa qualquer interrupção pendente PCICR | =bit (digitalPinToPCICRbit (pin)); // habilita a interrupção para o grupo} // Testa se um botão é pressionado e solto // retorna verdadeiro se o botão foi pressionado e solto // se for fornecido um retorno de chamada repetido, o retorno de chamada é chamado enquanto a tecla é pressionadabool Botão ::Pressionado ( ) {bool pressionado =falso; if (digitalRead (_pin) ==LOW) {espera longa sem sinal =milis () + DEBOUNCE_DELAY; while (millis ()  =hora) {_repeatCallback (); sem sinal muito mais rápido =velocidade - REPEAT_INCREASE_SPEED; if (mais rápido> =REPEAT_MAX_SPEED) {velocidade =mais rápido; } tempo =milis () + velocidade; }} pressionado =verdadeiro; }} return pressionado;} // Retorna o botão atual stateint Button ::State () {return digitalRead (_pin);} 

Peças personalizadas e gabinetes

Arquivos STL para impressão 3D stl_files_vSNeOCJWDn.zip

Esquemas

Esquemático e PCB no formato Eagle eagle_files_D8oAM5ngf5.zip

Processo de manufatura

  1. Lâmpada de halogênio
  2. Cole
  3. Cachorro-quente
  4. Lâmpada de lava
  5. Balão de ar quente
  6. Super cola
  7. Matriz LED + Display da porta do sensor de movimento [Arduino Holiday]
  8. Iluminação LED 8x por som
  9. Arduino Quadruped
  10. Materiais para comunicações de dados baseadas em LED de última geração