relatório de projeto - desenvolvimento de um kit didático para disciplinas de instrumentação e...

18
Instituto Federal Sul-rio-grandense Curso de Eletrônica Disciplinas de Instrumentação Industrial, Microcontroladores e Programação III. Professores Ulisses Lyra dos Santos, Rafael Galli e Norberto de Castro Peil. Desenvolvimento de um kit didático para trabalhos práticos nas disciplinas de Instrumentação Industrial e Sistemas de Controle Gustavo dos Santos Fernandes Rodrian Garcia Radmann Tro7ni

Upload: gustavo-fernandes

Post on 17-Jul-2015

604 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

Instituto Federal Sul-rio-grandenseCurso de EletrônicaDisciplinas de Instrumentação Industrial, Microcontroladores e Programação III.Professores Ulisses Lyra dos Santos, Rafael Galli e Norberto de Castro Peil.

Desenvolvimento de um kit didático para trabalhos práticos nas disciplinas de Instrumentação Industrial e Sistemas de Controle

Gustavo dos Santos FernandesRodrian Garcia RadmannTro7ni

Page 2: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

1 - Introdução

Tornar o conhecimento teórico e prático um único saber é o objetivo de todos os cursos técnicos e a maior parte dos cursos superiores. O problema surge quando devido a deficiências financeiras e estruturais dos cursos não é possível reproduzir para o aluno a situação real em que se aplica determinado conteúdo. Nestas situações, apela-se para os kits didáticos, estes embora não apresentem a situação real de aplicação dos conteúdos vistos nas disciplinas, podem simular algo em que seja necessário aplicar parte dos conhecimentos adquiridos em sala de aula.

O objetivo deste trabalho foi desenvolver um kit didático para trabalhos práticos nas disciplinas de Instrumentação Industrial e Sistemas de Controle. O kit oferece elementos que podem simular um sistema termodinâmico, um sistema de sensoriamento e um sistema de atuação. A aquisição, registro de dados e lógica de controle deste sistema deve ser feita pela interface serial RS232 de um microcomputador de uso geral. Através da programação em ambiente Delphi, pode-se facilmente implementar uma lógica de controle para o sistema termodinâmico oferecido pelo kit.

Page 3: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

2 - Desenvolvimento

2.1 – Descrição geral do projeto

O kit desenvolvido pode ser usado para simular o controle de dois sistemas termodinâmicos diferentes:

- um forno controlado;- uma carga que precise ter a sua temperatura máxima limitada.

Ex: processador.O sistema termodinâmico oferecido pelo kit é composto por um resistor de

68 ohms / 10 W. Utiliza-se o efeito joule da corrente para aquecê-lo e tornar possível o controle de temperatura tanto por controle de aquecimento quanto por controle de resfriamento. Este resistor também pode se comportar como um atuador, como no caso da simulação do forno controlado.

O sistema de sensoriamento é composto por um CI LM35, sensor de temperatura de precisão que é capaz de variar a sua saída em 10 mV a cada variação de um grau Celsius. A partir deste, é possível saber qual é a temperatura do resistor.

O sistema de atuação é composto por uma ventoinha que pode ter a sua rotação controlada a partir de um sinal PWM – Pusle Width Modulation. No caso do forno controlado, o resistor também pode se comportar como um atuador e também tem o seu aquecimento controlado por um sinal PWM.

O sistema possui um microcontrolador PIC16F877A para fazer a interface entre o kit e a porta serial RS232 do microcomputador.

2.2 – Hardware

O hardware do kit é uma placa de interface entre os dispositivos que compõem o kit e o microcomputador.

Este kit foi desenvolvido para tornar possível a implementação de lógicas de controle a partir da programação em alto nível por meio de plataformas de desenvolvimento que rodam em microcomputadores de uso geral. Logo se fez necessário desenvolver uma placa microcontrolada que fizesse a interface entre a porta serial RS232 do microcomputador e periféricos do kit. A partir desta placa, tornou-se possível acionar cargas de potência e fazer leituras analógicas de tensão, o que é de extrema importância para o bom funcionamento do kit.

2.2.1 – Microcontrolador

