Autor Tema: Ayuda para balanza electronica con PIC16F877  (Leído 17066 veces)

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

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
Ayuda para balanza electronica con PIC16F877
« en: 01 de Febrero de 2005, 20:25:00 »
Hola, estoy diseñando un indicador de peso con el PIC16F877. Utilizo un amplificador para la celda de carga que me amplifica 100 veces (LM725) y otro operacional para anular el offset y poner a cero el indicador. Como convertidor utilizo el A/D ICL7135, para calibrarlo varío la tension de referencia del mismo (span) y el control de cero. Esta calibracion quiero hacerla por medio del PIC utilizando lo menos posible los controles de cero y span, ya tengo toda la captura del dato en el PIC, ahora quisiera que me ayudaran como es que puedo hacer esto o por lo menos que me den alguna idea, la tension de referencia la fijo a 1.000V. Este convertidor de integracion es de 20000 cuentas de resolucion(es decir de 4 1/2digitos). Para poder realizar la calibración tengo 4 teclas y para visualizar el dato tengo 5 displays.
Quiero calibrarlo a 20Kg y 10grs de división y que me permita otras capacidades.

Bueno espero que alguien pueda darme algunas luces. Saludos!!

Desconectado Tec_Claudio_Perez

  • PIC12
  • **
  • Mensajes: 62
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #1 en: 05 de Febrero de 2005, 18:17:00 »
Hola,
Nosotros en la empresa desarrollamos balanzas dinámicas integradoras con un PIC16F876 para el calculo y otro para el LCD y Teclado Matricial para interface de usuario.

Para poder controlar el span y el offset en tu caso creo que lo mejor sería generar los voltajes usando las salidas PWM del PIC. De esta forma se puede generar un voltaje variable de 0-5V en 1024 pasos (con 10 bits de resolucion).
Como el PWM es una salida de pulsos, con ciclo de trabajo variable, para convertirla a tension hay que agregar un filtro integrador. El que nosotros usamos es una red RC, donde R=4K7, y C=0.1 uF 50V. Se ponen tres o cuatro en cascada para reducir el ruido de la modulacion. Fijate la Nota de Aplicacion 538 de Microchip:

http://ww1.microchip.com/downloads/en/AppNotes/00538c.pdf

Por lo general luego se agrega un amplificador operacional, configurado como seguidor de voltaje. Si te hace falta bajar el rango, se agrega un potenciómetro como divisor resistivo a la salida del operacional anterior. Si en cambio queres subir subir el rango de salida, se agrega otro operacional configurado como amplificador no inversor.
De esta forma trendrías dos salidas de voltaje variable, una para controlar el SPAN y con el otro el OFFSET (En caso de necesitar voltaje de offset negativo se usan operacionales con fuente partida!).

Otra solucion sería hacer dos divisores resistivos usando potenciómetros digitales desde una referencia de voltaje super estable. Lo malo es que te aumenta el costo del proyecto. La mayoria se conectan serialmente al PIC (SPI o Microwire). Vienen de varios valores de resistencia y en varias divisiones, a mayor cantidad de divisiones o pasos, mas precision en la variacion del voltaje de salida. Ademas vienen simples, dobles y hasta cuádruples, Lineales o Logarítmicos (para audio).

Potenciometros Digitales Dallas/Maxim
http://www.maxim-ic.com/DigitalPotentiometers.cfm

Potenciometros Digitales Analog Devices
http://www.analog.com/digital_potentiometer.html

Potenciómetros Digitales Xicor
http://www.intersil.com/product_tree/product_tree.asp?x=24

Potenciometros Digitales Microchip
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=11026&mid=10&lang=en&pageId=79

Por ultimo fijate este artículo que muestra como hacer una referencia de voltaje variable en 65535 divisiones (16 bits).
http://www.edn.com/contents/images/122503di.pdf

Espero te sirva.

     Téc. Claudio J. Pérez
interrupt_request@hotmail.com
 Ciberar-Sistemas & Desarrollos
         Jujuy-Argentina

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #2 en: 10 de Febrero de 2005, 09:06:00 »
Hola, gracias por la información la estaré viendo. Hay alguna forma de lograr ésta calibración sin tener que modificar los valores de offset y span, me refiero a que lo deje con voltajes fijos y que en el PIC haga algún cálculo que me permita ésto. He visto en algunos indicadores comerciales que se puede hacer ésto, es decir, sólo ponen los pesos patrones y se le indica a que peso corresponde y listo, y tb se le indica cual es el cero. Pero en otros tb he visto que necesitan modificar éstos valores por medio de potenciómetros o dipswitch de resistencias para su calibración, estos últimos utilizan el mismo convertidor. Entonces mi duda es si se podrá realizar un software que me permita calibrarse sin tener que modificar las tensiones de offset y span, o siempre tendrán que ir juntos, creo que ésto último sería, no???

