Regulador de temperatura de precisión (6 / 7 paso)

Paso 6: El programa

Los archivos aquí son una versión de texto del programa C junto con el archivo de diseñador de ciprés completado en formato zip.

Su no muy larga...

//----------------------------------------------------------------------------
Programa en C para controlador de temperatura PSOC
//----------------------------------------------------------------------------

#include < m8c.h > / / parte específicas constantes y macros
#include "PSoCAPI.h" / / definiciones de PSoC API para todos los módulos de usuario
#include "stdlib.h"

int MAXC = 0;
int TEMPC = 500;
Char [grados centígrados] = "500";
Char [] degF = "932";
int TEMPF = 932;

void main()
{
int w, z;
int BenzLeer, KeyBuffer;
int x, buffer;
Float temperatura = 0;
flotador temperature2 = 0;
int cuenta = 0;
int tope = 1;
int CycleBuffer;
int base = 1;
int InputADC;
int InputADC2;
char lcd_Reading [8];
char lcd_Setting [8];

PGA_1_SetGain(PGA_1_G1_00);
PGA_1_Start(PGA_1_LOWPOWER);
DAC9_1_Start(DAC9_1_FULLPOWER);

LCD_1_Start(); Inicializar LCD
M8C_EnableGInt; Activar interrupciones globales

AboveTop:
DAC9_1_WriteBlind(0); conjunto salida a 0V
ADCINC12_1_Start(ADCINC12_1_LOWPOWER); Aplique corriente al bloque SC
ADCINC12_1_GetSamples(0); Tiene ADC funciona continuamente
LCD_1_Control(LCD_1_DISP_CLEAR_HOME);
LCD_1_Position(0,0);
LCD_1_PrCString ("límite máximo");

LCD_1_Position(0,10);
Si (base == 0)
{
MAXC = TEMPF;
LCD_1_PrString(degF);
LCD_1_Position(0,14);
LCD_1_PrCString("F");

} else
{
MAXC = TEMPC;
LCD_1_PrString(degC);
LCD_1_Position(0,14);
LCD_1_PrCString("C");

}
for(;;) {
Arriba:

BenzLeer = PRT1DR; leer pulsación de tecla

while(ADCINC12_1_fIsDataAvailable() == 0); Bucle hasta valor listo
ADCINC12_1_ClearFlag(); Clara bandera de ADC

x=ADCINC12_1_iGetData(); Obtener resultado de ADC

Si (InputADC > = temperatura) / / sistema autostop y condición inicial
{

DAC9_1_WriteBlind(0); salida 0V

}

Si (parada == 0) / / bucle de reinicio automático en condiciones de iniciar
{

Si (CycleBuffer < temperatura)
{
DAC9_1_WriteBlind(510); salida 5V
}
}

Si (x == buffer) / / check para ADC válido de lectura
{

InputADC =(x*0.5208)-12; / / corrección para la resistencia de la sonda.
Si (base == 0)
{
InputADC = (9.0/5.0*InputADC) + 32;
}

Si (InputADC < = 99) / / configurar pantalla para 10 y 100 a la izquierda
{
lcd_Reading [0] = ' ';
w = 1;
Si (InputADC < = 9)
{
lcd_Reading [1] =' ';
w = 2;
}
} else w = 0;

InputADC2 = abs(InputADC); valor absoluto

convertir el int en una base cadena terminada en 10 nulo ASCII
itoa (& lcd_Reading [w], (unsigned int) InputADC2, 10);

Si (temperatura < = 99) / / configurar entrada a leer correctamente
{
lcd_Setting [0] = ' ';
z = 1;
Si (temperatura < = 9)
{
lcd_Setting [1] =' ';
z = 2;
}
} else z = 0;

temperature2 = abs(temperature);

convierte el int en una base cadena terminada en 10 nulo ASCII
itoa (y lcd_Setting [z], (unsigned int) temperature2, 10);

CycleBuffer = InputADC + 2; Límite inferior de reinicio
LCD_1_Position(1,0);
LCD_1_PrString(lcd_Reading); exhibición de la temperatura continua
LCD_1_Position(1,5);
LCD_1_PrCString ("sistema ->");
LCD_1_Position(1,10);
LCD_1_PrString(lcd_Setting);

clave función repetición para arriba abajo solamente
Si (BenzLeer! = 0 x 00) //0x03 cuando programador
{
cuenta ++;
Si (cuenta > 15)
Si (BenzLeer == 0x80|| BenzLeer == 0 x 40)
Goto
} otra cuenta = 0;

Si (KeyBuffer == BenzLeer) / / pasar por alto clave duplicada
Goto Top;

AQUÍ:
Programador añadirá 0 x 03 para todos los casos cuando
interruptor (BenzLeer) {}
caso (0 x 80): / / incremento de temperatura
if(Count>15)
{temperatura = temperatura + 10;
cuenta = 0;
Si (temperatura > = MAXC)
{goto HIGHlimit;
}
Goto Top;
}
KeyBuffer = BenzLeer;

Si (temperatura > = MAXC)
{goto HIGHlimit;
}
Goto TempUp;
rotura;
caso (0 x 40): / / disminuir la temperatura
if(Count>15)
{temperatura = temperatura-10;
cuenta = 0;
Si (temperatura < = 0)
{goto LOWlimit;
}
Goto Top;
}
KeyBuffer = BenzLeer;

Si (temperatura < = 0)
{goto LOWlimit;
}
Goto TempDown;
rotura;
caso (0 x 20): / / claro
KeyBuffer = BenzLeer;
Goto claro;
rotura;
caso (0 x 10): //start
KeyBuffer = BenzLeer;
Goto Inicio;
rotura;
caso (0x08): //stop
KeyBuffer = BenzLeer;
Goto Stop;
rotura;
caso (0 x 04): //base cambio
KeyBuffer = BenzLeer;
Si (base == 1)
{//Change a F
base = 0;
Goto Base;
}
Si (base == 0)
{//Change a C
base = 1;
}

Goto Base;
rotura;
por defecto:
KeyBuffer = BenzLeer;
rotura;
}

}

buffer = x; Buffer de validación ADC

Goto Top;
TempUp:
temperatura ++; ajuste de incremento
Goto Top;
TempDown:
temperatura--; ajuste de decremento
Goto Top;
Claro:
temperatura = 0;
cuenta = 0;
LCD_1_Position(1,10);
LCD_1_PrString(lcd_Setting);
Goto AboveTop;
Parada:
LCD_1_Control(LCD_1_DISP_CLEAR_HOME);

LCD_1_Position(0,0);
LCD_1_PrCString ("detenido en");
LCD_1_PrString(lcd_Reading);

DAC9_1_WriteBlind(0);
Stop = 1;
Si (base == 0)
{
MAXC = TEMPF;
LCD_1_Position(0,15);
LCD_1_PrCString("F");

} else
{
MAXC = TEMPC;
LCD_1_Position(0,15);
LCD_1_PrCString("C");

}
Goto Top;
Inicio:

LCD_1_Control(LCD_1_DISP_CLEAR_HOME);

LCD_1_Position(0,0);
LCD_1_PrCString ("calefacción");
LCD_1_PrString(lcd_Setting);

Si (InputADC < = temperatura)
{

DAC9_1_WriteBlind(510);
} else
{
DAC9_1_WriteBlind(0);

}

detener = 0;
Si (base == 0)
{
MAXC = TEMPF;
LCD_1_Position(0,15);
LCD_1_PrCString("F");

} else
{
MAXC = TEMPC;
LCD_1_Position(0,15);
LCD_1_PrCString("C");

}
Goto Top;
LOWlimit:
temperatura = 0;
Goto Top;
HIGHlimit:
temperatura = MAXC;
Goto Top;
Base:

Si (base == 1) //Degrees F a grados C
{
Si (temperatura! = 0)
{
temperature2 = temperatura;
Temperature=(5.0/9.0*(temperature2-32)); cambio de F a C
}
Goto BaseBottom;
} else

Si (temperatura! = 0)
{
temperature2 = temperatura;
temperatura = (9.0/5.0*temperature2) + 32; convertir C a F
}

BaseBottom:
Si (parada == 0)
{
Goto Top;
} else goto AboveTop;

}

}