O microcontrolador utilizada para a interface foi o PIC16F877A, fabricado pela Microchip. Este microcontrolador foi escolhido pois possui 2 módulos para controle de pwm, suporte para comunicação uart e canais de conversão analógico-digital, e principalmente, por se ter várias peças disponíveis no curso.

Page 4: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

2.2.2 – Comunicação serial

Conforme já dito, o microcontrolador PIC16F877A possui uma USART integrada. Esta USART é responsável pela serialização e temporização da transferência dos dados que são enviados e paralelização e temporização dos dados que são recebidos. Através deste periférico integrado ao chip, não é necessário usar o processador para fazer o trabalho de transmissão ou recepção serial, bastando apenas enviar o dado de forma paralela e recebê-lo de forma paralela.

O microcontrolador trabalha com o protocolo UART com níveis TTL: 0 V – “0”, 5 V – “1”. Entretanto a porta serial dos microcomputadores utiliza os níveis RS232: +3 a +15 V – “0”, -3 a -15 V - “1”. Para fazer o interface entre a comunicação do microcontrolador com a do microcomputador foi necessário utilizar um conversor de níveis também conhecido como transceptor TTL-RS232, o CI MAX232.

O MAX232 é um CI que possui dois tranceptores TTL-RS232 integrados. Através de quatro capacitores externos este consegue gerar as tensões do padrão RS232 sendo alimentado por uma única fonte de 5 V.

Para a comunicação com o computador foram usados apenas 3 fios: TX, RX e GND. Não foi necessário utilizar os outros sinais disponíveis na porta. Foi montado um cabo específico para o kit, com um DB9 fêmea em uma das pontas e um conector spox de 3 vias para ser conectado em uma barra de pinos, na outra.

2.2.3 – Alimentação

A alimentação do kit é feita por uma fonte linear de aproximadamente 44 V - 800 mA. A tensão de 44 V é resultado da retificação e filtragem da tensão de saída do secundário de um transformador de 30 Vac. Esta tensão está sendo aplicada no ramo do resistor e na entrada de um regulador de 24 V. A tensão de saída do regulador de 24 V está sendo aplicada no ramo da ventoinha e na entrada de um regulador de 5 V. A tensão de saída do regulador de 5 V está alimentando todos os circuitos integrados do kit.

Caso haja uma revisão do projeto, procurará reduzir-se a tensão entre os terminais dos reguladores ou montá-los de forma que seja possível a fixação de um dissipador de calor.

2.2.1 – Acionamento de cargas de potência

As cargas de potência acionadas pelo microcontrolador são duas: uma ventoinha de 24 V - 300 mA e um resistor de 68 ohms - 10 W. Ambas estão conectadas às saídas de sinal PWM do microcontrolador.

A ventoinha está sendo acionada por um transistor NPN BC337 que liga o seu terminal negativo ao GND, quando acionado. Colocou-se um diodo em antiparalelo com a bobina da ventoinha para evitar o golpe indutivo ao desligar o transistor. Este golpe indutivo em casos extremos pode danificar o transistor ou até mesmo o microcontrolador.

O resistor está sendo acionado por um transistor MOSFET N IRF3205. Este transistor liga o negativo da fonte ao resistor quando acionado. Sabe-se que aplicando

Page 5: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

45 V em um resistor de 68 ohms tem-se uma potência dissipada de aproximadamente 30 W. O resistor usado é de 10 W. Porém o kit possui um sistema de proteção que bloqueia o uso do usuário quando a temperatura do resistor ultrapassar 100 º C, forçando-o a baixar a temperatura para no mínimo 50 º C antes de desligar o sistema de proteção. Esta proteção foi implementada no firmware do microcontrolador.

2.2.4 – Indicação

O kit possui dois leds: um vermelho e um laranja.O led vermelho serve para indicar se a fonte de 5 V está ligada.O led laranja indica o estado do microcontrolador. Aceso indica funcionamento

normal. Piscando indica proteção de sobre temperatura e apagado indica que o microcontrolador está inativo.

2.2.5 – Leitura de temperatura

