TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: leeboy en 15 de Abril de 2010, 10:47:56

Título: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 15 de Abril de 2010, 10:47:56
Hola, antes de nada quería presentarme. Hace unos días vi un video en la página de hacknmod una persona que iluminaba los escalones de su casa mediante leds, el tema es que me gustaría hacer lo mismo. Un buen amigo me comentó que eso se debería de hacer con un PIC, yo creo que el sistema no es muy complicado de hacer, lo que pasa que soy practicamente un noob en el tema de la electrónica. Aprendí algo (a montar circuitos y a medir con el osciloscopio) en la universidad.

Me gustaría saber si alguno del foro podría ayudarme un poco. Tendría que adquirir todo desde el pic necesario, los leds, tambien me comentó mi amigo el uso de algún transistor para alimentar a los led con la potencia suficiente, así como el programador, aunque me recomendó el pic Kit 2, no he visto que programe pics de la familia 18Fxxxx que es la que me recomendó.

Adjunto el video de esta persona y espero sus respuestas.


Gracias, un saludo
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: c4_esp_VR en 15 de Abril de 2010, 13:08:43
Hola leeboy:

Primeramente darte la bienvenido al foro de todopic.

Por otro lado, muy bonito tu proyecto, parece muy interesante veamos si con la ayuda de todos podemos hacer que tira para adelante y de paso aprendamos un poco más de elctrónica.

Primero comprate un programador barato, en este caso un pickit2 o pickit3 que yo sepa programan familias 18f ambas, de todas formas esperemos que otros  compañeros puedan confirmar esto último que te comento.

Respecto al pic te recomiendo un PIC18F442 o  PIC18F452 que es una familia muy usada comunmente y con bastante memoria y seguro que no tendrás ningún problema.

Por otro lado usa el compilador CCS y puedes hacer simulaciones con proteus, en el foro encontrarás mucha información sobre ambos programas.

Para programar esto necesitaras el MPLab que es muy fácil de usar, pero para ello antes tendrás que decirle al MPLab que el compilador de pics que quieres usar es el CCS, busca información por el foro sobre esto que hay.

Respecto a darle chicha a los leds siempre puedes usar o un transistor BJT o un Mosfet como bien prefieras.

Por otro lado para el control de los leds tendrás que usar PWM a alta frecuencia para controlar la luminosidad, o al menos eso creo...

Un saludete y suerte, cualquier avance que vayas haciendo como compra de materiales, que diodos has comprado, que barrera IR vas a usar, etc...publicala para que te vayamos ayudando entre todos.

Un saludete y suerte en el proyecto.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: NANO1985 en 15 de Abril de 2010, 13:22:20
bueniiiiisimo!!!!! quiero sa iluminacion ya!  ;-)
saludos y bienvenido al foro!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Cryn en 15 de Abril de 2010, 14:36:27
Se ve muy bueno el proyecto, se tendrá que considerar un PWM para apagar los leds, y hasta quizá para encender. Ya que al menos en el video los leds no se apagan de golpe, sino bajan de intensidad su luminosidad. Pero seguro que se puede solo encender y apagar a secas, personalmente se ve más elegante con un encendido y apagado en aumento y descenso respectivamente.

Y quizá también escoger adecuadamente los LED, se puede tomar leds grandes de 1W o más potencia, o juntar varios pequeños de buen brillo de mucha menos potencia, para poder tener la iluminación adecuada.

saludos.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: cerebro en 15 de Abril de 2010, 14:56:16
que buena idea esa iluminación....
El pickit2 programa la gran mayoria de la familia 18f tiene algunos problemitas con los tipos 18fxxJxx o los 18fxxKxx.
Vas a tener que ir pensando en como expandir los puertos. Todas las recomendaciones que te han dado son muy buenas. 

Saludos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Cryn en 15 de Abril de 2010, 16:09:09
cerebro, que problemas tiene el pickit 2 con los J y K?
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: migsantiago en 15 de Abril de 2010, 17:19:13
Respecto al pic te recomiendo un PIC18F442 o  PIC18F452 que es una familia muy usada comunmente y con bastante memoria y seguro que no tendrás ningún problema.

Un breve comentario, el 18F452 ya es obsoleto. El 18F4520 es un buen reemplazo con mejor precio.  ;-)
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 15 de Abril de 2010, 18:34:02
Muchas gracias a todos, os iré manteniendo informados de como iré haciendo las cosas y lo que iré comprando para probar, de momento solo puedo deciros que he pedido unos led blancos de 15.000mcd y otro de 60lumenes para ver que es lo que me funciona mejor. Hoy pensando tambien se me ha ocurrido que en lugar de usar leds en el lateral, se podrían usar tiras de led SMD de estas finitas que no se ven ocupando todo el escalon, que os parece???
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: cerebro en 16 de Abril de 2010, 10:02:10
cerebro, que problemas tiene el pickit 2 con los J y K?

Algunas versiones de estos micros no figuran como programados por el pickit en MPLAB
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Cryn en 16 de Abril de 2010, 18:44:31
aah ok, no me sabía eso, veré cuales no los soporta el pickit2, pero no creo que sean muchos no?

saludos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 17 de Abril de 2010, 08:29:56
Bueno, como por algo hay que empezar, os adjunto un "prediseño" que he hecho a ver que os parece, de momento para pruebas con proteus me valdrá (creo) pero se que tengo que ponerle un transistor delante de cada LED para obtener suficiente intensidad de luz en cada uno
Ahora mismo está con un pulsador que hará lo mismo que el receptor de IR para las pruebas en Proteus

(http://img687.imageshack.us/img687/7342/circuitow.th.png) (http://img687.imageshack.us/i/circuitow.png/)
Tambien he creado el siguiente código para el pic (pero no funciona  :( y no tengo ni idea por qué),

Código: [Seleccionar]
#include <18F4450.h>
#fuses XT,NOWDT
#use delay( clock = 4000000 )   // Reloj  de 4 MHz
#BYTE TRISB = 0x01            // TRISB en todos los puertos menos en el primero???
#BYTE PORTB = 0x06            // PORTB en 06h.
#BYTE OPTION_REG = 0x81      //OPTION_REG en 81h.


void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF|ADC_TAD_MUL_0);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab

   // TODO: USER CODE!!
   bit_clear(OPTION_REG,7);      // Habilitación Pull-up
   bit_set(TRISB,0);            //B0 como entrada
   bit_clear(TRISB,1);         // B1 como salida
   bit_clear(PORTB,1);         // apaga LED
   while (1) {
   if (bit_test(PORTB,0) == 1 )  //Si RB0 es 1 apaga el LED
      bit_clear(PORTB,1);   
   else{
      bit_set(PORTB,1);         //Si RB0=0 enciende el LED
      delay_ms(1000);
      bit_set(PORTB,3);
      delay_ms(1000);
      bit_set(PORTB,7);
      delay_ms(1000);
      bit_set(PORTB,15);
    }
   }

}

alguna ayuda y/o sugerencia y/o crítica????

Muchas gracias de nuevo!!!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 17 de Abril de 2010, 08:54:38
Bueno, usando el código que me ha sugerido un amigo, consigo encenderlas peeeeeeeeeeeeeero no consigo reconocer el evento del botón :(

Código: [Seleccionar]
#include <18F4450.h>
#fuses HS,NOWDT
#use delay( clock = 12000000 )   // Reloj  de 12 MHz
#define boton PIN_B0
#define led1 PIN_B1
#define led2 PIN_B2
#define led3 PIN_B3
#define led4 PIN_B4
#define led5 PIN_B5
#define led6 PIN_B6
#define led7 PIN_B7
#define ON output_high
#define OFF output_low

void main(){
   while (1) {
      if ( boton == 0 ){
         OFF(led1);   
         delay_ms(1000);
         OFF(led2);
         delay_ms(1000);
         OFF(led3);   
         delay_ms(1000);
         OFF(led4);   
         delay_ms(1000);
         OFF(led5);   
         delay_ms(1000);
         OFF(led6);   
         delay_ms(1000);
         OFF(led7);   
      }else{
         ON(led1);   
         delay_ms(1000);
         ON(led2);
         delay_ms(1000);
         ON(led3);
         delay_ms(1000);
         ON(led4);
         delay_ms(1000);
         ON(led5);
         delay_ms(1000);
         ON(led6);
         delay_ms(1000);
         ON(led7);
      }
   }
}
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: pablomanieri en 17 de Abril de 2010, 09:54:33
para leer el estado de los pines de un puerto el ccs tiene la función "input(pin)"
No se puede leer el estado del pin directamente.
Si te fijas en los warnings que te da el ccs al compilar vas a ver que hay una que dice condition always false, que es la línea del if...


debes hacer:

....if ( input(boton) == 0 )...
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 17 de Abril de 2010, 10:28:32
Gracias pablomanieri, eso lo solucioné, lo tenía mal puesto y con un poco de Google lo solucioné. Como mi circuito va a tener 2 sensores, quería que con uno se encendieran y con el otro se apagasen. He puesto otro interruptor en el pin PIN_C0 igualmente conectado a Vcc y con el siguiente código me ha funcionado

Código: [Seleccionar]
#include <18F4450.h>
#fuses HS,NOWDT
#use delay( clock = 24000000 )   // Reloj  de 24 MHz
#define boton1 PIN_B0
#define boton2 PIN_C0
#define led1 PIN_B1
#define led2 PIN_B2
#define led3 PIN_B3
#define led4 PIN_B4
#define led5 PIN_B5
#define led6 PIN_B6
#define led7 PIN_B7
#define ON output_high
#define OFF output_low


void main(){
   int presionado1, presionado2;
   int anterior = 0;
   while (1) {
      presionado1 = input_state(boton1);
      presionado2 = input_state(boton2);
      if ( presionado2 == 1 ){
            OFF(led1);   
            delay_ms(100);
            OFF(led2);
            delay_ms(100);
            OFF(led3);   
            delay_ms(100);
            OFF(led4);   
            delay_ms(100);
            OFF(led5);   
            delay_ms(100);
            OFF(led6);   
            delay_ms(100);
            OFF(led7);
            anterior = 0;
      }
      if (presionado1 == 1){
            anterior = 1;
            ON(led1);   
            delay_ms(100);
            ON(led2);
            delay_ms(100);
            ON(led3);
            delay_ms(100);
            ON(led4);
            delay_ms(100);
            ON(led5);
            delay_ms(100);
            ON(led6);
            delay_ms(100);
            ON(led7);
      }
   }
}

Así que en un sentido al menos ya lo tengo realizado, ahora solo me falta ver como hacer la disminución y aumento de intensidad al iluminarse!!!!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Suky en 17 de Abril de 2010, 10:51:28
Bueno, llegue un poco tarde  :mrgreen: Pero comentar que con un micro 16F es más que suficiente para el proyecto, solo hay que tener en cuenta los pines I/o necesarios. Ahora el tema de aumentar y disminuir la intensidad, lo puedes hacer por software para cada pin, dado que se hace uno a la vez  ;-)


Saludos!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 17 de Abril de 2010, 11:01:58
Suky, yo soy un noob de la electrónica, jejeje, me comentaron que con éste sería más que suficiente, ya que en un primer momento no sabía cuantos leds iba a usar, podían ser 5 o 15....por eso me recomendaron uno de 40 pines, pero entre uno de la gama 16f vs 18f.........sinceramente ni idea. Al menos con el siguiente código ya controlo el orden de encendido!!!
quien me iba a decir a mi que me iba a poner con esto y lo iba a sacar relativamente fácil........

Código: [Seleccionar]
#include <18F4450.h>
#fuses HS,NOWDT
#use delay( clock = 24000000 )   // Reloj  de 24 MHz
#define botonAbajo PIN_B0
#define botonArriba PIN_C0
#define led1 PIN_B1
#define led2 PIN_B2
#define led3 PIN_B3
#define led4 PIN_B4
#define led5 PIN_B5
#define led6 PIN_B6
#define led7 PIN_B7
#define ON output_high
#define OFF output_low


void main(){
   int abajo, arriba;
   int inicioAbajo = 0;
   int inicioArriba = 0;
   while (1) {
      abajo = input_state(botonAbajo);
      arriba = input_state(botonArriba);
      if ( arriba == 1 ){
         if (inicioAbajo == 0){
            inicioArriba = 1;
            ON(led7);   
            delay_ms(100);
            ON(led6);
            delay_ms(100);
            ON(led5);
            delay_ms(100);
            ON(led4);
            delay_ms(100);
            ON(led3);
            delay_ms(100);
            ON(led2);
            delay_ms(100);
            ON(led1);
         }else{
            OFF(led1);   
            delay_ms(100);
            OFF(led2);
            delay_ms(100);
            OFF(led3);   
            delay_ms(100);
            OFF(led4);   
            delay_ms(100);
            OFF(led5);   
            delay_ms(100);
            OFF(led6);   
            delay_ms(100);
            OFF(led7);
            inicioAbajo = 0;
         }
      }
      if (abajo == 1){
         if (inicioArriba == 1){
            OFF(led7);   
            delay_ms(100);
            OFF(led6);
            delay_ms(100);
            OFF(led5);   
            delay_ms(100);
            OFF(led4);   
            delay_ms(100);
            OFF(led3);   
            delay_ms(100);
            OFF(led2);   
            delay_ms(100);
            OFF(led1);
            inicioArriba = 0;
         }else{
            inicioAbajo = 1;
            ON(led1);   
            delay_ms(100);
            ON(led2);
            delay_ms(100);
            ON(led3);
            delay_ms(100);
            ON(led4);
            delay_ms(100);
            ON(led5);
            delay_ms(100);
            ON(led6);
            delay_ms(100);
            ON(led7);
         }
      }
   }
}

