Medição de eletricidade. Parte 1. Medição de tensão e corrente

imagem

Introdução


Olá a todos! Após o término do ciclo nos sensores, havia perguntas de um plano diferente para medir os parâmetros de consumo de aparelhos domésticos e não muito elétricos. Quem consome quanto, como conectar o que medir, quais sutilezas acontecem e assim por diante. É hora de revelar todas as cartas nesta área.
Nesta série de artigos, consideraremos o tópico de medição dos parâmetros de eletricidade. Esses parâmetros são na verdade um número muito grande, que tentarei contar gradualmente em pequenas séries.
Até agora, os planos são três séries:
  • Medição de eletricidade.
  • A qualidade da eletricidade.
  • Dispositivos para medir os parâmetros de eletricidade.

No processo de análise, resolveremos certos problemas práticos nos microcontroladores até que um resultado seja alcançado. Obviamente, a maior parte desse ciclo será dedicada à medição da tensão CA e pode ser útil para todos os ventiladores para controlar os aparelhos elétricos de sua casa inteligente.
Com base nos resultados de todo o ciclo, fabricaremos um certo medidor elétrico inteligente com acesso à Internet. Ventiladores muito notórios para controlar os aparelhos elétricos de sua casa inteligente podem fornecer toda a assistência possível na implementação da parte de comunicação com base, por exemplo, no MajorDomo. Vamos tornar o OpenSource uma casa inteligente melhor, por assim dizer.
Nesta série, em duas partes, discutiremos as seguintes perguntas:
  • Conexão de sensores de corrente e tensão em dispositivos CC, bem como circuitos CA monofásicos e trifásicos;
  • Medição de valores de corrente de corrente e tensão;
  • Medição do fator de potência;
  • Potência plena, ativa e reativa;
  • Consumo de energia;

Ao abordar, você encontrará respostas para as duas primeiras perguntas desta lista. Eu deliberadamente não ligo para as questões de precisão dos indicadores de medição e, a partir desta série, estou satisfeito apenas com os resultados obtidos com a precisão de sapatos de mais ou menos bast. Certamente dedicarei um artigo separado a esta edição na terceira série.

1. Conexão de sensores



Na última série sobre sensores de tensão e corrente, falei sobre os tipos de sensores, mas não falei sobre como usá-los e onde colocá-los. Está na hora de consertar
Conexão de sensores DC

É claro que todo o ciclo será dedicado a sistemas de corrente alternada, mas também passaremos rapidamente pelos circuitos de corrente contínua, pois isso pode nos ser útil no desenvolvimento de fontes de alimentação de corrente contínua. Tomemos, por exemplo, um conversor buck PWM clássico :

Figura 1. Um conversor buck PWM
Nosso objetivo é fornecer uma tensão de saída estável. Além disso, com base nas informações do sensor de corrente, é possível controlar o modo de operação do indutor L1, impedindo sua saturação, e também implementar a proteção de corrente do conversor. E, francamente, não há opções específicas para a instalação de sensores.
Um sensor de tensão na forma de um divisor resistivo R1-R2, que é o único capaz de trabalhar com corrente direta, é instalado na saída do conversor. Como regra, um microcircuito conversor especializado tem uma entrada de realimentação e faz todos os esforços para garantir que nessa entrada (3) exista um certo nível de tensão prescrito na documentação para o microcircuito. Por exemplo, 1,25V. Se nossa tensão de saída corresponder a esse nível - tudo está bem -, aplicaremos diretamente a tensão de saída nessa entrada. Caso contrário, defina o divisor. Se precisarmos fornecer uma tensão de saída de 5V, o divisor deve fornecer um fator de divisão de 4, ou seja, por exemplo, R1 = 30k, R2 = 10k.
Um sensor de corrente geralmente é instalado entre a fonte de energia e o conversor e no chip. A partir da diferença de potencial entre os pontos 1 e 2, e com uma resistência conhecida, os resistores Rs podem determinar o valor atual da corrente do nosso indutor. Instalar um sensor de corrente entre as fontes e a carga não é uma boa ideia, pois o capacitor do filtro será cortado pelo resistor pelos consumidores de correntes pulsadas. Instalar um resistor na abertura do fio comum também não promete nada de bom - haverá dois níveis de terra com os quais ainda é divertido mexer.
Os problemas de queda de tensão podem ser evitados usando sensores de corrente sem contato - por exemplo, sensores hall:

Figura 2. Sensor de corrente sem contato
No entanto, existe uma maneira mais complicada de medir a corrente. Afinal, a tensão também cai no transistor e a mesma corrente flui como a indutância através dele. Portanto, pela queda de tensão através dela, você também pode determinar o valor atual da corrente. Honestamente, se você observar a estrutura interna dos circuitos conversores, por exemplo, da Texas Instruments, esse método é encontrado com a mesma frequência que os anteriores. A precisão desse método certamente não é a mais alta, mas isso é suficiente para o corte atual funcionar.

Fig. 3. Transistor como um sensor de corrente Nós fazemos o
mesmo em outros circuitos de conversores similares, seja aumentando ou invertendo.
No entanto, é necessário mencionar separadamente os conversores lineares e flyback do transformador.

Fig. 4. Conexão dos sensores de corrente nos conversores flyback.Eles
também podem usar resistência externa ou um transistor em sua função.
Com isso, conectamos os sensores aos conversores DC / DC. Se você tiver sugestões para outras opções, terei prazer em adicionar um artigo a elas.
1.2 Conexão de sensores a circuitos CA monofásicos

Nos circuitos CA, temos uma seleção muito maior de possíveis sensores. Vamos considerar várias opções.
O mais simples é o uso de um divisor de tensão resistivo e derivação de corrente.

Fig. 5. Conexão dos sensores do resistor
No entanto, ela tem algumas desvantagens significativas:
Primeiramente, forneceremos uma amplitude significativa do sinal da derivação atual, alocando uma grande quantidade de energia nele, ou ficaremos satisfeitos com a pequena amplitude do sinal e posteriormente o amplificaremos. E segundo, o resistor cria uma diferença potencial entre o neutro da rede e o neutro do dispositivo. Se o dispositivo estiver isolado, não importa, se ele tiver um terminal de aterramento, correremos o risco de permanecer sem sinal do sensor de corrente, pois o curto-circuito. Talvez você deva tentar sensores que funcionem com outros princípios.
Por exemplo, usamos transformadores de corrente e tensão, ou um sensor de corrente de efeito Hall e um transformador de tensão. Aqui, há muito mais oportunidades para trabalhar com equipamentos, uma vez que o fio neutro não tem perdas e, o mais importante - em ambos os casos, há isolamento galvânico do equipamento de medição, o que geralmente pode ser útil. No entanto, deve-se ter em mente que os sensores de corrente e tensão do transformador têm uma resposta de frequência limitada e, se quisermos medir a composição harmônica das distorções, isso não é um fato que funcionará.

Fig. 6. Conexão do transformador e dos sensores de corrente e tensão sem contato
1.3 Conexão de sensores a circuitos CA multifásicos

Em redes multifásicas, nossa capacidade de conectar sensores de corrente é um pouco menor. Isso se deve ao fato de que a derivação de corrente não pode ser usada, uma vez que a diferença de potencial entre as derivações de fase varia dentro de centenas de volts e eu não conheço nenhum controlador de uso geral cujas entradas analógicas possam suportar essa zombaria.
Obviamente, há uma maneira de usar derivações de corrente - para cada canal é necessário fazer uma entrada analógica galvanicamente isolada. Mas é muito mais fácil e confiável usar outros sensores.
No meu analisador de qualidade, uso divisores de tensão resistivos e sensores de corrente de efeito de hall remotos.

Fig. 7 Sensores de corrente em uma rede trifásica
Como pode ser visto na figura, usamos uma conexão de quatro fios. Obviamente, em vez de sensores de corrente no efeito hall, você pode usar transformadores de corrente ou loops de Rogowski.
Em vez de divisores resistivos, podem ser usados ​​transformadores de tensão, tanto para um sistema de quatro e três fios.
Neste último caso, os enrolamentos primários dos transformadores de tensão são conectados por um triângulo e o secundário por uma estrela, cujo ponto comum é o ponto comum do circuito de medição

