Termostato multicanal no arduino uno. Ventilador usando Arduino, que depende da temperatura. Componentes de um controlador PID

O diagrama esquemático de um termostato caseiro de quatro canais com display de temperatura, construído com base no Arduino UNO, LM325 e com display 1602A, permite controlar quatro cargas separadas.

Descrevemos aqui uma versão atualizada do aparelho, que, além de medir e indicar passivamente a temperatura, também pode controlar quatro aquecedores para manter uma temperatura definida em quatro locais diferentes, onde na primeira versão era possível apenas a medição de temperatura.

O funcionamento de um termômetro de quatro canais e seu programa é descrito detalhadamente no artigo anterior (L.1), portanto aqui falaremos apenas sobre mudanças para implementar o funcionamento de um termostato de quatro canais.

Diagrama esquemático

O diagrama esquemático é mostrado na Fig.

Arroz. 1. Diagrama esquemático de um termostato em Arduino UNO, LM325 com display 1602A.

Ao contrário do primeiro circuito (L.1), aqui existem quatro interruptores de transistor carregados nos enrolamentos do relé K1-K4, que controlam quatro dispositivos de aquecimento diferentes (H1-H4). Os comandos de controle para essas teclas vêm de quatro portas digitais D9-D12 da placa ARDUINO UNO.

Programa

O programa é mostrado na Tabela 1.

Tabela 1.

A primeira diferença é que são fornecidas portas para controlar os aquecedores. Estas são as portas D9-D12, elas são especificadas aqui:

pinMode(12, SAÍDA);

pinMode(11, SAÍDA);

pinMode(10, SAÍDA);

pinMode(9, SAÍDA);

Você pode selecionar outras portas digitais livres; depois de conectar o indicador, ainda restam D8 e D13. Mas o autor escolheu estes: D9, D10, D11, D12. A segunda diferença é que a função if comparador é usada para controlar os aquecedores. Nas linhas:

se(temperatura< -15)digitalWrite(12, HIGH);

if(temperatura > -15)digitalWrite(12, LOW);

if(tempo< 1)digitalWrite(11, HIGH);

if(tempi > ​​1)digitalWrite(11, LOW);

se(temp2< 20)digitalWrite(10, HIGH);

if(temp2 > 20)digitalWrite(10, LOW);

se(temp3< 10)digitalWrite(9, HIGH);

if(temp3 > 10)digitalWrite(9, LOW);

Estas linhas indicam em que temperatura, qual nível lógico deve estar na porta correspondente. Por exemplo, se a temperatura do primeiro sensor (T1) estiver abaixo de -15°C, haverá uma lógica na porta D12. Quando a temperatura do segundo sensor (T2) estiver abaixo de 1°C, haverá um sensor lógico na porta D11.

Quando a temperatura do terceiro sensor (TZ) estiver abaixo de 20°C, haverá um sensor lógico na porta D10. Quando a temperatura do quarto sensor (T4) estiver abaixo de 10°C, haverá um sensor lógico na porta D9. Claro, você pode definir temperaturas completamente diferentes - qualquer uma que seja necessária para a aplicação específica deste dispositivo.

Além disso, já no dispositivo finalizado, eles podem ser facilmente alterados se necessário. Para fazer isso, você precisa conectar um computador pessoal à porta USB da placa ARDUINO UNO e carregar um programa com outros dados sobre limites de temperatura. Em princípio, para isso você pode fornecer um conector USB no corpo do dispositivo acabado.

Normalmente, em um termostato “típico” existe um circuito de histerese, ou seja, um circuito que cria uma diferença entre a temperatura em que o aquecedor liga e a temperatura em que ele desliga. Isto é necessário para que o aquecedor não ligue/desligue com muita frequência. Isto é especialmente importante se o aquecedor for controlado por um relé eletromagnético.

Porque os contatos do relé não são projetados para este modo de operação e podem falhar rapidamente devido à queima devido a faíscas. Mas a histerese introduz um erro na operação do termostato. Aqui foi decidido não criar histerese, mas para garantir que os contatos do relé não mudem com muita frequência, simplesmente desacelere o funcionamento do dispositivo. Para fazer isso na linha:

