Autor Tema: Realizar dimmer con pic 12f675  (Leído 8761 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado centiane

  • PIC10
  • *
  • Mensajes: 12
    • Por aqui mi web
Realizar dimmer con pic 12f675
« en: 06 de Marzo de 2007, 17:38:06 »
Lo dicho despues de buscar un dimmer para hacerlo por la web , lo unico que he encontrado a sido de una pagina rusa (creo) que te cobraban por el codigo fuente y otro de un compañero que tambien cobraba por el codigo.

Despues de esto me he puesto manos a la obra para conseguir uno que sea libre y que todo el personal lo pueda tener, ando por los inicios pero ya tengo bastante avanzado el tema.

He conseguido sincronizar el paso por cero y he conseguido el disparo del triac al tiempo que le pedi.

Estoy liado con la rutina de decodificacion de ir, pero no creo que sea muy chungo.

Un saludo desde la frontera de Huelva y Badajoz.


Centiane Forever.
mira esta web y veras, he utilizado el mismo esquema.

http://free-vz.t-com.hr/Ivica-Novakovic/Lightdimmer.htm

Desconectado Astaroth_25

  • PIC12
  • **
  • Mensajes: 52
Re: Realizar dimmer con pic 12f675
« Respuesta #1 en: 06 de Marzo de 2007, 17:48:14 »
 :? ¿?
HEAVY - METAL ..por siempre  Ψ Ω Ψ

Desconectado Lupin

  • PIC12
  • **
  • Mensajes: 81
Re: Realizar dimmer con pic 12f675
« Respuesta #2 en: 06 de Marzo de 2007, 20:13:37 »
:? ¿?

Lo mismo digo.
???? centiane, es una pregunta o un comentario?

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Realizar dimmer con pic 12f675
« Respuesta #3 en: 06 de Marzo de 2007, 20:14:02 »
Hola centiane!

Tiene muy buena pinta tu proyecto! Ánimo que ya tienes hecho lo más complicado! por cierto, hay una página que está bastante bien de un tío que se hace llamar Nocturno y que tiene algo parecido a lo que comentas.

http://elrebujito.es/modules.php?name=Downloads&d_op=viewdownload&cid=18

Suerte!!


Un saludo desde Alicante.
« Última modificación: 07 de Marzo de 2007, 21:29:09 por Azicuetano »

Desconectado centiane

  • PIC10
  • *
  • Mensajes: 12
    • Por aqui mi web
Re: Realizar dimmer con pic 12f675
« Respuesta #4 en: 07 de Marzo de 2007, 16:22:34 »
Pues aqui ando con el proyecto en vias de desarrollo.
He pensado de implementarle un protocolo como el x-10 el cual monitorice en un pic aparte el nivel de todos los dimmer, esto no creo sea demasiado complicado, ya que el dato se puede enviar en el paso por cero, cuando la tension de red es 0.

Otra cosa: Creo que queda claro que este post no es una pregunta si no el inicio de un proyecto y que yo con la vuestra ayuda intentare de poder ofrecer gratis pa todo el personal.

Un saludo Centiane.

Comento tambien que si alguien dispone de rutinas para el reconocimieno del IR RC5 u otro protocolo que por favor me lo diga.
« Última modificación: 07 de Marzo de 2007, 17:17:16 por centiane »
mira esta web y veras, he utilizado el mismo esquema.

http://free-vz.t-com.hr/Ivica-Novakovic/Lightdimmer.htm

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Realizar dimmer con pic 12f675
« Respuesta #5 en: 07 de Marzo de 2007, 16:53:30 »
No quería salir por este hilo para que no se formen malentendidos, pero intentaré aclarar lo que centiane quiere decir.

Yo tengo dos Dimmers publicados en El Rebujito.

El primero fue el Dimmer con Mando cuyo esquema, PCB y código fuente es completamente libre y está a disposición de quien lo quiera en ese link.

El segundo fue el Minidimmer cuyo esquema y PCB son libres y están publicados en mi web. Sin embargo en este caso, el código fuente no es libre.

Espero haber aclarado el malentendido.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Realizar dimmer con pic 12f675
« Respuesta #6 en: 07 de Marzo de 2007, 16:55:01 »
¿Con qué lenguaje lo vas a desarrollar Centiane?

Desconectado centiane

  • PIC10
  • *
  • Mensajes: 12
    • Por aqui mi web
Re: Realizar dimmer con pic 12f675
« Respuesta #7 en: 07 de Marzo de 2007, 16:59:28 »
He modificado el anterior post para que no haya malentendidos.

El lenguaje que estoy utilizando es el pbp, aunque estoy abierto a otros lenguajes.

Un saludo Centiane.
mira esta web y veras, he utilizado el mismo esquema.

http://free-vz.t-com.hr/Ivica-Novakovic/Lightdimmer.htm

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Realizar dimmer con pic 12f675
« Respuesta #8 en: 07 de Marzo de 2007, 17:19:26 »

Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Realizar dimmer con pic 12f675
« Respuesta #9 en: 07 de Marzo de 2007, 17:31:34 »
Hola !

También puedes sacar de aquí, que ya está hecho y en PBP, sólo debieras agragarle el mando.

Saludos
Mario

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Realizar dimmer con pic 12f675
« Respuesta #10 en: 07 de Marzo de 2007, 21:28:09 »
No he leido el post antes de que centiane lo modificara, en cualquier caso, sorry Manolo!

Desconectado centiane

  • PIC10
  • *
  • Mensajes: 12
    • Por aqui mi web
Re: Realizar dimmer con pic 12f675
« Respuesta #11 en: 13 de Marzo de 2007, 17:03:20 »
Aqui adjunto un poco de como llevo el proyecto.

-Problema de las interrupciones solventado en ASM
-Recepcion de los codigos RC5 mediante la siguiente rutina.( Modificada un poco pero con la misma extructura)

'// Philips RC5 IR decoder

DEFINE OSC 20
DEFINE LOADER_USED 1
DEFINE HSER_BAUD 2400

Y VAR WORD ' Holds 12-bit RC5 code
Loop VAR BYTE ' Loop variable
PIN VAR PORTB.0 ' RB.0 input pin reading data

TRISB.0=1 ' Set RB.0 direction to input
OPTION_REG.7 = 0 ' Internal pull-ups = on

Home:
IF PIN = 1 THEN Home ' Wait for low going pulse
PAUSEUS 100 ' Short delay
IF PIN = 1 THEN Home ' Was it noise?
PAUSEUS 1350 ' Pause to read 2nd half of 1st bit period

Y.0[13] = PIN ' Record 1st synch period bit value
FOR Loop = 12 to 0 STEP - 1 ' 13 pulses MSB to LSB
Y.0[Loop] = PIN ' Y.Bit.Loop = data bit
PAUSEUS 1800 ' Wait 1.8mS to read next RC5 bit
NEXT Loop ' in middle of 2nd bit period

IF Y.LowByte = $FF THEN Home ' Was it noise?
Y = ~Y & $003F ' Mask upper 10-bits to return 6-bit data
' in lower 6-bits of word result
HSEROUT ["Key Pressed = ",DEC Y,13,10]
Y=0 ' Clear key codes
PAUSE 250 ' Used for testing only
GOTO Home ' Return Home

- Por ultimo deciros que tengo algunos problemas de temporizacion en la rutina de recepcion debido a el tiempo que se pierde en ejecutar las interrupciones, pero esto creo que se solventara haciendo un ajuste mas fino de los pause de la rutina anterior.


Aqui os dejo el codigo fuente del proyecto asta el momento, espero que os guste.

DEFINE  INTHAND Nucleo

@   device  pic12F675, INTRC_OSC_NOCLKOUT, WDT_OFF, PWRT_ON, MCLR_OFF, protect_off
             '
             '

triac   var gpio.5          ' Salida de disparo triac       0
mando   var gpio.4          ' Entrada señal del mando       1
led     var gpio.3          ' Salida led                    0
cero    var gpio.2          ' Entrada paso por cero         1
Verde   var gpio.1          ' Salida led                    0
Rojo    var gpio.0          ' Salida led                    0


symbol GIEN      = INTCON.7
symbol PULSO     = OPTION_REG.6

Ird     VAR     WORD                ' Donde se guarda el dato de IR
Valor   VAR     BYTE                ' Tiempo de disparo.
ciclo   VAR     BYTE
Retardo VAR     BYTE                ' Retardo para prueba
Temp0   VAR     BYTE
Temp1   VAR     BYTE
t       var     bit

                                    ' Variables para el restablecimiento del Pic
wsave   VAR     BYTE $20   system   ' despues de producirse una interrupcion
ssave   VAR     BYTE bank0 system
psave   VAR     BYTE bank0 system





GOTO    Inicializacion      ' Saltamos las interrupciones

ASM                   ; Inicio del tratamiento de interrupciones
Nucleo  bcf     INTCON,GIE
        movwf   wsave         ; Guarda W
      swapf   STATUS, W      ; Swap STATUS to W
      clrf   STATUS         ; Resetea STATUS
      movwf   ssave         ; Guarda STATUS
      movf   PCLATH, W      ; PCLATH to W
      movwf   psave         ; Guarda PCLATH
 
        btfsc   INTCON,T0IF     ; Salta si es paso por cero
        goto    Dispara         ; Es elpaso por cero
        movf    _Valor,W        ; Recargamos el valor de disparo   
        movwf   TMR0            ; En el temporizador
        btfss   OPTION_REG,INTEDG   ; Activa la int en el flando de
        goto    EsCero              ; De subida
        bcf     OPTION_REG,INTEDG   ; De bajada
       
Termina bcf     INTCON,INTF     ; Reseteamos INTF
        goto    Fin       
EsCero  bsf     OPTION_REG,INTEDG
        goto    Termina
       
Dispara bsf     _triac          ; Disparamos el Triac
        bsf     _Rojo
        bcf     INTCON,T0IF     ; Reseteamos el TMR0             
        movlw   30              ; Retardo para cebar el Triac
        movwf   _Retardo
Bucle   decfsz  _Retardo,1
        goto    Bucle
        bcf     _triac          ; Fin del retardo
        bcf     _Rojo
               
Fin     movf    psave, W       ; Dejar todo como estaba
        movwf   PCLATH
        swapf   ssave, W
        movwf   STATUS
        swapf   wsave, F
        swapf   wsave, W
        bsf     INTCON,GIE
        retfie
ENDASM
 
Inicializacion:

TRISIO      = %11010100      ' 1 = Entradas    0 = Salidas
OPTION_REG  = %11000100      ' Phus pull desactivadas ,CLK interno, Preescaler CLK/32.
WPU         = %00000000        ' Enable pull-ups on GP2
CMCON       = %00000111      ' Disable analog comparator
ANSEL       = %00000000      ' Disable analog converter
Valor       = 100

    '        Configuramos las interrupciones
    '        ==============================   

INTCON=%10110000 ' Habilitar interrupcion patilla INT y el TMR0

Inicio:
Temp0=0


IF mando = 1 THEN Inicio            ' Esperamos a que llegue un pulso
PAUSEUS 100                         ' Retardo de discriminacion
IF mando = 1 THEN Inicio            ' Si cambio el pulso, es ruido
PAUSEUS 1350                        ' Tiempo de espera para el siguiente bit

ird.0[13] = mando                   ' Guardamos el primer bit de recepcion
FOR ciclo = 12 to 0 STEP - 1        ' 13 pulsos MSB asta LSB
ird.0[ciclo] = mando                ' Ird.Bit.ciclo = data bit
PAUSEUS 1800                        ' Espera de 1.8mS para el siguiente RC5 bit
NEXT ciclo                          ' Siguiente bit

IF ird.LowByte = $FF THEN Inicio    ' Es ruido
if ird.lowByte = 0   THEN Inicio    ' Es ruido
Temp1=ird.LowByte                   ' Salvamos el dato recibido en Temp1


if ird.lowByte=Temp0 then
         if t=0 then
         GIEN=0
         t=1
         else
         GIEN=1
         t=0
         endif
endif         



GOTO Inicio                       ' Return Home



P.D. La temporizacion del disparo la realizo mediante la int del TMR0 configurado desde 0 uS asta 8100 uS que prcticamente es la semionda completa.

Un saludo centiane.


mira esta web y veras, he utilizado el mismo esquema.

http://free-vz.t-com.hr/Ivica-Novakovic/Lightdimmer.htm

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Realizar dimmer con pic 12f675
« Respuesta #12 en: 10 de Abril de 2007, 04:03:31 »
Hola Centiane, no sé cómo andará de avanzado tu proyecto, pero hoy me he topado con este dimmer sin transformador, controlado con mando a distancia y desarrollado en Pic Basic (http://www.picbasic.nl/indexes_uk.htm).