Artículos Relacionados

Regulador de temperatura del fumador

Regulador de temperatura del fumador

Este instructivo detalla cómo montar un regulador de temperatura automático para un ahumador Weber Smokey Mountain (WSM). Costo total fue de alrededor de 72$. Esto debería liberar un montón de tiempo en constante ajuste los orificios de ventilación i
Programable regulador de temperatura + placa

Programable regulador de temperatura + placa

calentar cosas es una de las tareas más realizadas en un laboratorio. Muchas veces no es suficiente simplemente celebrar algo en cierta temperatura, pero la frecuencia con que algo se calienta y cómo durante mucho tiempo es tan importante. Especialme
Pequeña incubadora con regulador de temperatura

Pequeña incubadora con regulador de temperatura

tenemos unos pollos en casa pero queríamos más, así que elegimos los que quería y decidió que quería empollar unos huevos. Lamentablemente para mí esto significó que mi quieren ahora de papá una incubadora así que tuve que construir él uno. en este p
Regulador de temperatura Sous Vide para $50-$100

Regulador de temperatura Sous Vide para $50-$100

actualización 6 de junio: paso adicional para el uso de un cubo calentador y enfriador.Actualización 8 de marzo: añadí fotos para el fusible y pasó a utilizar un SSR.Esto le mostrará cómo crear su propio controlador de temperatura exacta para cocinar
Regulador de temperatura digital acuario

