Medição Corrente AC c/ ACS712

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Medição Corrente AC c/ ACS712

Mensagempor daniel.sloczynski » 05 Nov 2012 08:16

Olá!

Estou testando o CI ACS712, porém ainda não tive êxito na leitura.

Quero medir corrente AC com ele. Com o circuito sem carga o conversor AD indica 512 (10 bits), que conforme o datasheet seria o valor de 0 corrente (VCC/2).

O modelo que estou usando é para 20A, tem um resolução de 100mV/A.

O problema é que quando ligo alguma carga o conversor AD não apresenta nenhum valor "fixo", no caso, oscila muito.

Já tentei fazer média do valor, mas mesmo assim, o valor muda consideravelmente a cada média feita.

Liguei a saída dele diretamente no pino AN0 do PIC.

Gostaria de sugestões do pessoal que tiver interessado em trocar uma idéia a respeito.

Desde já agradeço pela atenção.
daniel.sloczynski
Bit
 
Mensagens: 47
Registrado em: 28 Abr 2011 09:13

Mensagempor JeanPaul » 05 Nov 2012 13:28

Olá Daniel,

Antes de mais nada ... como você está fazendo esta média?

Você está tirando a média de um sinal AC?

Que valor você precisa medir ... Irms, Ipico, Imed.

Explique um pouco mais.

[]'s

Jean Paul
JeanPaul
Byte
 
Mensagens: 182
Registrado em: 12 Out 2006 21:27
Localização: Florianópolis -SC

Mensagempor xultz » 05 Nov 2012 13:50

Daniel, você já olhou com cuidado a saída do ACS no osciloscópio? Aparece ruído ali? É preciso analisar com cuidado para achar o culpado, que pode ser o ACS ou o PIC.
Você está retificando a saída do ACS?
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor daniel.sloczynski » 06 Nov 2012 06:16

Primeiramente obrigado pelo interesse de me ajudar, pessoal.

Eu quero medir a Imédia.

Ainda não liguei o osciloscópio, vou ver se faço isso hoje.

Então, eu faço a média lendo o valor 60 vezes, acumulando em uma variável e depois fazendo a divisão.

Acontece que quando ligo uma carga o conversor AD, mesmo com média apresenta valores oscilantes. Aí testei com corrente DC, e funcionou certinho.

Estou ligando a saída do ACS diretamente no canal AD. Pode ser isso?

Estou alimentando meu circuito com bateria.
daniel.sloczynski
Bit
 
Mensagens: 47
Registrado em: 28 Abr 2011 09:13

Re: Medição Corrente AC c/ ACS712

Mensagempor andre_luis » 06 Nov 2012 06:26

daniel.sloczynski escreveu:...Já tentei fazer média do valor, mas mesmo assim, o valor muda consideravelmente a cada média feita...


Daniel,


Qual é a taxa de amostragem que voce configurou o conversor A/D ?
( tipo, quantas amostras cabem por semi-ciclo da senóide... )

Dependendo dessa proporção, isso poderia explicar a disperção no valor da média calculado.


+++
Editado pela última vez por andre_luis em 06 Nov 2012 06:29, em um total de 1 vez.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor MOR_AL » 06 Nov 2012 06:27

O que o ACS fornece em sua saída? O que consta no manual?
Valor médio de uma senóide é ZERO mesmo.
O valor rms da senóide é o valor equivalente CC, que forneceria a mesma potência para a carga, se a fonte fosse CC. É diferente de zero.

MOR_AL
"Para o triunfo do mal só é preciso que os bons homens não façam nada." Edmund Burke.
"Nunca discutas com pessoas estúpidas. Elas irão te arrastar ao nível delas e vencê-lo por possuir mais experiência em ser ignorante". Mark Twain
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor daniel.sloczynski » 06 Nov 2012 06:40

Hum... Entendi.

É assim que eu estou lendo:

Compilador MPLAB C18
PIC 18F2525 @ 8 Mhz


Código: Selecionar todos
   void init_adc (void)
   {
   //inicializa conversor AD (detalhes das macros no C18 Libraries)
   OpenADC(ADC_FOSC_8 & ADC_RIGHT_JUST & ADC_4_TAD,   ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD & ADC_VREFMINUS_VSS, ADC_1ANA);
   //configura pinos como entradas
   TRISAbits.TRISA0=1;
   }

   
//le canal AN0 (faz amostragem de 60 vezes e tira média)
   void le_canal_analogico0 (void)
   {
   SetChanADC(ADC_CH0);
   
      for(CONTADOR_AD1=0,SOMA1=0;CONTADOR_AD1<60;CONTADOR_AD1++)
      {
      Delay10TCYx(5);
      ConvertADC();
      while(BusyADC());   
      RESULTADO1=ReadADC();
      SOMA1+=RESULTADO1;
      }
   
   SOMA1/=60;
   CANAL_AD0=SOMA1;
   }



