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;
[PROYECTO] Fabricar un sistema de control
- 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
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
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).
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 !
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 !
- 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.
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
- 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
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
ZM5860C
Horno de reflujo casero con un control fabricado por mi en evolución
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 ....
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 ....
- 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
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
- Thulsa_Doom
- Reboleador Extremo
- Mensajes: 557
- Registrado: Lun Ago 24, 2009 3:24 pm
Me gusta la idea, no había pensado en esta posibilidad.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
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
ZM5860C
Horno de reflujo casero con un control fabricado por mi en evolución
- 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.
De Reino Unido tardan exactamente 1 semana en llegar.
Estacion: Hacky 4000 -AZP