O microcontrolador PIC16F877A possui um conversor AD por aproximação sucessiva integrado ao chip. Este tipo de conversor é muito vantajoso quando se necessita de um equivalente binário de uma determinada tensão analógica a partir de uma tensão de referência. Para realizar a leitura de temperatura foi necessário converter de um sinal analógico para digital a saída do sensor de temperatura LM35. Para isso, ligou-se a saída do sensor a uma dos canais de conversão AD do microcontrolador, utilizando um filtro passa-baixas composto por um resistor de 1k2 e um capacitor de 100 nF para estabilizar o sinal. Mesmo realizando uma filtragem analógica ainda foi necessário implementar um filtro digital no firmware do microcontrolador.

2.2.6 – Layout da placa de circuito impresso

O layout da placa de circuito impresso foi desenhado no EAGLE v 5.6, da CadSoft.

2.3 – Firmware

As pessoas confundem bastante o conceito de “software” e “firmware” e chamam muitas vezes um firmware de software ou um software de firmware.

O firmware pode ser definido como um software embarcado. Um software para um hardware específico que vem gravado de fábrica na memória de programa de um sistema microprocessado. Pode-se dizer que o firmware esta “preso” à sua placa de aplicação.

Quando se desenvolve um programa para rodar em um hardware específico, este é chamado de firmware. Entretanto ao se desenvolver um programa para funcionar independente do hardware utilizado, desenvolve-se um software.

Page 6: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

Exemplos de equipamentos que utilizam firmwares: celulares mais antigos, controles remotos, cafeteiras, relógios, BIOS, estações meteorológicas, multímetros, etc.

Exemplos de equipamentos que utilizam softwares: microcomputadores da família PC, MAC, IBM, celulares mais modernos, televisões mais modernas, etc.

Exemplos de softwares que parecem firmwares: programa para kits de didáticos, programas para kits de desenvolvimento.

2.3.1 – Compilador

O desenvolvimento do firmware gravado no microcontrolador foi feito usando-se o CCS C Compiler versão 4.074. Este compilador, apesar de ser muito bom para fins didático e para desenvolvimento rápido é muito deficiente em relação à otimização de código assembly gerado e acesso direto aos registradores do microcontrolador. Optou-se por usar este compilador devido às ferramentas para comunicação serial e a transparência do código escrito.

2.3.2 – Metodologia de desenvolvimento

A forma de programar um sistema embarcado é diferente de programar um computador de uso geral. Na programação de um computador têm-se um fim de execução do programa, em um sistema embarcado não.

Em um sistema embarcado existem basicamente duas etapas em sua programação: a inicialização e o laço principal.

Na inicialização são feitos todos os tipos de configurações e inicializações de variáveis e periféricos. Já no laço principal é feita a execução de rotinas que só cessará quando o dispositivo for desligado, ou seja, um laço é infinito.

Um firmware eficiente é um firmware desenvolvido com um único laço (sem for ou while): o laço principal. Todos os outros laços devem ser feitos com estruturas de seleção (if-else switch-case) dentro do laço principal. Deve-se passar pelo início do laço o mais freqüente possível para que se possa realizar comandos de varredura ou testes que dependem de respostas rápidas o mais rápido possível sem deixar o microcontrolador esperando estes resultados. O microcontrolador deve saber qual instrução executar em uma passagem pelo laço com base na instrução executada na ultima passagem pelo laço e nas variáveis de controle que podem direcionar para a execução de uma instrução específica.

Um código eficiente tem o menor número de delays possível. Ao invés de usar delays, pode-se ter um timer rodando paralelo ao programa que dita quando um led deve piscar, por exemplo.

Page 7: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

2.4 – Software

O software desenvolvido não acompanha o kit didático tendo em vista que o objetivo do kit é justamente possibilitar o usuário desenvolver um software para o sistema de controle. Entretanto, criou-se um software exemplo, para mostrar o funcionamento do kit.

2.4.1 - Interface com a placa

A interface com a placa é feita com a porta serial RS232 do microcomputador. O programa pode ser desenvolvido em alguma plataforma de desenvolvimento Delphi, C++ Builder, Visual Basic, Visual Studio, Eclipse ou em compiladores convencionais. Cabe ao desenvolvedor de compiladores convencionais desenvolverem o código para acessar a porta serial do microcomputador.

