Índice:
- Passo 1:
- Etapa 2: Teste de Saída de Instrumento
- Etapa 3: Calibração
- Etapa 4: Programação do Arduino
- Etapa 5: Mais algumas fotos
- Etapa 6: encaixando
- Etapa 7: apenas fotos
- Etapa 8: Palavras Finais
Vídeo: Gerador / testador de 4-20ma usando Arduino: 8 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:34
Os geradores de 4-20 mA estão disponíveis no ebay, mas eu adoro a parte DIY das coisas e usar as peças que tenho por aí.
Eu queria testar as entradas analógicas de nosso PLC para verificar nossas leituras de scada e testar a saída de instrumentos de 4-20 mA. Existem muitos conversores de corrente para tensão e conversores de tensão para corrente para Arduino no ebay, mas eles precisam de calibração. Posso usar isso para calibrar qualquer um desses conversores encontrados no ebay e similares.
Eu decidi que vou fazer DIY um gerador e testador. No momento, ainda é um trabalho em andamento e um protótipo.
Eu tinha um sistema de som 2.1 antigo que não estava sendo usado (alto-falantes pequenos). Então, usei uma das caixas de alto-falante como um invólucro. Eu também tinha um amplificador que morreu por causa de um raio, removi o terminal de alto-falante desse amplificador para tornar a conexão uma brisa. Pretendo fazer um PCB no futuro e um gabinete melhor.
Suprimentos:
Lista de peças.
LCD // 20x4 (adapte o código se o seu for menor)
LM7808 // regulador de 8 volts
LED // Qualquer tipo ou tamanho
Resistor para LED // Apropriado para o tipo LED e 8 volts
Resistor de 100 ohm + resistor de 47 ohm em série // Será usado como resistor de derivação
10K resistor // Arduino analógico em proteção contra alta tensão
22K resistor // Para parar A0 de flutuar
Resistor Trimpot 100 ohm + 47 ohm em série // simulador PT100
Capacitor de 35 volts // eu usei 470uF, apenas para manter as flutuações de tensão de alimentação baixas
RTD (transdutor PT100) // Span não importa (faixa)
DIODO (para proteção de polaridade)
INA219
Arduino
Passo 1:
Seguir o esquema deve ajudar você a saber onde adicionar as peças e conectá-las.
O LM7808 permite uma entrada máxima de 25 volts, o que é bom para sistemas PLC, eles geralmente usam fontes de alimentação de 24 volts. Adicione um dissipador de calor ao regulador e não o use por longos períodos. A queda de 16 volts faz com que o regulador gere muito calor.
A alimentação de entrada alimenta o regulador e se conecta ao INA219 VIN, nesta configuração o INA219 também será capaz de medir a tensão de alimentação correta menos a queda de tensão do diodo. Você deve medir a queda de tensão do diodo e adicioná-la ao código para obter a leitura correta da tensão de alimentação.
Do VOUT INA219 para o RTD + energiza o RTD. RTD- para aterramento completa o circuito.
Para testar uma placa analógica PLC, você conectaria o RTD- à entrada na placa analógica e o aterramento da placa ao aterramento Arduino. (Certifique-se de desconectar qualquer instrumento conectado ao canal que está sendo testado).
R5 e LED1, indicando que o sistema está ligado.
O regulador alimenta o arduino VIN (o arduino tem regulador integrado para 5 volts).
O pino do Arduino 5V vai para INA219 para alimentar o chip on-board. INA219 GND para aterramento arduino.
Trim pot Wiper para RTD PIN1 e Trim pot pino 3 para RTD pino 2 irá simular uma conexão PT100. (Troque os fios se girar o potenciômetro no sentido horário não aumentar o mA).
Etapa 2: Teste de Saída de Instrumento
Para testar a saída do instrumento, são necessárias peças extras, como um resistor de derivação. Resistores normais de 0,25 W farão o trabalho muito bem. Você pode deixar o resistor shunt e adicionar um segundo INA219 para testar a saída do instrumento. Eu só tinha um, então usei um resistor.
O teste com um shunt só pode ser feito no lado negativo do dispositivo. Se você usar o lado positivo, fornecerá ao seu arduino mais de 4 vezes a voltagem permitida e deixará a fumaça sair.
Adicione o resistor shunt em série com o fio negativo do instrumento. O lado do shunt mais próximo do dispositivo se tornará o analógico positivo para o arduino. O outro lado do shunt mais próximo da fonte de alimentação se tornará o aterramento do Arduino, completando o circuito de entrada analógica.
O resistor shunt de 150 ohms é o máximo absoluto que deve ser usado ao usar um arduino. O resistor tem uma queda de tensão linear ao mA que flui através dele. Quanto maior for o mA, maior será a tensão.
Na corrente de 20mA # 150ohm * 0,02A = 3 volts para arduino.
Em 4mA atual # 150ohm * 0,004A = 0,6 volts para arduino.
Agora você pode querer que a voltagem esteja próxima de 5 volts para que você possa usar a faixa ADC completa do arduino. (Não é uma boa ideia).
Os RTDs podem atingir uma saída de 30,2 mA (o meu chega). 150 ohm * 0,03A = 4,8 volts. Isso é o mais próximo que eu gostaria de estar.
Outro site indicou usar um resistor de 250ohm.
Na corrente de 20mA # 250ohm * 0,02A = 5 volts para arduino.
Na corrente de 30mA # 250ohm * 0,03A = 7,5 volts para arduino.
Você corre o risco de queimar seu ADC e Arduino.
Para testar um instrumento em campo, leve uma bateria de 12 volts com você e conecte-a à entrada de alimentação. O uso de uma fonte de alimentação externa não influencia a configuração atual do PLC.
Para testar uma placa de entrada analógica em campo, leve uma bateria de 12 volts com você. Desconecte o instrumento + do circuito. Conecte o aterramento ao aterramento do instrumento e o RTD- ao fio do instrumento desconectado.
Etapa 3: Calibração
Para calibrar a leitura do resistor de shunt, conecte o RTD- à entrada analógica do shunt. Defina o potenciômetro de compensação de modo que o mA gerado seja de 4 mA. Se o mA do seu dispositivo não for igual, modifique o primeiro valor no código na linha 84. Aumentar esse valor diminuirá a leitura de mA.
Em seguida, defina seu potenciômetro de compensação para gerar 20 mA. Se o mA do seu dispositivo não for igual, modifique o segundo valor no código na linha 84.
Portanto, seu 4-20mA agora se tornará 0,6-3volts (teórico). Alcance mais do que suficiente. Usando a biblioteca do eRCaGuy, a sobreamostragem fornecerá uma leitura melhor e estável.
Espero que você leia isso. Este é o meu primeiro instrutível, então, por favor, vá com calma se eu tiver cometido um erro em algum lugar ou deixado algo de fora.
Este projeto provavelmente não é a melhor maneira de realizá-lo, mas funciona para mim e foi divertido fazê-lo.
Algumas ideias que tenho extra…
Adicione um servo para girar o trim pot dentro da caixa.
Adicione botões para girar o servo para a esquerda ou direita.
Adicione um sensor de temperatura digital ao dissipador de calor do regulador para alertar sobre o calor perigoso.
Etapa 4: Programação do Arduino
#incluir
// #include // Remova o comentário se você usar um LCD com um registrador de deslocamento.
#incluir
#incluir
#incluir
#incluir
// A4 = (SDA)
// A5 = (SCL)
Adafruit_INA219 ina219;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
// LiquidCrystal_SR lcd (3, 4, 2); // Remova o comentário se você usar um LCD com um registro de deslocamento.
// | | | _ Pino de trava
// | / _ Pin do relógio
// / _ Dados / Habilitar Pin
byte bitsOfResolution = 12; // resolução sobreamostrada comandada
longo sem sinal numSamplesToAvg = 20; // número de amostras NA RESOLUÇÃO OVERSAMPLED que você deseja obter e fazer a média
ADC_prescaler_t ADCSpeed = ADC_DEFAULT;
sem sinal long previousMillis = 0;
flutuação da tensão de derivação = 0,0; // De INA219
tensão de barramento flutuante = 0,0; // De INA219
float current_mA = 0,0; // De INA219
flutuação da tensão de carga = 0,0; // De INA219
arduinovoltagem flutuante = 0,0; // Cálculo da tensão do pino A0
Longo sem sinal A0analogReading = 0;
byte analogIn = A0;
float ma_mapped = 0.0; // Mapeie a tensão de A0 a 4-20mA
void setup () {
adc.setADCSpeed (ADCSpeed);
adc.setBitsOfResolution (bitsOfResolution);
adc.setNumSamplesToAvg (numSamplesToAvg);
uint32_t currentFrequency;
ina219.begin ();
ina219.setCalibration_32V_30mA (); // Biblioteca modificada para mais precisão em mA
lcd.begin (20, 4); // inicializa o LCD
lcd.clear ();
lcd.home (); // vá para casa
lcd.print ("********************");
atraso (2000);
lcd.clear ();
}
void loop ()
{
currentMillis longo sem sinal = millis ();
intervalo longo const = 100;
//&&&&&&&&&&&&&&&&&
Leia dispositivos I2C em intervalos e faça alguns cálculos
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
if (currentMillis - previousMillis> = intervalo) {
anteriorMillis = currentMillis;
Intervalo();
}
Print_To_LCD (); // Provavelmente não preciso atualizar o LCD tão rápido e posso ser movido para abaixo de Interval ()
}
vazio
Intervalo() {
shuntvoltage = ina219.getShuntVoltage_mV ();
busvoltage = ina219.getBusVoltage_V ();
current_mA = ina219.getCurrent_mA ();
tensão de carga = (tensão de barramento + (tensão de derivação / 1000)) + 0,71; // +0,71 é a queda de tensão do meu diodo
A0analogReading = adc.newAnalogRead (analogIn);
arduinovoltage = (5.0 * A0analogReading); // Calculado para mV
ma_mapped = map (arduinovoltage, 752, 8459, 30, 220) / 10,0; // O mapa não pode usar flutuadores. Adicione um 0 atrás do valor mapeado e divida por 10 para obter a leitura flutuante.
// O mapeamento a partir do cálculo de tensão fornece uma leitura mais estável do que usar a leitura adc bruta.
if (shuntvoltage> = -0,10 && shuntvoltage <= -0,01) // Sem carga o INA219 tende a ler abaixo de -0,01, bem o meu faz.
{
current_mA = 0;
busvoltage = 0;
tensão de carga = 0;
shuntvoltage = 0;
}
}
vazio
Print_To_LCD () {
lcd.setCursor (0, 0);
if (ma_mapped <1.25) {// Sem corrente, esta é minha leitura de mA, então eu simplesmente a jogo fora.
lcd.print ("* Gerador 4-20 mA *");
}
outro {
lcd.print ("** Analog Tester **");
}
lcd.setCursor (0, 1);
lcd.print ("Dispositivo:");
lcd.setCursor (10, 1);
if (ma_mapped <1,25) {
lcd.print ("sem dispositivo");
}
outro {
lcd.print (ma_mapped);
}
lcd.print ("mA");
lcd.setCursor (0, 2);
lcd.print ("Gerar:");
lcd.setCursor (10, 2);
lcd.print (current_mA);
lcd.print ("mA");
lcd.setCursor (0, 3);
lcd.print ("Fornecimento:");
lcd.setCursor (10, 3);
lcd.print (tensão de carga);
lcd.print ("V");
}
Etapa 5: Mais algumas fotos
Terminal de alto-falante amplificador. LED acionado pelo gerador de corrente (RTD). A fiação da placa analógica substituirá o LED.
O terminal mais à esquerda é para entrada de alimentação. Os terminais à direita são para entrada de instrumento.
Etapa 6: encaixando
Tudo parece se encaixar. Usei silicone para segurar temporariamente algumas coisas. O potenciômetro de acabamento é feito de silicone no canto superior direito. Um pequeno buraco foi pré-perfurado. Posso ajustar a corrente do topo da caixa.
Etapa 7: apenas fotos
Etapa 8: Palavras Finais
Testei a saída deste dispositivo com um PLC Allan Bradley. Os resultados foram muito bons. Também testei este dispositivo com sensor de pressão de 4-20 mA que possui um display LCD integrado. Novamente os resultados foram muito bons. Minhas leituras estavam erradas por algumas casas decimais.
Eu escrevo meu código do Arduino em guias. Nos PLCs são chamados de sub-rotinas. Facilita a depuração para mim.
Em anexo estão os arquivos de texto dessas guias.
Recomendado:
Testador de capacidade da bateria usando Arduino [Lithium-NiMH-NiCd]: 15 etapas (com imagens)
Testador de capacidade da bateria usando Arduino [Lithium-NiMH-NiCd]: Características: Identifica uma bateria de íon-lítio / polímero de lítio / NiCd / NiMH falsa Carga de corrente constante ajustável (também pode ser modificada pelo usuário) Capaz de medir a capacidade de quase qualquer tipo de bateria (abaixo de 5 V) Fácil de soldar, construir e usar
Gerador - Gerador DC usando chave Reed: 3 etapas
Gerador - Gerador DC usando interruptor Reed: Gerador DC simples Um gerador de corrente contínua (DC) é uma máquina elétrica que converte energia mecânica em eletricidade de corrente contínua. Importante: Um gerador de corrente contínua (DC) pode ser usado como um motor DC sem qualquer tipo de construção alterar
Testador de IC, Op-Amp, Testador de temporizador 555: 3 etapas
IC Tester, Op-Amp, 555 Timer Tester: Todos os ICs ruins ou de substituição estão espalhados, mas se eles se misturarem, leva muito tempo para identificar um ruim ou bom. Neste artigo, aprendemos como podemos fazer ICs testador, vamos continuar
Gerador de tons "Jimikky Kammal" usando Arduino Pro Mini: 5 etapas
Gerador de tons "Jimikky Kammal" usando o Arduino Pro Mini: este é um projeto simples de gerador de tons usando o Arduino Pro Mini. Uma parte do super hit " Jimikky Kammal " do filme " Velipadinte Pusthakam " é desenvolvido em monotônico. As notas musicais ocorrem na natureza como sinusos suaves e ondulantes
Testador de capacidade da bateria de íons de lítio (testador de energia de lítio): 5 etapas
Testador de capacidade da bateria de íons de lítio (Testador de energia de lítio): =========== AVISO & ISENÇÃO DE RESPONSABILIDADE ========== As baterias de íon de lítio são muito perigosas se não forem manuseadas de maneira adequada. NÃO CARREGUE / QUEIMA / ABRA BATAS DE ÍON DE LÍTIO Tudo o que você fizer com essas informações é de sua responsabilidade ====== =============================================