Autor Tópico: Ajuda - Comparação de valores analógicos no pic  (Lida 4959 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

dudu174

  • Visitante
Ajuda - Comparação de valores analógicos no pic
« Online: 01 de Março de 2009, 13:00 »
Olá pessoal, é o seguinte:

Estou trabalhando em um sistema de controle de demanda eletrica aqui na nossa empresa, onde se ultrapassarmos o valor de demanda que compramos da CEMIG, pagaremos uma multa alta para a mesma. Os fornos de tratamento térmico aqui são todos automatizados e os sensores são termopares tipo j, k e outros, porém estes sinais do termopar vão direto para o controlador do forno onde é feito todo o controle de atmosfera, temperatura, porcentagem de carbono e etc.

O controlador de demanda, por obrigação deve desligar os equipamentos da empresa no horário de pico de demanda que é entre 18 e 21:00, (para não ultrapassar o valor de demanda que compramos da cemig) porém eu não posso "derrubar" o forno de uma vez, porque senão eu acabo com o tratamento.

O aquecimento do forno é feito por resistencias de alta potencia e estas resistencias são controladas por um equipamento que cria um PWM encima delas aplicando mais tensão ou menos de acordo com os sinais de temperatura que são coletados do termopar e enviados ao controlador de temperatura. Este controlador de temperatura repassa estes sinais na facha de 4 a 20mA para o equipamento que cria o PWM.

Entenderam até agora?!?!?!?

Pois é o principal é o seguinte:

O pic entra aqui:

Então, o controlador de demanda emite sinais de 4 a 20mA e o controlador de temperatura emite também sinais de 4 a 20mA para o equipamento de PWM, dessa forma eu devo coletar estes dois sinais, compará-los e repassar o menor valor de comparação onde criarei uma lógica digital com os pinos das portas para repassar a um conversor D/A que irá jogar este valor para o equipamento de PWM para abaixar a temperatura até a demanda elétrica estabilizar. Eu posso abaixar a temperatura do forno e não desligá-la. OK! Quero fazer isto com o pic 16f877A

Entenderam?!!??!?!?

Já consegui ler as portas independentes, porém não estou conseguindo compara-los, sou novo em pic, mas tenho esperanca de consegui.

Já fizeram até jogo de Xadrez com ele, porque que eu não vou conseguir fazer uma bobeirinha dessas.... heheheh...

O programa que estou trabalhando até agora é:

#include <16F877A.h>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)

#include "LCD_8B.c"

void main() {
long adc1, adc2;

Setup_adc_ports(RA0_RA1_RA3_ANALOG);
setup_adc( ADC_CLOCK_INTERNAL );

lcd_ini();

delay_ms(500);

printf(lcd_escreve,"\f Leitura AD ");

delay_ms(1000);

printf(lcd_escreve,"\f");


while(TRUE)
{
set_adc_channel(0);
delay_us(15);
adc1 = read_adc();
lcd_pos_xy(1,1);
printf(lcd_escreve,"ADC1 = %4lu",adc1);
delay_ms(100);

set_adc_channel(1);
delay_us(15);
adc2 = read_adc();
printf(lcd_escreve,"\nADC2 = %4lu",adc2);
delay_ms(100);

}

}
Estou colocando o resultado apenas no display por enquanto.

obrigado a todos...
inté mais!!!

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #1 Online: 01 de Março de 2009, 17:07 »
Eduardo, não está claro o que vc pretende de fato fazer, qual é a estratégia, se é a redução da demanda do(s) forno(s) no período crítico, se é o desligamento programado antes do período crítico, ou se pretende implementar algum tipo de controle proporcional em função da demanda corrente.

Já tive que lidar com probs semelhantes e sei bem sabido como a coisa é espinhosa e cheia de armadilhas. Mesmo correndo o risco de dizer o óbvio tenho que dizer que só uma abordagem sistêmica resolve este tipo de prob e quanto mais simples a implementação, melhor. É sempre bom lembrar que o faturamento é pela integralização em períodos de 15 minutos, vale o pico e não há escapatória, resvalou, pagou.

Vejo com enorme desconfiança abordagens que pretendem tratamento com luvas de pelica, administração de demanda é coisa pra quem tem culhão, ou seja, não apenas conhecimento profundo dos processos, mas tb e principalmente autoridade pra impor disciplina.

O prob é quase sempre mais político que técnico, nínguem quer assumir a responsabilidade de definir o que deva ser contratado e muito menos a responsabilidade de definir o que deva ser desligado. Perdoe a crueza das palavras mas a realidade é esta, com raríssimas exceções. Dificilmente dá pra tratar a coisa com um PIC aqui e outro acolá ...

dudu174

  • Visitante
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #2 Online: 01 de Março de 2009, 23:52 »
Olá Jorge,
vejo que vc entende do assunto,
então vou clarear pra vc:

O controle de demanda ja está quase pronto. Compromos um equipamento que foi interligado nos trafos e painéis gerais. Este equipamento foi comprado de uma empresa chamada Gestal. http://www.gestal.com/new/

Então todo o sistema ja está decidido, a demanda ja está comprada e tudo estalado.

Eu preciso aplicar o Pic na seguiunte situação:

-Como visto anteriormente existe um controlador de PWM para as resistencias dos fornos,  e este controlador executa este PWM em função da quantidade de corrente (4 a 20mA) que é recebido a ele, e quem envia a ele é um equipamento chamado Protherm, que obrigatóriamente tem uma saída de 4 a 20mA.

-O Gestal, tem uma saída analógica de 4 a 20mA. (ele é que comanda a demanda geral dos equipamentos da empresa).

- O que eu quero fazer é o seguinte: Quero interromper o sinal do Protherm (Antes dele chegar ao equipamento de PWM) e jogá-lo em uma analógica do Pic, e também quero fazer isto com o sinal do gestal e jogálo no pic. Quero comparar estes dois sinais e repassar o de menor valor, (para um circuito D/A) pois eu não posso controlar o PWM do forno diretamente com o gestal, porque quando eu não estiver no periodo de pico de demanda eu perderia o comtrole do PWM do forno atravé do Protherm.

-Também não posso cortar o controle de temperatura do forno (PWM das resistencias), mesmo que sejam por 15 min porque a temperatura cai drasticamente (O sistema de refrigeração da tampa e tubulações internas do forno são muito violentos!).
 
Entendeu um pouco?!?!?? realmente é um pouco complicado, mais acredito que resolverei o meu problema com o pic, porque todo o sistema ja está integrado.

Volto a repetir que não estou conseguindo comparar os sinais analógicos. Eu consegui ler as analogicas, mas não consigo compara-las.

Espero ter sido menos complicado desta vez.

Obrigado pela atenção....
inté mais!

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #3 Online: 02 de Março de 2009, 08:00 »
Tá mais claro agora Eduardo.

Se vc tá lendo os ADCs corretamente a coisa não tá tão difícil ... qual é a dificuldade que vc tá encontrando pra comparar os valores ? Não sabe que função utilizar ?

 Manjo apenas de assembly e por isso não vou dar palpite, mas vou consultar um amigo que manja muito e pedir que ele compareça ...

Offline lutcho

  • Novato
  • *
  • Posts: 15
  • Sexo: Masculino
  • É preciso metade do tempo para aproveitar a outra
    • Neocortex Soluções
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #4 Online: 02 de Março de 2009, 08:27 »
Olá...
Pelo texto, a dúvida me aprece tão trivial que temo não ter entendido :-).

