Título: Controle de Temperatura Enviado por: juloliveira em 19 de Fevereiro de 2015, as 17:01:26 Ando pensando em como controlar com microcontroladores uma resistência de aquecimento, tipo de um forno elétrico.
Para somar nas minhas pesquisas, esse controle penso em fazer com PID com alguns sensores de temperatura. Pesquisando encontrei algumas opções: TRIAC - A solução que li o projetista usou um circuito para detectar a passagem da AC pelo zero para assim consolar a potência do TRIAC http://automatobr.blogspot.com.br/2013/05/controle-de-potencia-em-corrente.html SSR - Parece simples, MOSFET/PWM - Nesse caso, imagino que a alimentação da resistência teria que ser DC, no caso se for um forno, a alimentação seria 110V. Quais outras opções existem e quais vocês acham melhores. Das que citei, o que acham? Abração Título: Re: Controle de Temperatura Enviado por: xformer em 19 de Fevereiro de 2015, as 17:58:30 Você está se preocupando com os atuadores, mas e os sensores ? Ou nessa parte já está resolvido e dominado ?
Título: Re: Controle de Temperatura Enviado por: juloliveira em 19 de Fevereiro de 2015, as 18:03:32 Pensei que não seria meu maior problema já que posso usar um LM35 ou algum componente semelhante.
Título: Re: Controle de Temperatura Enviado por: xformer em 19 de Fevereiro de 2015, as 18:10:35 Se for pra uma chocadeira ou aquário, ou coisas com temperatura não muito alta (menos de 100°C) o LM35 e afins serve. Mas se for um forno, aí tem que usar outra coisa (termopar, termoresistência, etc), e a coisa complica.
Título: Re: Controle de Temperatura Enviado por: juloliveira em 19 de Fevereiro de 2015, as 18:13:35 Minha ideia é para fazer a cura das minhas pcb, ou seja, coisa de 70 graus.
Título: Re: Controle de Temperatura Enviado por: xformer em 19 de Fevereiro de 2015, as 18:31:10 Ah, é uma "chocadeira" de placas ! :D É que lá em cima você falou em forno.
Eu faria assim, pra não complicar: - Usaria resistores de potência de fio alimentado por tensão PWM e chaveados por MOSFETs, para fazer o aquecimento. Isso é muito mais fácil de controlar do que os TRIACs, pois não precisa ficar monitorando a passagem por zero da tensão AC da rede, além de ser mais perigoso usar AC da rede. Com PWM pode usar até 12Vdc, já que a potência para esquentar as placas não será elevada. - Os microcontroladores em geral já tem módulos controladores PWM com alta resolução, o que permitirá um controle melhor e preciso do aquecedores. - Para essa aplicação, o LM35 é perfeito (eu sugiro o MCP9700A da Microchip), pois ele fornece uma tensão proporcional e linear de acordo com a temperatura. O microcontrolador apenas lê a tensão (pode amplificar) enviada pelo sensor e liga o PWM de acordo com o necessário. Título: Re: Controle de Temperatura Enviado por: plautz em 19 de Fevereiro de 2015, as 19:20:18 Se o intuito também é fazer a cura da máscara de solda o LM35 não serve.
Sensores para mais de 100 graus é muito difícil de achar ou são caros demais. Título: Re: Controle de Temperatura Enviado por: daniellp em 19 de Fevereiro de 2015, as 19:20:57 Há um tempo eu montei um negócio assim, com PIC16F628. Mas o acionamento da resistência era por relé. O sensor de temperatura usei um DS18B20 da Dallas, que é digital e extremamente preciso. O preço é bem razoável e não precisa ficar se preocupando com as interferências nas leituras analógicas. Como tua aplicação não é tão crítica, além do que a temperatura é uma grandeza com grande histerese acho que o acionamento com relé deve resolver.
Daniel. Título: Re: Controle de Temperatura Enviado por: juloliveira em 19 de Fevereiro de 2015, as 19:50:25 Se o intuito também é fazer a cura da máscara de solda o LM35 não serve. Sensores para mais de 100 graus é muito difícil de achar ou são caros demais. Plautz, A máscara de solda que eu tenho indica uma segunda cura à 90 graus ----- É que lá em cima você falou em forno. É que estou pensando em comprar um forninho mesmo, tem uns no ML por uns R$ 40,00, por isso pensei num SSR Título: Re: Controle de Temperatura Enviado por: Ledod em 19 de Fevereiro de 2015, as 20:15:36 Juloliveira
Eu vi algo sobre controle PID e me lembrei do meu querido professor de controle, Barbosa (que acrescentávamos um caloroso "t" entre uma certa consoante e vogal) e seu exemplo didático do forno de recozer aço. Na sua aplicação, creio que um controle proporcional dara conta muito bem. O processo de aquecimento possui um tempo consideravel e baixo overshoot, alem de não ser uma aplicacao critica. Acredito que não ira exigir um compensador integral (para diminuir o erro de estado estacionario) ou um derivativo ( para antecipar a resposta transitória do sistema). Um proporcional, com o ganho ajustado, ou mesmo um controle "bang bang" já da conta! Voltando ao professor..... Já se fosse um forno de recozer aço que fica dias ou semanas, ai acho que uma modelagem mais profunda seria necessária... ABCDEFGHIJKLMNOPQRSTUVWXYZ Um abraço! Eduardo ----- Sobre os sensores, existem alguns termistores NTC e PTC que aguentam temperaturas mais elevadas, mas você terá que linearizar a escala (que são estritamente exponenciais) ou aplicar o controle proporcional em uma pequena região linearizada da escala. Claro, os circuitos também deverão converter leitura de resistência em tensão do modo correto para aplicar no ADC... Título: Re: Controle de Temperatura Enviado por: juloliveira em 19 de Fevereiro de 2015, as 20:24:16 Ah, com certeza, acho que até um On/Off cabe num caso simples desses. Fazer com PID é só pra visualizar o comportamento mesmo :D
Ah, uma dúvida: O resultado de um PID, ou mesmo apenas da parte proporcional é apenas um número real. Como, no caso de usar um MOSFET chaveado por PWM, como fazer esse resultado do PID um parâmetro para o PWM? Título: Re: Controle de Temperatura Enviado por: xformer em 19 de Fevereiro de 2015, as 20:32:56 Se você quiser usar um SSR (solid state relay = relé de estado sólido, usar siglas não muito comuns não ajuda muita gente a compreender o problema e poder ajudá-lo), se ele for AC, cai no mesmo problema do TRIAC, pois o relé tem um TRIAC. Se for DC, é um MOSFET.
O problema do TRIAC e SSR-AC é que você vai ter que determinar o momento do disparo (o ângulo a partir da passagem por zero). E a potência do aquecedor vai depender da tensão eficaz entregue à resistência (e por sua vez a potência, que é proporcional ao quadrado da tensão). Ocorre que se você quer usar controle PID, além de ficar fazendo as contas para determinar a quantidade de potência entregue, ainda vai ter que ficar calculando quanto de tensão eficaz precisa e o ângulo de disparo (não é linear, mas a área da senóide a partir daquele ângulo de disparo, em que ocorre a condução do TRIAC. A não ser que use tabela, o cálculo é de integral definida. Outra opção é usar acionamento integral do TRIAC ou SSR, e ao invés de cortar a senóide em todos os ciclos, usar condução de ciclos inteiros durante um período e corte em outros, de forma a na média obter a potência desejada. Isso elimina a introdução de ruídos na rede, mas ainda exige a monitoração da passagem por zero. O uso de relé simples (ligado ou desligado) não permite o uso do controle PID como você deseja. Leia os parágrafos seguintes e vai entender porquê. Citar Ah, uma dúvida: O resultado de um PID, ou mesmo apenas da parte proporcional é apenas um número real. Como, no caso de usar um MOSFET chaveado por PWM, como fazer esse resultado do PID um parâmetro para o PWM? Com o acionamento PWM, o MOSFET funciona como chave liga-desliga em alta velocidade, onde o tempo de ligado (duty cycle) pode variar de 0 a 100% em vários passos. Desligado, o MOSFET fornece 0% da potência, se estiver com duty cycle = 100%, a potência será máxima (100%). Se o duty cycle for 50%, a potência será 25%. Se o duty cycle for 70%, a potência será perto de 50% (49%). Ou seja o seu controle de potência apenas depende do duty cycle usado. Assim, para fazer o aquecimento, de início se começa com 100% de potência, que pode se manter até se atingir a temperatura desejada (set point) e desligar para 0% (e aí fica ligando e desligando periodicamente = relé), ou à medida que se vai chegando perto da temperatura desejada, pode-se ir diminuindo gradualmente a potência entregue de acordo com o que falta para o set point (100%, 99%, 98%, etc) e quando atingir o set point se manter o mesmo duty cycle continuamente (a potência que mantém constante a temperatura, atingindo o equilíbrio com o que se perde para o ambiente), fazendo assim o controle PID (ou só PI). O duro é achar os parâmetros para esse controle, pois vai depender de uma série de fatores: o sistema tem inércia térmica, o tamanho da estufa e as perdas dela, a velocidade com que se quer atingir o set point, a variação aceitável em torno do set point, etc. Muito vai ter que ser empírico (principalmente quanto de potência vai ser necessária, distribuição das resistências para dar uniformidade, o ponto de posicionamento do sensor, etc). Título: Re: Controle de Temperatura Enviado por: Ledod em 19 de Fevereiro de 2015, as 21:17:51 Isso e simples!
O PWM e setado a partir de uma porcentagem do ciclo ativo (ou pelos contadores/acumuladores dos timers, depende do microcontrolador), ou seja de 0 a 100%. Digamos que você já tenha levantado a curva de transferência entre a porcentagem do PWM com a temperatura interna estável do forno ( por ex 50% - 80°c, 100% - 135°c, 0% - 26°c, tempo ambiente). Essa curva provavelmente sera uma reta pois as perdas de calor para o ambiente são proporcionais as diferenças de temperatura interna e externa. Com isso você já terá o k em °C/% que seria a função de transferência do seu forno. O resto e encontrar outros k's que relacionam as outras grandezas, como exemplo um ADC de 12 bits que vai de 0 a 4095, que representa de 0 a 3v3, que representa para um sensor uma temperatura de 25° a 150°, que representa um certo nivel de PWM. Entendeu? Você "cascateia" as unidades ate relacionar todas as grandezas presentes no sistema. No fim vira um "numero magico" com uma unidade estranha que quando multiplicado, fornece a unidade que você precisa. No caso do seu controlador você poderá fixar a unidade de calculo como ex em graus celsius, % de PWM, uma escala genérica de 0 a 1000 ou 0 a 4095 ou utilizar o tamanho de um tipo de dado do seu microcontrolador (um char ou int por ex), para você ter a melhor resolução possível nos cálculos internos de controle. Basicamente o sinal de controle de um controlador proporcional é o sinal de entrada (set point) menos a saída (grandeza controlada) multiplicado por um ganho. Como na física, você não pode misturar unidades (graus celsius com leitura do ad e PWM). Mas você pode multiplicar esses valores por k's que fornecem a transferência (sempre não lineares ;) mas você tenta lineariza-los ou encontrar uma região linear do sensor/atuador). A malha fechada e uma simples conta de subtração. O complicado e encontrar esses k's... Hehe Um abraco! Eduardo Título: Re: Controle de Temperatura Enviado por: xformer em 19 de Fevereiro de 2015, as 21:35:14 Mais ou menos simples.
Tomemos um resumo do blog que o Juliano citou: Citar Controle Proporcional: calcula o MV (variável de manipulação = potência) levando em conta a distância entre o set point e o valor da variável PV (variável de processo = temperatura) em um determinado instante. Controle Integral: calcula o MV (potência) levando em conta o tempo em que o sistema fica distante do set point (SP). Controle Derivativo: calcula o MV (potência) levando em conta a taxa de variação (velocidade com que varia, ou derivada) do PV (temperatura). Ou seja, não é só definir um duty cycle que corresponda a uma determinada potência que mantenha a temperatura constante. Se o controle é PID, precisa se determinar qual a potência de partida (100% vai chegar mais rápido do que 50%, 25% talvez nunca chegue), qual a taxa de diminuição da potência em função da diminuição da diferença entre a temperatura desejada e a atual, se a temperatura do set point está sendo alcançada muito rapidamente ou lentamente (altera-se também a taxa de variação da potência ou mesmo o novo ponto de partida). Título: Re: Controle de Temperatura Enviado por: Matec em 19 de Fevereiro de 2015, as 21:38:19 Do modo que está esse tópico, o que eu vou dizer vai parecer antigo. (tongue
Mas há muito tempo atraz eu trabalhava com manutenção de equipamentos de laboratório, e muitas estufas, banho-marias e esterilizadoras funcionavam com controle de temperatura baseada num CI, que era o CA3059 http://www.classiccmp.org/rtellason/chipdata/ca3059.pdf (http://www.classiccmp.org/rtellason/chipdata/ca3059.pdf) Esse CI é um Zero Voltage Switch que comanda um triac. O sensor é um ntc e o circuito é bem simples (tão simples que quando não tinha CIs no mercado eu fazia o circuito inteiro com componentes discretos). Funciona muito bem para temperaturas até 100°C. Tem os mesmos problemas que outros controladores, quando se vai projetar um equipamento: O duro é achar os parâmetros para esse controle, pois vai depender de uma série de fatores: o sistema tem inércia térmica, o tamanho da estufa e as perdas dela, a velocidade com que se quer atingir o set point, a variação aceitável em torno do set point, etc. Muito vai ter que ser empírico (principalmente quanto de potência vai ser necessária, distribuição das resistências para dar uniformidade, o ponto de posicionamento do sensor, etc). A calibragem sera manual. e a precisão depende da paciência do montador. Outra coisa. Em estufas com controle de temperatura mais preciso, é necessária a circulação forçada do ar, para evitar "pontos quentes". Isso vale para qualquer tecnologia de controle. Abs :tup Título: Re: Controle de Temperatura Enviado por: xformer em 19 de Fevereiro de 2015, as 21:44:52 Acho que não rola ar em movimento na estufa do Juliano, senão pode encher de poeira nas tintas das placas.
Título: Re: Controle de Temperatura Enviado por: juloliveira em 19 de Fevereiro de 2015, as 21:51:05 É... eu penso em usar uns 3 sensores de temperatura para ter uma média melhor de temperatura.
Título: Re: Controle de Temperatura Enviado por: Ledod em 19 de Fevereiro de 2015, as 21:54:13 Exato, esse e só o modelamento do forno, considerando que as paredes tenham uma resistência térmica constante na faixa de temperatura.
Ou seja, PWM vira potencia que, quando considerada uma resistência térmica constante, vira uma temperatura estável. O controle agora e ajustar o set point para que a entrada ( eu quero 50 ° celsius) seja igual a saída (50 °celsius). Quando isto for verdade, então o controlador deixa de atuar (esforco de controle e igual a zero). Para um controlador proporcional com ganho unitário, ele nunca chegará a ter os 50 graus na saída devido ao erro de estado eatacionario, a menos que se aumente o ganho ou insira um controle integral. No caso de aumentarmos o ganho, aumentamos também a velocidade de resposta, porém, também o overshoot. No caso do forninho a inercia térmica e "muito alta" quando ligamos o PWM no maximo, ele não se aquece instantaneamente e o overshoot as vezes pode ser considerado desprezível. O sistema e "pesado demais" para apresentar qualquer resposta oscilatória amortecida. Um abraço! Eduardo PS: estou digitando pelo celular, me desculpe por eventuais erros de português (se encontrar, pode corrigir) Título: Re: Controle de Temperatura Enviado por: juloliveira em 20 de Fevereiro de 2015, as 09:48:01 Desligado, o MOSFET fornece 0% da potência, se estiver com duty cycle = 100%, a potência será máxima (100%). Se o duty cycle for 50%, a potência será 25%. Se o duty cycle for 70%, a potência será perto de 50% (49%) Quase não consegui dormir tentando entender essa conta :'( Título: Re: Controle de Temperatura Enviado por: Matec em 20 de Fevereiro de 2015, as 10:13:29 Pode-se dizer que a potência é o Produto da Tensão média pela Corrente média: V(m)*I(m) = P
Quando você trabalha com Modulação de Pulsos, não só a corrente (média) diminui, mas também a tensão (média) No caso, no duty cycle de 0,71 (SQR 2 / 2) tanto a corrente como a tensão cairam nessa proporção , e a potência, que é o produto de ambos vai ficar a 50% do máximo. :) Título: Re: Controle de Temperatura Enviado por: xformer em 20 de Fevereiro de 2015, as 11:47:37 Isso, tem que lembrar duas coisas:
P = E2/R e que na modulação por largura de pulso (PWM) o que variamos é a porcentagem no TEMPO em que fornecemos TENSÃO e CORRENTE para a carga. Assim se deixamos ligado 1V por 70% do tempo (7ms em 10ms, 7s em 10s, 7us em 10us, 70ms em 100ms), é o mesmo (em termos de potência) que fornecer 0,7V continuamente a uma resistência. Ou como disse o Matec, haverá uma tensão média igual à porcentagem do PWM. (http://s12.postimg.cc/p8yv2pb59/image.jpg) (http://s28.postimg.cc/8j45v63il/image.jpg) (http://s23.postimg.cc/ez6jxcaqz/image.jpg) (http://s29.postimg.cc/5l23h85gn/image.jpg) Como a potência guarda uma relação quadrática com a tensão, então por tabela, a potência não é linear com o duty cycle do PWM (que só é linear com a tensão e corrente). (http://s9.postimg.cc/joh5eijdb/pot.jpg) Título: Re: Controle de Temperatura Enviado por: juloliveira em 20 de Fevereiro de 2015, as 12:03:15 Entendi, Interessante. :)
Título: Re: Controle de Temperatura Enviado por: Matec em 20 de Fevereiro de 2015, as 12:06:17 xformer
Suas respostas são tão boas, e os exemplos tão ilustrativos que me deixam estarrecido. ??? Não perco nenhuma postagem sua, cada uma é uma aula. (aplaus) (aplaus) (aplaus) (aplaus) (aplaus) Saber é uma coisa, saber ensinar é muito melhor. :tup Título: Re: Controle de Temperatura Enviado por: juloliveira em 20 de Fevereiro de 2015, as 12:35:08 Voltando com a ideia do estufa.
Se eu comprar esses forninhos, a resistência será 110V ou 220V. Aliás, comprar uma resistência para uma tensão menor acho que só vai atrapalhar, já que vou precisar de um transformador. Se eu aplicar a ideia com um MOSFET, preciso retificar. Ai complica, já que vou precisar de diodos parrudos além do que não estarei isolado da rede (já que não pretendo utilizar transformadores de alta potência). Li que usar Solid State Relay com um PWM não é uma boa ideia, então... Nesse ponto, penso que a ideia de utilizar um TRIAC, apesar da complexidade do circuito para detectar o zero da AC, ele é mais simples do lado da carga da resistência e completamente isolado da rede (o acoplamento AC fica apenas no TRIAC e no optoacoplador para achar o zero). Alguma ideia para o circuito com MOSFET ou não foge muito do que eu imaginei? Abração Título: Re: Controle de Temperatura Enviado por: xformer em 20 de Fevereiro de 2015, as 13:00:21 Já que vai comprar um forno elétrico doméstico:
http://www.americanas.com.br/produto/112289021/forno-eletrico-oster-10-litros?opn=YSMESP&epar=googlepla&WT.srch=1 Esse já tem o ajuste de temperatura e de temporizador. E não precisa mais se preocupar com o controle, sensor, triac, etc. E sua mulher (ou você, pra nao ser machista) ainda pode fazer torta, pão, pizza, etc :D Título: Re: Controle de Temperatura Enviado por: juloliveira em 20 de Fevereiro de 2015, as 13:09:49 Ah, mas ai perco toda parte divertida do DIY :D
E praticar o desenvolvimento faz parte dos planos também. Título: Re: Controle de Temperatura Enviado por: xformer em 20 de Fevereiro de 2015, as 13:14:46 Então desmonta o forno e faz a engenharia reversa. Ele deve ter o triac, o sensor, o controlador, tudo o que você planejava fazer e usar. :D
Título: Re: Controle de Temperatura Enviado por: Ledod em 21 de Fevereiro de 2015, as 11:24:24 Bem, eu desenhei um malha teórica e uma malha "prática" para desenvolver o sistema do forno:
(https://dl.dropboxusercontent.com/u/47409511/IMG_20150221_111535808-crop.jpg) A malha teórica não tem nada de mais, é a clássica realimentação e controle proporcional. O forno, poderia ser modelado como um sistema de primeira ordem 1/(s+a), para a temperatura, em relação a uma fonte de calor constante. Para um degrau unitário de tensão, a resposta seguiria uma exponencial, igual a carga de um capacitor em um circuito RC série: (http://higheredbcs.wiley.com/legacy/college/nise/0471794759/justask/img/graphics/vsnd04030_p2.gif) Ao aplicar a tensão máxima, alguma hora a temperatura estabilizaria em algum valor e seria possível, utilizando um cronômetro, encontrar a constante de tempo do seu forninho além do "ganho" presente (100v -> 250ºC = 2,5ºC/V) Isso apenas de forma "didática" para simular a resposta por algum software (matlab, simulink, ou o free scilab). A malha prática seria o circuito que seria necessário para implementar esse sistema. Temos um potenciômetro que varia o set point (0 a 3v3) sendo convertido esse valor no ADC1 de 12 bits. Pode-se perceber que os cálculos internos serão todos em relação a escala de 0 a 4096 por uma questão de comodidade, mas nada impede de você utilizar outras escalas. O Kadc = 4095/3,3 = 1240,9 passos/v O ganho do controlador é somente o "Kp" que será multiplicado pelo sinal de erro: Error_Signal = (ADC1_value - ADC2_value) * Kp; Esse sinal de erro deverá ser inserido na escala correta do PWM, que seria de 0 a 100%: PWM_Signal = 100*Error_Signal / 4095; Então o PWM seria acionado, gerando uma tensão (e não potência, atente para o fator quadrático já explicado pelo Renato!) que seria proporcional ao sinal de erro. Logicamente, você poderia aplicar o fator quadrático para transformar todo a malha em uma malha de potência, elevando o sinal de erro ao quadrado: Error_Signal_power = Error_Signal * Error_Signal; E então: PWM_Signal_power = 100*Error_Signal_power / 4095; Esse sinal seria aplicado ao forninho e teríamos a elevação da temperatura. Na parte de realimentação, eu exemplifiquei um sensor linear de 0 a 12v para uma temperatura de 0 a 240ºC. Ou seja, Ks = 0,05 V/ºC. Essa escala não poderia ser aplicada diretamente no microcontrolador (12v queimaria o ADC), então é necessário um divisor de tensão de 3,3/12 = 0,275. Então Kdiv = 0,275 V/V. O coeficiente teórico geral do sensor então seria: Kgeral = Ks*Kv Kgeral =0,1375 V/ºC Que é convertido novamente na escala de 0 a 4095 pelo ADC2, fechando a malha. Bem, esse foi um exemplo mais prático. Atente para o fato da mudança dos seus componentes e valores. Esses K calculados são apenas de efeito didático para uma simulação e você observar o resultado na tela nas escalas corretas. Desculpe pelo rascunho feito a mão, mas acho que dá para entender. Outros problemas que você pode ter é a saturação da sua malha com ganhos elevados, tanto em relação ao PWM (que é apenas de 0 a 100%) com nos valores internos que irá depender unicamente do tipo de dado que você está usando (um int 32 terá uma resolução muito melhor que um int 16). Em relação ao PID com o termo integral e derivativo, você pode tanto adicionar os termos em série como em paralelo ao Kp. Como no caso real, onde indutores e capacitores são armazenadores de energia, você também precisará "armazenar" os dados para o cálculo dos termos com um buffer de memória. sistem_control_loop (Error_Data,...) { static previous_Error_Data; k d (moderador, peço que me suspenda do fórum) = (Error_Data - previous_Error_Data); Ki = (Error_Data + previous_Error_Data); ... (código) ... previous_Error_Data= Error_Data ; } Mas ai aparecem outros problemas como a escala que deverá ser positiva e negativa (sem offset) e o tempo entre uma amostra e a amostra anterior ser imprescindível para o cálculo correto... Além de ruídos no termo derivativo e saturação do termo integrativo (que devem ser tratados por outras linhas de código, como filtragens e zerar o acumulador depois de n ciclos de loop). Enfim! Ai já é outra conversa....... Abaixo um link muito interessante (e em português sobre o assunto) vale muito a pena ler. http://www.embarcados.com.br/controlador-pid-digital-uma-modelagem-pratica-para-microcontroladores-parte-1/ Um abração! Eduardo |