. Fig. 8. Utilizando transformadores de tensão em uma rede trifásica

2 Valor atual da tensão e corrente



Chegou a hora de resolver o problema de medir nossos sinais. O significado prático para nós é principalmente o valor atual da corrente e da tensão.
Deixe-me lembrá-lo do material do ciclo do sensor. Usando o ADC do nosso microcontrolador em intervalos regulares, fixaremos o valor instantâneo da tensão. Assim, durante o período de medição, teremos uma matriz de dados do nível do valor instantâneo da tensão (para a corrente, tudo é semelhante).

Fig. 9. Uma série de valores instantâneos de tensão
Nossa tarefa é calcular o valor efetivo. Para começar, usamos a fórmula integral:
(1)
Em um sistema digital, temos que nos limitar a um certo quantum de tempo, então vamos à soma:
(2)
Onde está o período de amostragem do nosso sinal e- o número de amostras para o período de medição. Em algum lugar aqui, em um vídeo, começo a esfregar o jogo sobre a igualdade de áreas. Eu tive que dormir naquele dia. =)
Nos microcontroladores MSP430FE4252, usados ​​em medidores elétricos Mercury monofásicos, são realizadas 4096 leituras por um período de medição de 1, 2 ou 4 segundos. Em T = 1s e N = 4096, contaremos ainda mais. Além disso, 4096 pontos por segundo nos permitirá usar algoritmos de transformação rápida de Fourier para determinar o espectro harmônico de até 40 harmônicos, conforme exigido pelo GOST. Mas mais sobre isso na próxima série.
Nós descrevemos o algoritmo para o nosso programa. Precisamos garantir um início estável do ADC a cada 1/8192 segundos, pois temos dois canais e mediremos esses dados alternadamente. Para isso, configure o temporizador e o sinal de interrupção reiniciará automaticamente o ADC. Todos os ADCs fazem isso.
Escreveremos o futuro programa no arduino, como muitos o têm em mãos. Até agora, temos um interesse puramente acadêmico.
Tendo uma frequência de quartzo do sistema de 16 MHz e um timer de 8 bits (para que a vida não pareça mel), precisamos garantir a frequência de operação de qualquer interrupção do timer com uma frequência de 8192 Hz.
Estamos tristes com o fato de que 16 MHz não está completamente dividido conforme a necessidade e a frequência final do temporizador é 8198 Hz. Fechamos os olhos para um erro de 0,04% e ainda lemos 4096 amostras por canal.
Lamentamos que a interrupção de estouro no arduino esteja ocupada calculando o tempo (é responsável por milis e atrasos, portanto isso irá parar de funcionar normalmente), por isso usamos a interrupção em comparação.
E de repente percebemos que o sinal chega até nós bipolar e que o msp430fe4252 lida com ele perfeitamente. Estamos satisfeitos com um ADC unipolar, portanto, montamos um conversor simples de um sinal bipolar em um unipolar em um amplificador operacional:

Figura 10. Conversor de um sinal bipolar em um unipolar
Além disso, nossa tarefa é garantir que o nosso senoide oscile em relação à metade da tensão de referência - subtrairemos metade da faixa ou ativaremos a opção nas configurações do ADC e obtenha os valores dos sinais.
Como o Arduino possui um ADC de 10 bits, subtraímos metade do resultado não assinado entre 0 e 1023 e obtemos -512-511.
Verificamos o modelo montado no LTSpiceIV e garantimos que tudo funcione como deveria. No material de vídeo, também verificamos experimentalmente.

Figura 11. Resultado da simulação. Verde é o sinal original, azul é a saída
Esboço para Arduino para um canal
void setup()
{
  autoadcsetup();
  DDRD |=(1<<PD2)|(1<<PD3);
  Serial.begin(38400);
}


double urms = 0;
double utemp = 0;
int umoment = 0;
int N = 0;
int flag = 0;
void loop()
{
  if (flag){
    flag = 0;
    Serial.println(urms);
  }
}
int i = 255;

