Ver Mensaje Individual
Antiguo 17/07/2010, 16:31   #30
smoussen
Usuario Registrado
 
Fecha de ingreso: 15/ene/2010
Mensajes: 38
smoussen está en el buen camino
Hola a todos, lamento la tardanza pero como lo prometido es deuda aqui llega todo.
En primer lugar he encontrado unos leds IR con capsula transparente que van estupendamente, tanto que los he puesto en paralelo con los originales y la Roomba los ve desde una distancia superior a 5 mts por lo que la reforma planteada anteriormente se simplifica enormemente, el problema es que en la tienda no supieron darme datos acerca de él, ni modelo ni fabricante...:

[IMG][URL=http://img824.imageshack.us/i/dsc02415i.jpg/][/URL][/IMG]

[IMG][URL= http://img338.imageshack.us/i/dsc02416p.jpg/][/URL][/IMG]

Respecto a la "elegancia" con que cruza la puerta he detectado que no es por el hecho de aproximarse desde otro angulo al LH por tener mas leds IR si no por la potencia de emisión del led del farito, la resistencia R13 que hay en el emisor del transistor Q6 que es de 18 Ohm hay que sustituirla por una de 39 Ohm, he probado con una de 47 Ohm y va de coña pero Roomba se aproxima demasiado al LH con posible riesgo de toque, obviamente las resistencias de 1/4W son gigantes frente a las smd, en la segunda imagen se aprecian los dos fuses smd en las lineas de alimentación, positivo y negativo:
[IMG][URL=http://img704.imageshack.us/i/dsc02465i.jpg/][/URL][/IMG]

[IMG][URL=http://img413.imageshack.us/i/dsc02466ka.jpg/][/URL][/IMG]

[IMG][URL=http://img689.imageshack.us/i/dsc02467eq.jpg/][/URL][/IMG]

En cuanto a la reforma con el Pic12x508 ha quedado asi:
[IMG][URL=http://img204.imageshack.us/i/dsc02420k.jpg/][/URL][/IMG]

He añadido un led rojo para ver cuando está generando rayo PV y Halo:
[IMG][/IMG]

Detalle de conexión de rayo generado a Halo, (farito), aqui se puede ver que el negativo de la alimentación lo he soldado a la placa en lugar de a la pestaña del portapilas, para que el circuito quede protegido, al menos, por un fusible smd que va soldado en placa:
[IMG][URL=http://img682.imageshack.us/i/dsc02410i.jpg/][/URL][/IMG]

Detalle de conexion de rayo generado a PV, manteniendo la posibilidad de ajustar el campo mediante conmutador frontal:
[IMG][URL=http://img138.imageshack.us/i/dsc02408ya.jpg/][/URL][/IMG]

Detalle de toma de señal de unidad activa:
[IMG][URL=http://img94.imageshack.us/i/dsc02405fs.jpg/][/URL][/IMG]

El esquema de la cosa, Nota, los switch SW2 y SW3 del esquema no existen el el circuito real, los he puesto para simular el circuito con Proteus:
[IMG][URL=http://img96.imageshack.us/i/modificacinlighthousep1.png/][/URL][/IMG]

El programa del pic en asm:

;******************************** Programa **************************************************

org 0x00 ; Vector de Reset
movlw 0x2E ; ATENCIÓN: Calibración oscilador interno
movwf OSCCAL ; Utilizado solo con los Pic12F508 por haberlos borrado
goto Inicio

org 0x05 ; Salva el vector de interrupción

;******************************** Configuraciones *******************************************


Inicio movlw b'00000000' ; Se activa reset por cambio de estado en pin
option
movlw b'000011'
tris GPIO ; Bits GP0 y GP1 se configuran como entradas
movlw 0x00 ; Se inicializa Puerta IO
movwf GPIO
;************* Filtrado de salida de Sleep para prevenir despertares esporadicos ************

movlw 0x0F ; Contador de 15ms de filtro
movwf Filt_xms
Bucle6 movlw 0xC7 ; Valor filtro para alcanzar 1ms
movwf Filt_1ms
Bucle7 btfsc GPIO,0 ; Leer si la entrada GPO esta a 1 (Unidad pierde actividad)
goto Dormir ; Si no es 1 repetir lectura
decfsz Filt_1ms ; Filtrado
goto Bucle7
decfsz Filt_xms
goto Bucle6

;******************************** Valores para pasar a Sleep (120 segundos) ******************

movlw 0xFF ; Carga el retardo de apagado del led tractor
movwf Stop_trac
Bucle2 movlw 0xF0 ; Valor para contar 240 ciclos de 500ms (120 segundos)
movwf Sleep_seg
movlw 0xFA ; Valor para contar 500 ms
movwf Sleep_ms

;******************************** Detección inactividad unidad ******************************

movlw 0xFF ; Carga filtro con 255ms para cubrir flancos de
movwf Filt_xms ; indicacion de codigo asignado del led verde
Bucle4 movlw 0xC7 ; Valor filtro para alcanzar 1ms
movwf Filt_1ms
Bucle btfsc GPIO,1 ; Comprueba si rayo de tracción esta activo
goto Enciende ; y pasa a encender el led
decfsz Stop_trac ; si no retarda el apagado
goto Apagado
bcf GPIO,2 ; Apaga led rayo tractor
goto Apagado
Enciende bsf GPIO,2 ; Enciende led rayo tractor
movlw 0xFF ; Carga el retardo de apagado del led tractor
movwf Stop_trac
Apagado bcf GPIO,5 ; Apaga led PV
nop
btfss GPIO,0 ; Leer si la entrada GPO esta a 1 (Unidad pierde actividad)
goto Bucle2 ; Si no es 1 repetir lectura
decfsz Filt_1ms ; Filtrado
goto Bucle
decfsz Filt_xms
goto Bucle4
;******************************** Detección rayo de tracción si unidad inactiva ************


Bucle1 movlw 0x0F ; Carga filtro con 15ms para cubrir flancos de modulación
movwf Filt_xms ; del rayo de tracción
Bucle5 movlw 0xC7
movwf Filt_1ms
Bucle3 btfsc GPIO,1 ; Lee si ha caido el rayo de tracción (inactivo)
goto Enciende2 ; si es activo va a encender led
decfsz Stop_trac ; si no temporiza para apagar
goto Apagado2
bcf GPIO,2 ; y si no es activo apaga led
goto Apagado2
Enciende2 bsf GPIO,2 ; Enciende led
movlw 0xFF
movwf Stop_trac
goto Bucle1 ; Como es activo repite lectura hasta que caiga
Apagado2 btfss GPIO,0 ; Si es inactivo comprueva si unidad ha perdido actividad
goto Bucle2 ; y pasa a detección de actividad
decfsz Filt_1ms
goto Bucle3
decfsz Filt_xms
goto Bucle5
;******************************** Inicio generación PV **************************************
bcf GPIO,2 ; Apaga led rayo tractor
nop
bsf GPIO,5 ; Enciende led generación PV
Genera movlw 0x28 ; Carga Registro auxiliar 1
movwf Modul_1ms
Ciclo decfsz Modul_1ms ; Control si transcurrido 1ms modulando
goto Uno ; si no sigue generando el uno modulado
goto Cero ; y si ha transcurrido genera el cero

;******************************** Tiempo en estado uno modulado de 1ms *********************

Uno bsf GPIO,4 ; Activa salida para infrarojos PV y Halo
nop
call Delay_0 ; Se llama a retardo para pasar a 0
bcf GPIO,4 ; Terminado el tiempo desactiva salida
call Delay_1 ; Se llama a retardo para pasar a 1
goto Ciclo
Delay_0 nop ; Retardo para poner GP4 a 0
nop
nop
nop
nop
nop
nop
nop
retlw 0x00
Delay_1 nop ; Retardo para poner GP4 a 1
nop
nop
retlw 0x00

;******************************* Tiempo en estado cero de 1ms *****************************

Cero movlw 0xA2 ; Carga registro auxiliar 3
movwf Cero_1ms1
movlw 0x02 ; Carga Registro auxiliar 4
movwf Cero_1ms2
Espera decfsz Cero_1ms1
goto Espera
movlw 0xA2 ; Recarga registro 3 si finalizado
movwf Cero_1ms1
decfsz Cero_1ms2
goto Espera

;******************************* Contaje de 60 segundos para pasar a Sleep ******************

btfss GPIO,0 ; Comprueba si unidad sigue inactiva
goto Bucle
btfsc GPIO,1 ; Comprueba si rayo tractor sigue apagado
goto Bucle
decfsz Sleep_ms ; y acumula conteo para sleep
goto Genera
movlw 0xFA
movwf Sleep_ms
decfsz Sleep_seg
goto Genera
bcf GPIO,5
nop
bcf STATUS,7
Dormir sleep
end ;Fin del programa fuente

Última edición por smoussen; 18/07/2010 a las 21:12.
smoussen está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir