Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: mariacontenis en 25 de Abril de 2013, 17:12:27
Título: PID_EEPROM_FLOAT
Publicado por: mariacontenis en 25 de Abril de 2013, 17:12:27
Que tal amigos, eh estado modificando un codigo que me encontre aqui en la red. Se trata de un menú, en el cual configuro los valores de un control PID, (kp,ki,kd). y por medio de pulsadores configuro estos valores y los pretendo guardar en la memoria EEPROM interna del pic.
Bueno, pues como los valores kp,ki,kd son flotantes hice uso de la libreria internal_eeprom incluida ya en el ccs.
Pues este es mi problema. Si se escriben los valoes, y los leo de igual manera. Pero el problema es que cuando desconecto la energia y quiero configurar el valor de las constantes pid se vuelva como si no se hubieran guardado en la eeprom. Les dejo el programa y la simulacion para que me ayuden. No logro que despues de desconectar la energia se que den guardados los valores de las configuraciones kp,ki,kd.
Título: Re: PID_EEPROM_FLOAT
Publicado por: MGLSOFT en 25 de Abril de 2013, 17:35:08
Ese PIC tiene 256 bytes de EEPROM. Las direcciones que le das 100, 200 y 300, como las elegiste??
Si 100 es tomado como decimal, es 64 en hexa, deberia guardar el valor... El caso de 200, si es decimal, tambien debiera guardar su valor.
Pero la direccion 300 no existe en la EEPROM, debiera darte un error, pero debe interpretar otra cosa por eso no te da error. :mrgreen: :mrgreen:
Título: Re: PID_EEPROM_FLOAT
Publicado por: mariacontenis en 25 de Abril de 2013, 17:43:59
E cambiado esos valores a 1, 2 y 3 pero en la lcd me muestra puros ceros y si le anexo 10, 20 y 30 pues si escribe las constantes kp,ki,kd con decimales. Por favorpodrias simularlo y compartir tu apinion?
Yo habia guardado valores de la eeprom con esos valores pero cuando se trataba de variables int y no del tipo float.
De hecho yo los guarde de la siguiente manera y si hace lo que quiero en el proteus pero en lo fisico no. Pouendo esto despues del la funcion main:
despues del main y si hace las cosas corecto. es decir, depues de desconectar la energia el valor lo guardaba. Pero comento nuevamente que estolo e realizado para variables del tipo int y no float
Con eso deberia funcionar, no puedo simulartelo aqui...
Título: Re: PID_EEPROM_FLOAT
Publicado por: mariacontenis en 29 de Abril de 2013, 19:32:16
Que tal amigo, eh probado de la manera en que comentas sin resulatados satisfactorios. Me muestra kp=0.00, ki=0.00, kd=0.00
En proteus y en la realidad.
Título: Re: PID_EEPROM_FLOAT
Publicado por: MGLSOFT en 29 de Abril de 2013, 21:47:21
Es extraño, yo testee en Proteus el programa que colgaste y a mi me guarda los valores... Solo si apago el proteus y lo abro nuevamente se pierden los valores, sino no se pierden...
Título: Re: PID_EEPROM_FLOAT
Publicado por: mariacontenis en 30 de Abril de 2013, 10:26:09
Ok, bien. Ya lo tengo igual!!.
Solo que tambien quisiera que esos datos no se perdieran despues de desconectar la energia. Por que tanto en el proteus como en lo fisico el valor modificado de las constantes de integracion se pierden y a mi me gustaria que se quedaran grabados estos valores.
Y si mientras no desconecto la energia los valores se siquen guardando. Pero con eso ya es un avance, gracias por gran ayuda voy a seguir revisando, espero de igual manera me sigas ayudando. Gracias...