Bueno gracias, espero su ayuda.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #3 en: 11 de Febrero de 2005, 12:44:00 »
Si, es posible.
De todos modos deberas implementar una parte de acercamiento analogo al offset y al Span, porque sino perderas mucho del rango numerico del conversor.
Yo utilizo un MCP3204 y tengo codigo hecho en PBP para hacer la calibracion digital que requieres.
Actualmente estoy desarrollando lo mismo pero en C, y es aplicable a cualquier conversor, porque lo que armo es una constante de calibracion, valor que luego multiplica por el valor numerico leido del conversor y alli obtienes el valor de peso medido...Sonrisa GiganteSonrisa GiganteSonrisa Gigante
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Tec_Claudio_Perez

  • PIC12
  • **
  • Mensajes: 62
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #4 en: 12 de Febrero de 2005, 10:11:00 »
Hola,
Como menciona Mglsoft, el ajuste de offset y span te permite maximizar el rango del convertidor AD, y por lo tanto maximimizar la resolución.
No se exactamente los voltajes que tenes a la salida del amplificador de celda, pero hagamos un ejemplo. Si tenés una celda de 5Kgs de capacidad, y tu convertidor AD tiene un rango de entrada de 0..5V. Lo ideal sería que con el máximo peso que piensas medir obtengas 4,95V (siempre un poco menor que la maxima tension de entrada). Como tampoco conviene sobrepasar la capacidad de la celda, vamos a suponer que tu máximo peso es de 4.0Kgs.
Ahora bien teniendo el ajuste de offset y span el procedimiento sería así:

Sin peso sobre la balanza se ajusta el offset hasta que la salida del amplificador de celda sea igual a 0. Por lo general el peso no se transmite directamente a la celda, sino que se hace a traves de alguna plataforma (este excedente de peso es el que se anula con el offset).
Ahora se pone una pesa patrón (por lo general aconsejan utilizar un 60% de la capacidad), suponiendo que la pesa patron sea de 4Kgs. Se ajusta el span hasta obtener un voltaje un poco menor al máximo del convertidor AD, en nuestro caso 4,95V.
De esta forma nos aseguramos que todo el rango de entrada del AD se corresponda al rango de peso para obtener la máxima resolución.

Estos ajustes se realizan para compensar diferencias de manufactura o mecanizado de las piezas, y diferentes tolerancias de los componentes electrónicos. Pero si tenés la certeza de que las piezas son fabricadas en serie con tolerancias muy estrictas y utilizando componentes electrónicos precisos con minimo desvio de los valores nominales se podrían poner valores fijos de resistencias y dejar fijos el offset y el span, a costa de aumentar el costo del desarrollo.

Una vez que tenés el maximo rango del AD, para convertir el valor entero del AD en unidades de ingeniería [Kgs] lo que se hace es multiplicarlo por una constante.

Por ejemplo:
Peso: 4.0 Kgs.
LecturaAD: 16000
KPeso: (Peso / LecturaAD) = 0,00025.

Es decir que cada unidad del rango del AD equivale a 0,00025 Kgs.
Como menciona Mglsoft, si el programa lo tenés en C, PBP, u otro lenguaje que soporte calculos con coma flotante, la rutina se facilita.
En assembler también se puede hacer. Fijate esta Nota de aplicacion de Microchip:

AN660 Floating Point Routines
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en010982

En assembler el problema es despues convertirlo de coma flotante a BCD o a ASCII para mostrarlo en un LCD o display de 7 segmentos:

AN670  Floating Point to ASCII Conversion
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en010987

Algunas veces no es necesario usar coma flotante, en cambio se puede usar coma fija, por ejemplo en vez de hacer el calculo en Kilos, se hace en gramos y luego al visualizar el dato se agrega la coma donde corresponde. Fijate esta Nota de aplicacion de Microchip:

AN617 Fixed Point Routines
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en010962

Aparte del peso por lo general se agrega una funcion de Tara. Esto equivale a incrementar el peso de la plataforma. Para esto se lee el AD y se guarda en una variable Tara.
Luego:

PesoAD = LecturaAD - Tara,
Peso = PesoAD * KPeso,

Bueno espero te sirva.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #5 en: 14 de Febrero de 2005, 14:27:00 »
Maestroo!!!
Hasta yo lo entendi!!!Sonrisa GiganteAvergonzado