Referente a lo de controlarlos por intensidad en el pic, como hago eso???, ya que tengo que poner un BJT o un Mosfet para usar leds de alta luminosidad y me comentaron que la alimentación del pic al led es insuficiente.....
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 19 de Abril de 2010, 04:57:48
para implementar el pwm (que aún no tengo ni idea de como hacerlo) es necesario un timer verdad???o valdría el propio del pic???Tambien me han comentado que en mi código tengo el clock a 24MHz, que para ese clock sería necesario un Xtal externo, creeis que sería necesario o simplemente bajando la frecuencia valdría???

gracias de nuevo!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 20 de Abril de 2010, 10:36:19
Puedo programar mi pic con esto??
http://es.farnell.com/microchip/dv164121/debug-kit-express-pickit2/dp/1340278

no pone nada de la familia 18f........
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: c4_esp_VR en 20 de Abril de 2010, 13:06:57
Si puedes comprate el pickit3 que es más actual y permite programar muchos más pics.

Respecto al PWM...busca en el foro, encontrarás muchisima info.

Un saludete.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 20 de Abril de 2010, 16:05:51
Vale, lo del PWM más o menos lo tengo, peeeeeeeeeeeeeeeeeeeeero, mi pic solo tiene un puerto y yo tengo que controlar varios led´s, como lo hago???si pudiera hacer eso en cada puerto en los que tengo un led no habría problemas, pero solo tengo 1  :oops:

Por cierto, he puesto un osciloscopio sobre la salida de CCP1 que es la que me hace el PWM, y cuando le doy a ejecutar se me queda piyado y me dice que la ejecución no puede seguir por exceso de carga en la CPU, que solución tiene eso???
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: c4_esp_VR en 20 de Abril de 2010, 16:28:04
Para el PWM tendrás que multiplexarlo por SW, es decir usar los timers para PWM, sigue este enlace del compañero RedPIC, no es exactamente lo que tienes que hacer pero van por ahí los tiros.

