domingo, 18 de diciembre de 2011

Control de Temperatura con PIC - Modbus-RTU- 485 y Ascii Protokol






Una vez mas comienzo un nuevo proyecto ,un control de la temperatura de una caldera de Gasoil.
El proyecto se basa
principal mente en el control autónomo con un PIC , en concreto el 16F877 , realizando un status de las sondas en el PC bajo en soft de SCADA. La comunicacion con el PC será Modbus, un protocolo muy conocido en la automatización para comunicar el hombre con la maquina.



El SCADA que utilizo es un programa gratuito y de muy buenas
caracteristicas , visualizacion y programacion en objetos , practicamente no necesitas código ,es el Xscada - Xedit , un proyecto muy bueno. http://www.micset.net/


Descarga los ficheros del proyecto:
Fichero HEX para Pic16F877 - 20 Mhz ( Modo ModBus-RTU )

Fichero Fuente de Visualizacion Status sondas- XScada-ModbusV2

( Mejorada la comunicación , no necesita la EEPROM interna )




Se utiliza dos entradas
Analógica del 16f877 , AN0 y AN1 , un Led de Estado y dos salidas digitales conectadas mediante el BC547 a dos Reles , en concreto el RB0 y el RB4. La velocidad de comunicación es 9600 Baudios, 8 bits de datos , sin paridad y un bit de Stop.
En cuanto al conversor utilizo el famoso MAX485 , donde habilito la
trasmisión con una salida del PIC, RC5.

Los valores de las sondas conectadas al puerto
analógico se escriben en direcciones de la EEPROM interna del PIC.
Estas direcciones o registros
están situadas al principio de la memoria EEPROM. Se dispone de cuatro registros para cada una de las sondas. Temperatura Sonda, Set de temperatura ,Diferencial y Calibración de la sonda.Según el registro de Set , se dará un temperatura de disparo de los Reles teniendo en cuenta el diferencial programado.
Se pueden utilizar cualquier programa de Analisis de MODBUS , pero yo utilizo el XScada de MICSET

El programa se basa en cuatro registros básicos por sonda para el control de la temperatura , tanto en Modbus o Ascii Protokol los registros se escriben en la memoria interna del Chip ,cada uno con sus diferencias y direcciones.
Si modificamos el programa para incorporar mas sondas , tendríamos mas registros, para un 16F877 tenemos de capacidad interna 255 registros.
El primer registro memoriza la temperatura, seguido del Set de temperatura que es la activación de temperatura donde queremos que el Relé se accione, seguido del un diferencial para tener el margen de activación y desactivación , un registro de calibrado que consiste en ajustar las diferencias físicas y desiguales de la sonda , utilizo una NTC de resistencia 10K para a 25 ºC .
Los valores representados están en decimal , 8 Bits.
Las sondas NTC al aumentar la temperatura disminuye su resistencia , el valor proyectado en el PIC es parejo a la temperatura, físicamente se comporta utilizando el logaritmo siguiente :
En el proyecto no utilizo este logaritmo , ya que los resultados que obtengo son bastante lineales.
La NTC que utilizo es : 103AT-2
Temperatura = 10000 *EXP(3435*(1/(T+273)-(1/(25+273))))

La mejor forma de calibrar las sondas es hacerlo con un termómetro calibrado, para asegurar que la medición reflejada es la correcta
.
Mapa de Memoria de EEPROM Interna – MODO MODBUS- RTU
Lectura Función – 04 – y para la escritura se empleará la Función – 03

Mapa de Memoria de EEPROM Interna – Ascii Protokol ( Protocolo del XScada )
Format : [DeviceAdres;RegAdres;Write;Value]

El esquema es simple , no he dibujado el cristal de 20 Mhz y los condensadores correspondiente.


16 comentarios:

Anónimo dijo...

Buen proyecto..
Saludos

tello dijo...

Muy buen proyecto, yo estoy detrás de algo así pero no lo he conseguido aun, he intentado descargar tus ficheros para probar pero por lo visto el alojamiento no va bien, podrías echarme una mano??
Un saludo y sigue así.

khan dijo...

i like your project very much but not able to download it i think the link is dead plz help me to send you project on my email id. shadab79khan@yahoo.com thank you very much

Anónimo dijo...

Che muy bueno tu proyecto de donde se puede bajar las aplicaciones para saber mas sobre el tema, por que los link no funca saludos
f_mfernandez@hotmail.com

Leonardo Miyahira dijo...

en serio que muy bueno,

si no te molesta me podes mandar el codigo para ver si puedo empezar a probar lo de modbus

miyahira1@gmail.com

waldo sanhueza dijo...

Hola
podrias ser amable de enviarme los archivos al correo
waldosanhueza@gmail.com.
saludos y muy bueno el proyecto.

Anónimo dijo...

Los links estan rotos
¿serias tan amable de enviarme los archivos a gvaccaro@tutopia.com?
Saludos

Sellos JRG dijo...

Buenas noches, los enlaces estan rotos, podrias publicar nuevos o revisar los viejos, ademas en la página de micset no he encontrado un manual de usuario o soporte que explique como utilizar el programa, podrias ayudarnos con la información que tienes.

Aparte te agradezco este proyecto que me ha parecido muy interesante, saludos y gracias.

Jose Maria dijo...

Hola a todos.
Perdonar, pero efectivamente los enlaces estan rotos.
En unos dias colgaré la ultima actualizacion del control de temperatura via Modbus RTU.
Gracias.
Saluods.

Anónimo dijo...

realmente muy interesante.
podrías enviarme los archivos a parbecds@hotmail.com

Gracias!

Anónimo dijo...

Interesante pero no funciona el enlace.
Saludos...

Mariani dijo...

Excelente Proyecto! el código del protocolo Modbus lo creaste tú? Estoy trabajando en un proyecto con 16F877 con Modbus RTU, podrías colocar los links para guiarme?

Gracias!
Saludos.

Anónimo dijo...

que tal colega, por favor puedes compartirme el codigo para el pic?
mi correo: missahel_yeen@hotmail.com

Anónimo dijo...

Hola. Muy interesante. Yo necesito comunicar una pantalla omron con un PIC16. Llevo tiempo con este proyecto y no vendría mal un poco de luz. Podrías compartirme el código???. Mi mail es jpenin13@gmail.com
Gracias.

Jose Maria dijo...

Hola ,
Perdonar pero este proyecto lo he dejado hace tiempo y no he podido mantenerlo, igualmente he colgado los ficheros para que podáis tenerlos y probarlos.
Gracias y saludos a todos.

Carlos Santos Angeles dijo...

Muy buen proyecto me puedes pasar el programa en c te lo agradecería mucho mi a san.t2@hotmail.com