A placa desenvolvida é uma placa escrava, ou seja, ela só faz o que mandam fazer e só responde o que perguntam. Ocorre uma exceção quando a temperatura do resistor ultrapassa 105 º C, nesta situação a placa encarrega-se de rebaixar a temperatura do resistor e envia um alerta para o microcomputador.

Existem basicamente 13 comandos que a placa pode responder:

‘i’ Incrementar o PWM da ventoinha‘d’ Decrementar o PWM da ventoinha‘I’ Incrementar o PWM do resistor‘D’ Decrementar o PWM do resistor‘c’ Zerar o PWM da ventoinha‘C’ Põe o PWM da ventoinha no máximo‘l’ Zerar o PWM do resistor‘L’ Põe o PWM do resistor no máximo‘t’ Pede o envio do valor da temperatura‘r’ Pede o envio do valor da rotação‘p’ // valor do PWM da ventoinha‘P’ // valor do PWM do resistor‘h’ Reconhecimento da placa

Da mesma forma, a placa responde o caracter enviado acompanhado de um

numero inteiro de 5 casas preenchidas com 0.Ex: recebe ‘t’ envia “t00048”

Page 8: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

2.4.2 – Software de demonstração

Imagem do software de interface

O software foi desenvolvido na plataforma Delphi 7 da antiga Borland, hoje Embarcadero. Abaixo estão as descrições de cada componente da imagem.

O plano cartesiano, representado pelo componente “TChart” no canto inferior direito mostra a variação de temperatura em função do tempo do sistema.

O groupbox intitulado “Comunicação com a placa” indica o estado da porta COM do computador e se a placa foi reconhecida pelo sistema.

O radiogroup “Métodos de Controle” possui dois radiobuttons que permitem o usuário escolher se deseja que o sistema controle a placa ou se deseja fazer o controle manual dos parâmetros.

O groupbox “Interface” permite iniciar o teste e escrever qual é a temperatura desejada do sistema.

O radiogroup “Seleção do sistema” permite o usuário escolher se quer simular um forno controlado ou uma carga que deve ser resfriada. Em uma situação pode-se variar o pwm do resistor, na outra o do cooler.

O groupbox “PWM Controle” é habilitado apenas no controle manual e serve para o usuário definir o valor de pwm do resistor e pwm do cooler.

O groupbox “Informações do sistema” indica o estado do pwm do resistor, do cooler e a temperatura do resistor.

O checkbox “Salvar em arquivo”, se selecionado no início do teste guarda as informações em um arquivo de texto.

O botão sair serve para sair desligando todos os periféricos da placa antes.

Page 9: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

3 - Conclusão

Desenvolver um kit didático representa desenvolver uma ferramenta de aprendizado. Por este motivo torna-se muito mais trabalhoso pois deve-se prever todas as ações de uma pessoa que está em treinamento,é diferente de desenvolver um produto comum.

Ao mesmo tempo em que se deve dar liberdade para o sistema fazer o que a pessoa quiser, deve-se ter a segurança de monitorar o estado do sistema e entrar em alerta caso algo dê errado. Sem dúvidas, o desenvolvimento deste projeto trouxe conhecimentos não só do conteúdo que deveria ser visto em sala de aula, mas da área didática e da área de desenvolvimento de produto.

Page 10: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

Apêndice A – Diagrama esquemático da placa

Page 11: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

Apêndice B – Firmware do mircrocontrolador

//inclusão de bibliotecas#include <16F877A.h>

//configurações do dispositivo#device adc = 10 #fuses HS, WDT #use delay(clock = 4000000)#use rs232 (baud = 9600, xmit = PIN_C6, rcv=PIN_C7)

//Endereçamento de resgistradores

#byte PORTA = 0x05#byte PORTB = 0x06#byte PORTC = 0x07#byte PORTD = 0x08#byte PORTE = 0X09#byte TRISA = 0x85#byte TRISB = 0x86#byte TRISC = 0x87#byte TRISD = 0x88#byte TRISE = 0x89