O tempo de exibição foi aumentado para três segundos. Como resultado, as medições são repetidas com um período de três segundos e, em qualquer caso, o relé não pode comutar mais de uma vez a cada três segundos.

Detalhes

Quaisquer relés eletromagnéticos K1-K4 podem ser usados ​​com enrolamentos de 12V e contatos potentes o suficiente para controlar aquecedores específicos.

Os estágios de saída podem ser feitos utilizando outros circuitos, por exemplo, utilizando optomistores. Neste caso, os LEDs dos optosimadores ou os chamados “relés de estado sólido” são conectados às portas correspondentes da placa ARDUINO UNO através de resistores limitadores de corrente.

Karavkin V.RK-08-17.

Literatura: 1. Karavkin V. - Termômetro de quatro canais em ARDUINO UNO, RK-06-17.

A principal tarefa do controlador do refrigerador é manter a temperatura definida na câmara. O controlador de temperatura fará isso alterando a energia elétrica no módulo Peltier.

Na lição anterior desenvolvemos um regulador de potência. A conexão entre os reguladores de potência e temperatura é assim.

  • O controlador de temperatura recebe a temperatura medida, compara-a com a temperatura definida e calcula o valor de potência definido para o controlador de potência.
  • O regulador de potência gera PWM correspondente à potência especificada.

Construímos o regulador de potência de acordo com a lei de regulação integral. Para estabilizar a temperatura, usaremos um algoritmo de controle mais complexo - um controlador proporcional-integral-derivativo (PID).

Controlador PID.

Na lição anterior falei detalhadamente sobre . Ele enfatizou suas vantagens e desvantagens.

Um regulador que opera com este princípio possui alta precisão. Os restantes critérios para a qualidade da regulação – velocidade e estabilidade – não estão à altura.

Para alcançar alto desempenho para todos os critérios, é necessário utilizar um regulador que combine diferentes leis regulatórias.

O controlador proporcional-integral-derivativo (PID) é exatamente um desses dispositivos. Ele gera um sinal de saída que é a soma de três componentes com diferentes características de transferência. Graças a isso, o controlador PID fornece alta qualidade regulamentação e permite otimizar a gestão de acordo com critérios individuais.

Os seguintes estão envolvidos na geração do sinal de saída do controlador PID:

  • Componente proporcional– o valor é proporcional ao erro de incompatibilidade (a diferença entre os valores especificados e reais do parâmetro controlado).
  • Componente de integração– integral de erro de incompatibilidade.
  • Componente diferenciadora– derivada do erro de incompatibilidade.

A forma matemática de escrever a lei do controlador PID é:

o(t) = P + I + D = K p e(t) + K i ∫e(t)dt + K d de(t)/dt

  • o(t) – sinal de saída;
  • P – componente proporcional;
  • I – componente integrador;
  • D – componente diferenciador;
  • Kp, Ki, Kd – coeficientes de ligações proporcionais, integradoras e diferenciadoras;
  • e(t) – erro de incompatibilidade.

Na forma esquemática, o controlador PID pode ser representado da seguinte forma.

O diagrama de blocos do regulador de tensão PID U é assim.

  • A tensão medida Ureal(t) é subtraída do Uset fornecido.
  • O erro de incompatibilidade resultante e(t) é alimentado nos links proporcionais, integradores e diferenciadores.
  • Como resultado da soma dos componentes, obtém-se uma ação de controle o(t), que é aplicada ao elemento de controle.

Ao implementar um controlador PID em software, os cálculos do sinal de saída ocorrem em intervalos regulares. Aqueles. O controlador é discreto no tempo. Portanto, usarei ainda expressões: estado anterior do sinal, valor anterior, etc. Estamos falando sobre o estado do sistema no ponto de amostragem anterior.

Componentes de um controlador PID.

De novo. O sinal de saída do controlador PID é a soma de três componentes:

  • proporcional;
  • integrando;
  • diferenciando.

