Usando um Arduino Nano e um transformador de corrente (CT), estou tentando detectar a corrente fluindo através de uma linha de 120 V 60 Hz.
O circuito
Saídas CT de 0-1 V
acordo com suas especificações. Esta saída é enviesada AREF/2
= 2,5 V.
analogRead
Valores
O eixo x representa o número do índice da amostra ADC, enquanto o eixo y representa o valor ADC (0-1024). A taxa de amostragem é de cerca de 9 kHz. A diferença pico a pico é de cerca de 1026 amostras.
Essa forma de onda é o que você esperaria do CT? Por que existem regiões onde os valores são fixos, em vez de variar continuamente?
Além disso, se observarmos a parte da curva do gráfico, por que o Arduino está lendo os valores acima 512
e abaixo 512
alternadamente? Ele lê um valor acima 512
, depois um valor abaixo 512
, depois um valor acima 512
e assim por diante.
O tempo gasto para um analogRead
foi medido em 110 microssegundos para minha configuração e existem 1026 amostras entre os picos da forma de onda. Isso significa que haverá cerca de 9 picos em 1 segundo, embora eu esperasse 60 picos, pois estamos sentindo uma linha de 60 Hz. O que você faz disso? Existe um capacitor, C1
no circuito, isso tem alguma coisa a ver com isso?
Esses valores analogRead são adequados para o cálculo da tensão RMS e, portanto, a corrente RMS que passa pelo fio sendo detectada? O objetivo final disso é calcular o uso de energia após determinar a corrente RMS que flui através do fio.
Esboço usado para obter valores para plotagem
void setup() {
Serial.begin(9600);
}
void loop() {
double sensorValue = analogRead(1);
Serial.println(sensorValue)
}
analogRead
Pontos de dados reais nas regiões de relevo
487
534
487
535
488
537
484
536
487
538
486
536
484
540
484
539
485
540
483
540
484
541
481
539
481
540
484
540
480
543
484
539
481
540
484
541
486
542
485
538
485
538
488
535
489
534
491
530
491
529
493
531
492
526
498
526
499
524
499
520
503
518
502
518
507
Gráfico de valores de leitura analógica
Os valores analogRead agora são armazenados em um buffer antes de serem transmitidos pelo Serial. Atualmente, existem 55 pontos de dados da ADC que compõem um período. Considerando que o tempo de leitura analógico é de 110 µs, cada ciclo leva 6,05 ms, fornecendo uma frequência de 165 Hz! O que pode ter dado errado?
void loop() {
double sensorValue = analogRead(1);
char buf[32];
dtostrf(sensorValue, 8, 2, buf);
value = buf;
if (stop == 0) {
if (i < 10000) {
message += ',';
message += value;
i++;
}
else {
stop = 1;
Serial.println(message);
}
}
}
analogRead()
e constatamos que são 110 microssegundos. Atualizado a pergunta.Respostas:
Com relação às suas medidas, eu desconsideraria completamente o primeiro conjunto com Serial.println () no loop. Eu esperava que o momento disso não fosse confiável.
Seu segundo conjunto de dados capturados em um buffer parece correto, mas a estimativa / frequência da frequência pode estar incorreta. Eu inverteria uma saída digital a cada iteração de loop. Você pode medir a frequência disso com um multímetro e a taxa de amostragem do ADC seria o dobro desse valor.
Para uma fonte de alimentação de PC ou laptop, é uma forma de onda atual bastante comum.
Sem a correção efetiva do fator de potência, o sinal atual mostrado abaixo seria bastante típico (fonte: http://www.nlvocables.com/blog/?p=300 )
Você precisará calcular os valores RMS e seria prudente filtrar o sinal.
Aqui está um manual que eu escrevi sobre como criar e codificar um Monitor de eletricidade com base no Arduino Yun com suporte à nuvem / Temboo e Google Drive. Deve ser de alguma ajuda para você.
fonte
se você estiver medindo uma carga resistiva, eu diria que o resistor de carga que você escolheu está errado, existem alguns TCs baratos no ebay (SCT-013-xxx) que possuem versões com e sem os resistores de carga, e funcionam bem pelo preço mas você deve ler a folha de dados. o SCT-013-000 requer que um resistor 20R saia 1V com uma carga de 100A; se esse resistor estiver errado, você poderá obter uma forma de onda severamente distorcida ao medir correntes mais altas (semelhantes às que você forneceu), você esperaria que o sinal distorcer mais quanto menor o valor do resistor de carga, mas esse não é o caso dos TCs.
fonte