Tú puedes programar muy fácilmente tu driver con Arduino

Tipos de led y otros componentes, características, especificaciones técnicas, etc.

02 Sep 2013 15:00 por npir
<<
Avatar de Usuario

Tecnólogo LED

Mensajes: 215

Registrado: 02 Jul 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Otra que sería interesante modificar seria la new 898, el modo strobo sobra y falta un modo medio.

Alguno sabe que driver lleva esta linterna y si es posible modificarlo?
Imagen
02 Sep 2013 15:38 por Bailer
<<
Avatar de Usuario

Jamás ve la oscuridad

Mensajes: 1234

Registrado: 26 Ene 2012

Ubicación: Andalucía

Re: Tú puedes programar muy fácilmente tu driver con Arduino

npir escribió:Otra que sería interesante modificar seria la new 898, el modo strobo sobra y falta un modo medio.

Alguno sabe que driver lleva esta linterna y si es posible modificarlo?

Abrir esa linterna es un asunto delicado, he visto gente que la abierto por problemas y han sudado. Pero vamos, que se puede abrir solo digo que es dificil. Ahora de driver ni idea
03 Sep 2013 06:37 por fermintm
<<
Avatar de Usuario

Tecnólogo HID

Mensajes: 796

Registrado: 03 Ago 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

PacoA escribió:Vale. Pensaba que solo era que estuviera conectado mientras pulsabas.

Cuando pueda pongo un código.
Soy capaz de modificar algun que otro codigo arduino, con copia de aqui... pega alla.. Pero hacero de cero...

Gracias!!!
Olight TC10, Magic fire 3x18650, Sunwayman C21C, Sunwayman D40A, Sunwayman C10R, Sunwayman F10R, Sunwayman DREAM M11R, Sunwayman V10R Ti, Nitecore P12, Fenix E05, Lumintop TOOL Ti, BLF ReyLight Titanium, Maglite XL200, Convoy S2 UV, Rojo, Verde, Ambar, Azul, Fénix E99 Ti, Astrolux MH10
06 Sep 2013 14:37 por PacoA
<<

Tecnólogo LED

Mensajes: 207

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

ESTO DEBERÍ8A SERVIR COMO PROGRAMA BÁSICO DE UNA LINTERNA CON PULSADOR

//PROGRAMA LINTERNA CON PULSADOR

#define ledpin 1
#define pulsador 2
//en pulsador ponemos la estrella del 105c
//que se conectará al pulsador. Puede ser 2, 3 o 4
//Ojo la estrella debe tener una resistencia de 10k conectada
//a masa


void setup() {


pinMode(ledpin, OUTPUT); //ledpin, que es 1, es salida digital
pinMode(pulsador, INPUT); //pulsador es entrada digital
}


void loop() {

if (digitalRead(pulsador) == HIGH) {analogWrite(ledpin, 255);}
else {analogWrite(ledpin, 0);};
}

Imagen

Importante. Hay que conectar la salida del pulsador a una de las tres estrellas del 105c. Hay que poner el número en su #define correspondiente. Y en esa estrella hay que poner una resistencia de 10K conectada a masa. De 1/4 de watio sobra.
06 Sep 2013 21:50 por PacoA
<<

Tecnólogo LED

Mensajes: 207

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

el programa de antes es demasiado sencillo. Solo enciende la linterna cuando mantienes presionado el pulsador.

Para que cambie de estado cada vez que lo pulsas algo como esto:
//PROGRAMA LINTERNA CON PULSADOR

#define ledpin 1
#define pulsador 2
//en pulsador ponemos la estrella del 105c
//que se conectará al pulsador. Puede ser 2, 3 o 4
//Ojo la estrella debe tener una resistencia de 10k conectada
//a masa
boolean estado = false; //indica si la linterna esta encendida
//true cuando encendida. false cuando apagada