void autoadcsetup(){
  //set up TIMER0 to  4096Hz
  //TIMER0_OVF will be the trigger for ADC
  /*normal mode, prescaler 16
   16MHz / 64 / 61 = 4098 Hz 0.04% to 4096Hz*/
  TCCR0B = (1 << CS01)|(1 << CS00);//timer frequency = clk/64
  OCR0A = 60;//61-1
  TIMSK0 = (1<<OCIE0A);
  //set ADC.
  ADMUX =  (1 << REFS0);//8-bit mode, ADC0 channel, AVVCC as ref
  ADCSRA = (1 << ADEN) | (1 << ADATE) | (1 << ADIE) | (1 << ADPS2);//TUrn ADC On, trigger enable, Interrupt enable, sysclk/16=1MHz_ADC_clk=76kHz conv freq(13ticks per conversion)
  ADCSRB = (1<< ADTS1) | (1<<ADTS0) | (1<<MUX5);//Auto trigger source
}

ISR(TIMER0_COMPA_vect){
  if (PIND & (1<<PD2)){
    PORTD &= ~(1<<PD2);
  }
  else{
    PORTD |=(1<<PD2);
  }
  TCNT0 = 0;

}


ISR(ADC_vect){

  if( ( UCSR0A & (1<<UDRE0)) ){
    umoment = ADCL;//copy result.
    umoment += (ADCH<<8);
    umoment = umoment - 512;
    utemp = utemp + pow((double)(umoment),2)/4096;
    N++;
    if (N == 4095){
      urms = sqrt(utemp)/102;
      N = 0;
      utemp = 0;
      flag = 1;
      if (PIND & (1<<PD3)){
        PORTD &= ~(1<<PD3);
      }
      else{
        PORTD |=(1<<PD3);
      }
    }
  }
}



O programa foi escrito no IDE do Arduino para o microcontrolador ATmega1280. Na minha placa de depuração, os 8 primeiros canais são roteados para as necessidades internas da placa, então o canal ADC8 é usado. É possível usar este esboço para uma placa com ATmega168, no entanto, você deve selecionar o canal correto.
Por dentro das interrupções, giramos alguns pinos de serviço para ver visualmente a frequência de digitalização em funcionamento.
Algumas palavras sobre a origem do coeficiente 102. Na primeira partida, um sinal de várias amplitudes foi fornecido pelo gerador, uma indicação do valor efetivo da tensão foi lida no osciloscópio e o valor calculado em unidades absolutas do ADC foi retirado do console.
Umax, VUrms, InContado
32.08212
2,51,73176
21,38141
1,51,03106
1 10,68471
0,50,35836.
0,250,179dezenove

Dividindo os valores da terceira coluna pelos valores da segunda, obtemos uma média de 102. Este será o nosso coeficiente de "calibração". No entanto, pode-se notar que, quando a tensão diminui, a precisão cai acentuadamente. Isto é devido à baixa sensibilidade do nosso ADC. De fato, 10 descargas para cálculos precisos são desastrosamente pequenas e, se for possível medir a tensão no soquete dessa maneira, colocar um ADC de 10 bits para medir a corrente consumida pela carga será um crime contra a metrologia.

Neste ponto, vamos parar. Na próxima parte, consideraremos as outras três perguntas desta série e prosseguiremos suavemente para a criação do próprio dispositivo.

O firmware apresentado, bem como outro firmware para esta série (como estou gravando vídeos mais rapidamente do que preparando artigos), você encontrará no repositório no GitHub: github.com/radiolok/arduino_rms_count
Quanto ao desenvolvimento do medidor elétrico, a referência do TI SimpleLink WiFi CC3200 será tomada como base SmartPlug , cujas notícias chegaram no outro dia. Eu realmente gosto do microcontrolador CC3200, por isso vamos desenvolver um booster para o lunchpad existente e perceber todos os recursos nos quais estamos interessados. Não se esqueça de fazê-lo funcionar tão bem em outros microcontroladores.

Comentários são convidados progchip666, para comentários e acréscimos ao material, bem como smart_alex como anteriormente interessado em medir corrente e tensão usando o Arduino.

Source: https://habr.com/ru/post/pt384597/


All Articles