#byte OPTION_REG = 0x81#byte CCPR1L = 0x15#byte CCPR1H = 0x16#byte CCP1CON = 0x17#byte CCPR2L = 0x1b#byte CCPR2H = 0x1c#byte CCP2CON = 0x1d

#bit RB0 = PORTB.0#bit RB4 = PORTB.4#bit RC1 = PORTC.1#bit RC2 = PORTC.2#bit T0CS = OPTION_REG.5#bit PSA = OPTION_REG.3#bit PS2 = OPTION_REG.2#bit PS1 = OPTION_REG.1#bit PS0 = OPTION_REG.0

#bit TRISC1 = TRISC.1#bit TRISB4 = TRISC.4

#define pwm_c_reg CCPR1L #define pwm_r_reg CCPR2L#define sentido_pino_led TRISB4

//Definições de pinos

Page 12: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

#define ft RB0#define led RB4

//Definições dos estados de máquina e valores constantes

#define EST_LE_TEMP 0#define EST_PRC_ERR 1

#define EST_PWMC_INC 'i'#define EST_PWMC_DEC 'd'#define EST_PWMR_INC 'I' #define EST_PWMR_DEC 'D'#define EST_PWMC_MIN 'c'#define EST_PWMC_MAX 'C'#define EST_PWMR_MIN 'l'#define EST_PWMR_MAX 'L'#define EST_ENV_TEMP 't'#define EST_ENV_ROT 'r'#define EST_ENV_PWMC 'p'#define EST_ENV_PWMR 'P'#define EST_HND_SHKN 'h'

#define TEMP_MAX 210 //para o valor real, dividir por 2#define TEMP_MIN 100

//variáveis globaisshort erro = 0;char buffer[8];unsigned int sm = 0,sma = 0, pwm_c = 0, pwm_r = 0;unsigned long int temp = 0, np = 0, rpm = 0;

//protótipos de subrotinasvoid inicializa();void processo();void config_ad();void config_pwm();void comunica();void config_io();void reset_wdt();void config_wdt();void le_temp();void config_timer1();void config_interrupts();void procura_erro();void init_signal();//interrupções

#INT_EXTvoid trata_ext0()

Page 13: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

{np++;}

#INT_TIMER1void trata_timer1(){static unsigned int cont = 0;