void setup() {


pinMode(ledpin, OUTPUT); //ledpin, que es 1, es salida digital
pinMode(pulsador, INPUT); //pulsador es entrada digital
}


void loop() {

if (digitalRead(pulsador) == HIGH) {
     if (estado == false) {analogWrite(ledpin, 255); estado = true;}
else {analogWrite(ledpin, 0); estado = false;};
}
delay(500);
}
07 Sep 2013 12:08 por Bailer
<<
Avatar de Usuario

Jamás ve la oscuridad

Mensajes: 1234

Registrado: 26 Ene 2012

Ubicación: Andalucía

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Con esto último que sería, ¿como la típica linterna de un boton para encender y otro para los modos?

Saludos!
07 Sep 2013 20:33 por PacoA
<<

Tecnólogo LED

Mensajes: 207

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Bailer escribió:Con esto último que sería, ¿como la típica linterna de un boton para encender y otro para los modos?

Saludos!
Eso es para una linterna sin modos. Cuando se presiona un pulsador adicional al interruptor principal la linterna se apaga o se enciende.

Se sobreentende que la linterna tiene su propio interruptor para desconectar la bateria.

Lo que se puede hacer es:

programar un modo que sirva para que el pulsador haga eso... es decir encender o pagar cada vez que se presione.

Simplemente con el interruptor principal cambias los modos. Y cuando quieras utilizar el pulsador, lo pones en ese modo, modo pulsador. El c´odigo paar ese modo pulsador ser´ia el de arriba.
08 Sep 2013 01:59 por Bailer
<<
Avatar de Usuario

Jamás ve la oscuridad

Mensajes: 1234

Registrado: 26 Ene 2012

Ubicación: Andalucía

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Que curioso se parece a las de doble filamento, como las luces de los coches.

Estaría bien para hacer las luces de freno de una bici como en los videos de youtube jeje.
08 Sep 2013 15:21 por maito
<<
Avatar de Usuario

Tecnólogo HID

Mensajes: 598

Registrado: 14 Mar 2012

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Bailer escribió:Que curioso se parece a las de doble filamento, como las luces de los coches.

Estaría bien para hacer las luces de freno de una bici como en los videos de youtube jeje.

Me interesa.
Ultrafire C8, Generico Frontal, Cegasa Tiximist convertida a Led, New 898, Ultrafire C2, Fulton TL-142 convertida a Led, UniqueFire S10, Mini Maglite AAA Incandescente, Solarforce L2 convertida a Laser, Ultrafire 502-B, Sipik SK68, Ultrafire C3, Ultrafire WF-606A., Mini Maglite AA.
09 Sep 2013 13:30 por Bailer
<<
Avatar de Usuario

Jamás ve la oscuridad

Mensajes: 1234

Registrado: 26 Ene 2012

Ubicación: Andalucía

Re: Tú puedes programar muy fácilmente tu driver con Arduino

maito escribió:Me interesa.
Es solo una idea, en DX venden unas luces así pero llevan 3 de 5mm para vada cosa y no parecen muy luminosas.

Lo suyo sería hacer algo un poco más potente aprovechando la info de Paco para usar un par de drivers, uno para los intermitentes y otro simulando un led de doble filamento para el freno y posición.

Cotilleando parece que lo mejor sería un microcontrolador para todo (tutorial youtube) pero de momento la parte electrónica está bloqueada.
09 Sep 2013 13:56 por PacoA
<<

Tecnólogo LED

Mensajes: 207

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Bailer escribió:
maito escribió:Me interesa.
Es solo una idea, en DX venden unas luces así pero llevan 3 de 5mm para vada cosa y no parecen muy luminosas.

Lo suyo sería hacer algo un poco más potente aprovechando la info de Paco para usar un par de drivers, uno para los intermitentes y otro simulando un led de doble filamento para el freno y posición.

Cotilleando parece que lo mejor sería un microcontrolador para todo (tutorial youtube) pero de momento la parte electrónica está bloqueada.
proyecto curioso...
09 Sep 2013 17:11 por manredu
<<

