Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 1 visitas.| 3410041 Visitas (desde Dic. 2011), hoy: 336 Visitas 947 Pag. Vistas , ultimos 36 dias: 10112 Visitas. 48253 Pag. Vistas. Tu IP: 3.145.130.31
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

Control de potencia modular para PC

Hola a todos y gracias por colaborar conmigo en este nuevo proyecto. La idea es controlar varias salidas de potencia (ya sean reles o triacs) desde una computadora con el programa apropiado y por medio del puerto serie RS232.

La idea de utilizar el puerto serie responde a varios factores claves:

  • Siempre hay al menos uno libre en la PC
  • Con solo dos cables alcanza para la interconexión
  • Permite mayores distancias
  • Es mucho mas simple la electrónica y mas reducidos los circuitos impresos
  • Requiere muchas menos líneas de E/S en el µC

Estas son las que se me ocurren en este momento, pero cuando me decidí por serie tenia muchas mas en mente. La edad…….

Bueno, siguiendo con el proyecto la idea es encadenar varios módulos de manera tal de lograr la cantidad de salidas deseadas y permitir en un futuro expandir el sistema sin apagarlo y sin modificar la estructura inicial del mismo. Algo como lo que se ve en el diagrama de abajo:

Aquí, hay una PC que maneja todo por medio de su salida serie la cual entra al primer módulo. Este amplifica la señal de entrada RS232 permitiéndole alcanzar mayores distancias y la envía tal como entra por un lado al microcontrolador del módulo y por otro lado a la entrada del siguiente módulo, que hace exactamente lo mismo que éste.

Por lo que tengo entendido entre módulo y módulo puede haber hasta 25 metros de distancia, aunque esta se puede ampliar utilizando repetidoras RS232 que son muy fáciles de conseguir en el mercado o, de última, se pueden hacer con integrados MAX232.

Cada módulo tiene una dirección de 8 bits que lo identifica del resto. Esta dirección está guardada en la memoria EEPROM del µC y es posible cambiarla desde el programa que corre en la computadora. Para ello se pensó en una llave de seguridad que habilite la escritura de la clave. Algo que le da mas seguridad al sistema y evita programaciones inapropiadas. En el diagrama de abajo se aprecia una idea del esquema al cual he llegado hasta el momento:

El RS232 convertido en TTL entra al micro por uno de los pines del puerto A. Dos pines de este mismo puerto se emplean para censar los interruptores. Uno de ellos es el que se comento arriba, para permitir al programa de la PC modificar el código del módulo. El otro interruptor se pensó para colocarle una llave tipo cerradura la cual, al activarse abre todos los reles o triacs de la salida sin importar el estado en que se encuentren las salidas. Esto es por si un técnico necesita cambiar algo en la instalación que parte de esas salidas y desea cortar el suministro. Por mas que el programa le indique al módulo encender las salidas éstas permanecerán en estado apagado hasta que se retire la llave de seguridad. EL tanto el LED y el zumbador son para señalización.

El puerto B completo del micro sale hacia un buffer de corriente ULN2803A que permite manejar directamente las bobinas de los reles o los optoacopladores que seguidamente controlaran los triacs. Esto es a elección del armador.

Hay solo cuatro operaciones que se pueden realizar:

1. Inicializar el sistema completo. Esto es poner todas las salidas de todos los módulos en apagado. Y se logra enviando por el puerto serie la siguiente secuencia: 0Fh FFh F0h.

2. Controlar las salidas de determinado módulo. Esto se logra enviando por el puerto serie tres palabras. La primera de ellas (F1h) indica que se quiere setear las salidas del módulo que se indica en la siguiente palabra. Por último, la tercer palabra indica el estado que deben adquirir las ocho salidas del módulo. Y no es mas que una carga directa sobre el puerto B del dato recibido en la tercer palabra, siempre que la segunda palabra sea la misma que la contenida en la EEPROM del módulo. Esto es para que solo accione el módulo correspondiente. Abajo se ve bien como es el envío de una secuencia para esta función:

3. Establecer dirección del módulo. Esta función requiere que el interruptor de programación en el módulo este cerrado. Ni bien el interruptor es accionado el LED se ilumina y el buzzer produce un breve pitido indicando que ha entrado en modo programación. El sistema queda a la espera de dos palabras, la primera de ellas indica la función específica de programación (F2h) y la que le sigue indica la dirección que el módulo debe adoptar. Cuando ambas palabras son recibidas el módulo guarda en la EEPROM el nuevo código de dirección y también hace sonar un pitido largo en el buzzer, indicando que la operación terminó con éxito. Luego, el usuario debe abrir nuevamente la llave de programación lo cual es indicado con el apagado del LED. Abajo se observa como es la trama de datos para esta función:

Los demás módulos, cuando ven en el bus la función F2h deben hacer caso omiso a la siguiente palabra para seguir sincronizados.

4. Testear determinado módulo. Esto es algo así como hacerle un PING al módulo tras lo cual el buzzer producirá tres breves pitidos al tiempo que destella el LED. No afecta el estado de las salidas ni tampoco la dirección del módulo. Para que esto suceda habrá que enviar dos palabras por el bus. La primera conteniendo el código de la función (F4h) y la segunda conteniendo la dirección del módulo, tal como se observa debajo:


