This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 1 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Control leds indexables mediante Mcodes
#1
Buenas, dado que hay gente que me ha preguntado por el sistema de iluminación de mis impresoras con neopixel (WS2812b), voy a dejarlo por aquí documentado y así si alguien mas se anima, podemos entre todos seguir con el desarrollo del mismo y mejorando su uso y efectos.  Lengua



El funcionamiendo es sencillo:

Utilizaremos uno de los pines auxiliares para enviar nuestras peticiones hacia el arduino micro/mini, y leeremos el valor de la señal pwm.
Siempre tendremos unas variaciones en la misma, por lo que podremos ver los valores desde el serial descomentando las líneas de debug.

Solo tendremos que unir las masas de los 2 arduinos, y cablear un pin para la comunicación.

En este caso he utilizado el primer pin se servo de la ramps, y el pin 3 en nuestro arduino micro/mini. Este cableado será siempre el mismo
independientemente del número de leds/aros que controlemos.

Necesitaremos la librería de Adafruit para los neopixel, que podréis descargar desde su github.

https://github.com/adafruit/Adafruit_NeoPixel

La instalaremos de la forma habitual dependiendo de nuestro SO.

Una vez instalado, subiremos el sketch "base_kossel". Al tenerlo montado en una kossel plus, tenía 3 líneas independientes de iluminación, una por torre.

Si solo utilizáis una tira, subiremos el sketch "base"

Hardware:

[Imagen: OmOmnkt.png]


Software:

Los leds los podremos controlar mediante Mcode, al igual que si controlaramos un servo.

Enviando desde Repetier por ej el comando M42 P4 S255 estaremos enviando una señal PMW 255. Este último valor será el que tengamos que cambiar según el comando a ejecutar.

Equivalencias en el sketch base con sus Mcode

Código:
"Off"    M42 P4 S0
"Blanco" M42 P4 S10
"Rojo"   M42 P4 S20
"Verde"  M42 P4 S30
"Azul"   M42 P4 S40

Y en el arduino:

Código:
if(pwm_value == 0){Serial.println("Off");Off();}
 if(pwm_value > 36 && pwm_value < 40 ){Serial.println("Blanco");Blanco();}
 if(pwm_value > 64 && pwm_value < 77 ){Serial.println("Rojo");Rojo();}
 if(pwm_value > 101 && pwm_value < 111 ){Serial.println("Verde");Verde();}
 if(pwm_value > 120 && pwm_value < 146 ){Serial.println("Azul");Azul();}

Como podéis comprobar, al enviar un 10 en el mcode recibiremos un señal que oscilará entre 37-38, por lo que acotamos la comparación entre 36 y 40

En cada bloque de código al que lo enviamos, podemos hacer el efecto correspondiente con los leds.

Utilizando correctamente los Mcode en los gcode de inicio y final de nuestro fileteador, podemos hacer cosas interesantes como que cambien los leds al finalizar una impresión, al alcanzar una temperatura, al hacer homing, etc... 

Además, podemos agregarlos al menú de nuestro lcd y controlarlos desde el mismo.

Estoy poniendo el mismo sistema en mi kossel mini para la cama, en breves actualizo con fotos y novedades!

Dejo adjuntos los sketch base y base_kossel


Archivos adjuntos
.zip   sketch.zip (Tamaño: 2.33 KB / Descargas: 58)
  Responder
#2
pillo sitio, gracias por el aporte
  Responder
#3
Muy bueno y bien explicado, gracias!!
  Responder
#4
Una implementación en una kossel mini, con el sketch base y una sola tira en 3 trozos  Lengua

He diseñado unos pequeños soportes para los leds por no desmontar los perfiles, pero se podría introducir en los mismos aislando las soldaduras de los leds con laca de uñas por ej. También llevan un difusor delante, con el típico plastico de encuadernar presentaciones  Guiño

Las tiras llevan un conector dupont macho de 3 pines soldado para facilitar el montaje y desmontaje del mismo si hiciera falta.

Van alimentados directamente por un bec 5V 5A, y controlado por un arduino micro

[Imagen: cYbux8K.jpg]


  Responder
#5
Hola! Yo en mi caso tengo una tira LED de 12V con 4 cables. Las típicas tiras que venden de iluminación.
Como se conectaría a la placa de la anycubic kossel? Me gustaría poder usar el comando M150 del marlín que es para los leds y no tener que hacer un circuito con otro arduino.
Ya me comentaras si es posible.
Un saludo!
  Responder
#6
Me apunto, a ver si puedo reaprovechar unos apa102 que me sobraron de un proyecto lightberry
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  CONSULTA Ender 3 no posee panel de control de motion Fede_7814 3 1,148 21-06-2020, 11:25 PM
Último mensaje: Simemart
  Ender 3 no posee panel de control de motion Fede_7814 0 746 21-06-2020, 01:52 AM
Último mensaje: Fede_7814
  Ender 3 no posee panel de control de motion Fede_7814 0 696 21-06-2020, 01:51 AM
Último mensaje: Fede_7814
  Ender 3 no posee panel de control de motion Fede_7814 0 667 21-06-2020, 01:50 AM
Último mensaje: Fede_7814
  CONSULTA CNC 7 ejes Control Sergimech 0 969 07-07-2018, 08:38 PM
Último mensaje: Sergimech