Tecnólogo LED

Mensajes: 136

Registrado: 30 Ene 2011

Re: Tú puedes programar muy fácilmente tu driver con Arduino

He leido el tema por encima y Pacoa y yo ya estuvimos comentando algo en mi post... basicamente estoy demasiado liado de trabajo y creo que soy demasiado viejo para aprender otro lenguaje de programación (bastante tengo que estoy con el CCS de microchip) y que conste que soy defensor de microchip a muerte, pero bueno le daremos una oportunidad al Atmel.

AL lio, hace poco me compre un frontal para la bici, y como no me puedo estar quieto y solo traia modos de encender luz pues lo modifique para que me diera tantos por ciento.

Foto del paciente:

Imagen


Lo primero que me sorprendio del driver es que siempre esta energizado y entonces se cambia de modo / apaga con un pulsador, con el led apagado aunque el microprocesador estuviera energizado el consumo era de microamperios, y me puse a pensar, pero leches que micro es este ?????

EN la linea de los chinos los valores estan borrados, pero por el patillaje (lleva la alimentación en la pata 1 y 8 ) se me antojo que podia ser microchip, para mi decepción no lo es, y creo que atmel tampoco pues estos llevan la alimentación en la 4 y la 8.

Foto del elemento:

Imagen

Al final hice una placa nueva con un pic y 2 mosfet de los serios, pues lo que lleva esto es una patata para alimentar a 3 XML, no me calente mucho mas la cabeza lo programe a salto de mata con 4 modos+apagado y a subir con la bicie parriba.... bueno eso parecia de dia...

Pero al lio que estoy metiendo mucho offtopic,

En la bici y dando pedales se me ocurrio como hacer las memorias con tiempo de apagado, nos olvidamos de condensadores ni historias, lo unico es que como no conozco arduino pues no sere capaz de hacerlo para este driver, pero si saco tiempo todo se andara.

LA solución es, el microprocesador siempre alimentado, y encenderlo y apagarlo/memorias con un pulsador, para evitar que consuma mucha energia, tenemos que meterlo en sleep con lo cual el el pulsador tendra que ir conectado a una interrupción para que salga de sleep.

Cuando el micro esta en sleep consume microamperios, por lo que en principio podria pasar meses sin que a las baterias les pasara nada.

LA secuencia sería:

1 se detecta pulsación
2 se apaga el led
3 se espera el tiempo de cambio de modo entonces:
3.1 si se vuelve a pulsar antes del fin del tiempo se cambia de modo
3.2 si no se pulsa tras acabar el tiempo se graba el modo y se pasa a sleep.

4 El micro se queda en sleep hasta la espera de interrupción.

Esto hay que traducirlo a arduino (si es que se puede que no se) y con eso se conseguiria.
10 Sep 2013 07:53 por fermintm
<<
Avatar de Usuario

Tecnólogo HID

Mensajes: 796

Registrado: 03 Ago 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Gracias por el codigo. Ahora toca esperar la llegada de las pinzas para programar el chip. ;)
Olight TC10, Magic fire 3x18650, Sunwayman C21C, Sunwayman D40A, Sunwayman C10R, Sunwayman F10R, Sunwayman DREAM M11R, Sunwayman V10R Ti, Nitecore P12, Fenix E05, Lumintop TOOL Ti, BLF ReyLight Titanium, Maglite XL200, Convoy S2 UV, Rojo, Verde, Ambar, Azul, Fénix E99 Ti, Astrolux MH10
10 Sep 2013 14:11 por PacoA
<<

Tecnólogo LED

Mensajes: 207

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

En Arduino se puede poner el micro en sleep... aunque yo nunca lo he hecho. Pero en arduino.cc hay ejemplos. En ese caso el consumo en sleep es ridículo. Pero incluso sin entrar en sleep, dada la gran capacidad de las baterías, y el bajo consumo de esos chips, no creo que sea un problema.

Pero si ya le ponemos tantas cosas al código hay que pasarse Attiny85, que tiene 8K.
19 Sep 2013 19:52 por Feguar
<<
Avatar de Usuario

Tecnólogo LED

Mensajes: 344

Registrado: 13 Ago 2011

Ubicación: Sevilla

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Llevo un tiempo sin entrar pero al ver este post me he animado a toquetear las linternas que tenía apartadas desde hacía un tiempo. Voy a aprovechar que tengo un par de Attiny85 para desoldarle el Attiny13 al 105C y ponerle uno de estos, a ver si consigo también modificar una cosilla para ahorrar algunos bytes.

¡Muchas gracias por el post PacoA!
Ultrafire C2, Sipik SK68, Ultrafire UF-H2B, Jetbeam RRT-0 XM-L, Maglite 3D - XM-L, Spark ST6-460NW - XM-L2, DQG III Ti, Thrunite T20, Thrunite Ti, Thrunite T10, Courui XM-L2 T6, DQG 18650 Clicky, Convoy C8, Astrolux S1, Ultratak K18 FL Edition
20 Sep 2013 13:56 por PacoA
<<

Tecnólogo LED

Mensajes: 207

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

Feguar escribió:Llevo un tiempo sin entrar pero al ver este post me he animado a toquetear las linternas que tenía apartadas desde hacía un tiempo. Voy a aprovechar que tengo un par de Attiny85 para desoldarle el Attiny13 al 105C y ponerle uno de estos, a ver si consigo también modificar una cosilla para ahorrar algunos bytes.

¡Muchas gracias por el post PacoA!
cambiar el chip, verás que no es fácil.

El Attiny85 es ligeramente más grande. No es imposible, pero no es fácil.
21 Sep 2013 22:38 por Feguar
<<
Avatar de Usuario

Tecnólogo LED

Mensajes: 344

Registrado: 13 Ago 2011

Ubicación: Sevilla

Re: Tú puedes programar muy fácilmente tu driver con Arduino

El problema no fue cambiarlo, tarde poco en desoldar el antiguo y despegarlo (tenía un poco de pegamento), el problema lo tengo en que no me lo reconoce el arduino. Ya las otras veces que había programado el 85 habia tenido estos problemas, así que seguiré trasteando hasta que lo consiga.

EDITO:
Ya conseguí programar el Attiny85, creo que el problema era que tenía soldada la estrella, la desoldé y pude cargarle el programa sin problemas. Para el 85 puedes ponerle lo que quieras al sketch con toda la memoria que tiene de "sobra", seguiré atento al hilo.
EDITO2:
En el código comentado del post 3, el de los modos con memoria, te falta el después del include. En el sketch sin comentarios sí está bien.
Ultrafire C2, Sipik SK68, Ultrafire UF-H2B, Jetbeam RRT-0 XM-L, Maglite 3D - XM-L, Spark ST6-460NW - XM-L2, DQG III Ti, Thrunite T20, Thrunite Ti, Thrunite T10, Courui XM-L2 T6, DQG 18650 Clicky, Convoy C8, Astrolux S1, Ultratak K18 FL Edition
23 Sep 2013 18:07 por PacoA
<<

Tecnólogo LED

Mensajes: 207

Registrado: 17 Abr 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

No puedo poner EEPROM.h

Ya he tenido varias problemas similares. Cuando importo el código desde el arduino, con la opción para foro, con colores, para que quede bonito, a veces se genera un código html que hace cosas raras. En este caso, aunque ponga EEPROM.h> no aparece después en el foro.

Yo tengo desarrollado un driver que se puede programar mediante bluetooth, desde el móvil o desde el pc, y que cabe en una linterna pequeña tipo C8, incluso más pequeña.... solo me faltan cuatro cosas... pero hace meses que lo tengo abandonado.