Genialmente explicado.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #6 en: 18 de Febrero de 2005, 21:21:00 »
Está muy clara la explicación. Un cálculo similar he estado probando, aparte de la función TARA tb se tiene la función CERO éstas son similares. Como implemetaría un seguidor de CERO para corregir las pequeñas variaciones? como detecto que la variación es por un corrimiento del CERO y no es por variación en el peso?.
Espero sus respuestas gracias!

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #7 en: 20 de Febrero de 2005, 20:27:00 »
Hola Amig@s!, realmente agradecido por sus explicaciones.... es para mi, una de mis "materias pendientes", es decir, siempre quise experimentar con celdas de carga.... y nunca lo hice.... gracias por los consejos! Rebotado
Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado ma-tec

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 76
    • www.matec.es.tl
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #8 en: 23 de Febrero de 2005, 05:37:00 »

hola que tal

tienes que definir la capacidad maxima / division minima

ejemplo

capacidad maxima 7000 grs
division minima 5 grs

resolusion 7000 / 5 = 1400 cuentas

osea tu conversor debe tener 1400 cuentas para que
llege a esa capacidad..

el coversor del micro pic tiene 1024 cuentas con lo
que podras llegar a 5000 kgs x 5 grs

ahora si quieres llegar a mas capacidad tendras
que usar un conversor externo ...

ejemplo TC 500 que no es un conversor propiamente
pero se ajusta para tu aplicacion de hecho
la mayoria de indicadores de peso lo usan y pueden
obtener hasta 17 bits de conversion unas 131071 cuentas

el icl 7135 es de 20000 cuentas

ejemplo
http://ww1.microchip.com/downloads/en/AppNotes/00780a.pdf

la calibracion la puedes hacer por :
atravez de potenciometros de ajustes de cero y spam
(off-set y gain)

o por soft.
el cero lo das restando el peso (dado en cuentas desde  la plataforma o plato) a las cuentas iniciales
y la ganancia  o span multiplicando o dividiendo las cuentas restantes


cualquier consulta aca estamos....
LA CLAVE DEL EXITO ES SABER
PARA DONDE VA LA GENTE Y
LLEGAR PRIMERO.

Desconectado Tec_Claudio_Perez

  • PIC12
  • **
  • Mensajes: 62
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #9 en: 01 de Marzo de 2005, 08:43:00 »
Hola,
perdón por la tardanza.

Por lo general la función de cero consiste en llamar la funcion tara al momento del encendido. Por esto a veces se le llama autozero o autotara.
Es decir que si hay alguna variación en la plataforma de pesaje, o sin querer alguien olvidó algún peso sobre ella, al encender la balanza se anula esta diferencia.

Para contrarestar las pequeñas variaciones del peso, de acuerdo a la aplicación, además se tiene la función filtro. Esta función hace un promedio de la lectura del AD, luego de promediar la lectura se le resta la tara y se la convierte a unidades de ingeniería.  A mayor cantidad de lecturas promediadas mas estable es la lectura del peso.

Para saber si hay un corrimiento del cero o variación en la lectura del peso, por lo general se hace por lo menos un control diario de la balanza.
Para esto se dispone de una pesa patrón, convenientemente certificada (contrastada), que se pesa en la balanza y se verifica si hay diferencias.
Esto se hace todos los días antes de comenzar la actividad con la balanza, para esto se dispone de una zona, cercana a la balanza, donde se almacena la pesa patrón. Esta pesa se debe manipular con mucho cuidado, especialmente se deben evitar golpes, y se debe mantener limpia, para evitar variaciónes en su peso. Cada cierto tiempo se deben contrastar las pesas patrón para verificar que sigan calibradas.

Espero te sirva.

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #10 en: 14 de Marzo de 2005, 19:36:00 »
Oye MGLSOFT podrias publicar tu rutina de calibración que tienes en PBP para estudiarla un poco.
Amigo Claudio, la función filtro que utilizan en que consiste? sólo en promediar varias muestras o es algo más complejo?
Espero sus respuestas, gracias!

Desconectado Tec_Claudio_Perez

  • PIC12
  • **
  • Mensajes: 62
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #11 en: 02 de Abril de 2005, 20:51:00 »
Hola,
Para una balanza estática creo que basta y sobra con un promedio comun.
En mi caso, balanzas dinámicas integradoras, es mejor usar filtros un poco mas
complejos, como promedio movil, o filtros pasabajos digitales.
Para mas información sobre filtros por soft, fijate en:
http://www.ccsinfo.com/forum/viewtopic.php?t=19509&highlight=moving+average+filter

Espero te sirva.

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #12 en: 06 de Abril de 2005, 21:48:00 »
Interesante página gracias!

Desconectado kpv

  • PIC10
  • *
  • Mensajes: 1
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #13 en: 11 de Abril de 2005, 13:15:00 »
hola, siempre he estado interesado en utilizar estos tipos de sensores pero nunca me he atrevido, Nichita, ¿qué sensor usas?

Un saludo

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
RE: Ayuda para balanza electronica con PIC16F877
« Respuesta #14 en: 15 de Abril de 2005, 20:33:00 »
Hola, estoy utilizando una celda de carga


 

anything