Se vc tem os valores lidos (a parte mais complicada), a comparação ficaria apenas:

if( adc1 > adc2)
{
    fazer_algo_se_adc1_ maior();
}
else if( adc2 > adc1)
{
    fazer_algo_se_adc2_ maior();
}
else
{
    fazer_algo_se_iguai s();
}


Aí, basta implementar as decisões entre chaves...

Lutcho

Offline EDSONCAN

  • Novato
  • *
  • Posts: 69
    • Projetos eletronicos consultoria
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #5 Online: 02 de Março de 2009, 08:53 »
O que voce esta querendo e mudar a curva do setup de aquecimento do forno, tornando-a mais suave em função da demanda.
Muitos CLP´s que são usados para fazer controle de temperatura desses equipamentos permitem fazer isso diretamente.
Quando trabalhei na Combustol me lembro que usavamos um da Altus e ja deixavamos programado o controle de demanda em um entrada que havia sobrado.
O modulo de portencia da epoca era da Therma com 4 scr´s, entrada de 4 a 20ma.
Se for brincar com isso cuidado com os de atmosfera controlada, pois explodem se voce admitir hidrogenio abaixo de 760C e nunca abra a porta sem cortar o hidrogenio e queima-lo, ja vi transformarem a haste de um cilindro em um anzol em um cliente.
Edson


dudu174

  • Visitante
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #6 Online: 02 de Março de 2009, 09:36 »
Bom dia a todos.

Obrigado Jorge, Lutcho e Edson.