Componente proporcional.

P(t) = K p * e(t)

Não tem memória, ou seja, o valor do sinal de saída não depende do estado anterior do sistema. Simplesmente o seguinte erro, multiplicado por um fator, é transmitido à saída. O sinal de saída compensa o desvio do parâmetro controlado. Quanto maior o erro de incompatibilidade, maior será o sinal. Se o erro for 0, o sinal de saída também será 0.

O componente proporcional não é capaz de compensar completamente o erro. Isso pode ser visto na fórmula. O sinal de saída é Kp vezes o erro. Se o erro de incompatibilidade for 0, o sinal de saída do controlador será 0. E então não há nada com que compensar.

Portanto, em controladores proporcionais sempre existe o chamado erro estático. Pode ser reduzido aumentando o coeficiente Kp, mas isso pode levar a uma diminuição da estabilidade do sistema e até mesmo a auto-oscilações.

As desvantagens dos controladores proporcionais incluem:

  • presença de erro de regulação estática;
  • baixa estabilidade com coeficiente crescente.

Existe uma vantagem significativa:

  • Regulação de alta velocidade. A resposta de um controlador proporcional a um erro seguinte é limitada apenas pelo tempo de amostragem do sistema.

Os reguladores que operam apenas de acordo com a lei proporcional raramente são utilizados.

A principal tarefa do componente proporcional no controlador PID é aumentar o desempenho.

Componente integrador.

Eu(t) = K i ∫e(t)dt

Proporcional à integral do erro de incompatibilidade. Levando em consideração a discrição de tempo do controlador, podemos escrever isto:

Eu(t) = Eu(t -1) + Ki * e(t)

  • I(t-1) – valor de I no ponto de amostragem anterior.

O erro de incompatibilidade é multiplicado por um coeficiente e adicionado ao valor anterior do link integrador. Aqueles. o sinal de saída se acumula o tempo todo e aumenta seu impacto no objeto ao longo do tempo. Assim, o erro de incompatibilidade é totalmente compensado mesmo para pequenos valores do erro e do coeficiente Ki. Em estado estacionário, o sinal de saída do controlador é totalmente fornecido pelo componente integrador.

As desvantagens do regulador integral incluem:

  • baixa performance;
  • estabilidade medíocre.

Dignidade:

  • Capacidade de compensar totalmente erros de incompatibilidade com qualquer ganho.

Na prática, controladores integradores (apenas componentes integradores) e controladores integradores proporcionais (componentes integradores e proporcionais) são frequentemente usados.

A principal tarefa do link integrador no controlador PID é compensar o erro estático e garantir alta precisão de controle.

Componente diferenciadora.

D(t) = K d de(t)/dt

Proporcional à taxa de variação do erro seguinte. Uma espécie de indicador de aceleração do erro de incompatibilidade. O componente diferenciador prevê desvios do parâmetro controlado no futuro e neutraliza esse desvio. Via de regra, compensa atrasos na influência do regulador sobre o objeto e aumenta a estabilidade do sistema.

Levando em consideração a discrição temporal do controlador, o componente diferenciador pode ser calculado da seguinte forma:

D(t) = K d * (e(t) - e(t -1))

Ele mostra o quanto o valor do erro de incompatibilidade mudou em uma unidade de tempo da discrição do controlador.

Não existem reguladores constituídos por um único elo diferenciador.

A principal tarefa do link diferenciador no controlador PID é aumentar a estabilidade.

Configurando o controlador PID.

A qualidade do controle dos controladores PID depende em grande parte da seleção ideal dos coeficientes. Os coeficientes do controlador PID são determinados na prática num sistema com um objeto real por seleção. Existem diferentes métodos de configuração. Falarei apenas sobre princípios gerais.

A qualidade da regulação é avaliada pela resposta transitória do regulador. Aqueles. de acordo com o gráfico de mudanças no parâmetro controlado ao longo do tempo.

