projeto de instrumentação emmanuele e marcos programa

10
/*Projeto de Instrumentação Emmanuele e Marcos Esse programa lê a entrade de temperatura de um NTC e controla a temperatura de uma caldeira, atuando em uma resistência de aquecimento. O circuito: Um transdutor de entrada do sinal no pino A3, e saída digital PWM 6, com resultados mostrados em um LCD e atuaçao humana através dos botões desse shield. Projeto feito para a Disciplina de Instrumentação do Professor Márlio Bonfin Criado 2013 Marcos C Matos */ #include <LiquidCrystal.h> // Funciona o LCD #include <LCDKeypad.h> // Funciona os botões // LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // ativa o lcd LCDKeypad lcd; const int sensor = A1; // sensor NTC const int saida = 9; // Saida PWM const int aliment = A2; // alimentaçao

Upload: marcos-cabral

Post on 28-Mar-2016

213 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Projeto de instrumentação emmanuele e marcos programa

/*Projeto de Instrumentação Emmanuele e Marcos

Esse programa lê a entrade de temperatura de um NTC

e controla a temperatura de uma caldeira, atuando

em uma resistência de aquecimento.

O circuito:

Um transdutor de entrada do sinal no pino A3, e saída digital

PWM 6, com resultados mostrados em um LCD e atuaçao humana

através dos botões desse shield.

Projeto feito para a Disciplina de Instrumentação do

Professor Márlio Bonfin

Criado 2013

Marcos C Matos

*/

#include <LiquidCrystal.h> // Funciona o LCD

#include <LCDKeypad.h> // Funciona os botões

// LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // ativa o lcd

LCDKeypad lcd;

const int sensor = A1; // sensor NTC

const int saida = 9; // Saida PWM

const int aliment = A2; // alimentaçao

Page 2: Projeto de instrumentação emmanuele e marcos programa

int sens1 = 0; // variavel sensor

int sens2 = 0;

int sens3 = 0;

int sens4 = 0;

int sens5 = 0;

int sensFinal = 0;

float tensao = 0; // variavel tensao

float temperatura = 0; // variavel da temperatura

//criando os caracteres especiais

byte c_up[8] = {

B00100,

B01110,

B10101,

B00100,

B00100,

B00100,

B00100,

B00100,

};

Page 3: Projeto de instrumentação emmanuele e marcos programa

byte c_down[8] = {

B00100,

B00100,

B00100,

B00100,

B00100,

B10101,

B01110,

B00100,

};

byte c_select[8] = {

B00000,

B01110,

B11111,

B11111,

B11111,

B11111,

B01110,

B00000,

};

byte c_left[8] = {

B00001,

B00110,

B01100,

B11111,

Page 4: Projeto de instrumentação emmanuele e marcos programa

B11111,

B01000,

B00110,

B00001,

};

byte c_right[8] = {

B10000,

B01100,

B00010,

B11111,

B11111,

B00010,

B01100,

B10000,

};

// fim dos caracteres

void setup ()

{

set.pinMode (A1,INPUT);

set.pinMode (A2,OUTPUT);

lcd.createChar(1,c_select);

lcd.createChar(2,c_up);

lcd.createChar(3,c_down);

Page 5: Projeto de instrumentação emmanuele e marcos programa

lcd.createChar(4,c_left);

lcd.createChar(5,c_right);

lcd.begin(16, 2);

lcd.clear ();

lcd.setCursor (3,0);

lcd.print ("Projeto de");

lcd.setCursor (1,2);

lcd.print ("Instrumentacao");

delay (3000);

lcd.clear ();

lcd.setCursor(2,0);

lcd.print ("Emmanuele L.");

lcd.setCursor (3,1);

lcd.print ("& Marcos C.");

delay (3000);

lcd.clear ();

lcd.setCursor (3,0);

lcd.print ("Calibracao?");

lcd.setCursor (3,1);

lcd.print ("Sim ou Nao");

lcd.setCursor (1,1);

lcd.write (4);

lcd.setCursor (14,1);

lcd.write (5);

int buttonPressed;

waitButton();

Page 6: Projeto de instrumentação emmanuele e marcos programa

waitReleaseButton();

do

{

buttonPressed=waitButton();

}

while(!(buttonPressed==KEYPAD_LEFT || buttonPressed==KEYPAD_RIGHT ));

lcd.setCursor(0,1);

lcd.write(buttonPressed==KEYPAD_LEFT?4:' ');

lcd.write(' ');

lcd.write(buttonPressed==KEYPAD_RIGHT?5:' ');

lcd.write(' ');

delay(50);

waitReleaseButton();

if (buttonPressed==KEYPAD_LEFT)

{

lcd.clear ();

lcd.print(" Calibrando");

lcd.setCursor (10,1);

lcd.print ("V");

lcd.setCursor (1,1);

calibracao();

}

else if (buttonPressed==KEYPAD_RIGHT);

{

lcd.clear ();

lcd.print ("ATUAL OBJET ER");

Page 7: Projeto de instrumentação emmanuele e marcos programa

if (buttonPressed==KEYPAD_SELECT);

{

lcd.setCursor(3,1);

lcd.write (223);

lcd.print ("C");

lcd.setCursor(10,1);

lcd.write (223);

lcd.print ("C");

}

}

// botão pra esquerda, entra na calibraçao

// calibracao > le o analog 2 e coloca na tela o valor em tensao lido. botao seleciona finaliza e termina o setup +-

//botão pra direita, acaba o void setup ok

}

void loop ()

// aonde ele lê a temperatura atual, pede a temperatura objetivo e através de controle, finalmente alcança

{

lcd.setCursor (0,1);

lcd.print(millis()/1000);

Page 8: Projeto de instrumentação emmanuele e marcos programa

lcd.setCursor (7,1);

lcd.print(millis()/2000);

}

int waitButton() // rotina de esperar o botão

{

int buttonPressed;

waitReleaseButton;

lcd.blink();

while((buttonPressed=lcd.button())==KEYPAD_NONE)

{

}

delay(50);

lcd.noBlink();

return buttonPressed;

}

void calibracao() // nao funcionando direito, verificar pq

{ int buttonPressed;

do

{

LeSensor();

tensao = sensFinal;

lcd.setCursor (3,1);

Page 9: Projeto de instrumentação emmanuele e marcos programa

lcd.write (tensao);

delay (100);

}

while(buttonPressed=lcd.button()!=KEYPAD_SELECT);

{

}

}

int LeSensor() // rotina para ler o sensor, é puxada toda vez que precisa

{

sens1 = analogRead (sensor);

delayMicroseconds(150);

sens2 = analogRead (sensor);

delayMicroseconds(150);

sens3 = analogRead (sensor);

delayMicroseconds(150);

sens4 = analogRead (sensor);

delayMicroseconds(150);

sens5 = sens1+sens2+sens3+sens4;

sensFinal = sens5 << 1;

}

void waitReleaseButton() // acho que é para esperar soltar o botão

{

delay(100);

while(lcd.button()!=KEYPAD_NONE)

{

Page 10: Projeto de instrumentação emmanuele e marcos programa

}

delay(100);

}