if(cont<20) { cont++; } else { //efetua o cálculo a cada 1 s cont = 0; rpm = np * 60; np = 0; if(erro) { sentido_pino_led = 1; //configura o pino do led como entrada led = !led; //coloca no buffer de saída o inverso do estado do buffer

de entrada sentido_pino_led = 0; //configura o pino como saída putc(‘a’); } }set_timer1(15536); //time out após 50 ms}

//mainvoid main() {inicializa(); while(1) { comunica(); processo(); reset_wdt(); }}

void inicializa(){config_wdt();config_io();init_signal();config_ad();

Page 14: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

config_pwm();config_timer1();config_interrupts();init_signal();}

void comunica(){ if(kbhit()) //se houver algo no buffer de recepção,executa { sma = sm; //armazena o valor do estado de máquina atual sm = getc(); //pula para o estado indicado pelo caracter recebido }}

void processo(){ switch(sm) { //estados de execução normal do programa

case EST_LE_TEMP: le_temp(); sm = EST_PRC_ERR; //pula para o estado "procura erro" break; case EST_PRC_ERR: procura_erro(); sm = EST_LE_TEMP; //pula para o estado "lê temperatura" break;

//estados de tratamento de interrupção

case EST_ENV_TEMP: sprintf(buffer,"t%5lu", temp); //imprime o valor medido de temperatura em uma string

puts(buffer); //envia a string pelo dispositivo de saída padrão, o periférico USART

sm = sma; //retorna para o estado anterior antes da "interrupção" break; case EST_ENV_ROT: sprintf(buffer,"r%5lu", rpm); puts(buffer); sm = sma; break; case EST_ENV_PWMC: pwm_c = pwm_c_reg; sprintf(buffer,"p%5u", pwm_c); puts(buffer); sm = sma; break;

Page 15: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

case EST_ENV_PWMR: pwm_r = pwm_r_reg; sprintf(buffer,"P%5u", pwm_r); puts(buffer); sm = sma; break; case EST_PWMC_INC: if(pwm_c<255) pwm_c++; pwm_c_reg = pwm_c; sm = sma; break; case EST_PWMC_DEC: if(pwm_c>0) pwm_c--; pwm_c_reg = pwm_c; sm = sma; break; case EST_PWMC_MIN: pwm_c = 0; pwm_c_reg = pwm_c; sm = sma; break; case EST_PWMC_MAX: pwm_c = 255; pwm_c_reg = pwm_c; sm = sma; break; case EST_PWMR_INC: if(pwm_r<255) pwm_r++; pwm_r_reg = pwm_r; sm = sma; break; case EST_PWMR_DEC: if(pwm_r>0) pwm_r--; pwm_r_reg = pwm_r; sm = sma; break; case EST_PWMR_MIN: pwm_r = 0; pwm_r_reg = pwm_r; sm = sma; break; case EST_PWMR_MAX: pwm_r = 255; pwm_r_reg = pwm_r; sm = sma; break;

Page 16: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

case EST_HND_SHKN: sprintf(buffer,"HS_OK"); //HANDSHAKING puts(buffer); sm = sma; break; default: sm = sma; //caso receba algum caracter inválido, retorna para o

estado de máquina anterior }

}

void config_ad() //configura o periférico adc{setup_ADC_ports(RA0_analog);setup_adc(ADC_CLOCK_INTERNAL);set_adc_channel(0);}

void config_pwm() //configura os dois módulos ccp como geradores de sinal pwm

{setup_timer_2(T2_DIV_BY_1,255,1);setup_ccp1(ccp_pwm);set_pwm1_duty(0);setup_ccp2(ccp_pwm);set_pwm2_duty(0);}

void config_io() //configura a direção dos pinos(entrada ou saída){

TRISA = 0xff;TRISB = 0b11101111;TRISC = 0b11111001;TRISD = 0xff;TRISE = 0xff;pwm_c = 0;pwm_r = 0;led = 1;

}

void config_wdt() //configura o watch dog timer{PSA = 1; //preescaler para o watch dog timer não para o timer 0PS2 = 1; //preescaler de 1:128 PS1 = 1;

Page 17: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

PS0 = 1;}

void reset_wdt() //chama uma instrução assembly para resetar o wdt{#asmCLRWDT#endasm}

void le_temp() //realiza a leitura do pino analógico ligado ao sensor de temperatura

{ //soma as leituras a cada passada. Quando passa pela oitava vez //obtêm a média dos valores e atualiza o variável global que indica a

//temperatura

static int cont = 0;static unsigned long int buffer_ad = 0;

if(cont<8) //lê e soma 8 amostras { buffer_ad = buffer_ad + read_adc(); cont++; } else { cont = 0; temp = buffer_ad >> 3; //divide por 8 buffer_ad = 0; }}

void config_timer1() //configura o timer 1 {setup_timer_1(T1_INTERNAL | T1_DIV_BY_1); // clock interno de 1 MHzset_timer1(15536); //time out após 50 ms}

void config_interrupts() //configura as fontes de interrupção{enable_interrupts(GLOBAL);enable_interrupts(INT_EXT);enable_interrupts(INT_TIMER1);ext_int_edge(0,H_TO_L);}

void procura_erro() //verifica se a temperatura do resistor está muito alta{ //e entra em estado de alerta caso estejastatic short flag = 0;

if(temp>TEMP_MAX)

Page 18: Relatório de Projeto - Desenvolvimento de um kit didático para disciplinas de Instrumentação e Sistemas de Controle

{ pwm_r = 0; pwm_r_reg = pwm_r; pwm_c = 255; pwm_c_reg = pwm_c; erro = 1; flag = 1; } if(temp<TEMP_MIN && flag) { erro = 0; pwm_c = 0; pwm_c_reg = pwm_c; led = 1; flag = 0; }}

void init_signal() //piscada inicial do led{ led = 0; delay_ms(200); led = 1; delay_ms(200);}