Aos pontos tradicionais da sequência de sintonia do controlador PID, acrescentaria que, antes de tudo, é necessário decidir quais critérios de qualidade de controle são preferíveis.

Na lição anterior, ao projetar um regulador de potência, estávamos interessados ​​principalmente em precisão e estabilidade. E até reduzimos artificialmente o desempenho. Alguns reguladores operam sob condições de ruído significativo e a estabilidade é mais importante para eles, enquanto outros exigem alto desempenho mesmo em detrimento da precisão. Os critérios de otimização podem variar. Em geral, os controladores PID são configurados para garantir que todos os critérios de qualidade de controle estejam em alto nível.

Os componentes do controlador PID são configurados separadamente.

  • Os links de integração e diferenciação são desligados e o coeficiente do link proporcional é selecionado. Se o controlador for de integração proporcional (não há link de diferenciação), então é alcançada uma completa ausência de oscilações na resposta transitória. Ao configurar o controlador para alta velocidade, as oscilações podem permanecer. O elo diferenciador tentará compensá-los.
  • O elo diferenciador está conectado. Seu coeficiente visa eliminar flutuações no parâmetro de controle. Se isso falhar, reduza o coeficiente proporcional.
  • Devido ao link de integração, o erro residual de incompatibilidade é removido.

O ajuste do controlador PID é de natureza iterativa. Aqueles. os pontos para a seleção dos coeficientes podem ser repetidos várias vezes até que um resultado aceitável seja alcançado.

Devido ao seu alto desempenho e versatilidade, os controladores PID são amplamente utilizados em sistemas de automação industrial.

Na próxima lição desenvolveremos um controlador de temperatura PID.

Ele compartilhará com você sua experiência na criação de um controlador inteligente de rotação de ventiladores, usando um sensor térmico, um display LCD e, claro, Arduino.

Há alguns meses li vários artigos sobre Arduino e fiquei muito interessado neste dispositivo, e logo decidi comprá-lo. Deve-se notar que estou longe da microeletrônica, então gostei da placa principalmente por sua relativa facilidade de uso. Tendo me envolvido com LEDs e sistemas “Hello world”, eu queria fazer algo prático e, ao mesmo tempo, me familiarizar mais com os recursos do Arduino. Tendo em conta o verão anormalmente quente de 2010, surgiu a ideia de montar um controlador de velocidade do cooler em função da temperatura com todas as características relacionadas exibidas no LCD. Espero que este esquema ou suas variações sejam úteis para alguém, por isso resolvi postar meus esboços.

Para este esquema precisaremos de:

  • Na verdade, o próprio tabuleiro Arduíno ou similar;
  • Tábua de pão para montagem de componentes de circuito;
  • Display WH1601A-NGG-CT com resistor de ajuste ligado 20 kOhm ou similar;
  • Resistores – 220 ohms, 10 kOhm, 4,7 kOhm;
  • Transistor bipolar SS8050D ou similar;
  • Sensor digital de temperatura DS18B20;
  • Diodo 1N4148 ou equivalente;
  • axial de três fios (12V), por exemplo - computador;
  • Conector Jack nutrição 2,1/5,5 mm.

O cooler do computador tem três fios, dois dos quais - vermelho (+12V) e preto (GND) são usados ​​para alimentação, e o terceiro (amarelo) é conectado a um tacômetro construído em um elemento Hall. Infelizmente, 5V da placa claramente não é suficiente para nós, mas 6 saídas digitais do Arduino podem operar no modo PWM (elas estão marcadas na própria placa com quadrados brancos ou as letras PWM), para que possamos regular o fornecimento do sinal da placa ao relé, que será responsável pela variação da tensão fornecida ao ventilador.

Receberemos informações sobre as revoluções do terceiro fio do tacômetro, utilizando um método modificado baseado na implementação interrompe, que para a maioria dos Arduinos pode chegar aos pinos digitais 2 (interrupção 0) e 3 (interrupção 1). Aliás, o Arduino Mega possui 4 pinos adicionais com capacidade de receber interrupções.