Pero ya funciona seguro, lo he probado fuera de la linterna, el alcance es muy bueno... y puedes programar todo...

a ver si me pongo las pilas... joder...
25 Sep 2013 05:04 por fermintm
<<
Avatar de Usuario

Tecnólogo HID

Mensajes: 796

Registrado: 03 Ago 2013

Re: Tú puedes programar muy fácilmente tu driver con Arduino

PacoA escribió:No puedo poner EEPROM.h

Ya he tenido varias problemas similares. Cuando importo el código desde el arduino, con la opción para foro, con colores, para que quede bonito, a veces se genera un código html que hace cosas raras. En este caso, aunque ponga EEPROM.h> no aparece después en el foro.

Yo tengo desarrollado un driver que se puede programar mediante bluetooth, desde el móvil o desde el pc, y que cabe en una linterna pequeña tipo C8, incluso más pequeña.... solo me faltan cuatro cosas... pero hace meses que lo tengo abandonado.

Pero ya funciona seguro, lo he probado fuera de la linterna, el alcance es muy bueno... y puedes programar todo...

a ver si me pongo las pilas... joder...
Muy interesante caballero
Olight TC10, Magic fire 3x18650, Sunwayman C21C, Sunwayman D40A, Sunwayman C10R, Sunwayman F10R, Sunwayman DREAM M11R, Sunwayman V10R Ti, Nitecore P12, Fenix E05, Lumintop TOOL Ti, BLF ReyLight Titanium, Maglite XL200, Convoy S2 UV, Rojo, Verde, Ambar, Azul, Fénix E99 Ti, Astrolux MH10
30 Sep 2013 23:44 por Feguar
<<
Avatar de Usuario

Tecnólogo LED

Mensajes: 344

Registrado: 13 Ago 2011

Ubicación: Sevilla

Re: Tú puedes programar muy fácilmente tu driver con Arduino

He estado buscando y he encontrado una función para algunos micros de Atmel (el código que pongo es solo para los Attiny25/45/85) que usando su voltaje de referencia (1.1V±10%) se puede saber a que voltaje está siendo alimentado. Con esta función se podría hacer que el driver cortara la alimentación cuando la batería bajara de cierto voltaje y así también se pueden usar las baterías sin protección.

Yo lo he estado probando con un Attiny85, una fuente regulable y dos led, uno se enciendía cuando la alimentación estaba por encima de 3.6V y el otro parpadeaba si el voltaje era inferior y funcionaba bien. Pongo la función con los comentarios del creador por si a alguien le interesa (referencia).
long readVcc()
{
ADMUX = _BV(MUX3) | _BV(MUX2);

delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring

uint8_t low = ADCL; // must read ADCL first - it then locks ADCH
uint8_t high = ADCH; // unlocks both

long result = (high3600) //Por encima de 3.6V, enciende el led2
{
digitalWrite(led2, HIGH);
}
else //Por debajo de 3.6V, se apaga led1 y parpadea led1
{
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
delay(1000);
digitalWrite(led1, LOW);
delay(1000);
}
}

long readVcc()
{
ADMUX = _BV(MUX3) | _BV(MUX2);

delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring

uint8_t low = ADCL; // must read ADCL first - it then locks ADCH
uint8_t high = ADCH; // unlocks both

long result = (high<<8) | low;

result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
return result; // Vcc in millivolts
}
Última edición por Feguar el 01 Oct 2013 22:57, editado 1 vez en total.
Ultrafire C2, Sipik SK68, Ultrafire UF-H2B, Jetbeam RRT-0 XM-L, Maglite 3D - XM-L, Spark ST6-460NW - XM-L2, DQG III Ti, Thrunite T20, Thrunite Ti, Thrunite T10, Courui XM-L2 T6, DQG 18650 Clicky, Convoy C8, Astrolux S1, Ultratak K18 FL Edition

© ForoLinternas