Uma entrada analógica isolada para Arduino
Componentes e suprimentos
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
|
Aplicativos e serviços online
|
Sobre este projeto
Os sinais dos sensores de campo podem ser afetados pelo ruído gerado por surtos de energia, queda de raios ou outras fontes EMI (interferência eletromagnética) e também por diferenças de potencial de terra. Um método para evitar a maioria desses problemas é usar um isolamento completo do campo.
O isolamento de um sensor de entrada exigirá uma fonte de alimentação separada para alimentar o dispositivo de campo e o circuito que realiza o próprio isolamento.
Mais detalhes podem ser encontrados na postagem publicada em meu blog:http://ardupiclab.blogspot.it/.
Código
- interface e programa do Arduino
Interface e programa do Arduino Arduino
O Arduino pode medir a frequência de duas maneiras:• medição do período, usando a função pulsein ();
• medição de frequência, com CPU Timer / Contadores, usando bibliotecas especiais.
O primeiro método usa duas vezes a função pulsein () para medir o tempo HIGH e o tempo LOW do sinal, com resolução de microssegundos. A soma das duas medições é o período do sinal. Para um sinal de 5kHz, o período é 200 µs =tempo ALTO + tempo BAIXO =125 + 75 µs. A resolução de tempo é relativamente baixa e a precisão da medição também é afetada pelo tempo das instruções do programa.
O aspecto positivo deste método é a velocidade de medição ligeiramente superior ao período medido. Em desvantagem, além da menor precisão, é mais sensível ao ruído da rede elétrica (50 ou 60 Hz).
Por esses motivos, prefiro uma medição de frequência em relação ao período. O tempo de medição é maior, mas você obtém maior precisão e tempos de amostragem precisos. Além disso, ao escolher um período de medição múltiplo do da rede elétrica, possui excelente imunidade a ruídos.
Eu uso a biblioteca FreqCounter de Martin Nawrath KHM LAB3:
http://interface.khm.de/wp-content/uploads/2009/01/FreqCounter_1_12.zip
Esta biblioteca usa Timer / Counter1 para contar pulsos na borda ascendente de T1 / PD5 / digitalPin5 e Timer / Counter2 para a geração de tempo de porta com interrupções de 1 ms.
Eu escolhi um tempo de porta igual a 1000 ms para mediar a contagem em um período de 50 ou 60 ciclos da rede. Nesse caso, você obtém uma resolução cinco vezes maior que a do Arduino Uno.
#includevoid setup () {Serial.begin (9600); // conectar à porta serial Serial.println ("Entrada analógica optoisolada");} long int frq; void loop () {FreqCounter ::f_comp =0; // Defina a compensação para 0 FreqCounter ::start (1000); // Comece a contar com gatetime de 1000ms while (FreqCounter ::f_ready ==0) // espere até que o contador esteja pronto frq =FreqCounter ::f_freq; // ler o resultado Serial.println (frq); // imprime atraso do resultado (100);}
Esquemas
O circuito aceita uma tensão de entrada de cerca de 20mV a 5V ou uma corrente de 4 a 20mA (com o jumper W1 inserido). Os dois resistores em paralelo R2 e R3 fornecem um valor de cerca de 250 ohms, para ter 1 V a 5 V para entrada de corrente de 4 mA a 20 mA.São necessários apenas três fios e um resistor para conectar o circuito ao Arduino Uno. A saída do opto-acoplador deve ser conectada à entrada digital D5 com um resistor pull-up de 2,2k conectado ao + 5V do Arduino.
Se uma faixa de entrada de 10 V for necessária, uma fonte de alimentação de 15 V é necessária, então você deve trocar o regulador 7808 por um 7815. O transformador T1 também deve alimentar o sensor, portanto deve ter uma tensão e alimentação adequadas. O trimmer P1 deve ser ajustado para obter um fator de conversão de cerca de 1kHz / V.
Processo de manufatura