Agora você precisa posicionar sensores digitais de temperatura, cujos dados utilizaremos para regular a tensão fornecida à saída digital com PWM e, portanto, para “abrir” o canal de tensão do ventilador. Os sensores Dallas possuem sua própria biblioteca Arduino - DallasTemperature, que conectaremos posteriormente no esboço. A biblioteca deve ser descompactada no diretório arduino-0018/libraries/.

A última coisa que resta é conectar LCD, onde exibiremos todas as informações atuais sobre temperatura e velocidade do ventilador. Como usei a tela WH1601A para a construção, pode haver problemas conhecidos com a exibição de linhas. Para eliminá-los, utilizaremos a biblioteca LiquidCrystalRus, que também deve ser descompactada no diretório arduino-0018/libraries/.

//Conecta a biblioteca do sensor de temperatura#incluir //Conecta a biblioteca para LCD#incluir #define PowerPin 9 //pino para controlar a potência do ventilador#define HallSensor 2 //pino para sensor de velocidade do ventilador (interrupção)#define PinoTemperatura 7 //pino para sensor de temperatura LiquidCrystalRus lcd(12, 11, 10, 6, 5, 4, 3); //Conecta o LCD DallasTemperature tempSensor; int NbTopsFan, Calc, fadeValue; //variáveis ​​inteiras para cálculos temperamento flutuante; //variável real para armazenar a temperatura estrutura typedef( // Introduzir um novo tipo de variáveis ​​para fãs tipo de fã de char; não assinado int fandiv; )fanspec; //Array de novas variáveis ​​de tipo fanspec fanspace=((0,1),(1,2),(2,8)); //Variável responsável por selecionar o tipo de sensor do ventilador (1 – sensor Hall unipolar, 2 – sensor Hall bipolar) fã de char = 2; //Esta função será chamada toda vez que interrompermos vazio rpm() (NbTopsFan++;) //Função para calcular a tensão aplicada a um pino digital com PWM void temp() ( fadeValue = min(int(temper*7),255); // Multiplique a temperatura pelo coeficiente, // pega um inteiro do produto } // Porque o valor máximo do PWM é 255, então não faz sentido fornecer mais - pegue o mínimo de dois vazio configurar() (tempSensor.begin(TempPin); //Inicia o sensor de temperatura lcd.begin(16, 2); //Definir características do LCD lcd.setDRAMModel(LCD_DRAM_WH1601); //E tipo de exibição pinMode (HallSensor, INPUT ); //Configura o pin para receber interrupções anexarInterrupt(0, rpm, RISING); //Ligamos a interrupção número 0 à nossa função, e ela será calculada toda vez que o sinal mudar) vazio laço() (temperatura = tempSensor.getTemperature(); //Obtém a temperatura temperatura(); //Calcula a tensão fornecida ao PWM analogWrite(PowerPin, fadeValue); // Alimente-o NbTopsFan = 0; // Redefine a variável que contém as revoluções para zero atraso(1000); //Espere 1 segundo Calc = ((NbTopsFan * 60)/fanspace.fandiv); //Calcula a velocidade em 60 segundos dividida pelo multiplicador do ventilador lcd.print(Calc,DEC); //Exibe o valor calculado em formato decimal lcd.print("rpm - "); lcd.print(temperatura); //Temperatura de saída lcd.home(); )

Lendo a primeira parte do título, muitos de vocês provavelmente pensaram - outro termostato no sofrido Arduino. E... É verdade - sim, este é outro termostato para outra caldeira, outra casa, mas isso é apenas parcialmente verdade - no artigo não quero me concentrar no dispositivo em si - realmente existem muitos deles (artigos ). Claro que descreverei o termostato, mas gostaria de falar mais sobre como conectei o próprio microcontrolador à caldeira. Então, para quem estiver interessado, por favor...

Como tudo começou