Regulador de temperatura digital acuario

una forma más precisa y más segura para controlar la temperatura de los acuarios. Mayoría de los controladores en el mercado es caros, poco confiables y puede solamente control de enfriador o calentador no. Usted puede hacer para tan poco como 16 dól
YATC5 - instrucciones de montaje de regulador de temperatura

YATC5 - instrucciones de montaje de regulador de temperatura

El YATC5 está diseñado para facilitar la fermentación de los alimentos. Versión 5 tiene muchas características únicas. Está disponible para la venta en kit o montado.Impermeable - 3' sonda de temperatura largoRegistro de datos - caída de módulo bluet
Regulador de temperatura Solar pequeño

Regulador de temperatura Solar pequeño

Se trata de un proyecto final para nuestra clase de CPE 133 en Cal Poly que fue diseñado para ser una versión a pequeña escala de un obturador automático y aislante. El sistema tiene dos sondas de temperatura para medir la temperatura interna y exter
Regulador de temperatura ajustable para elementos de calefacción

Regulador de temperatura ajustable para elementos de calefacción

Hay un montón de diferentes productos que utilizan elementos de calefacción. Desafortunadamente, muchos de ellos no son ajustables. Por ejemplo, la mayoría de los soldadores están encendido o apagado. Sería mucho más útil si fueras capaz de cambiar l
Regulador de temperatura infrarrojos para SMD sartén reflujo

Regulador de temperatura infrarrojos para SMD sartén reflujo

este instructable le ayudará si su tratando de llegar a hacer tu propio circuito tableros utilizando flujo SMD (dispositivo de montaje superficial). Después de un montón de placas de soldadura a mano me interesé realmente yo mismo.En este instructabl
Regulador de temperatura y humedad automático de Arduino para mascotas

Regulador de temperatura y humedad automático de Arduino para mascotas

gato y Jose, una pareja de hamster hermoso, me ha acompañado durante 100 días y noches. Su suave pelaje blanco me pone tranquilo y acogedor, sobre todo cuando me la codificación en el ganador.Pero las cosas muy trágicas ocurrieron en la última semana
Cómo medir la temperatura con gran exactitud con un Arduino y un tablero de Sensor de temperatura de TSYS01.

Cómo medir la temperatura con gran exactitud con un Arduino y un tablero de Sensor de temperatura de TSYS01.

Mientras estudiaba en la Universidad fuimos desafiados como parte de un trabajo de curso en diseño de una caja con control de temperatura muy preciso. Si el proyecto fuera a tener éxito, múltiples cajas debían ser construido y utilizado en un proyect
Sensor de temperatura simple LED Digital

Sensor de temperatura simple LED Digital

Un Sensor de temperatura electrónico Simple, bajo costo, DigitalH. William James, agosto de 2015Resumen LED parpadeante contienen un pequeño chip de IC que causar a parpadear continuamente encendido y apagado cuando se aplica un voltaje. Este estudio
Sous Vide horno regulador

Sous Vide horno regulador

En lugar de recortar aparte una perfectamente buena olla esta compilación le mostrará cómo crear un controlador de dispositivo a que puede conectar. Este enfoque modular significa que no necesitará adquirir un segundo dispositivo. Si tienes una olla
Cómo automatizar cualquier temperatura controlado proceso

Cómo automatizar cualquier temperatura controlado proceso

Voy a mostrarte cómo construir y utilizar un dispositivo que le permitirá controlar automáticamente la temperatura de cualquier proceso térmico (calefacción o refrigeración) a un grado muy exacto.Control de temperatura de precisión para aplicaciones