Actualización: 21 Enero de 2002

A continuación se observa el diagrama electrónico del circuito completo.

El mismo esta compuesto por la fuente de alimentación que provee los 12V para los relés y los 5V regulados para la electrónica de control. También se aprecia la interface RS232 la cual al mismo tiempo que convierte el dato serie entrante al equipo en TTL lo vuelve a convertir en RS232 a fin de permitir continuar otro trecho hacia los siguientes módulos. El interruptor indicado como Vel. (ubicado en el panel posterior) permite seleccionar si el sistema funcionará a baja velocidad (2400 bps) o a alta velocidad (9600 bps). Otro interruptor (que también debería estar en el panel posterior) permite colocar el módulo en posición de programación. En este estado, el micro espera una palabra por el puerto serie la cual será adoptada como dirección del módulo en el bus. Luego de una programación de dirección la misma queda retenida en la memoria Flash del micro a fin de no perderla ante una desconexión y también se emite un sonido de confirmación. El zumbador posee un interruptor para evitar que el mismo emita sonidos. Esto es útil si el sistema funcionará en un sitio de ambiente controlado (donde se requiera silencio). El interruptor indicado como Seg. permite desconectar eléctricamente los relés. De esta forma, si se necesita efectuar una modificación en las salidas y no se quieren correr riesgos se podrá hacer independientemente del estado que el equipo presente en el bus. El diodo LED marcado como Act. se ilumina cuando el módulo es seleccionado y se apaga cuando se completa la operación efectuada sobre el, por lo que en la práctica solo destellará un instante cuando el módulo sea accesado.

En la foto se observa el módulo armado, con sus ocho relés activados.

La fuente del equipo debe poder proveer corriente suficiente para encender los ocho relés simultáneamente así como alimentar el circuito lógico. Esto resulta en un consumo aproximado de 1A a plena carga.

Por el momento tenemos el firmware funcional pero solo como receptor serie. El mismo recibe un dato por el puerto y lo coloca en los pines del puerto B (actúa tal como un receptor serie). Pero en breve vamos a elaborar un firmware totalmente funcional.

Firm (programa en ensamblador asm)

;envio de datos del PC al PIC
;2400 - 8N1

status	equ	3h		;registro de estados del micro
ptoa	equ	5h		;puerto a
ptob	equ	6h		;puerto b
cfga	equ	85h		;registro de config. puerto a
cfgb	equ	86h		;registro de config. puerto b
r0d	equ	0dh		;registros de proposito general
r0e	equ	0eh
conta	equ	10h
recep	equ	11h		;buffer de entrada
z	equ	2h		;bandera de zero
c	equ	0h		;bandera de carry
p	equ	5h		;bit de seleccion de pagina
w	equ	0h		;para almacenar en w
r	equ	1h		;para almacenar en el mismo registro
rx	equ	2h		;bit de recepcion de datos en serie

	org	00h		;vector de reset
	goto	inicio		;salta al comienzo del programa
	org	05h		;saltea el vector de interrupcion

start	movlw	.124		;retardo para generar bit de arranque
	goto	startup
delay	movlw	.83		;retardo para generar bit de datos
startup	movwF	r0e
redo	nop			;pierde 12 microsegundos
	nop
	decfsz	r0e		;resta 1 al retardo
	goto	redo		;si falta tiempo itera
	retlw	0		;si termino retorna limpiando w

recibir	nop			;recibe un byte por RS232
	clrf	recep		;limpia el buffer de recepcion
	btfss	ptoa,rx		;mira el estado de la linea serie
	goto	recibir		;si esta inactiva queda a la espera
	call	start		;retardo para bit de arranque
rec	movlw	8		;carga cantidad de bits a recibir
	movwf	conta
rnext	bcf	status,c	;limpia el carry
	btfss	ptoa,rx		;mira la linea de recepcion
	bsf	status,c	;si esta en alto sube el carry
	rrf	recep		;rota el buffer de recepcion
	call	delay		;retardo entre bits
	decfsz	conta		;resta uno a la cant. de bits a recibir
	goto	rnext		;si faltan bits por recibir itera
	retlw	0		;si termino sale y limpia w

inicio	bsf	status,p	;selecciona la pagina 1 de memoria
	movlw	0ffh		;programa el puerto a como entradas
	movwf	cfga
	movlw	00h		;programa el puerto b como salidas
	movwf	cfgb
	bcf	status,p	;selecciona la pagina 0 de memoria
	clrf	recep		;limpia el buffer de recepcion
	clrf	ptob		;apaga todas las salidas

ciclo	call	recibir		;queda a la espera de recibir datos
	movf	recep,w		;carga en w el dato recibido
	movwf	ptob		;manda el dato a las salidas
	goto	ciclo		;itera indefinidamente

	end

En tanto el circuito impreso, por el momento tiene muchos errores que hemos corregido de forma precaria (como se ve en la foto de abajo) pero en cuanto tengamos la versión definitiva la vamos a publicar.

Fuente: http://www.pablin.com.ar/electron/proyecto/plink/index.htm

Escribe un comentario

Tu comentario