Em primeiro lugar, quero dizer que não sou programador e nunca lidei com um microcontrolador real antes. Meu primeiro contato com o AVR MK (e com o MK em geral) foi no ensino médio, quando quis saber como essa coisa misteriosa realmente funciona. Li vários artigos e desde então só tenho fragmentos na memória que poderiam ser descritos em apenas duas palavras - DDR e PORT - e foi aí que meu conhecimento terminou. Depois houve a universidade, 5º ano - “Programação de microcontroladores” onde todos conhecemos o MSC51 em ambiente virtual. Já houve interrupções, cronômetros e tudo mais. Bem, com esse conhecimento cheguei ao problema. Terminemos com esta nota autobiográfica e passemos à parte mais interessante.

Então, na verdade, onde começou a criação do termostato? Depois de instalar um sistema de aquecimento autônomo com caldeira a gás, eu, como muitos, encontrei os problemas habituais - a temperatura na casa dependia muito do clima lá fora - geada - é frio no apartamento, é preciso aumentar a temperatura do refrigerante nas baterias, esquentou - pelo contrário. Essas danças com pandeiro não me agradaram muito, porque... o ajuste da caldeira foi complicado pelo fato de ela estar instalada atrás de uma porta, e a porta ser sustentada por um forno de micro-ondas, sobre o qual havia um monte de lixo. Bem, você entendeu - uma agulha em um ovo, um ovo em um pato, etc.

Este problema foi resolvido de forma muito simples - com um sensor OTC (Outside Temperature Compensation), que está ligado à caldeira e permite ajustar automaticamente a temperatura do líquido refrigerante em função da temperatura exterior. O problema parecia resolvido, mas a leitura do manual de serviço da caldeira (Ferolli Domiproject C24D) rapidamente atropelou minhas esperanças - a conexão de um sensor de temperatura externo não está prevista neste modelo. Todos? Todos. E agora, provavelmente, poderíamos ter terminado, mas no verão, durante uma tempestade, a placa de controle da caldeira ainda queima de uma forma que ainda não está clara para mim, e enquanto converso com o técnico (a placa estava reparado posteriormente), perguntei se era possível conectar o OTC à minha caldeira? Ele respondeu que eles se conectam usando termostatos externos. Isso ficou gravado na minha memória, mas eu realmente não me concentrei nisso até que o tempo frio chegou, e então o problema ainda era o mesmo.

Folheando as mesmas instruções de serviço, mas com o objetivo de ver como o termostato está conectado, percebi que o “regulador OpenTherm” está conectado aos mesmos terminais. Foi quando percebi - isso é ISSO! Uma pesquisa no Google por “OpenTherm Arduino” me decepcionou novamente – nada particularmente sensato. Tinha um monitor de mensagens, mas não é isso – não tenho nada para ouvir – só preciso de um termostato.

Vamos construir algo simples primeiro no Arduino. EM capítulo 12 já inventamos termostatos usando componentes puramente analógicos. Agora vamos ver como podemos envolver a tecnologia digital neste negócio útil.

Já mencionamos (ver capítulo 18), que os controladores AVR incluem um ADC multicanal de 10 bits. Nas placas Arduino, seus pinos são especialmente marcados como entradas analógicas (com a letra A com números de zero a cinco). Observe que eles também podem ser usados ​​como digitais normais com números de 14 a 18, e nós os usaremos nesta capacidade. Usaremos uma dessas entradas para medir a temperatura e controlaremos a conexão da carga a partir de uma das saídas digitais.

No total precisaremos de:

□ Placa Arduino Uno (qualquer outra serve);

Eu tenho um termistor como sensor de temperatura. Adequado, por exemplo, existente

□ “Amperke” В57164‑К 103‑J com resistência nominal de 10 kOhm a 25 °C - suas características são fornecidas em capítulo 13 como ilustração das propriedades dos termistores;

□ resistor variável 10 kOhm, resistor constante 620Ohm;

□ relé executivo – eletromagnético (necessariamente com chave de transistor amplificador, veja abaixo) ou estado sólido.