Control Servo Timer PWM (http://picmania.garcia-cuervo.net/picc2.php)

Respecto a lo de Proteus...es debido a que tu máquina no es lo suficientemente potente para mover las simulaciones en tiempo real, eso no significa que no funcione, simplemente que no lo hace en tiempo real.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 20 de Abril de 2010, 16:30:56
Mi maquina no es potente???nose....tengo 2GB Ram, Core2Duo a 2.6.......pues si que pide no???

Voy a revisar el enlace, gracias!!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 23 de Abril de 2010, 18:46:27
Hola de nuevo, hablando e investigando he pensado en la primera modificación de mi diseño y así por lo que yo entiendo se optimiza bastante. Lista de cambios:
1º.- No tener 1 led en cada patilla, sino utilizar un decoder de 4-16 por ejemplo y controlar las salidas
2º.- En lugar de utilizar PWM por soft para controlar la intensidad usar condensadores
3º.- En lugar de un for(;;){...} de manera continua usar las propias interrupciones del pic y tenerlo en reposo para que trabaje menos

Con estas modificaciones creo que el pic iría más desahogado y podría controlar más leds, como lo veis?????
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: vtasco en 24 de Abril de 2010, 00:46:20
hola, a qué te refieres con no usar PWM y usar condensadores para controlar la intensidad?
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 24 de Abril de 2010, 04:40:36
Me refiero a usar el tiempo de carga y descarga del condensador  para el efecto de intensidad progresivo. Para el apagado sabía que se podría usar el tiempo de descarga del condensador para que poco a poco se fuera apagando, pero para el encendido no sabía que podían funcionar igual, de esta manera tengo al PIC mucho más ocioso y no trabaja tanto.

No se si me he explicado con claridad :S
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 24 de Abril de 2010, 14:00:29
Hola... al empezar a leer este tema pensé lo mismo, es decir, usar capacitores. El circuito que se me ocurrió es el que presento a continuación

(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=30294.0;attach=11840)
Adjunto también una simulación en proteus 7.2 SP6. con su .hex

Notar que sólo hice uso de un puerto del pic, pero se pueden usar todos los pines del mismo que tengamos disponibles de igual manera.
Los pulsadores simulan los sensores infrarrojos en los extremos de la escalera.
Al hacer este circuito me di cuenta de 2 cosas:

Todo esto quizas pueda ser subsanado en parte por otra configurración de hardware, pero ésta es la mejor que se me ocurrió a mí.
Después de esta conclusión, si yo tuviese que realizar este proyecto, y no se mejora el hardware que aquí propongo, lo encararía por el lado del software con pwm. Pero también vale aclarar que se me dificultará bastante hacer el código y me llevaría bastante más tiempo también. Por eso, con todo respeto, para alguien que no tenga experiencia en programación se le va a complicar y mucho.

Saludos y éxitos para los que encaren este proyecto.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 24 de Abril de 2010, 14:54:22
Hola Menta,

Si en lugar de un led por pin usamos un decodificador elevaríamos las conexiones hasta del orden de 2^30 leds. En mi caso el tema de espacio no me preocupa mucho, y la ventaja de no tener el pic trabajando como un loco en cada momento.

Intentaré probar tu diseño con hardware para ver como queda el efecto.

Muchas gracias!!!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 24 de Abril de 2010, 15:39:52
seguro... si decides hacerlo así como comentas después te detallo el código que en el mensaje anterior no anexé, sólo puse el .hex
Respecto al circuito, en efecto armalo para un led y fijate como va, ya que en la simulación es una cosa y puede diferir de la realidad. Lo que yo simulé es con un led que le fijé como parámetros 3V/20mA
Bueno, en resumen debes definir 2 cosas al menos por ahora:

después hay que ver el tema tiempos, Qué demoras se deben usar. Qué pasa si el que sube/baja la escalera se arrepiente a mitad de camino y se vuelve. Qué pasa si falla un sensor. Cuál es el tiempo máximo de permanencia en la escalera y a partir de cuándo se interpreta (o se asume) como una falla, etc.

Yo no te acompaño con el proyecto "real" porque no tengo escalera dentro de mi casa, sí en el patio tengo una que sube a la terraza, pero no se justificaría. Y una razón mucho más excluyente es que no tengo ni para comprarme un led  :mrgreen:
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 25 de Abril de 2010, 02:14:12
Disculpad, pero para conseguir un efecto de encendido o apagado progresivo de los leds no se hace con condensadores, sino mediante la modificación del % duty del PWM.

(http://galaxi0.files.wordpress.com/2009/06/pwm1.png?w=320&h=350)
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: c4_esp_VR en 25 de Abril de 2010, 04:02:17
Citar
Disculpad, pero para conseguir un efecto de encendido o apagado progresivo de los leds no se hace con condensadores, sino mediante la modificación del % duty del PWM.

Citar
Para el PWM tendrás que multiplexarlo por SW, es decir usar los timers para PWM, sigue este enlace del compañero RedPIC, no es exactamente lo que tienes que hacer pero van por ahí los tiros.

Control Servo Timer PWM

Respecto a lo de Proteus...es debido a que tu máquina no es lo suficientemente potente para mover las simulaciones en tiempo real, eso no significa que no funcione, simplemente que no lo hace en tiempo real.

Lo veo más óptimo y más barato, hacer esto del PWM con el PIC, incluso de esta forma con el PWM el pic va a estar muy ocioso, ya que lo único que hará es comparar variables auxiliares cada vez que se desbordan los temporizadores. Pero si es cierto que para alguien que no sabe programar muy bien en PICs le es más fácil lo otro...

Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 25 de Abril de 2010, 07:42:11
Yo simplemente os comento lo que me han ido contando. Está claro que por PWM yo soy el amo-dueño y señor de todo, jajaja, pero los que realmente sabéis sois vosotros. Le estoy dando una vueltecilla al circuito, así que cuando lo tenga más o menos enfilado y con el código bien, volveré a subir una capturilla a ver que os parece.

Cualquier otra idea será bienvenida!!!!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 25 de Abril de 2010, 11:10:56
Lo veo más óptimo y más barato, hacer esto del PWM con el PIC, incluso de esta forma con el PWM el pic va a estar muy ocioso, ya que lo único que hará es comparar variables auxiliares cada vez que se desbordan los temporizadores. Pero si es cierto que para alguien que no sabe programar muy bien en PICs le es más fácil lo otro...

Yo opino igual, lo aclaré, de todos modos si usa un solo pwm sólo podrá encender/apagar progresivamente un led a la vez. Yo usaría varios pwm por software (ésto es lo que digo se le puede complicar mucho a un novato, aunque puede obtener rutinas que estan por el foro). Con los capacitores a favor tiene que si querés encender todos al mismo tiempo lo podés hacer aunque sean 40 escalones, como contras tiene el costo y la imposibilidad de regular el tiempo de encendido/apagado, ya que eso queda determinado en la etapa de diseño por el valor de los filtros. Me parece que aunque yo yambién lo haría con pwm, no hay una sóla forma de hacer las cosas.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: vtasco en 25 de Abril de 2010, 22:52:08
Hola Menta,

podrías poner un esquemático de tu circuito? aunque sea un sólo pin con su respectivo LED,sigo sin entender tu idea.

saludos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 26 de Abril de 2010, 03:32:33
Tras mucho deliberar y darle vueltas voy a seguir con el diseño "original" es decir, usando PWM, aún no he aprendido, pero de eso se trata no???. Haré las modificaciones oportunas para tener un diseño final y lo colgaré aquí.

Respecto a lo de que hacer si el usuario se da la vuelta..........mi solución es: si el usuario no ha pasado por el otro haz en x segundos se cortaría, aunque según estoy escribiendo me viene la pregunta de.........y si vienen más personas???a lo mejor no debería controlar la salida y usar un periodo de tiempo, que creéis?
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: stk500 en 26 de Abril de 2010, 04:22:36
Hola amigo, se puede hacer de muchas manera aunque en mi caso yo usaria sensores direcional PIR, pero para eso deberia saber Multiplexer , claro eso seria dificil para alguien que esta aprendiendo y para que tenga una idea, cada escalon un sensor y al detectar se enciende el led correspondiente y al salir de su zona se apaga dimmando, para eso debe usar el Timer del micro como explican arriba PWM, de verdad que seria un proyecto muy elegante. yo te recomendaria poner espejo a los laterales de cada escalon y asi el sensor detecta cada paso en su zona de direcion.
ideas hay muchas es cuestion de tu saber.
Saludos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 26 de Abril de 2010, 05:46:34
Bueno, ya con diseño cerrado en principio, a falta de ajustar resistencias en cada led y que no se si el transistor que uso tiene que polarizarse o no sería el siguiente:

pd: 1 pregunta rápida, la resistencia mejor antes o despues del led???

(http://img99.imageshack.us/img99/2543/escaleras2.th.png) (http://img99.imageshack.us/i/escaleras2.png/)

Adjunto tambien el código de mi .c:

Código: [Seleccionar]
#include <18F4450.h>
#fuses HS,NOWDT
#use delay( clock = 4000000 )   // Reloj  de 4 MHz
#define botonAbajo PIN_C0
#define botonArriba PIN_C1
#define led1 PIN_B0
#define led2 PIN_B1
#define led3 PIN_B2
#define led4 PIN_B3
#define led5 PIN_B4
#define led6 PIN_B5
#define led7 PIN_B6
#define led8 PIN_B7
#define ON output_high
#define OFF output_low

void main(){
   int abajo, arriba;
   int inicioAbajo = 0;
   int inicioArriba = 0;
   
   for (;;) {
      abajo = input_state(botonAbajo);
      arriba = input_state(botonArriba);
      if ( arriba == 1 ){
         if (inicioAbajo == 0){
            inicioArriba = 1;           
            ON(led8);   
            delay_ms(200);
            ON(led7);   
            delay_ms(200);
            ON(led6);
            delay_ms(200);
            ON(led5);
            delay_ms(200);
            ON(led4);
            delay_ms(200);
            ON(led3);
            delay_ms(200);
            ON(led2);
            delay_ms(200);
            ON(led1);
         }else{
            OFF(led1);   
            delay_ms(200);
            OFF(led2);
            delay_ms(200);
            OFF(led3);   
            delay_ms(200);
            OFF(led4);   
            delay_ms(200);
            OFF(led5);   
            delay_ms(200);
            OFF(led6);   
            delay_ms(200);
            OFF(led7);
            delay_ms(200);
            OFF(led8);
            inicioAbajo = 0;
         }
      }
      if (abajo == 1){
         if (inicioArriba == 1){
            OFF(led8);
            delay_ms(200);
            OFF(led7);
            delay_ms(200);
            OFF(led6);
            delay_ms(200);
            OFF(led5);   
            delay_ms(200);
            OFF(led4);   
            delay_ms(200);
            OFF(led3);   
            delay_ms(200);
            OFF(led2);   
            delay_ms(200);
            OFF(led1);
            inicioArriba = 0;
         }else{
            inicioAbajo = 1;
            ON(led1);   
            delay_ms(200);
            ON(led2);
            delay_ms(200);
            ON(led3);
            delay_ms(200);
            ON(led4);
            delay_ms(200);
            ON(led5);
            delay_ms(200);
            ON(led6);
            delay_ms(200);
            ON(led7);
            delay_ms(200);
            ON(led8);
         }
      }
   }
}

Tanto el diseño como el código están totalmente dispuestos a cambios y modificaciones por los expertos que estáis por aquí
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 26 de Abril de 2010, 05:56:38
Las resistencias da igual antes o después.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 26 de Abril de 2010, 06:17:20
Bueno, como me fueron comentando, voy poniendo los componentes:
Para los transistores: 2N2222A
PIC: 18F4450
Resistencias: 1K y 10k para el circuito del reset y por determinar las de los leds
Condensador 2u2 para el circuito del reset
3 pulsadores que pasarán a ser 2 células IR y un pulsador para el reset
Leds: unos que localicé por eBay, lo que ponen en ebay sobre ellos es lo siguiente:
Citar
You will receive 100 pcs 5mm White LEDs.

Free to provide 100 pcs resistors for 5V DC and 25 pcs resistors for 12V DC.

This is highly intensive, super bright White LED. It's so bright that you can't miss it!

Ideal for small fog light, interior illumination, signal indicator.

Several beautiful colors available: Red, Blue, Green, White etc. PLZ contact us
with email or message for all colors we provide. They are fully waterproof and completely shatterproof,and have been tested for performance and durability in extreme heat, vibration.

Product NumberLE-DS150
Product Name100 pcs 5mm White LED17000mcd & Free Resistor
Emitted ColorWhite/td]
Size (mm)5mm/td]
Lens ColorWater Clear
Peak Wave Length (nm)N/A
Static SenseYes
Forward Voltage (V)3.0 - 3.2
View Angle5 - 25°
Luminous Intensity (mcd)15000 - 17000
Maximum Curren20mA Continuous, 50mA peak for 10% Pulse Width
Item Net Weight75g / 2.7oz

pd: gracias por la aclaración Nocturno
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: c4_esp_VR en 26 de Abril de 2010, 06:48:51
Hola leeboy:

Citar
View Angle   5 - 25°

No sé cuanto quieres que ilumine, pero dependiendo de la longitud de las escaleras, deberías de hacer un cálculo del ángulo de apertura del led, ya que a lo mejor este led es poco divergente. Es decir, escaleras pequeñas, ángulo de apertura grande y escaleras grandes, angulo de apertura pequeño.

Un saludete y ánimo.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 28 de Abril de 2010, 15:30:39
Bueno, tras una pequeña prueba que hice, con un programa de prueba, veo que necesito un cristal, pero no se como se pone, es decir, una patilla a Vcc y la otra a la del pic?? entre 2 patillas del pic??

Aquí está el datasheet http://datasheet.octopart.com/PIC18F4450-I/P-Microchip-datasheet-8042.pdf
mi duda es, en que patilla iría?en la 13 o la 15?o puenteando ambas?
Gracias de nuevo a todos!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: c4_esp_VR en 28 de Abril de 2010, 19:14:51
Si tienes un cristal de este tipo...

Cristal (http://rocky.digikey.com/weblib/CTS/Web%20photos/HC-49%20Series.jpg)

Es en las patillas 13 y 14 y luego poner en el #fuses el HS (High Speed).

Un saludete.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 29 de Abril de 2010, 01:27:05
En tu esquemático tienes los transistores al revés, emisor y colector invertidos...
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 30 de Abril de 2010, 06:10:40
Tengo una preguntilla (otra más)

A ver........tengo los leds conectados a los transistores (no como en el diseño, sino bien, o al menos eso creo). Si le meto corriente a los leds se iluminan todos un poco y cuando le pongo el 1 en la patilla correspondiente del transistor, se apagan todos y bien, alguna idea??tengo que polarizar el transistor??uso el 2n2222A

Gracias de nuevo
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 30 de Abril de 2010, 07:27:37
Me auto-respondo, voy a polarizarlo.......vaya cabecita la mía.....
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 06 de Mayo de 2010, 06:24:19
Buenas de nuevo,

tengo un pequeño problema con mi diseño, lo tengo puesto en la board. Todos los leds están colocados de igual modo (mismos transistores, mismas R's, todo igual), pero no se por qué en algunos aparece como un residuo de luz, en otros como si tuviera un 1 la patilla del PIC y está iluminado entero.....me tiene de cabeza, alguien sabe por qué puede ser???. Ahora mismo he puesto todas las patillas de los led a 0 (output_low()) y de 9 tengo 6 con algo de intensidad(de los cuales 1 parpadea) otro encendido a tope y 2 apagados(como deberían de estar los demás), no entiendo por qué unos están apagados y los otros no

Título: Re: Iluminar escaleras de manera progresiva
Publicado por: c4_esp_VR en 06 de Mayo de 2010, 07:00:34
Hola leeboy:

A simple vista es dificil decir que pasa.

Si tienes un osciloscopio prueba a visualizar la señal en cada patilla y luego nos comentas.

Por otro lado, puedes poner un esquemático de como alimentas tanto el pic como los diodos además del software del PIC, de lo contrario evaluar que está pasando es casi imposible.

Respecto a la patillas que se te queda fija o bien es un error en el SW o bien es una patilla del PIC no configurable como I/O.

Un saludete.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 06 de Mayo de 2010, 07:16:01
Vale, lo del que se queda encendido puede ser eso. Creo que ya se cual es el problema de los demás, a ver si alguien me lo puede verificar. Yo compré en la tienda de mi barrio unos transistores que en su encapsulado pone: KSP-2222A-G25 y como me funcionaban bien, pedí en RS-Componentes unos 2222A, en su encapsulado pone: P2N2222A-912, bien, el tema es el siguiente, los que son KSP funcionan de lujo, y los P2N mal, no son todos los 2n2222A iguales???

c4_esp_VR de soft no es, así que imagino que será una patillita de solo salida, pero eso no es gran problema.

Viendo los datasheet no veo gran diferencia, pero claro, no soy un gran experto
KSP: http://www.datasheetcatalog.org/datasheet/fairchild/KSP2222A.pdf
P2N: http://www.chipcatalog.com/ONSemi/P2N2222A.htm

Espero que los P2N que compré no los tenga para tirar.......
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: fuente en 06 de Mayo de 2010, 10:13:06
No me he metido a ver más características, pero lo primero que he visto es que tienen el emisor y el colector intercambiados.
A ver si es eso.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 06 de Mayo de 2010, 13:10:01
 :oops: :oops: :oops: :oops: :oops: :oops:

Eso pasa por leer y no prestar atención,

Os dejo un video del pwm por soft en todos los leds a la vez   ;-)

Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Cossworth en 06 de Mayo de 2010, 13:20:40
Para evitar ese residuo de luz prueba colocando una resistencia pull-down entre la base del transistor y GND (si es que no lo tienes conectado así)
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 06 de Mayo de 2010, 13:32:27
Ese "residuo" no se a que se debe, porque cuando están en output_low los led están totalmente apagados, ya he hecho pruebas, no se si será por mi pwm que no esté muy fino o por qué :S.

Ahora estoy intentando que una vez que me hace el pwm dejar la luz encendida por un tiempo
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Neochange en 08 de Mayo de 2010, 05:49:35
Hola!, hace poquito que estoy en este foro y estoy leyendo/curioseando por aqui. Tu proyecto me ha aprecido muy interesante y practico y me ha surgido una duda. Para unas escaleras como las del video del principio he entendido que es un led por escalón. Como salvas la distancia entre el circuito y los leds? Ya que según  lo entiendo habrá algún led que quede muy lejos del circuito con la resistencia que supondria.

Es una simple curiosidad Gracias
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 08 de Mayo de 2010, 09:09:48
Neochange, la verdad es que no me lo había planteado, sería hacer una prueba con la longitud del cable y ver si se nota esa resistencia.........aunque imagino que como ésta(la resistencia) sería progresivamente más grande no se notaría si miras la escalera de manera progresiva, otra cosa sería comparar el primer escalón con el último
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 08 de Mayo de 2010, 12:29:41
Si el cable es gordito no creo que se note
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 09 de Mayo de 2010, 07:28:23
Gracias Nocturno, ya estaba acongojado!!!!!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Neochange en 09 de Mayo de 2010, 16:19:24
Ok, No pretendía acongojar! XD Entonces se suele usar un cable gordo y conectarlo directamente a la placa como si fuera un cable pequeño? Ya explicarás de cuanto lo usas cuando lo apliques.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: c4_esp_VR en 09 de Mayo de 2010, 16:59:30
La resistividad del cobre es de 0.0171 Ohm ·  mm²/m y la formula para medir la resistencia del cable viene dado por:

R [Ohm] = ( resistividad [Ohm*mm²/m] * longitud [m]) / Área [mm²].

Veamos...un cable de 5 metros, con 0.5mm² de sección tendría una resistencia de... R = 0.0171 * 5 / 0.5 = 0.171 Ohm...Pero claro, la resistencia aumenta a través de la temperatura, por lo que habría que aplicar otra formula dependiente de la temperatura para ajustarlo más, pero esto depende del recubrimiento del cable y del número de hilos del cable, pero para estas cosas con la primera formula es suficiente si aplicamos un coeficiente de seguridad  ;-)

Un saludete.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 09 de Mayo de 2010, 18:39:08
TIP= Es conveniente siempre usar varios cables finos (multifilar, cable litz, etc) que un solo cable gordito sobretodo si vas a mandar una señal de frecuencia relativamente alta por él por el tema del efecto pelicular que aumenta la Resistencia efectiva o desde otro punto de vista, reduce la sección equivalente del conductor.

De cualquier modo, salvo que sea la escalera más larga del mundo (http://www.francescjosep.net/la-escalera-mas-larga-del-mundo/)  :) no vas a tener ningún problema, medí la R del cable y multiplicala por la máxima I que vaya a pasar por él y verás la caida de V (seguro resultará despreciable)
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: gera en 09 de Mayo de 2010, 19:44:37
TIP= Es conveniente siempre usar varios cables finos (multifilar, cable litz, etc) que un solo cable gordito sobretodo si vas a mandar una señal de frecuencia relativamente alta por él por el tema del efecto pelicular que aumenta la Resistencia efectiva o desde otro punto de vista, reduce la sección equivalente del conductor.

De cualquier modo, salvo que sea la escalera más larga del mundo (http://www.francescjosep.net/la-escalera-mas-larga-del-mundo/)  :) no vas a tener ningún problema, medí la R del cable y multiplicala por la máxima I que vaya a pasar por él y verás la caida de V (seguro resultará despreciable)

Efecto skin, cierto? :P
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 09 de Mayo de 2010, 20:00:21
TIP= Es conveniente siempre usar varios cables finos (multifilar, cable litz, etc) que un solo cable gordito sobretodo si vas a mandar una señal de frecuencia relativamente alta por él por el tema del efecto pelicular que aumenta la Resistencia efectiva o desde otro punto de vista, reduce la sección equivalente del conductor.

De cualquier modo, salvo que sea la escalera más larga del mundo (http://www.francescjosep.net/la-escalera-mas-larga-del-mundo/)  :) no vas a tener ningún problema, medí la R del cable y multiplicala por la máxima I que vaya a pasar por él y verás la caida de V (seguro resultará despreciable)

Efecto skin, cierto? :P

Yes my friend! Ese mismo, en criollo es "efecto pelicular": Las zonas centrales del conductor son encerradas por más líneas de flujo magnético cuando circula una I, por lo tanto representan una mayor inducción (en el centro)
A alta frecuencia, esta diferencia de inducción se transforma en una alta diferencia de reactancia inductiva (XL = wL), como resultado la corriente tiende a fluir por la superficie. En realidad la distribución de corriente desciende en forma exponencial hacia el interior...
En una señal pwm (cuadrada) hay componentes de alta frecuencia que serán más importantes en potencia cuanto más grande sea la frecuencia fundamental del pwm.
En rigor, esto hay que tenerlo muy en cuenta en todo diseño dónde la I y/o las distancias sean importantes, que no es el caso de esta aplicación, pero me parece que valía la pena mencionarlo...
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: splasma2 en 10 de Mayo de 2010, 07:51:58
Uhm, interesante proyecto... yo que estaba pensando en poner un friso a la escalera... :) :) :)

El único "problemilla" que veo por ahora es la madeja de cables , por lo menos : 1 + (número de escalones).

¿ No has pensado en poner un mini PIC, lease un baratillo 12F.. por escalón y que se comuniquen entre ellos ??... 3 cables entre cada "nodo/escalon".  En fin,  por complicar un poco el tema... :lol: :lol:
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 10 de Mayo de 2010, 08:11:40
No podría decirte splasma2, soy un novato total en esto. Estos pics cuestan del orden de 4.5€, los otros tendrían que ser muuuuuy baratos para que saliera rentable :S, además de que lo mismo es mucho más engorroso, pero a la vez más modular, eso si(lo cual me gusta, jaja)

Aprovecho para preguntar tambien un por qué :S

Compré un transistor L7805CV para usar un solo transformador de corriente, bien, tengo 2 transformadores:
    - Transformador A: Salida 5.0V y 2.0A
    - Transformador B: Salida 7.5V y 1.0A
Bien, si utilizo el transformador A, al pic le llegan 3.7V y funciona correctamente y los leds se iluminan (tampoco excesivamente), pero si uso el B, al pic le llegan 5V (con lo que debería de funcionar correctamente) y los leds brillan (con la intensidad que yo quería), pero no funciona bien!!!!!parpadean, hacen cosas raras y terminan por quedarse encendidos fijos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 10 de Mayo de 2010, 08:27:11
Unos pequeños PIC10F te servirían perfectamente y creo que no llega a 40 céntimos la unidad.
Con lo que te ahorras en cable te saldría a cuenta.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: splasma2 en 10 de Mayo de 2010, 09:22:14
Como dice Nocturno, no son tan caros, en eBay puedes conseguir un lote de 25x12F629 por unos 35€ y los 10F, pues más baratos aún.

Ventajas: creo que es una solución más flexible y elegante.
Inconvenientes: el desarrollo es más complejo, pero... para eso estamos todos nosotros  :-/ :-/
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: fuente en 10 de Mayo de 2010, 10:44:19
Los 78xx necesitan un par de voltios más en la entrada de los que entregan en la salida, por lo que yo te diría que el transformador que deberías poner es el B.
En cuanto a lo de los parpadeos y demás, filtra bien tanto a la entrada como a la salida, además de asegurarte de que el rectificador sea de doble onda (la configuráción de 4 diodos).

Yo probaría a poner en la entrada (antes del 7805) dos condensadores, uno de 1000 uF y otro de 100 nF (éste último lo más cerca posible del 7805, y a la salida, otro de 100 nF y otro de 220 uF (también te valdría uno de 100 uF).
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 10 de Mayo de 2010, 11:24:43
El tema no creo que sea por ruido fuente ni cosas así :S, aunque si no es por eso, no se que puede ser. Si yo conecto el de 5V y me da la salida de 3.8V para el pic, el pic reproduce perfectamente su programa, pero si pongo el de 7.5 que al pic le da 5V, me hace lo que le da la gana :S, y si conecto el de 5V directamente al pic tambien lo hace bien, no se a que se puede deber
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: gera en 10 de Mayo de 2010, 11:55:09
Por el tema de la alimentacion, el lm7805 requiere minimo 7V de continua como entrada. Por lo tanto si tu transformador es de 5V de alterna, cuando lo rectifiques a continua vas a obtener mas o menos 7V. Igualmente es conveniente usar el transformador de 7.5V para no estar sobre los limites.
Ademas conviene poner un par de condensadores en paralelo con masa tanto en la entrada como en la salida, uno ceramico de 100nF y otro electrolitico de 10uF mas o menos. Cosa de filtrar cualquier ruido q pueda meterse.

El tema de usar varios pics no me convence... cable va a necesitar mucho mas, ya q va a tener q tirar minimo dos lineas para comunicar los pics y tambien para alimentarlos...

En fin, esta interesante el tema jeje. Saludos!!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 10 de Mayo de 2010, 12:21:24
No necesitarías más de 4 hilos: dos para alimentación, y otros dos para un bus I2C, por ejemplo.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: splasma2 en 10 de Mayo de 2010, 12:38:20
Incluso menos, tres cables,  si  nos atrevemos con un protocolo como 1-Wire  ;-).

Es decir cada nodo estaría conectado con el siguiente con 3 cables... y en el primero podría ser el master de toda la red... no sé ... ideas
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: fuente en 10 de Mayo de 2010, 12:56:17
Implementar el 1wire en un 10F.... tela, sobre todo si es para varios elementos sobre el mismo cable.
Estos peques no llegan a 1k de memoria de programa, y un puñado de bytes de RAM. Y nada de eeprom para almacenar datos...
Vamos, que sobre estos bchos, lo básico.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: splasma2 en 10 de Mayo de 2010, 13:03:02
Yo usaría mejor un 12F.

En cualquier caso el protocolo 1-wire no es muy complejo, yo he hecho varias implementaciones como "Master" en PIC 12F y sobra micro.

Lo que no he hecho nunca es implementar la parte "Slave". Si fuera difícil podriamos usar la opción del I2C que es más sencillito, a cambio de  un cablecito más...

Título: Re: Iluminar escaleras de manera progresiva
Publicado por: COMETINSONIC en 25 de Mayo de 2010, 18:44:47
miren soy nuevo en el foro y no c si aun sigan en esto de las luces de la escalera pero aqui hice un programa con el flowcode para una escalera de 16 peldaños y lo simule en el proteus en mi pc se ve un poco lento pero las demoras de encendido entre cada led es de 500 milisegundos    a ver si alguien lo checa y comenta        puse 2 botones simulando q  un boton es la escalera de inicio y el otro el final la idea es  q cuando pisas el la escalera 1 se ilumina en el sentido en q vas a subir las escalera y cuando llegas al boton 2 la escalera se apaga en en sentido q subiste la escalera   y si lo haces al reves hace lo contrario se ilumina hacia abajo    y  eapaga hacia abajo   


pd los sw se pueden cambios por un sensor de precencia o cualquier cosa q al pasa por la escalera principal te genere un 1 para disparar el pic
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 27 de Mayo de 2010, 15:02:05
HOLA COMETINSONIC. Bienvenido a Todopic!!!
Gracias por compartir tu diseño y programa.

Me parece que va lento porque en la simulación de proteus tiene el clock del pic a 1Mhz...
Por las dudas: está en el menú de Edit Properties seleccionando el pic y con Ctrl+E se puede llegar al menú, en la opción Processor Clock Frequency pones 4Mhz y las demoras sí son de 500ms aproximadamente.

En cuanto al funcionamiento, está bien, es decir hace bien lo que debe cuando se dan los casos de subida y bajada, pero según veo le faltaría considerar los casos "raros", por ejemplo cuando bajen 2 personas o que el sensor reciba una doble pulsación al pasar una sola persona, ahí veo que le faltan esas cositas...

Aclaro el caso puntual que vi... baja una persona, entonces comienzan a encenderse las luces, digamos hasta el escalón 4 y viene otra persona pero para subir y comienzan a apagarse, pero dejan de prenderse... por lo tanto al apagarse los 4 escalones de arriba la escalera queda a oscuras y ya no acepta más pulsaciones hasta que se terminen de "apagar" las luces que ya estaban apagadas...

Y otra cosa es que el encendido no es gradual como en el video que inició este tema, pero supongo que es un efecto distinto que también puede quedar muy bien, más si haces el encendido un poco más rápido (delay menor de 500ms) ya que 8 segundos a mi entender es mucho, le bajaría un par de segundos, debes asegurarte que las luces lleguen antes que la persona.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: COMETINSONIC en 29 de Mayo de 2010, 13:19:57
 gracias por  las observaciones   y si tienes razon con lo del pic q esta configurado a 1 mhz ya lo rectifique    como podras darte cuenta soy nuevo en estod e la programacion y aun se me pasan cosas q deberian de ser basicas   pero poco a poco ire puliendo esto  en cuanto al tiempo de encendido no hay problema solo lo puse para la simulaion pero si se puede hacer mas corto      en cuanto alos casos  especiales q me manejas tienes razon yo ya lo habia notado pero no c como hacerlos  te comento q no c programar en C ni en basic todo la hago con el flowcode y pues no supe como hacerlo    lo unico q se me ocurre es :
1 .- hacer el encendido de los led`s mas rapido (siguiendo tu comentario)

2.- hacer el apagado de los leds mas lento aun     esto es para el caso q tu mencionas si bajan 2 personas los leds se empieza   ha apagar hasta q la primera pesona llegue abajo  y si demoramos mas el tiempo de apagado pueda bajar la persona 2  solo es lo q se me ocurre :shock:
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 29 de Mayo de 2010, 14:58:50
Me parece bárbaro, esta muy bien tu actitud de aprender... tampoco es tan dificil, con lo que haz hecho ya no eres un novato y siempre hay qué aprender...
Sobre demorar más el apagado que el encendido me parece correcto, fijate que en el video del post 1 es así.
Sobre esos casos especiales es medio dificil ayudarte con el flow code, entiendo que sin importar el lenguaje de programación que se use, se debería pensar el programa primeramente como diagrama de flujo, pero bueno, yo en general pienso mucho en C y el digrama de flujo que hago es muy general y sólo para programas grandes como para no perderme en las líneas de programación. termina siendo un arte hacer un buen programa, con el tiempo de hacerlo se mejora el tiempo y la calidad de los programas.
Exitos.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: polcor en 01 de Junio de 2010, 22:59:29
buenas.. soy nuevo tb el en tema de los pic's y aplaudo a leeboy por la idea.. el proyecto está muy bueno.. a un grupo de compañeros nos pareció muy interesante y estamos queriendo realizar el mismo cto pero con un 16F84A ya que es el mas comun en el mercado y el mas barato.. :D :D y quisiera saber si es factible realizar este proyecto con dicho PIC..

desde ya.. muchisimas gracias..
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 01 de Junio de 2010, 23:41:01
Si es muy viable usar ese pic, pero para usarlo debes saber cómo y hay que estudiar un poquito el datasheet del micro, con eso será suficiente.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: polcor en 01 de Junio de 2010, 23:46:08
el datasheet ya lo estudie un poco.. mas bien para la programación en assembler es lo encuentro los problemas.. estoy utilizando el MPLAB IDE v6.61.. el programa que fue publicado ya está en C. existe algun conversor de C a Assembler..?? solo por curiosidad.. o si alguien me puede facilitar las rutinas para el encendido secuencial de los led en Assembler les estaría agradecido. ya que la parte de hardware ya lo tengo terminado.

Gracias..
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 02 de Junio de 2010, 00:49:11
Bueno, yo no soy un experto en asm, así que te paso dónde hay ejemplos:

http://www.todopic.com.ar/foros/index.php?topic=12345.0 (http://www.todopic.com.ar/foros/index.php?topic=12345.0)

hay muchos ejemplos de juegos con luces leds...
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 08 de Junio de 2010, 04:33:26
Muy bueno el proyecto.

Pero para sensar que la persona esta a punto de subir o bajar las escaleras con que lo harian? Algun sensor IR o de ultrasonido o que cosa? Porque con un boton... donde iria eso? No lo veo bien. Este punto del sensado es el que estoy pensando ahorita, por lo demas.. lo aria lo mas barato posible: un solo pic con varias IOs y PWM por software.

Exitos.
Salu2
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 11 de Junio de 2010, 12:22:15
Busco, pero no encuentro cual me convendria mejor.. me refiero al sensor que sensa (valga la redundancia) cuando la persona esta apunto de bajar o subir las escalres, o mejor dicho, esta a punto de pisar el primer o ultimo escalon de la escalera.

Creo que lo mejor es con un sensor IR, como el IS471F, o quiza con ultrasonido. El problema esque nunca he usado ninguno de los dos y nose que modelo es el que debo de usar... Lo que necesito es obvio para este proyecto: un sensor (ya sea IR o de ultrasonido u otro) que tenga una distancia minima de medio metro aproximadamente supongo para que detecte cuando una persona pasa por alli cuando intenta bajar/subir las escaleras.

Bueno, gracias por la informacion que me puedan brindar sobre estos sensores.
Salu2.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Ferblitz90 en 16 de Junio de 2010, 05:15:14
Hola pues te dire que si tienes problemas para controlar una cantidad de leds yo tengo la solucion para ti con un puerto de 8 bits puedes controlar hasta 56 leds de la siguiente manera con el circuito que te pasare en proteus y para especificar el led que exactamente quieres prender necesitas hacer lo siguiente

-Dos Tablas
             1. Una de ellas tiene los 1 y ceros correspondientes del puerto a usar eso no hay problema.
             2. La otra tabla consiste en configurar el puerto a manera que los bits que no estas usando para prender un led esten en alta impedancia.

Esto se logra por ejemplo para prender el primer led de mi circuito tienes que mandar un 1 al puertoB,0 y un cero al puertoB,1 pero antes de mandar unos y ceros debes configurar las impedancias esto quiere decir configurar el puertoB a tal manera que el  puertoB,0 y puertoB,1 sean salidas y todos los demas bits del puertoB sean entradas asi de esta manera no se activaran los demas leds analiza el circuito y si tienes dudas con mucho gusto las aclaro.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 16 de Junio de 2010, 13:28:47
Para los LEDs no tengo problemas y ese circuito que propones seria muy complicado a la hora de la instalacion. Esperaba se pueda hacer con un MUX o algun integrado parecido, mientras lo estoy haciendo directamente con un PIC de 28 pines. Tambien, para la parte de la potencia, lo hago con puros 3904 pero queria preguntar si conocen algun integrado que tenga consigo quiza 8 de estos transistores internamente y me ahora tanto trabajo.

Por otro lado, ya resolvi el tema del sensado haciendolo con IR.


Gracias de todas formas.
Un saludo.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: splasma2 en 29 de Junio de 2010, 07:57:57
Buenas.

Siguiendo con la idea de utilizar  PIC12F en cada punto de luz de la escalera, me he puesto a implementar un sencillo protocolo serie unidireccional ( implementar I2C como slave era complejillo). El protocolo usa 2 hilos : Datos y Reloj y permite enviar comandos de 8 bits desde un PIC master ( que sera un PIC16F o un PIC18F) hacia los puntos de luz ( que serán PIC12F).

Como ahora puedo enviar comandos y solo necesito 4 hilos ( Reloj, Datos, Vcc y Masa) , me quedan 4 pins libres en el PIC12F por lo que he pensado que en vez de utilizar LED blancos en cada punto de luz puedo usar LED RGB de potencia (3W), no hay mucha diferencia de precio... :) :) y conseguir efectos de color en la escalera mola :P :P

Ahora tengo que ver como controlar de manera eficiente, via PWM ese LED RGB desde cada PIC12F, si teneis algo hecho os agradecería la ayuda.


Por ahora lo tengo funcionando en Proteus para probar el protocolo ( que por cierto lo he llamado PUS, Protocolo Unidireccional Serie, je,je ), cuando este más maduro pondré cositas...
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 29 de Junio de 2010, 08:17:16
Puede que te sirva esto:
Probamos led RGB: generación de 3 PWM (http://www.micropic.es/index.php?option=com_content&view=article&id=59:generacion-de-3-pwm-probamos-led-rgb&catid=38:tecnicas&Itemid=65&lang=es)
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: splasma2 en 29 de Junio de 2010, 09:50:25
Gracias Nocturno, el esquema software que estaba usando era ese: usar el timer para ir descontando el valor de cada PWM.

La pregunta iba dirigida más hacia el HW, ya que atacar el LED de 3W desde el PIC no me vale, y estaba considerando usar un MOSFET como driver para cada LED; pero no sé si habrá una solución mejor usando una fuente de corriente controlable digitalmente, por ejemplo, aunque tampoco quiero complicar mucho el diseño por precio y espacio.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: splasma2 en 30 de Junio de 2010, 06:07:56
Hola de nuevo, os pongo código del master PUS:

Código: [Seleccionar]
//++++++++++++++++++++++++++++++++++++++++++++++++++++++//
#include <16F628a.h>
#FUSES   INTRC_IO,NOWDT,PUT,NOMCLR,BROWNOUT,PROTECT,CPD
#use     delay(clock=4000000)
//#use     rs232(baud=19200,rcv=PIN_A3,BITS=8,sample_early)
#zero_ram


//+++++++++++++++++++++++++++++++++++++++++//
#define LED1     PIN_A0
#define LED2     PIN_A1
#define SW1 PIN_A4
#define SW2      PIN_A5

#define PUS_PC   PIN_B0
#define PUS_PD PIN_B1
#define IN_SEN PIN_B2
//+++++++++++++++++++++++++++++++++++++++++//

#define CMD_ON    0x01
#define CMD_OFF  0x02
#define CMD_FADER_FAST  0x03
#define CMD_FADER_SLOW  0x04
#define CMD_INC_FAST  0x05
#define CMD_INC_SLOW  0x06
#define CMD_DEC_FAST  0x07
#define CMD_DEC_SLOW  0x08


//+++++++++++++++++++++++++++++++++++++++++
//
//
// Protocolo Unidireccional Serie (PUS) ;-)
//
//  Dos Lineas:
//  PD : Dato
//  PC : Reloj
//
//  Dato se lee en flanco de subida PD y debe permanecer
//  hasta siguiente flanco de bajada, si no Error o START.
//
//  Condicion START:
// PD = 0 en flanco de subida de PC.
//      PD = 1 en siguiente flanco de bajada de PC.
//
//       ____      ____      ____      ____
//    __|    |____|    |____|    |____|    |____    PC
//
//         ____   _______   _______
//    ____|    |_|       |_|       |___________|    PD
//
//           ^
//         START 
//                   1        1          0
//  Formato paquete
//  A3 A2 A1 A0 C3 C2 C1 C0
//
//  A : Direccion ( 15  posibles, 0 reservado)
//  C : Comando   ( 15  posibles, 0 reservado)
//
////+++++++++++++++++++++++++++++++++++++++++
//
void PUS_write(int8 add,int8 cmd);

////+++++++++++++++++++++++++++++++++++++++++
////+++++++++++++++++++++++++++++++++++++++++
void main(){

  setup_comparator(NC_NC_NC_NC);     //Comparador deshabilitado
  output_A(0x00);                    //Latch
  set_tris_A(0B0110000);             //Input A4 y A5
  output_B(0x00);                    //Latch
  set_tris_B(0B0000100);    //Input B2

//---------  PROGRAMA PRINCIPAL   -----------------------------\\\\

// Prueba de envio ON/OFFF
  while (1) {

PUS_write (0x01,CMD_ON);
PUS_write (0x02,CMD_OFF);
delay_ms(1000);

PUS_write (0x01,CMD_OFF);
PUS_write (0x02,CMD_ON);
delay_ms(1000);

  }//end while
 
 
}//end main
 
 
////+++++++++++++++++++++++++++++++++++++++++

#define PERIODO_BIT_US  500
void PUS_write(int8 add,int8 cmd)
{
int8 dato, nbits, mask;

dato = (add << 4) & 0xF0;
dato |= (cmd & 0x0F);

output_low(PUS_PD);
output_low(PUS_PC);

// Condicion START
delay_us (2 * PERIODO_BIT_US);
output_high(PUS_PC);
delay_us (PERIODO_BIT_US / 2);
output_high(PUS_PD);
delay_us (PERIODO_BIT_US / 2);
output_low(PUS_PC);

// Envio de los bits
mask = 0x80;
for (nbits = 0; nbits < 8; nbits++)
{
delay_us (PERIODO_BIT_US / 2);
if ((dato & mask) > 0)
output_high(PUS_PD);
else
output_low(PUS_PD);
delay_us (PERIODO_BIT_US / 2);

output_high(PUS_PC);
delay_us (PERIODO_BIT_US);
output_low(PUS_PC);

mask = mask >> 1;
}
delay_us (PERIODO_BIT_US);
output_low(PUS_PD);
delay_us (PERIODO_BIT_US);

// TODO : Envio de paridad

}


//+++++++++++++++++++++++++++++++++++++++++++++++++++++++//
 
 

 


Y ahora el de de un nodo receptor:

Código: [Seleccionar]
//++++++++++++++++++++++++++++++++++++++++++++++++++++++//
#include <12F629.h>
#FUSES   INTRC_IO,NOWDT,PUT,NOMCLR,BROWNOUT,PROTECT,CPD
#use     delay(clock=4M)
#use     fast_io(A)
#zero_ram

//+++++++++++++++++++++++++++++++++++++++++//
#define LED      PIN_A0
#define PUS_PC   PIN_A3
#define PUS_PD PIN_A4
//+++++++++++++++++++++++++++++++++++++++++//
#define MAX_LED 100

#define CMD_ON  0x01
#define CMD_OFF  0x02
#define CMD_FADER_FAST  0x03
#define CMD_FADER_SLOW  0x04
#define CMD_INC_FAST  0x05
#define CMD_INC_SLOW  0x06
#define CMD_DEC_FAST  0x07
#define CMD_DEC_SLOW  0x08

char dato_rx = 0;
volatile int8  pwm_act_led = 0;
int8  pwm_led = 0;

// Variable control seceuncia de inicio
//
#define SEQ_INIT_START 0
#define SEQ_INIT_F1 1
#define SEQ_INIT_F2 2
#define SEQ_INIT_F3 3
#define SEQ_INIT_END 4

int16 cont_seq_inicio = 0;
int8 seq_inicio = SEQ_INIT_START;
int8 comando,address;

int8 fader(int8 speed,int1 inicio );

//+++++++++++++++++++++++++++++++++++++++++
//
//
// Protocolo Unidireccional Serie (PUS) ;-)
//
//  Dos Lineas:
//  PD : Dato
//  PC : Reloj
//
//  Dato se lee en flanco de subida PD y debe permanecer
//  hasta siguiente flanco de bajada, si no Error o START.
//
//  Condicion START:
// PD = 0 en flanco de subida de PC.
//      PD = 1 en siguiente flanco de bajada de PC.
//
//       ____      ____      ____      ____
//    __|    |____|    |____|    |____|    |____    PC
//
//         ____   _______   _______
//    ____|    |_|       |_|       |___________|    PD
//
//           ^
//         START 
//                   1        1          0
//  Formato paquete
//  A3 A2 A1 A0 C3 C2 C1 C0
//
//  A : Direccion ( 15  posibles, 0 reservado)
//  C : Comando   ( 15  posibles, 0 reservado)
//
////+++++++++++++++++++++++++++++++++++++++++
//
int8 PUS_dato = 0;

#define PUS_ADDR 0x01

////+++++++++++++++++++++++++++++++++++++++++
////+++++++++++++++++++++++++++++++++++++++++
void main(){

  setup_comparator(NC_NC_NC_NC);      //Comparador deshabilitado
  output_A(0x00);                     //Latch
  set_tris_A(0B011000);               //MCLR=A3= RX input Int_RA3 on Change
  enable_interrupts(GLOBAL);          //Interrupciones Habilitadas
  enable_interrupts(INT_TIMER1);      //Habilitamos interrupcion desborde TMR1
 
// Timer1 para conseguir un tick cada 100us @ 4Mhz
set_timer1(65436);        // 65536-(.000100/(4/4000000))
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
  enable_interrupts(INT_RA3);         //Habilitamos interrupcion por cambio de estado
                                      //en pin RA3
//---------  PROGRAMA PRINCIPAL   -----------------------------\\\\

  //while (fader(100,1)) delay_ms(200);

  while (1) {

// 
// Estamos en sequencia de inicio
//
if (seq_inicio != SEQ_INIT_END)
{
switch (seq_inicio)
{
case SEQ_INIT_START : pwm_led = MAX_LED; break;
case SEQ_INIT_F1 : pwm_led = MAX_LED/2; break;
case SEQ_INIT_F2 : pwm_led = MAX_LED/4; break;
case SEQ_INIT_F3 : pwm_led = 0; break;
}

if (cont_seq_inicio++ > 10000)
{
cont_seq_inicio = 0;
seq_inicio++;
}
}
else
//
// Ejecucion normal : chequeamos dato recibido por PUS
//

dato_rx = PUS_dato;
PUS_dato = 0;

if (dato_rx != 0)
{
comando = dato_rx & 0x0F;
address = (dato_rx >> 4) & 0x0F;
if (address == PUS_ADDR)
{
switch (comando)
{
case CMD_OFF : pwm_led = 0; break;
case CMD_ON  : pwm_led = MAX_LED; break;
}
}
   
dato_rx = 0;
  }//if rx             
  }//end while
 
 
}//end main


// ++++++++++++++++++++++++++++++++++++++++++++++++

#define MAX_LED_FADER 8

const int8 led_valor[MAX_LED_FADER] = {0,10,20,30,50,70,80,100};

#define FADER_STOP  0
#define FADER_UP    1
#define FADER_DOWN  2

int8 fase_fader = FADER_STOP;

int8   idx_valor;
int8   speed_fader;

//
// fader
//
// speed : velocidad de la secuencia "fader"
// inicio : flag arranque secuencia
//
// devuelve 0 al finalizar el ciclode "fader", 1 en caso contrario.
//

int8 fader(int8 speed,int1 inicio )
{


    if ((fase_fader == FADER_STOP) && (inicio))
    {
        pwm_led = 0;   
        speed_fader= speed;
    fase_fader = FADER_UP;
    idx_valor  = 0;
    }

 
    if (fase_fader == FADER_UP )
    {
        pwm_led = led_valor[idx_valor++];
       
        if (idx_valor > MAX_LED_FADER)
        {       
        fase_fader = FADER_DOWN;
        idx_valor = MAX_LED_FADER-1;
        }
    }

    if (fase_fader == FADER_DOWN)
    {
        if (idx_valor == 0)
        {
        fase_fader = FADER_STOP;
        }
        else
        {
      pwm_led = led_valor[idx_valor--];           
        }
    }

    return (fase_fader != FADER_STOP);
   
}
 
 
 
//+++++++++++++++   INTERRUPCIONES   +++++++++++++++++++//
#INT_TIMER1
void desborde_TMR1(){        //Interrupcion por desborde de timer cada 100 us

//
// Control PWM del LED
//
pwm_act_led++;
if (pwm_act_led > pwm_led)
        output_low(LED);
else
output_high(LED);

// El ciclo se repite cada 100 * 100us = 10ms. (100Hz)
if (pwm_act_led > MAX_LED) pwm_act_led = 0;

set_timer1(65436);        // 65536-(.000100/(4/4000000))

} // interrupcion TMR1


//
// Gestion del protocolo PUS por interrupcion
//

#define PUS_IDLE  0
#define PUS_START 1
#define PUS_RX    2

int8 PUS_temp = 0;
int8 PUS_nbit = 0;
int8 PUS_status = PUS_IDLE;
int1 PUS_bit = 0;
int8 PUS_error_data  = 0;
int8 PUS_error_start = 0;

#INT_RA
void PUS_recepcion(){        //Interrupcion por cambio de estado en pines

if (input_state(PUS_PC) == 1) // Flanco subida PC
{
switch(PUS_status)
{
case PUS_IDLE  :
// Chequeo inicio de condicion de START
if (input_state(PUS_PD) == 0)
{
PUS_status = PUS_START;
}
break;

case PUS_START :  break;

case PUS_RX    :
// detectamos inicio de bit.
PUS_bit = input_state(PUS_PD);
break;
}


}
else // Flando bajada PC
{
switch(PUS_status)
{
case PUS_IDLE  : break;

case PUS_START :
// Chequeo de condicion de START completa
if (input_state(PUS_PD) == 1)
{
PUS_status = PUS_RX;
PUS_temp  = 0;
}
else // ERROR, reinicio
{
PUS_status = PUS_IDLE;
PUS_error_start++;
}
break;

case PUS_RX:
// Condicion de START ya detectada
// Bit en PD se ha mantenido, guardamos
if (PUS_bit == input_state(PUS_PD))
{

PUS_temp <<= 1;
if (PUS_bit)
PUS_temp |= 0x01;
else
PUS_temp &= 0xFE;

PUS_nbit++;

// Dato completo recibido ?
if (PUS_nbit > 7)
{
PUS_nbit = 0;
PUS_status= PUS_IDLE;
PUS_dato  = PUS_temp;
PUS_temp = 0;
}
}
else // ERROR, reinicio dato
{
PUS_dato  = 0;
PUS_nbit  = 0;
PUS_status= PUS_IDLE;
PUS_error_data++;
}
break;
}

}


 
} //int_ra3
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++//
 
 

 



Saludos.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: wolfman77 en 06 de Julio de 2010, 16:28:10
Hola a todos!
Yo tambien me emocione con este proyecto y empece por mi lado con lo poco que se a ver que me salia, mas o menos tiene color, lo hice en el PSI y lo simule en proteus, coloque pulsadores para subir y bajar, pero se pone un par de infrarrojos y solucionamos ese tema.

El asunto de hacerlo modular no es nada complicado, habia pensado en hacerlo con 5 cables por modulo, 2 de alimentacion, uno de entrada y dos de salida.
Serian dos de salida por que hay que controlar cuando se sube o se baja la escalera, pero es posible reducirlo a un solo cablecito

Les dejo la simulacion por si alguien lo quiere probar, el codigo si quieren lo subo, pero es asquerosamente horrible, tengo que probar un poco mas con shifleft y shiftright, y si me sale lo que tengo en mente me ahorro una banda de codigo.

Saludos!

Martin
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 10 de Julio de 2010, 14:21:01
Disculpad, pero para conseguir un efecto de encendido o apagado progresivo de los leds no se hace con condensadores, sino mediante la modificación del % duty del PWM.

(http://galaxi0.files.wordpress.com/2009/06/pwm1.png?w=320&h=350)
Nocturno, y, generalmente, a que frecuencia debe estar el PWM? O cual es lo mas recomendable?


Salu2.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 10 de Julio de 2010, 14:23:22
Pues dependerá del tiempo de respuesta del led, la verdad es que no sé responderte a esa pregunta con un argumento sólido. Yo siempre pongo varios KHz pero es probable que exista una frecuencia idónea que venga dada por el tipo de led.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 10 de Julio de 2010, 14:34:59
Pues dependerá del tiempo de respuesta del led, la verdad es que no sé responderte a esa pregunta con un argumento sólido. Yo siempre pongo varios KHz pero es probable que exista una frecuencia idónea que venga dada por el tipo de led.
La(s) frecuencia(s) que usas generalmente? Solo por tener una idea.

Gracias.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: morpheusoliver en 12 de Agosto de 2010, 02:38:53
soy algo nuevo en electronica, asi que no se si este diciendo algun disparate...
pero que pasa si por ejemplo, yo empiezo a subir als escaleras, segun tengo entendido, las luzes permanecen encendidas hasta que se pasa por el otro sensor, pero que pasa si alguien baja despues de que yo subo? nos quedaremos a obscuras a media escalera? O.o

se me ocurre poner sensores en los primeros dos escalones, para utilizarlos como si fuera un encoder, para saber la direccion del paso, es decir, si en la parte de abajo se detcta que el sentido del paso es de entrada a la escalera, la luz permanecerá encendida hasta ke el otro extremo de la escalera detecte una salida.... creo que no me termino de explicar....


tenemos en la parte baja de la escalera dos sensores (barreras IR tengo entendido) una en el primer escalon(Canal A1), y una en el segundo(Canal B1).... y lo mismo arriba, es decir, algo como lo siguiente(espero que no se deforme ensus monitores, si no ahorita elaboto una imagen):

                                    ___ PLANTA ALTA
                           ____|A2
                  ____|B2
         ____|
____|B1
|A1
PLANTA BAJA


si una persona sube una escalera como persona descente, pondrá un pie primero en el primer escalon, y seguido el segundo...


osea que los sensores madnarian la siguiente señal:
A1:   1   0   
B1:   0   1
A2:   0   0
B2:   0   0
de esta forma sabemos que hay una persona en la escalera...

si una perona al mismo tiempo baja las escaleras... los sensores quedaran de siguiente manera:
A1:   0   0   
B1:   0   0
A2:   1   0
B2:   0   1

de esta manera, se restará 1 al conteo de personas en la escalera, si llega a 0, las luces se apagan... suponiendo que una persona sube y otra baja, el micro ya sabe que hay 2 personas en la escalera, le da igual si ambas terminan su trayecto, o la ke va bajando convence al que va subiendo que arriba es un lugar horrible y bajan ambos, el sistema detectaria que salieron dos, a pesar de que uno salga por donde mismo entro...

otra opcion que pense es simplemente con una red de micros 12f624 con RS457, hace algun tiempo desarolle un protocolo para mi sueño (sistema totalmente integral de domotica) logre controlar 5 dimmers simultaneamente desde el ordenador, la comunicacion no tuve ningun problema a distancias de 10 metros con cable telefonico, pero la parte del dimmer tenia mis fallas, supongo que me hara falta un osciloscopio para encontrar los problemas), mi idea era utilizar este protocolo para poner un sensor cada 1 o 2 escalones, y ke cada uno controle 1 o 2 focos,  y que estos se comuniquen con un micro al final de la escalera que lleve el conrtol de todos, o que todos trabajen de manera independiente, no lo se, son simples sueños, que ojala en un futuro se puedan implementar...

simplemente es una idea, desarollo sistemas empresariales y creo que se me ha creado una especie de paranoia para lso casos especiales, me gusta cubrir las posibilidades (una mas ke me deja con intriga es como detectar si dos personas pasan al mismo tiempo por el mismo sensor) pero supongo que un paso a al vez, espero poder tener pronto lso recursos necesarios para implementarlo....

saludos y felicidades, por mi falta de conocmimiento no sueo postear mucho, pero realmente he aprendido bastante en este foro...
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: marvicdigital en 12 de Agosto de 2010, 10:57:06
Bueno, mirando el primer video, noto que al encender lo hace instantáneamente y cuando se apaga da la sensación que lo hace por PWM, la verdad si se quiere hacer igual, y solo para esta aplicación no habría necesidad de un PIC..echando un poco de cabeza recordando viejos tiempos, creo que eso se puede hacer con un CD4011 conectado como un circuito de reloj controlado, y varios Flip-flop tipo D conectados en cascada hasta que tengan las salidas que necesitemos; y a las salidas de los transistores le pondremos un condensador que mantenga el Led encendido y este valla descargándolo dando la sensación de apagado suave..no se que piensan al respecto?..
O si quieren PIC pues usar un 12F509, conectarle  Shif Registrer(cd4094) en cascada y el mismo sistema de condensador por salida..no se así me ahorraría tanto componente para un efecto que de por si es muy llamativo sin importar si se enciende suave o no.

Saludos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 28 de Agosto de 2010, 00:01:56
Para el sensado creo que en el video lo hacen con un sensor PIR verdad? Ustedes que creen?

Salu2.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Chipcon en 31 de Agosto de 2010, 22:55:14
Que tal la verdad este proyecto esta muy bien y aun que no tengo escaleras jejeje me uno al grupo.
Estuve revisando los comentarios y ciertamente existen 2 opciones.

La primera es usar un solo micro y generar el pwm por bit según la capacidad de puertos disponibles,claro con la desventaja que si contamos 15 escalones entonces tendríamos un maravilloso tendedero de ropa de 16 hilos,sin embargo si usamos un poco mas de ingenio se puede hacer o conseguir un zoclo de madera hueco que se puede empotrar en la pared en caso de que la escalera sea de concreto o incluso si es de madera para aquellos que no deseen aventurarse a reparar 2 que 3 errores de dedo jejejeje.

La segunda opción quizás un poquito mas costosa pero mejor definitivamente es utilizar un pequeño micro por spot o foco de leds,
como ventaja se puede colocar tramos de cable mas pequeños y en cascada.
Para manejar los leds o 1 led de mas potencia lo ideal es utilizar un mosfet sea canal n o p controlado por un pin del micro.
Se recomienda que un ciclo de pwm se encuentre entre los 100HZ y 120HZ.
Entonces supongamos que deseamos tener 256 tonos y respetar 120HZ nuestro timer debe generar una interrupción cada 32.5uS ¿por que este valor? 32.5uS * 256 = 8.32mS entonces (1/8.32mS) = 120.19HZ

Les coloco una pequeña función para generar PWM en 3 leds
Esta función se llama en la interrupción del timer
Solo definan los pines que utilizan

void GeneraPwm (unsigned char R,unsigned char G,unsigned char B)
{
     static unsigned char Pwm = 0;
     
     PWMR = (R > Pwm)?1:0;                // Compara y activa pin red
     PWMG = (G > Pwm)?1:0;               // Compara y activa pin green
     PWMB = (B > Pwm)?1:0;                // Compara y activa pin blue
             
     Pwm ++;                                      // Contador de comparación
}

void interrupt General (void)
{
     if (T0IF)                                        // Se genero interrupcion timer 0?
     {   
         GeneraPwm (25,128,255);         // Funcion de pwm
         TMR0 = 234;                             // Valor para interrumpir cada 16uS aprox. 244HZ
         T0IF = 0;           
     }
}

De acuerdo al valor en el parámetro se genera el brillo del led, en el ejemplo el rojo brilla 10% el verde 50% y el azul 100%
por el momento eso es todo pero ¡¡seguimos en lucha!! jeje..

P.D. Espero ya alguien se anime a usar el pico y la pala en su escalera jejeje.

Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Duende_Azul en 01 de Septiembre de 2010, 18:43:56
Bueno, mirando el primer video, noto que al encender lo hace instantáneamente y cuando se apaga da la sensación que lo hace por PWM, la verdad si se quiere hacer igual, y solo para esta aplicación no habría necesidad de un PIC..echando un poco de cabeza recordando viejos tiempos, creo que eso se puede hacer con un CD4011 conectado como un circuito de reloj controlado, y varios Flip-flop tipo D conectados en cascada hasta que tengan las salidas que necesitemos; y a las salidas de los transistores le pondremos un condensador que mantenga el Led encendido y este valla descargándolo dando la sensación de apagado suave..no se que piensan al respecto?..
O si quieren PIC pues usar un 12F509, conectarle  Shif Registrer(cd4094) en cascada y el mismo sistema de condensador por salida..no se así me ahorraría tanto componente para un efecto que de por si es muy llamativo sin importar si se enciende suave o no.

Saludos

Una genialidad.. sin duda.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: guillaconev en 17 de Septiembre de 2010, 03:23:39
Hola... al empezar a leer este tema pensé lo mismo, es decir, usar capacitores. El circuito que se me ocurrió es el que presento a continuación

(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=30294.0;attach=11840)
Adjunto también una simulación en proteus 7.2 SP6. con su .hex

Notar que sólo hice uso de un puerto del pic, pero se pueden usar todos los pines del mismo que tengamos disponibles de igual manera.
Los pulsadores simulan los sensores infrarrojos en los extremos de la escalera.
Al hacer este circuito me di cuenta de 2 cosas:
  • El circuito se amplía bastante al realizar el efecto de retardo de los led mediante hardware.
  • El valor de los capacitores es relativamente grande y depende del tipo de leds que usemos, a mayor consumo se necesita un capacitor mayor para mantener el mismo retardo.

Todo esto quizas pueda ser subsanado en parte por otra configurración de hardware, pero ésta es la mejor que se me ocurrió a mí.
Después de esta conclusión, si yo tuviese que realizar este proyecto, y no se mejora el hardware que aquí propongo, lo encararía por el lado del software con pwm. Pero también vale aclarar que se me dificultará bastante hacer el código y me llevaría bastante más tiempo también. Por eso, con todo respeto, para alguien que no tenga experiencia en programación se le va a complicar y mucho.

Saludos y éxitos para los que encaren este proyecto.



estube viendo tu circuito y como vi, te faltaria ver si la persona va a media escalera y se devuelve, lo que ice yo en tu circuito, es ponerle otro sensor o boton, pero invertido, osea, le pongo un sensor de inferior y superior a cada uno y ya se arregla el problema de si se devuelve la persona, pero sigo teniendo otra duda, como le hago para ponerle mas leds??




edito:


ya vi mi error en ponerle 2 snensores de cada lado, ya que prenderian pero se apagarian seguidamente, jajajaja tendre que seguir pensando como hacerle, gracias
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: tannke en 17 de Septiembre de 2010, 10:29:10

edito:


ya vi mi error en ponerle 2 snensores de cada lado, ya que prenderian pero se apagarian seguidamente, jajajaja tendre que seguir pensando como hacerle, gracias

no, la idea no es mala, lee unos posts mas arriba, el escrito por morpheusoliver.

Saludos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: guillaconev en 17 de Septiembre de 2010, 15:43:20
y si en vez de utilizar 2 sensores por lado(inferior y superior) de la escalera  los pudierams programar para que encuanto se accionen se pongan como off?? explico mas xq ni yo me entendi, pasamos por el sensor, y este cambia a que si vuelve a pasar por ahi se apaguen los leds, no se mucho pero se podra??

como les digo, soy novaticimo asi que si es un poco descabellado esto disculpenme
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Menta en 17 de Septiembre de 2010, 16:14:06
No, si haces eso y pasan 2 personas casi juntas se prende y se apaga, las personas quedan a oscuras, tropiezan, caen, se lesionan y te pedirán el código del pic en la audiencia del juicio que te van a hacer, ahí por favor no digas que sacaste el código o parte de él de este foro  :mrgreen:

Lo de las idas y vueltas se puede solucionar con 2 sensores en cada extremo de la escalera y así saber cuándo alguien pasa si es en un sentido o en otro...
Los sensores se activan casi juntos cuando pasa una persona, pero uno antes que el otro según las personas suban o bajen ;-)

Sobre agregar más salidas para leds no recuerdo bien mi propio código tendré que re-verlo, pero se podría crear una variable de 16bits mapeada en 2 puertos de 8 bits y manejarlo de la misma manera, pero si se quieren aún varias salidas más, se necesitará hardware adicional, algo como expansores de puertos, microchip vende algunos de estos bichos, pero creo que en el foro varias personas tuvieron inconvenientes con ellos.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: guillaconev en 17 de Septiembre de 2010, 17:35:44
jajajajajaj no, creo que mejor me evito el juicio jajaajaja, voy a pensar en eso que me dices de los 2 sensores para saber la direccion
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: guillaconev en 18 de Septiembre de 2010, 01:31:34
y si le ponemos algun timer? y asi se activaria y desactivaria pero si la persona se devuelve el timer se encargaria de apagar los leds en cierto tiempo no?
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: gringo_sergio en 27 de Septiembre de 2010, 01:00:51
Muy buen proyecto lo lei de principio a fin me encantaria saber como termino y si ya lo instalaste Saludos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: guillaconev en 29 de Septiembre de 2010, 19:41:04
de hecho en eso estoy, ya nada mas me falta programar la pic, y estoy hecho bolas con la programacion xq no encuentro ejemplos, asi que tendre que esperar jajajaja, creo que la pic se puede programar para que queden prendidos los leds cierto tiempo, pero no estoy seguro
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 01 de Octubre de 2010, 03:01:34
A mi me interesaría saber como harían para el sensado de las personas... Dicen infrarrojo, pero explisitamente como sería?

Un saludo.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: gringo_sergio en 05 de Octubre de 2010, 23:30:15
El proyecto de wolfman es temporizado y me parece el mas logico ya que no depende de si la persona se vuelve o sigue, es mas parecido al metodo tradicional de pasillo pero con el efecto de barrido. para sensar se pueden poner IR direccionales de uso comercial como los de alarma o uno chino chiquito como este http://articulo.mercadolibre.com.ar/MLA-93284008-detector-de-movimientos-infrarrojo-pasivo-_JM son super economicos y  lo desarmas a tu gusto para que entre en cualquier hueco .

   Estaria bueno que wolfman suba el code para poder modificar los tiempos y ver si hacemos algo con pwm ...
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 06 de Octubre de 2010, 04:30:47
Yo mejor q eso utilizaria Estoesto (http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=555-28027-ND)  de parallax
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: gringo_sergio en 19 de Octubre de 2010, 23:34:13
Hola a todos!
Yo tambien me emocione con este proyecto y empece por mi lado con lo poco que se a ver que me salia, mas o menos tiene color, lo hice en el PSI y lo simule en proteus, coloque pulsadores para subir y bajar, pero se pone un par de infrarrojos y solucionamos ese tema.

El asunto de hacerlo modular no es nada complicado, habia pensado en hacerlo con 5 cables por modulo, 2 de alimentacion, uno de entrada y dos de salida.
Serian dos de salida por que hay que controlar cuando se sube o se baja la escalera, pero es posible reducirlo a un solo cablecito

Les dejo la simulacion por si alguien lo quiere probar, el codigo si quieren lo subo, pero es asquerosamente horrible, tengo que probar un poco mas con shifleft y shiftright, y si me sale lo que tengo en mente me ahorro una banda de codigo.

Saludos!

Martin

Martin, podes subir el codigo? a ver si lo podemos modificar para darle atenuacion al apagarse y cambiar los tiempos!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: wolfman77 en 01 de Noviembre de 2010, 10:54:54
Lo busco y lo subo  :)

edicion: Perdi el codigo en la formateada de hace unas semanas, lo armo y lo subo, no es nada del otro mundo

Era algo asi el codigo, lo hago solo para puerto B, en el esquema que habia subido estaba extendido hasta el peurto C, pero es lo mismo. Se usa el puerto A como entrada igual al esquema)

Código: [Seleccionar]
inicio:
if porta.0 = 1 then goto baja 'Pulsador para encender las luces al bajar la escalera
if porta.1 = 1 then goto sube 'Pulsador para endender las luces al subir las escaleras
goto inicio


:baja 'secuencia para bajar escaleras
portb = 00000001
waitms 300
portb = 00000011
waitms 300
portb = 00000111
waitms 300
portb = 00001111
waitms 300
portb = 00011111
waitms 300
portb = 00111111
waitms 300
portb = 01111111
waitms 300
portb = 11111111
waitms 5000 'espera 5 segundos para comenzar secuencia de apagado
portb = 11111110 'comienza secuencia de apagado con delay de 1seg entre cada led
waitms 1000
portb = 11111100
waitms 1000
portb = 11111000
waitms 1000
portb = 11110000
waitms 1000
portb = 11100000
waitms 1000
portb = 11000000
waitms 1000
portb = 10000000
waitms 1000
portb = 0

goto inicio


sube: 'Secuencia para subir las escaleras1
portb = 10000000
waitms 300
portb = 11000000
waitms 300
portb = 11100000
waitms 300
portb = 11110000
waitms 300
portb = 11111000
waitms 300
portb = 11111100
waitms 300
portb = 11111110
waitms 300
portb = 11111111
waitms 5000
portb = 01111111
waitms 1000
portb = 00111111
waitms 1000
portb = 00011111
waitms 1000
portb = 00001111
waitms 1000
portb = 00000111
waitms 1000
portb = 00000011
waitms 1000
portb = 00000001
waitms 1000
portb = 0
goto inicio

end

letra mas letra menos... :P

Sl2

Martin
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 19 de Noviembre de 2010, 00:32:07
Hola. Queria comentarles que el metodo de hacer pwm en cada pin de un PIC y conectarlos a un LED es demasiado engorroso... doy fe de ello, pues lo e echo. Veran, el cableado que se debe de hacer desde la caja de control hasta el ultimo led (en mi caso el 16vo) es muy laborioso y la instalacion demora mucho y es horripilante todo xD

Por eso, e obtado, despues de esa fea experiencia, hacerlo con un PIC en cada punto de la escalera. Se ahorra mucho cable y es mas facil la instalacion y todo. Ahora, pensaba en comunicar el PIC maestro con los mas de 16 pics esclavos que puedan haber a travez de i2c pero al parecer esto  no sera factible.

Bueno, solo queria comentarles esto a los q estan con este proyecto y piensan hacerlo de la 1ra forma... es muy pero muy engorroso, muchos cables, mucho mucho estres, mucho todo y de lo feo xD

Un saludo.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 19 de Noviembre de 2010, 03:14:56
Siempre he pensado que era la mejor solución Jeremy. ¿Porqué dices que no puedes hacerlo por I2C?
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 19 de Noviembre de 2010, 05:10:44
Por ESTO (http://www.todopic.com.ar/foros/index.php?topic=32861.0) manolo que ya lo has visto al parecer. Pero como bien dices, con todas esas precauciones se puede lograr. De todas formas, me estoy convenciendo mas de que sera muy innecesario para este proyecto, pues todo es repetitivo.

Salu2
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: splasma2 en 19 de Noviembre de 2010, 06:12:30
Retomando la solución de un PIC (12F o 10F) por nodo:

- Una opción podría ser hacer una cadena de forma que cada nodo actuara como master I2C por un lado y como slave por el otro, beneficios : no hay problemas con la distancia ; inconvenientes:  yo no he localizado ninguna implementación I2C master para PIC pequeños y dos, si falla un nodo se rompe la cadena.
- Otra opción , incluir en cada nodo un driver-amplificador  de I2C, no sé si se puede hacer, en este caso lo mismo si se rompe un nodo, la cadena se va al carajo.
- tres, impelmentar un protocolo "especifico" con menos restricciones en distancia que el I2C, o ir más lento.

 :? :?
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 19 de Noviembre de 2010, 12:55:18
Bueno, en estos momentos yo lo estoy haciendo con varios PIC10F200 como esclavos y un 16F648A como master, pero solo lo estoy simulando en proteus. Lo del i2c, aparte de la complejidad de hacerlo funcionar en tanta distancia, es muy innecesario creo yo, pues el master envia el mismo comando n veces a todos los esclavos.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Chipcon en 19 de Noviembre de 2010, 13:09:11
Que tal creo que una solución menos engorrosa puede ser aplicando la interfase RS485 para esto se necesitaría agregar un driver sn75176 con esta opción solo se utilizaría un cable con 4 hilos VCC,D+,D- y GND la conexión es forma paralelo de este modo si se abre algún nodo no se perdería la comunicación con todos los dispositivos.

Otra sugerencia es utilizar un pic 16f628 o algún pic pequeño que cuente con UART lo que seria mas cómodo y rápido para la implementacion, pues se puede hacer una versión sencilla del protocolo DMX es decir generar un tiempo de espera para sincronizar los datos y después enviar los bytes con el brillo de cada escalón, la velocidad de la UART puede ser de 9600 bds.

La desventaja es se incrementa un poco el costo del armado al incluir estos componentes pero definitivamente queda mas profesional el proyecto
Saludos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 19 de Noviembre de 2010, 13:26:03
Estaba en la cama sudando una fiebre cuando se me ha venido a la cabeza una solución a este problema, que creo que puede ser válida por sencilla y por barata.

Si no he entendido mal, el objetivo del proyecto es que con un sensor al comienzo (Nodo_A) o al final (Nodo_B) de la escalera, los peldaños comiencen a encenderse paulatinamente uno tras otro hasta el otro extremo de la escalera. Llamemos Tiempo_X al que transcurre entre el encendido de un escalón y el siguiente, y Tiempo_Y al que cada escalón permanecerá encendido hasta finalmente apagarse suavemente. Por último, llamemos Nodo_N a cualquier escalón que no sea ni el primero ni el último.

Con estos condicionantes se me ha ocurrido una solución que permitirá:
- que los nodos sólo tengan un micro de 6 pines sin necesitar un driver de comunicaciones
- que el bus de conexión sólo tenga las dos líneas de alimentación más un tercer hilo que irá de cada escalón hasta el siguiente
- que el modelo sea flexible y sirva para cualquier escalera de cualquier longitud
- que el programa sea único para todos los nodos

La solución sería:
- conectar cada micro a la alimentación
- conectar un pin adicional al sensor de inicio o final de la escalera. Los Nodos_N tendrán ese pin soldado a masa (o a Vdd, es indiferente).
- conectar otro pin del micro al micro del escalón anterior, este pin será N_Anterior. En Nodo_A estará conectado con pulldown a masa.
- y por último, conectar el sexto pin del micro al micro del escalón superior; este pin será N_Posterior. En el Nodo_B estará conectado con pulldown a masa

A nivel firmware tendremos un bucle principal donde se ejecutarán estas tareas:
- los pines N_Anterior y N_Posterior se definen como entradas y se leen continuamente por si alguno se levanta a 1.
- si un nodo recibe una señal del sensor, automáticamente levanta un pulso corto en sus pines N_Anterior y N_Posterior. Esto sólo puede ocurrir en Nodo_A o en Nodo_B, porque los demás tienen el sensor conectado a masa.
- si un nodo recibe un pulso por N_Anterior, enciende el led, pone en marcha un Timer para esperar el Tiempo_X y transcurrido ese tiempo activa su pin N_Posterior. El timer sigue contando hasta que pase el Tiempo_Y, momento en que el led se apagará progresivamente.
- si un nodo recibe un pulso por N_Posterior, enciende el led, pone en marcha un Timer para esperar el Tiempo_X y transcurrido ese tiempo activa su pin N_Anterior. El timer sigue contando hasta que pase el Tiempo_Y, momento en que el led se apagará progresivamente.

Creo que con eso estaría todo resuelto, pero obviamente es una idea que no he llevado a la práctica y habría que probar.


Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 19 de Noviembre de 2010, 14:43:02
Asi es... La solucion que le e dado es algo parecido a lo que has mencionado manolo, aunq no del todo pero solo uso un pin para comunicar a los demas PICs. Adjunto simulacion.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 19 de Noviembre de 2010, 14:55:50
Estupendo
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: splasma2 en 19 de Noviembre de 2010, 14:59:52
Muy buena solución, tocayo.

Simple y flexible. Yo solo añadiría alguna pequeña proteccion en el código (debounce) para evitar que los nodos se activen por ruido en la linea de control.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 19 de Noviembre de 2010, 15:10:04
Sí, claro, se le podría poner una rutina antirrebotes que compruebe que el pulso recibido dura realmente lo que debe durar.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Chipcon en 19 de Noviembre de 2010, 16:12:28
Una solución que recuerda lo simple de algunas cosas en la vida  :)
Definitivamente excelente

saludos
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: gera en 19 de Noviembre de 2010, 16:30:29
Yo una vez hice un "sensor de pisada" para una alfombra de baile con latitas de gaseosas y un poco de goma espuma. Se hace un "sandwich" con las latitas y pedazos de espuma en el medio, entonces cuando lo pisas cierra el contacto.
Si vamos a poner un pic en cada escalon, podemos usar sensores como estos que cuando pisemos cierto escalon, enciendan el proximo, y cuando dejemos de pisar el escalon, este comience a apagarse lentamente. (habria q implementar un pequeño algoritmo para ver si esta subiendo o bajando)
Esto nos independiza del hecho de andar adivinando q tan rapido sube alguien las escaleras. Y sirve por si alguien llega a la mitad y vuelve a bajar.
Es bastante economico, no se que opinan.
saludos!!

Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 19 de Noviembre de 2010, 17:20:00
Pues si que tiene proteccion antirebotes, pero bueno, la idea esta ahi  :-/

Gracias, un saludo.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: leeboy en 08 de Marzo de 2011, 10:45:03
Y sobre que PIC podríamos implementar esto????

Siento haber estado tan desaparecido, pero he estado un poco liado y he tenido esto abandonado.......
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 19 de Marzo de 2011, 14:37:24
Y sobre que PIC podríamos implementar esto????
Pues en la simulación que adjunte puedes hacerte una idea.

Por otro lado, estaba pensando si serian necesario poner dicroicos a cada LED y que tipo o quien los vendería? Que piensan ustedes? Por que en el vídeo no estoy seguro si usan alguno y, si es así, es muy pequeño y se ve bien.

Título: Re: Iluminar escaleras de manera progresiva
Publicado por: doppel en 20 de Marzo de 2011, 14:49:00
Hola Jeremylf

Si te fijas en el primer video que está publicado, puedes ver como ilumina sobre la pared de enfrente, se puede notar o que no es un solo led o tiene alguna lente, si miras con detenimiento en una parte del video hacen una toma desde arriba y se ve el aplique del led,  tiene como un marco de acero inoxidable (por lo menos es el color), pero me juego con que tiene alguna lente en el aplique que utilizaron.-

saludos y muy bueno el proyecto
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Tarat en 31 de Marzo de 2011, 14:45:58
Para poder dimerizar los leds se puede utilizar una interrupción por programa:

#INT_RTCC
      relotge_int(){
         if(--compte==0){
            if(input(PIN_A0)==0){
         compt1++;}
         segon++;
         compte=inici_temps;}
      }

En este caso está pensada para un reloj, pero es fácilmente adaptable a cualquier necesidad.

Sé que hace tiempo que este hilo está colgado, però por si alguien entra ahora y necesita más soluciones, aquí dejo esta que además permite dimerizar las luces sin necesidad de hardware i sin las limitaciones de los PWM que tenga el PIC, ya que en muchos casos no tienen suficientes, como es el caso de este proyecto.

Yo estoy en ello, la simulación funciona, ahora toca montar la maqueta.

Salud!!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 01 de Abril de 2011, 11:02:11
Hola Jeremylf

Si te fijas en el primer video que está publicado, puedes ver como ilumina sobre la pared de enfrente, se puede notar o que no es un solo led o tiene alguna lente, si miras con detenimiento en una parte del video hacen una toma desde arriba y se ve el aplique del led,  tiene como un marco de acero inoxidable (por lo menos es el color), pero me juego con que tiene alguna lente en el aplique que utilizaron.-

saludos y muy bueno el proyecto
Así es. Parecen LEDs de 1W no? Bueno, estoy intentando encontrar algo que se asemeje a ese marco.. Sabrían de algún lugar?

Tarat, cada cuanto desborda tu interrupción? Porque hace tiempo (cuando empece a realizar este proyecto) lo hice de esa manera que comentas mas o menos, basándome en el ejemplo de 3 PWM por software de Nocturno (http://www.micropic.es/index.php?option=com_content&view=article&id=59:generacion-de-3-pwm-probamos-led-rgb&catid=38:tecnicas&Itemid=65), pero aparte de que por comodidad y performance decidí hacerlo por polling, las interrupciones no se aplican a los 10F (base-line) que son los que actualmente estoy usando.


Salu2.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Tarat en 01 de Abril de 2011, 13:57:39
A lo mejor así lo ves más claro:

#int_RTCC
RTCC_isr(){
   temps++;
   if(temps<velD)
      output_high(pin_a4);
      else
      output_low(pin_a4);
   if(temps<velE)
      output_high(pin_b6);
      else
      output_low(pin_b6);

   if(temps==394)
   temps=0;
   }

En este caso es para controlar dos motores. Pero solo canviando las funciones de algunas variables en el programa se puede usar para regular la intensidad de un led.

El chip, en este caso, lleva un cristal externo de 40GHz, i de ese cristal depende la velocidad con que se ejecuta todo.

Espero haberme explicado, soy bastante novato en el tema, pero yo lo he aplicado, y cuando lo haya podido montar y chequear lo cuelgo. En simulación funciona bastante bién.

Un saludo.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 15 de Abril de 2011, 15:47:32
Bueno, por mi parte, creo que no es esa la mejor solucion. Pero estaria bien ver como te está quedando. Exitos.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Darkbytes en 19 de Abril de 2011, 02:33:46
Hola, antes de nada quería presentarme. Hace unos días vi un video en la página de hacknmod una persona que iluminaba los escalones de su casa mediante leds, el tema es que me gustaría hacer lo mismo. Un buen amigo me comentó que eso se debería de hacer con un PIC, yo creo que el sistema no es muy complicado de hacer, lo que pasa que soy practicamente un noob en el tema de la electrónica. Aprendí algo (a montar circuitos y a medir con el osciloscopio) en la universidad.

Me gustaría saber si alguno del foro podría ayudarme un poco. Tendría que adquirir todo desde el pic necesario, los leds, tambien me comentó mi amigo el uso de algún transistor para alimentar a los led con la potencia suficiente, así como el programador, aunque me recomendó el pic Kit 2, no he visto que programe pics de la familia 18Fxxxx que es la que me recomendó.

Adjunto el video de esta persona y espero sus respuestas.


Gracias, un saludo

Hola Foro:
Aqui les envio algo que puede servir para la iluminación progresiva de escaleras.
Esta bien claro ke este diseño solo ilumina escalón por escalón cada segundo.
para ke sea algo solo de implementización grafica o de ilustración.
Ya ke lo mejor seria usar sistema infrarojo para detectar el escalón pisado y así
iluminar el siguiente escalón, pero este diseño es sencillo y facíl de realizar, podra
ir iluminando cada escalón cada segundo, tiempo rekerido para ir escalonando.
Este diseño usa un PIC16F84A con 8 leds pero se puede ir acomodando
la secuencia conforme sean mas escolones, es decir, si hay mas de 8 se usa la salida RB0 para
iluminar el escalon 9 y así consecutivamente. Como kiera keda de cada uno ir implementando
este código hasta llegar al fin rekerido.
 :) Atte. Ing RMR (D@rkbytes)
PD. El programa esta escrito en PicBasic pro y la simulación con Proteus v7.7 SP2
Programas inferiores A Proteus v7.7 SP2 no podran simular el programa.
Si no estas registrado en TODOPIC no podras ver ni bajarte los archivos adjuntos.
Y una nota mia, yo uso el Programador WinPic800 v3.64C con el Hardware JDM ambos
son gratuitos y hay mucha info en la red acerca de como armar el hardware JDM para puerto Serial o Paralelo.
Este programa trabaja conjuntamente kon el PBP (MicroCode Studio)
Osea escribes tu programa y directamente lo puedes compilar y enviar directamente a grabar al PIC
sin necesidad de cerrar y abrir el programador. Solo se necesita comfigurar al PBP con el software WinPic800
Esta es la palabra de configuración para el PBP usando WinPic800

$hex-filename$ -dPIC$target-device$ -p -s

ke esta en la barra de menú View/Compile and program options
pestaña Programmer, ahi podras editar y agregar un programador siguiendo las instrucciones.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: nZeta en 19 de Abril de 2011, 17:15:39
Talves la mayoria de usuarios del foro no conoscan los micros de Cypress Semiconductor, pero me veo en la obligacion de presentarles una alternativa a los pic que es mas apropiada para esta aplicacion:  PowerPsoc CY8CLED04D01-56LTXI. Datasheet : http://www.cypress.com/?docID=24732.

Los PowerPsoc, combinan un mcu PSOC (core m8c + bloques analogicos y digitales) + etapa de potencia (Gate driver, regulador switching interno, power mosfets, dimming, etc ) ademas trae interface DMX512 touch sensing , etc.

Con un PowerPsoc ya no tienes necesidad de mosfets externos ni regulador de voltaje. Veanlo :)
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 19 de Abril de 2011, 18:32:53
darkbytes, puedes usar mejor un ULN2803 para no usar tanto transistor. Tb te falta sus respectivas resistencias de los LEDs. Por otro lado, esa alternativa, almenos yo ya la descarte, pues es mucho el cableado que se tiene que hacer en la escalera.

De todas formas, gracias por el aporte! Exitos!
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Darkbytes en 25 de Abril de 2011, 00:01:34
Saldos amigos, como alguien me lo sugerio en usar un ULN2804 en ves de tantos transistores
aqui les envio el diseño terminado, espero les sea util.
Atte; Darkbtes- :-/
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Darkbytes en 25 de Abril de 2011, 00:04:58
darkbytes, puedes usar mejor un ULN2803 para no usar tanto transistor. Tb te falta sus respectivas resistencias de los LEDs. Por otro lado, esa alternativa, almenos yo ya la descarte, pues es mucho el cableado que se tiene que hacer en la escalera.

De todas formas, gracias por el aporte! Exitos!


Por Cierto Los LUMILEDS de alta lumisocidad como los usados en la mini lamparas pueden omitir las resistencias XD ya ke no son leds convencionales
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Darkbytes en 25 de Abril de 2011, 02:23:20
Bueno, por mi parte, creo que no es esa la mejor solucion. Pero estaria bien ver como te está quedando. Exitos.

Para esta entrega ahora omitire el uso del PIC y lo hare a manera con compuertas logicas, muy senciillo el proyecto pero didactico y hasta  cuenta con 16 salidas a LED. Ovbio se usan un par de componentes mas pero el diseño es grandiodo. Y X demas didactico. Para los ke rekieran controlorar sistemas de potencia con PIC utros sistemas de control kedo a sus ordenes.
Bye. Atte. Darbytes :)
PD: Las simulaciones estan creadas en PROTEUS v7.7 SP2
versiones inferiores no las podran simular.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Darkbytes en 25 de Abril de 2011, 02:33:58
darkbytes, puedes usar mejor un ULN2803 para no usar tanto transistor. Tb te falta sus respectivas resistencias de los LEDs. Por otro lado, esa alternativa, almenos yo ya la descarte, pues es mucho el cableado que se tiene que hacer en la escalera.

De todas formas, gracias por el aporte! Exitos!

Nota; El cableado es iminente, es obvio ke de a fuerza se tendra ke usar cabledo
a menos ke optes por el metodo multiplexado, con eso reduciras cableado, pero eso del cbleado es inminente.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Darkbytes en 25 de Abril de 2011, 02:42:45
Bueno, por mi parte, creo que no es esa la mejor solucion. Pero estaria bien ver como te está quedando. Exitos.


Unas de las mejores opciones no seria usar LEDS, sino lamparas de 12v controladas por MOSFETS
tal como el IRFZ44 controlan muy bien potencias del orden de los 4 amperes sin disipador
son economicos y faciles de controlar con PIC y conPWM o capacitores en la entrada Gate mas un resistor puede simular un decenso de iluminicidad.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Tarat en 13 de Mayo de 2011, 08:04:39
Por fin he podido crear la interrupción para el encendido en un sentido.

Ahora me estoy peleando para poder hacer el del otro sentido que me da muchos problemas, pués no se porqué se me cruzan y me producen resultados indeseados.

El codigo para generar un PWM mediante programación:


#define led1 pin_b1
#define led2 pin_b2
#define led3 pin_b3
#define led4 pin_b4
#define led5 pin_b5
#define led6 pin_b6
#define ON output_high
#define OFF output_low
#define IN input
#define sdalt pin_a2
#define sbaix pin_a1

long D, B;
long temps=200;
long pwm;
int T0=0, T1, T2, T3, T4, T5, T6;
long pujant=0;
long baixant=0;

#int_RTCC
 RTCC_isr(){
   pwm++;
   temps--;

//Amb B memoritzem el pas pel sensor, sinó sortiria del prog ja que sbaix=0 només unes dècimes de seg

   if(temps==0){
//   if(baixant==1){
    if(T0==0 && B!=0 && D==0){
       T1++;
       if(T1==100)
       T0++;}
    if(T0==1 && B!=0 && D==0){
       T2++;
       if(T2==100)
       T0++;}
    if(T0==2 && B!=0 && D==0){
       T3++;
       if(T3==100)
       T0++;}
    if(T0==3 && B!=0 && D==0){
       T4++;
       if(T4==100)
       T0++;}
    if(T0==4 && B!=0 && D==0){
       T5++;
       if(T5==100)
       T0++;}
    if(T0==5 && B!=0 && D==0){
       T6++;
       if(T6==100)
       T0++;}

//Després de tots els increments passem a programar els apagats

    if(T0==6 && B==0 && D!=0){
       T1--;
       if(T1==0)
       T0--;}
    if(T0==5 && B==0 && D!=0){
       T2--;
       if(T2==0)
       T0--;}
    if(T0==4 && B==0 && D!=0){
       T3--;
       if(T3==0)
       T0--;}
    if(T0==3 && B==0 && D!=0){
       T4--;
       if(T4==0)
       T0--;}
    if(T0==2 && B==0 && D!=0){
       T5--;
       if(T5==0)
       T0--;}
    if(T0==1 && B==0 && D!=0){
       T6--;
       if(T6==0)
       T0=0;
    }

    temps=200;}  //S'ha de fer també la programació de l'nterrupció pel cas invers fent com si es mirés en un mirall.



      if(pwm<T1){  //copiar aquest bloc per cada led, aquesta part pot anar al programa
         ON(led1);
         }
         else{
         OFF(led1);
         }

      if(pwm<T2){
         ON(led2);
         }
         else{
         OFF(led2);
         }

      if(pwm<T3)
         ON(led3);
         else
         OFF(led3);

      if(pwm<T4)
         ON(led4);
         else
         OFF(led4);

      if(pwm<T5)
         ON(led5);
         else
         OFF(led5);

      if(pwm<T6)
         ON(led6);
         else
         OFF(led6);

   //després de tots els pwm

      if (pwm==100) pwm=0;  //aquí marquem una freq de 50Hz
}



void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_spi(FALSE);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_div_1|RTCC_8_bit);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_oscillator(False);
   enable_interrupts(INT_RTCC);
   enable_INTERRUPTS(GLOBAL);
   // TODO: USER CODE!!


   D=0;
   B=0;
   OFF(led1);
   OFF(led2);
   OFF(led3);
   OFF(led4);
   OFF(led5);
   OFF(led6);


while(true){

if(IN(sbaix)==0 && D==0 && B==0){
   B++;
}

if(IN(sdalt)==0 && D==0 && B!=0)
   B--;

if(IN(sdalt)==0 && D==0 && B==0){
   D++;
}

if(IN(sbaix)==0 && D!=0 && B==0)
   D--;
   }}


A ver si entre todos podemos finalizarlo.

Yo lo he realizado con un 18f2550, y solo lo he provado en la placa de desarrollo.

Espero le sirva a alguien.

Un saludo a todos.
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 05 de Agosto de 2011, 01:05:09
Alguien ha montado algo parecido. Aquí: http://www.thekanes.org/projects/automated-led-stairs-howto

Título: Re: Iluminar escaleras de manera progresiva
Publicado por: jeremylf en 05 de Agosto de 2011, 02:18:31
Al parecer esos LEDs nocturno no se prenden/apagan con PWM no?
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 05 de Agosto de 2011, 02:46:22
Pues no lo sé, pero a juzgar por el vídeo no parece que haya PWM
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: Nocturno en 27 de Octubre de 2011, 01:49:38

http://hackedgadgets.com/2011/10/26/diy-stairs-illumination-project-based-on-an-arduino
Título: Re: Iluminar escaleras de manera progresiva
Publicado por: gera en 27 de Octubre de 2011, 12:06:31
Genial!! En el sitio dice
Citar
“I am illuminating the stairs using 30 independently controlled RGB leds. Control of the LEDs is done using an ATmega328 processor (Arduino) and 6 TLC5940 LED driver ICs. Pressure sensors detect someone going on the staircase and is calibrated to ignore my dog.”

Me parece un desperdicio utilizar un arduino para esto, pero bueno, a modo de prototipo esta bueno. Y me parece de muy mala persona dejar al pobre perro a oscuras jaja.
Saludos!!