Há um feedback de temperatura dos fornos. São 11 fornos sendo 5 com controle de atmosfera através do Protherm. Este controle de nitrogenio CO2, O2 entre outros é feito acima de 930 graus celcios. Este feedback é usado para anular o controle de demanda enquanto o forno esta em processo de conrole de atmosfera, (neste caso ele mantem a temperatura em 20% da potencia maxima, sendo desnecessario o controlde de demanda neste momento), ou seja, eu nao posso atuar no equipamento enquanto ele estiver no controle de atmosfera.

O controle de demanda sera feito apenas enquanto ele nao etiver nesta etapa do trabalho, ou seja, somente quando estiver na rampa de aquecimento com 100% da potencia nos tiristores.

Quanto ao fraguimento do Lutcho, farei o teste na placa que temos e verei so vai dar certo.

O modulo de portencia da epoca era da Therma com 4 scr´s, entrada de 4 a 20ma.

O nosso modulo tambem e da Therma, porem, ele nao tem 2 entradas de 4 a 20mA, somente uma que ja e usado pelo Protherm.

Se for brincar com isso cuidado com os de atmosfera controlada, pois explodem se voce admitir hidrogenio abaixo de 760C e nunca abra a porta sem cortar o hidrogenio e queima-lo, ja vi transformarem a haste de um cilindro em um anzol em um cliente.

Este risco e verdadeiro, ja que todo sistema e passivel de falhas, analisaremos se esta modificacao tera imfluencia nesta etapa, ja que considero ser a mais importante, onde envolve vidas humanas.

Muito obrigado a todos.
postarei os resultados aqui.

Abracos!!

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #7 Online: 02 de Março de 2009, 09:36 »
Muitos CLP´s que são usados para fazer controle de temperatura desses equipamentos permitem fazer isso diretamente.

É uma boa idéia. Tb acredito que seja possível.

dudu174

  • Visitante
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #8 Online: 02 de Março de 2009, 09:50 »
Muitos CLP´s que são usados para fazer controle de temperatura desses equipamentos permitem fazer isso diretamente.

É uma boa idéia. Tb acredito que seja possível.

Jorge,

Toda a arquitetura de hardware deste controle ja esta implementada. Acreditamos que com o pic, utilizado somente para a comparacao dos sinais e repassar o de menor valor, com uma pequena modificacao no que ja e existente, dentro das condicoes de seguranca do processo, sera de uma viabillidade melhor.

Obrigado pelas as sujestoes e tocas continuam sendo bem vindas neste trabalho.

Abracos.

Offline EDSONCAN

  • Novato
  • *
  • Posts: 69
    • Projetos eletronicos consultoria
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #9 Online: 02 de Março de 2009, 10:35 »
Fica o alerta
Não deixe entrar atmosfera com hidrogenio abaixo de 760 C, se ja estiver com atmosfera, não dexe cair abaixo dessa temperatura de segurança de queima do oxigenio.

Edson

dudu174

  • Visitante
Re: Ajuda - Comparação de valores analógicos no pic
« Resposta #10 Online: 02 de Março de 2009, 20:51 »
Olá pessoal.

O trabalho está ficando muito bom.
Na placa de teste que temos, testamos o programa existente, agora tratando o sinal e tomando as decisões.


#include <16F877A.h>
#device ADC=10
#use delay(clock=8000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP



#include "LCD_8B.c"

void main()
{
long adc1, adc2,val_adc1,val_adc2;

setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(RA0_RA1_RA3_ANALOG);
enable_interrupts(GLOBAL);

lcd_ini();

delay_ms(500);

printf(lcd_escreve,"\f Leitura AD ");

delay_ms(1000);

printf(lcd_escreve,"\f");


while(TRUE)
{
set_adc_channel(0);
delay_us(15);
adc1 = read_adc();
val_adc1=5*adc1*100/1023;
delay_ms(100);

set_adc_channel(1);
delay_us(15);
adc2 = read_adc();
val_adc2=5*adc2*100/1023;
delay_ms(100);

if( adc1 > adc2)
{   printf(lcd_escreve,"\f");
    printf(lcd_escreve,"AD1>AD2 = %4lu mA",val_adc2);
}
else if( adc2 > adc1)
{   printf(lcd_escreve,"\f");
    printf(lcd_escreve,"AD2>AD1 = %4lu mA",val_adc1);
}
else
{   printf(lcd_escreve,"\f");
    printf(lcd_escreve,"A1=A2 = %4lu mA",val_adc1);
}

}

}

Por enquanto, os valores estão sendo impressos no display. Agora basta elabora a lógica para repassa o valor para um D/A.

Obrigado a todos pela contribicao / sujestão.
Abraços.

 

/** * */