Módulos baseados em relés eletromagnéticos de 5 volts, especialmente adaptados para controle a partir de saídas Arduino, estão disponíveis para venda. Os próprios relés eletromagnéticos requerem uma corrente de controle bastante grande (e quanto mais potente o relé, mais potente ele é; apenas os relés reed de menor potência podem operar diretamente da lógica), portanto, todos esses módulos de relé devem ter uma chave amplificadora de transistor. Por exemplo, a Amperka vende esse módulo baseado no relé HLS8L‑DC5V‑S‑C. Se você não está satisfeito com um relé eletromagnético e busca extrema simplicidade do circuito, então você pode procurar relés de estado sólido - por exemplo, CX240D5R da Crydom ou similares com uma tensão operacional de 3-15 V são adequados Sua corrente de controle é de cerca de 15 mA a 5 volts na entrada, o que é aceitável para AVRs, porque sua entrada de controle pode ser conectada diretamente à saída digital do Arduino. É verdade que a uma tensão de 220 volts, o CX240D5R não pode comutar uma carga com potência superior a um quilowatt, mas para esta tarefa não precisamos de mais.

O circuito do termostato no Arduino Uno é mostrado na Fig. 21.2.

Arroz. 21.2. Diagrama do termostato ativado Arduino Uno

No diagrama, o enrolamento do relé K1 (com contatos normalmente abertos) é convencionalmente conectado diretamente à saída digital do Arduino - presume-se que este seja o relé de estado sólido mencionado anteriormente com as características necessárias, ou simplesmente a entrada de controle do uma placa de módulo de relé acabada. Para monitorar o estado do circuito, um LED é acionado simultaneamente com o aquecedor. O programa do termostato de acordo com este esquema é extremamente simples:

Os valores do resistor são ajustados ao termistor especificado B57164‑K com resistência nominal de 10 kOhm a 25 °C (103‑J). De acordo com o programa, o relé operará próximo ao valor de saída ADC de 500. Este é aproximadamente o meio da faixa de 10 bits (toda a escala tem 1024 gradações), ou seja, este valor será definido quando o superior e inferior as resistências são aproximadamente iguais em relação à entrada AO (a tensão nesta entrada será então de aproximadamente 2,5 volts).

Observe que ambas as funções se não termine com o de sempre outro. Para evitar trepidações, a histerese foi introduzida no programa: o relé liga quando o valor do código excede 510 e desliga quando cai para 490. Enquanto isso, ele manterá o estado anterior. Vinte unidades de código (o que está em capítulo 12 nós chamamos zona morta) correspondem a aproximadamente 10 milivolts, ou seja, a histerese a uma temperatura na faixa de 30 a 40 graus será ligeiramente inferior a um décimo de grau (verifique você mesmo usando a Tabela 13.1 de capítulo 13).

Ajustar a temperatura de resposta usando o resistor R2 com esses parâmetros é possível na faixa de aproximadamente 22 a 96 °C. É claro que na prática não é necessária uma faixa de ajuste tão ampla, por isso é aconselhável reduzir o valor R2. O valor de R1 é selecionado de forma que R1 e o valor nominal de R2 somam a resistência do termistor no valor mais baixo da faixa de temperatura desejada (de acordo com a Tabela 13.1). Para um ajuste mais preciso, você pode calibrar e alterar os valores limite no programa medindo a temperatura estabelecida com um termômetro comum.

Se você utilizar outros sensores neste circuito, não se esqueça do sinal do coeficiente de temperatura. Um diodo ou transistor comum em conexão de diodo (como em circuitos de capítulo 13) também possuem inclinação negativa da característica, portanto para eles no programa você só terá que alterar os valores numéricos do limite de resposta. Mas sensores semicondutores como o TMP35 (ver. capítulo 13) ou simplesmente termômetros de resistência metálica (como no projeto feito de capítulo 17) possuem coeficiente de temperatura positivo, portanto as condições de operação deverão ser invertidas. E não apenas mudar “mais” para “menos” e vice-versa, mas também alterar a relação dos limites de histerese - na nova situação, o aquecedor terá que ligar se o valor for menor que o limite menor, e ligar desligado se for maior que o maior.


Principal