Tô fazendo m...? Sim ou com certeza?

[/code]
daniel.sloczynski
Bit
 
Mensagens: 47
Registrado em: 28 Abr 2011 09:13

Mensagempor xultz » 06 Nov 2012 07:50

Só dá prá saber o tamanho da caca vendo o teu esquemático, se puder postar, fica muito mais fácil de ajudar.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor daniel.sloczynski » 06 Nov 2012 08:57

Bom pessoal, tá aí o esquemático.



Imagem[/img]
daniel.sloczynski
Bit
 
Mensagens: 47
Registrado em: 28 Abr 2011 09:13

Mensagempor xultz » 06 Nov 2012 09:10

Cara, se no teu ACS tá passando uma corrente senoidal (e eu tenho 99,9% de certeza que sim), na saída do ACS você tem um sinal senoidal também.
Sem a carga, não tinha corrente e você mediu zero certinho. Quando colocou a carga, passou a circular a corrente e teve o sinal na saída.
Este é o motivo de você ter valores oscilando, conforme explicou no primeiro post.
Se observar no datasheet do ACS, na página 12, aplicação 2, tem um circuito com detetor de pico. Na verdade é um retificador feito em cima de um operacional, também chamado de "diodo ideal", porque o operacional consegue eliminar o erro da queda de junção em cima do diodo. Ele também tem um FET para descarregar o capacitor que armazena o valor de pico, isso é importante porque o ideal é medir o pico, descarregar, esperar carregar e depois medir de novo.
Você pode fazer isso em firmware também, ou seja, analiza o valor máximo medido, ciclo a ciclo. O que não adianta fazer é tirar a média de tudo, porque a média de uma senóide é um valor que tende a zero.

Me fiz entender?
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor daniel.sloczynski » 06 Nov 2012 09:38

Cara, agora eu entendi! hehe


Eu tenho duas opções, ou montar o circuito ou tentar fazer isso por firmware.

No caso, como eu poderia fazer isso por firmware? Não tô conseguindo imaginar o algoritmo na minha cabeça. Sou muito leigo ainda.


Isso se não for pedir demais. Vocês já me ajudaram muito entendendo a questão. Obrigado.
daniel.sloczynski
Bit
 
Mensagens: 47
Registrado em: 28 Abr 2011 09:13

Mensagempor xultz » 06 Nov 2012 10:44

Mais ou menos assim:

- Cria uma variável chamada "pico"
- Atribui zero para "pico"

Loop de medição:
- Faz aquisição do conversor AD
- Leitura é maior que "pico"?
Se sim, guarda leitura em "pico"
- Reinicia Loop

Após várias leituras, "pico" terá o valor máximo medido
Porém, se a corrente diminuir, você ficará com aquele valor de pico. Então, de tempos em tempos (por exemplo, a cada meio segundo), apresenta o valor de "pico" no display, zera ele e recomeça o ciclo
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor daniel.sloczynski » 06 Nov 2012 15:10

Agora está funcionando. Ainda está com erro de +- 300mA com relação ao multímetro.

Talvez deva fazer algum ajuste fino ainda.

Xultz, muito obrigado pela sua ajuda e também aos demais colegas que se interessaram em sanar minhas dúvidas.
daniel.sloczynski
Bit
 
Mensagens: 47
Registrado em: 28 Abr 2011 09:13

Mensagempor Andre_Cruz » 11 Nov 2012 17:31

daniel.sloczynski,

O xults te ajudou a encontrar o I de pico, que é meio caminho andado.
I médio de um sinal senoidal completo (Os dois semi ciclos) é 0, você pode calcular o I médio de apenas um semi ciclo do sinal basta você multiplicar o I de pico por 0,637.
Como não me lembrava muito bem os valores retirei desse documento http://pt.scribd.com/doc/36135435/8/VALOR-DE-PICO qualquer dúvida consulte ele.
Acho que isso explica a diferença na leitura entre seu circuito e o multímetro.
Falando em multímetro os bons multímetros leem o RMS do sinal, você pode testar fazer seu circuito fazer a leitura do RMS do teu sinal.

Acredito que exista maneiras mais elaboradas de fazer essa medida mas que eu conheço é essa.

Abraço
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor daniel.sloczynski » 11 Dez 2012 09:27

Obrigado pelas dica André!

No momento estou com esse projeto parado, mas quando retomar, irei reformular meus cálculos.

Abraço.
daniel.sloczynski
Bit
 
Mensagens: 47
Registrado em: 28 Abr 2011 09:13


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x