[PROYECTO] Fabricar un sistema de control

Avatar de Usuario
martinzulu
Pop Corn
Mensajes: 43
Registrado: Dom Jun 06, 2010 12:50 am

Creo que el compañero Bonillapablon puede colaborarnos con la parte de los atmega si lo desea? asi que puede cheqear esta parte para que pueda modificarla, bueno este circuito tiene un Crystalfontz, que me parece genial, nos permite ver la rampa de la temperatura. teclado para introducir los datos deseados de las rampas.
Atmel Mega32.

Revisalo y me dices que podemos cambiarle.

#include <Mega32.h>
#include <delay.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h> #define begin {
#define end }
#define map_size 128*64/8
#define max_time 340
#define base_temp 0
#define room_temp 40
//Timing
#define t1 30
#define t2 1000
//Keypads
#define maxkeys 13 //characters
#define no 11
#define yes 12
#define quit 13
#define ERR_SIZE 11
//Debouncing
#define release 1
#define debounce 2
#define stillPressed 3
#define debounceRelease 4
//Program modes
#define program1 0
#define program2 1
#define program3 2
#define preheat 3
#define ready 4
#define reflow 5
#define cooldown 6
#define done 7
#define abort 8
#define usedefault 9
void intialize();
void keyScan();
void buttonHandle();
void heat();
void pid();
eeprom int tempinput[max_time];
int timeinput, temp,timer,prevtemp=0;
char numinputs;
int err[ERR_SIZE];
char lcdmap[map_size];
int time1, time2, time3;
unsigned char key, butnum, maybe, scanState; //Non-debounced key press
int mode, prevmode;
char digits[10], index, str[32];
unsigned int number = 0;
#include "flash.c"
#include "lcd.c"
//===============================================
//timer 0 compare ISR
interrupt [TIM0_COMP] void timer0_compare(void)
{
//Decrement the three times if they are not already zero
if (time1>0) --time1;
if ((time2>0) && (mode==preheat || mode==ready ||mode==reflow||mode==abort||mode==cooldown)) --time2;
}
//===============================================
void interpolate(void)
{
int i=1,j,k=0;
int lastN=0;
float grad;
while(i<max_time)
{
if(tempinput != 0)
{
grad = ((int)(tempinput-tempinput[lastN]))/(((float)i-(float)lastN));
for(j=lastN+1,k=1; j<i ; j++,k++) tempinput[j] = (k)*grad + tempinput[lastN];
lastN = i;
}
i++;
}
}
//===============================================
int main (void)
{
intialize();

while(1)
{
if(time1 <= 0) keyScan();
if(time2 <= 0) heat();
}
}
//===============================================
void intialize()
{
int i=0, j=0;
for(i=0;i<map_size;i++) lcdmap=0;
for(i=0;i<max_time;i++) tempinput=0;
clear();
pixelxy(10,13,1); pixelxy(20,13,1); pixelxy(30,13,1); pixelxy(40,13,1);
pixelxy(51,34,1); pixelxy(51,54,1); pixelxy(51,74,1); pixelxy(51,94,1); pixelxy(51,114,1);
drawline(0,14,49,14);
drawline(50,14,50,127);

//Rampas de Temperatura
sprintf(str,"200"); putstr(8,0,str);
sprintf(str,"150"); putstr(18,0,str);
sprintf(str,"100"); putstr(28,0,str);
sprintf(str," 50"); putstr(38,0,str);
//Tiempo de Rampas
sprintf(str,"60"); putstr(53,30,str);
sprintf(str,"120"); putstr(53,48,str);
sprintf(str,"180"); putstr(53,68,str);
sprintf(str,"240"); putstr(53,88,str);
sprintf(str,"300"); putstr(53,108,str);

//Valores por defecto

tempinput[0]=90; //Or room temp
tempinput[90]=150;
tempinput[180]=180;
//tempinput[210]=225;
tempinput[240]=225;
tempinput[270]=225;
timeinput=270;
numinputs=5;
interpolate();
scanState = release;
time1 = t1;
time2 = t2;
time3 = t3;
Avatar de Usuario
Thulsa_Doom
Reboleador Extremo
Mensajes: 557
Registrado: Lun Ago 24, 2009 3:24 pm

Veo que al final estas usando un ATMEl, es un muy buen micro.
una sugerencia.
podrí­as utilizar proteus para emular y depurar el código (si no lo estas haciendo ya).

a ver si la peña se anima y aporta.
saludos
Si cada vez que se dice manteca, dios mata un gatito, no os preocupéis, en el callejón de al lado de mi edificio hay un contenedor de basura que por las noches está lleno
ZM5860C
Horno de reflujo casero con un control fabricado por mi en evolución
BONILLAPABLO
Pop Corn
Mensajes: 40
Registrado: Sab Jun 19, 2010 9:32 pm

Hola veo que piensas usar un lcd grafico si no me equivoco, y segun puedo ver apenas estas simulando una rampa, pero todavia no tienes ningun tipo de control, bueno es una buena idea y que el setpoint o punto de operacion valla siguiendo la rampa. Para realizar el control pid hay que trabajar con la ecuacion en diferencias. yo la tengo, yo hecho el control pid a traves de un computador con una tarjeta de adquisicion de datos y el software labview(un software de control industrial).
celica
Hot Gun
Mensajes: 29
Registrado: Lun Nov 02, 2009 12:22 am

yo vi el tema de los mejores amplificadores
tu tienes :
-max6675 : http://datasheets.maxim-ic.com/en/ds/MAX6675.pdf
-LTC®2053 linear : http://cds.linear.com/docs/Datasheet/2053syncfb_web.pdf
-AD595 : http://www.analog.com/static/imported-f ... 96_597.pdf
cual es el mas preciso ?
saludos !
Avatar de Usuario
compupasion
Reboleador Extremo
Mensajes: 554
Registrado: Dom Mar 28, 2010 6:00 pm

Te conviene el 6675, te da directamente el valor en formato digital, incluso te avisa si la termocupla no esta conectada. con una resolucion que sobra y ya calibrado.

El 2053 es solo un amplificador de precision, y en todo caso te daria una señal analogica,
El 595 tambien da una señal analogica y me parece un componente obsoleto.

Con los tres se pueden diseñar instrumentos suficientemente precisos.
Estacion: Hacky 4000 -AZP
Avatar de Usuario
Thulsa_Doom
Reboleador Extremo
Mensajes: 557
Registrado: Lun Ago 24, 2009 3:24 pm

Hola, ¿por que no utilizamos un display de 2x16 como el LM016L?, es que un LCD gráfico con resolución suficiente para poder mostrar una gráfica en condiciones cuesta una pasta gansa.

para la primera versión del dispositivo se podrí­a aprovechar las dos ví­as del LCD, una para la temperatura y otra para mostrar el tiempo transcurrido.

es una idea
Si cada vez que se dice manteca, dios mata un gatito, no os preocupéis, en el callejón de al lado de mi edificio hay un contenedor de basura que por las noches está lleno
ZM5860C
Horno de reflujo casero con un control fabricado por mi en evolución
celica
Hot Gun
Mensajes: 29
Registrado: Lun Nov 02, 2009 12:22 am

ok estonce solo utilizar el max 6675 , hay mucha projecto a base de este amplificadore...
Hay siempre una cosa que me pregunta , porque nunca se menciona los pid industrial , con relay estado solido no se podria hacer lo mas facil ?
solo por saber ....
Avatar de Usuario
andressis2k
Pop Corn
Mensajes: 37
Registrado: Sab May 22, 2010 1:52 am

Bueno, eso de que un display en condiciones cuesta una pasta gansa no es del todo cierto.

Qué les parece una pantalla LCD Sharp? Las tenemos en todas las PSP1000 a precio ridí­culo. Los datasheet son públicos. Con dedicarle tiempo, se podrí­a dibujar perfectamente utilizando un Pic32 (de hecho, en youtube hay videos de ellos)

Si el código para dibujar en la pantalla está ya hecho y es público, no serí­a dificil adaptarla.

Pero vamos, teniendo un LCD de 19" al lado (un PC tenemos todos), lo veo innecesario.

Saludos
Avatar de Usuario
Thulsa_Doom
Reboleador Extremo
Mensajes: 557
Registrado: Lun Ago 24, 2009 3:24 pm

andressis2k escribió:Bueno, eso de que un display en condiciones cuesta una pasta gansa no es del todo cierto.

Qué les parece una pantalla LCD Sharp? Las tenemos en todas las PSP1000 a precio ridí­culo. Los datasheet son públicos. Con dedicarle tiempo, se podrí­a dibujar perfectamente utilizando un Pic32 (de hecho, en youtube hay videos de ellos)

Si el código para dibujar en la pantalla está ya hecho y es público, no serí­a dificil adaptarla.

Pero vamos, teniendo un LCD de 19" al lado (un PC tenemos todos), lo veo innecesario.

Saludos
Me gusta la idea, no habí­a pensado en esta posibilidad.
Las pantallas que habí­a visto eran comerciales y las que mas o menos serví­an, por menos de 130€ no encontraba ninguna
Si cada vez que se dice manteca, dios mata un gatito, no os preocupéis, en el callejón de al lado de mi edificio hay un contenedor de basura que por las noches está lleno
ZM5860C
Horno de reflujo casero con un control fabricado por mi en evolución
Avatar de Usuario
compupasion
Reboleador Extremo
Mensajes: 554
Registrado: Dom Mar 28, 2010 6:00 pm

http://cgi.ebay.es/New-LCD-Screen-Displ ... 2a06c8c0d5

De Reino Unido tardan exactamente 1 semana en llegar.
Estacion: Hacky 4000 -AZP
Cerrado