Índice:

Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp: 10 etapas (com imagens)
Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp: 10 etapas (com imagens)

Vídeo: Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp: 10 etapas (com imagens)

Vídeo: Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp: 10 etapas (com imagens)
Vídeo: Como usar o Módulo nRF24L01 | Use RF com o Arduino! | Transceiver Fácil de programar! 2024, Novembro
Anonim
Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp
Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp
Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp
Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp
Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp
Registro de dados remoto de alta precisão usando multímetro / Arduino / pfodApp

Atualizado em 26 de abril de 2017. Circuito e placa revisados para uso com medidores USB 4000ZC.

Nenhuma codificação Android necessária

Este instrutível mostra como acessar uma ampla gama de medições de alta precisão de seu Arduino e também enviá-las remotamente para registro e plotagem. Para registro de dados de alta velocidade (2.000 amostras / s), consulte as instruções, Registro remoto de dados de alta velocidade usando Arduino / GL AR150 / Android / pfodApp

O conversor AtoD embutido no Arduino tem baixa precisão, normalmente +/- 10% e faixa muito limitada, tipicamente 0 a 5 V CC apenas. Usando um circuito e uma biblioteca simples, você pode alimentar seu Arduino com medições de faixa automática de alta precisão de um multímetro com uma conexão RS232 opticamente isolada. Ter as medidas disponíveis para o seu esboço permite controlar as saídas com base nos valores. Este tutorial também cobre o envio da medição remotamente, via WiFi, Bluetooth, Bluetooth Low Energy ou SMS, para um celular Android para exibição, registro e plotagem usando pfodApp.

Este instrutível usa uma placa Arduino Mega2560 5V que você pode emparelhar com uma ampla variedade de proteções de comunicação, Ethernet, WiFi, Bluetooth V2 (clássico), Bluetooth LE ou SMS. O hardware de interface e a biblioteca apresentados aqui também podem ser usados com placas compatíveis com 3.3V Arduino. Assim como o Mega2560 você pode usar uma grande variedade de outras placas como UNO com e Ehternet shield, uma placa base ESP8266 (autônoma), uma placa com Bluetooth Low Energy integrado, como Arduino 101, ou placas que se conectam à comunicação sub-sistema usando SPI, como o escudo RedBear BLE e as placas Bluefruit SPI da Adafrut. pfodDesignerV2 suporta todas essas combinações de placa e irá gerar o código para elas. A condição limitante é que você precisa ter um serial de hardware livre para conectar à blindagem RS232 do multímetro.

O circuito e o código apresentados aqui funcionam com vários multímetros. Um disponível, barato, é um Tekpower TP4000ZC, também conhecido como Digitek TD-4000ZC. Multímetros que funcionam com este circuito e biblioteca incluem Digitek DT-4000ZC, Digitech QM1538, Digitech QM1537, Digitek DT-9062, Digitek INO2513, Digitech QM1462, PeakTech 3330, Tenma 72-7745, Uni-Trend UT30A, Uni-Trend UT30E, Uni -Trend UT60E, Voltcraft VC 820, Voltcraft VC 840

Passo 1:

Este tutorial tem duas partes:

A primeira parte cobre a interface de hardware para o multímetro e a biblioteca de código usando um Arduino Mega. Se você deseja apenas obter a medição em seu Arduino, isso é tudo de que você precisa.

A segunda parte cobre o envio da medição para um celular Android remoto para exibição, registro e plotagem. Neste exemplo, usaremos um escudo Bluetooth e geraremos o esboço básico usando pfodDesignerV2, mas você também pode gerar código para conexões WiFi, Ethernet, Bluetooth Low Energy e SMS usando pfodDesignerV2. A biblioteca do multímetro é então adicionada ao esboço básico para completar o código. Nenhuma codificação Android é necessária para exibir, registrar e plotar a leitura. Tudo é controlado a partir do seu código Arduino.

Este projeto também está disponível on-line em www.pfod.com.au

Para obter um display head-up remoto do multímetro, consulte o instrutível Arduino Data Glasses For My Multimeter de Alain.

Etapa 2: o multímetro

O multímetro
O multímetro

Os multímetros usados neste tutorial são o barato (~ US40) Tekpower TP4000ZC (também conhecido como Digitek DT-4000ZC) e o antigo Digitech QM1538, que não é mais vendido. Ambos os medidores são visualmente iguais e usam a mesma codificação RS232 da medição.

Aqui estão as especificações para o Tekpower TP4000ZC: Tensão -DC: 400mV / 4/40 / 400V ± 0,5% + 5, 600V ± 0,8% Tensão AC: 4/40 / 400V ± 0,8% + 5, 400mV / 600V ± 1,2% + Corrente 5DC: 400 / 4000μA ± 2,0% + 5, 40 / 400mA ± 1,5% + 5, 4 / 10A ± 2% + 5AC Corrente: 400 / 4000μA ± 2,5% + 3, 40 / 400mA ± 2% + 5, 4 / 10A ± 2,5% + 5 Resistência: 400Ω / 4/40 / 400kΩ / 4MΩ ± 1% + 5, 40MΩ ± 2% + 5Capacitância: 40nF ± 3,5% + 10, 400nF / 4 / 40μF ± 3% + 5, 100μF ± 3,5% + 5 Freqüência: 10Hz-10MHz ± 0,1% + 5 Ciclo de trabalho: 0,1% -99,9% ± 2,5% + 5Temperatura: 0oC - + 40oC ± 3oC, -50oC - + 200oC ± 0,75% ± 3oC, + 200oC - + 750oC ± 1,5% ± 3oC, resolução de 0,1oC por meio da ponta de prova termopar incluída.

A conexão RS232 do multímetro é apenas uma via e você não pode alterar as configurações do multímetro remotamente, portanto, é necessário selecionar manualmente o tipo de medição. No entanto, o medidor tem escala automática e as configurações de Tensão e Corrente lidam com CA e CC.

Etapa 3: O Hardware da Interface RS232

O Hardware de Interface RS232
O Hardware de Interface RS232
O Hardware de Interface RS232
O Hardware de Interface RS232
O Hardware de Interface RS232
O Hardware de Interface RS232

Existem duas interfaces. Os medidores Digitek DT-4000ZC e Tekpower TP40000ZC mais recentes vêm com um cabo USB. Enquanto o antigo Digitek QM1538 foi fornecido um cabo conector RS232 9 pinos D. O circuito acima (versão pdf) mostra como conectar o opto-acoplador do multímetro para conduzir um pino serial Arduino RX. Nota: Este circuito foi atualizado para adicionar outro resistor de proteção, R2, para os medidores Digitek DT-4000ZC e Tekpower TP40000ZC. Este resistor não foi incluído na placa do conector D de 9 pinos mostrada acima.

Digitek DT-4000ZC e Tekpower TP40000ZC

Para Digitek DT-4000ZC e Tekpower TP40000ZC, você precisa de um cabo de áudio de 3,5 mm macho para macho, estéreo ou mono e um soquete de 3,5 mm.

Digitek QM1538

Para o Digitek QM1538 mais antigo, você precisa de um soquete D de 9 pinos. O conector D de 9 pinos tem pinos compensados que não se conectam à blindagem do protótipo. Apenas corte a linha de 4 pinos para que você possa soldar o conector na placa, já que o circuito usa apenas pinos na segunda linha de 5 pinos. As pernas de montagem foram dobradas para permitir que o conector ficasse plano e o conector foi preso à blindagem do protótipo usando cola epóxi de 2 partes (“Araldite”). O layout do pino do conector mostrado acima é deste site. O resistor de 10K que vem montado dentro do conector dos cabos RS232 fornecidos (conectado entre os pinos 2 e 3) não é necessário para este projeto.

Conectando o sinal a um pino Arduino RX

Este circuito funcionará com placas Arduino de 5 V e 3,3 V. Aqui, estamos usando um Mega2560 (5V) Arduino e montamos o circuito em uma blindagem de protótipo, conforme mostrado acima.

Um cabo voador é usado para conectar o TP1 na blindagem a um Serial1 RX, pino D19, no Mega2560.

Observação sobre o software serial: Inicialmente, este escudo foi emparelhado com um UNO usando o software serial nos pinos 10, 11. No entanto, quando emparelhado com o Bluetooth Shield em serial em 9600baud, alguns bytes de recepção foram perdidos. Mover o RS232 para uma conexão serial de hardware resolveu esse problema. Portanto, para exibição e registro remotos confiáveis, se você estiver usando um escudo de comunicação que se conecta via serial, você precisa de uma placa com dois ou mais seriais de hardware, como o Mega2560. Outras alternativas são um UNO com e escudo Ehternet, uma placa base ESP8266 (autônoma), uma placa com Bluetooth Low Energy integrado como Anduino 101 ou placas que se conectam ao subsistema de comunicação usando SPI como escudo RedBear BLE e Bluefruit SPI da Adafrut Pranchas. pfodDesignerV2 suporta todas essas placas e irá gerar o código para elas.

Etapa 4: a biblioteca PfodVC820MultimeterParser

O Tekpower TP4000ZC e vários outros mulímetros não enviam a medição via RS232 como texto ASCII, em vez disso, envia 14 bytes com bits definidos dependendo de quais segmentos do display LCD estão iluminados. A codificação dos 14 bytes é explicada neste pdf. A biblioteca pfodVC820MeterParser.zip decodifica esses bytes em strings de texto e flutuantes. (O VC820 se refere a um dos medidores que usa essa codificação.) Consulte também QtDMM para software de computador Windows, Mac e Linux que lida com uma ampla variedade de multímetros.

Há um exemplo mínimo, MeterParserExample.ino, do uso da biblioteca pfodVC820MeterParser. Conecte o medidor a uma conexão serial 2400baud e chame haveReading () em cada loop para processar os bytes. haveReading () retornará verdadeiro quando houver uma nova leitura completa analisada. Em seguida, você pode chamar getAsFloat () para obter o valor (dimensionado) como um float ou getAtStr () para obter a leitura com dimensionamento para impressão e registro. Existem outros métodos disponíveis para acessar o tipo de medição, getTypeAsStr () e getTypeAsUnicode (), além de outros métodos utilitários.

#include "pfodVC820MeterParser.h" pfodVC820MeterParser meter; // void setup () {Serial.begin (74880); Serial1.begin (2400); meter.connect (& Serial1); } leitura flutuante; void loop () {if (meter.haveReading ()) {reading = meter.getAsFloat (); // use isso para cálculos do Arduino Serial.print ("Leitura com unidades:"); Serial.print (meter.getDigits ()); Serial.print (meter.getScalingAsStr ()); Serial.print (meter.getTypeAsStr ()); Serial.print (F ("= como flutuante impresso (6 dígitos):")); Serial.println (leitura, 6); Serial.println ("Tempo (seg) e Leitura como string para registro"); Serial.print (((float) millis ()) / 1000,0); Serial.print (", sec,"); Serial.print (meter.getAsStr ()); Serial.print (','); Serial.println (meter.getTypeAsStr ()); }}

Com o medidor definido em Deg C e usando a ponta de prova do termopar, o esboço de exemplo fornece esta saída no monitor serial IDE do Arduino

Leitura com unidades: 25,7C = como flutuante impresso (6 dígitos): 25,700000Tempo (seg) e Leitura como string para registro 2,40, seg, 25,7, C

Etapa 5: Parte 2 - Tela remota, registro e plotagem

Esta parte do tutorial cobre como exibir, registrar e traçar remotamente a leitura do medidor em seu celular Android. pfodApp é usado para controlar a exibição, registro e plotagem em seu celular Android. Nenhuma programação Android é necessária. Todas as exibições, registro e plotagem são completamente controlados por seu esboço do Arduino. O aplicativo gratuito pfodDesignerV2 permite que você projete seu menu e gráfico do Android e, em seguida, gere um esboço do Arduino para você.

pfodApp suporta vários tipos de conexão, Ethernet, WiFi, Bluetooth V2 (clássico), Bluetooth LE ou SMS. Este tutorial usa Arduino 101 (Bluetooth Low Energy) para registro e plotagem de dados. Outras placas Bluetooth Low Energy também são suportadas. Este tutorial usa SMS para se conectar ao pfodApp. Você pode usar pfodDesignerV2 para adicionar registro de dados e gráficos a esse exemplo de SMS. pfodDesignerV2 também tem opções para gerar código Arduino para um escudo Bluetooth V2 (clássico) para conectar ao pfodApp.

Para este exemplo, usaremos um Iteadstudio Bluetooth Shield V2.2 que se conecta ao Arduino Mega2560 por meio de uma conexão serial 9600baud. Usando o aplicativo gratuito pfodDesignerV2, configuramos um menu simples que tem apenas um rótulo para mostrar a leitura do medidor e um botão para abrir o gráfico. Esta página contém vários tutoriais do pfodDesignerV2. Assim que tivermos um esboço básico, iremos modificá-lo para adicionar o analisador do medidor e enviar a leitura do medidor e os dados para registro e gráficos.

Projetando o Menu

Nesta seção, projetaremos um menu Android / pfodApp que exibirá a leitura do medidor e um botão para abrir um gráfico das leituras. As leituras também são salvas em um arquivo no celular Android

Etapa 6: Adicionar um rótulo

Adicionando um rótulo
Adicionando um rótulo
Adicionando um rótulo
Adicionando um rótulo
Adicionando um rótulo
Adicionando um rótulo

Instale o pfodDesignerV2 gratuito e inicie um novo menu.

O destino padrão é Serial em 9600baud, que é o que é necessário para o Iteadstudio Bluetooth Shield V2.2. Se você estiver se conectando usando um dispositivo Bluetooth Low Energy ou Wifi ou SMS, clique em Target para alterar a seleção.

Para adicionar um rótulo para exibir a leitura do medidor, clique em Adicionar Item de Menu e selecione role para baixo para selecionar Rótulo.

Escolha um tamanho de fonte e cores adequados. Deixe o texto como rótulo, pois modificaremos o código gerado para substituí-lo pela medição do medidor posteriormente. Aqui, definimos o tamanho da fonte como +7, a cor da fonte como Vermelho e o fundo como Prata.

Volte para a tela Editing Menu_1 e defina um intervalo de atualização de 1 seg. Isso fará com que o pfodApp solicite novamente o menu cerca de uma vez por segundo para exibir a última leitura no rótulo.

Etapa 7: Adicionando um botão de gráfico

Adicionando um botão de gráfico
Adicionando um botão de gráfico
Adicionando um botão de gráfico
Adicionando um botão de gráfico
Adicionando um botão de gráfico
Adicionando um botão de gráfico
Adicionando um botão de gráfico
Adicionando um botão de gráfico

Clique em Adicionar item de menu novamente para adicionar um botão de gráfico.

Edite o texto do botão do gráfico para algo adequado, por exemplo, basta “Gráfico” e escolher o tamanho e as cores da fonte.

Em seguida, clique no botão “Gráfico” para abrir a tela de edição do gráfico. Haverá apenas um gráfico, então clique nos botões Edit Plot 2 e Edit Plot 3, role para baixo e clique em Hide Plot para cada um deles.

Edite o rótulo do gráfico para algo adequado, por exemplo, “Multímetro”. Não há necessidade de alterar nenhuma das outras configurações de plotagem, pois modificaremos o esboço para enviar uma etiqueta do eixo y diferente, dependendo da configuração do multímetro.

Finalmente, volte para Editing Menu_1 e Edit Prompt, isso define o texto na parte inferior do menu e a cor geral de fundo do menu. Aqui definimos o prompt para “Multímetro Remoto” com tamanho de fonte +3 e cor de fundo prateado.

Agora você pode voltar para Editing Menu_1 e clicar em Preview Menu para visualizar o design do menu.

Se você não gostar do design, pode alterá-lo antes de gerar o código. Se quiser espaçar o rótulo do botão, você pode adicionar alguns rótulos em branco conforme descrito aqui. Adicionando um gráfico e dados de registro em como exibir / plotar dados do Arduino no Android é outro tutorial sobre registro de dados e gráficos pfodDesignerV2 / pfodApp.

Etapa 8: Gerando o Arduino Sketch

Gerando o Arduino Sketch
Gerando o Arduino Sketch
Gerando o Arduino Sketch
Gerando o Arduino Sketch

Para gerar o código do Arduino que exibirá este menu no pfodApp, volte para a tela Editing Menu_1, role para baixo e clique no botão Generate Code.

Clique no botão “Gravar código no arquivo” para enviar o esboço do Arduino para o arquivo /pfodAppRawData/pfodDesignerV2.txt em seu celular. Em seguida, saia do pfodDesignerV2. Transfira o arquivo pfodDesignerV2.txt para o seu PC usando uma conexão USB ou um aplicativo de transferência de arquivos, como wi-fi file transfer pro. Uma cópia do esboço gerado está aqui, pfodDesignerV2_meter.txt

Carregue o esboço em seu IDE Arduino e programe sua placa Uno (ou Mega). Em seguida, adicione o Iteadstudio Bluetooth Shield V2.2. Instale o pfodApp no seu celular Android e crie uma nova conexão Bluetooth chamada, por exemplo, Multímetro. Consulte pfodAppForAndroidGettingStarted.pdf para saber como criar novas conexões. Então, ao usar o pfodApp para abrir a conexão do multímetro, você verá o menu projetado.

Abrir o gráfico não exibe nada de interessante porque não adicionamos o hardware / software do multímetro.

Etapa 9: adicionar o multímetro

Adicionando o multímetro
Adicionando o multímetro
Adicionando o multímetro
Adicionando o multímetro
Adicionando o multímetro
Adicionando o multímetro

Vamos modificar o esboço gerado para adicionar o analisador do multímetro e enviar seus dados para o seu celular Android. O esboço modificado completo está aqui, pfod_meter.ino

Essas modificações adicionam o analisador do multímetro e um temporizador de 5 segundos. Se não houver uma nova leitura válida nesse período, o esboço para de enviar dados e atualiza a tela Android / pfodApp para “- - -“. Conforme a seleção manual do medidor é alterada, os rótulos do gráfico são atualizados, mas você precisa sair do gráfico e selecioná-lo novamente para ver os novos rótulos. Por outro lado, a leitura do medidor é atualizada automaticamente a cada segundo. Finalmente, pfodApp lida com Unicode por padrão, portanto, ao exibir a leitura do medidor, o método getTypeAsUnicode () é usado para retornar o Unicode para ohms, Ω e degsC, ℃ para a exibição do medidor.

O botão do gráfico exibe um gráfico de atualização das leituras: -

Os dados do gráfico, em formato CSV, também são salvos em um arquivo no seu celular Android em /pfodAppRawData/Mulitmeter.txt para posterior transferência para o seu computador e importação para uma planilha para cálculos e gráficos adicionais.

Etapa 10: as modificações do esboço em detalhes

  1. Baixe a biblioteca pfodVC820MeterParser.zip e, a seguir, abra o IDE do Arduino e clique em Sketch → Incluir biblioteca → Adicionar.zip para adicionar esta biblioteca ao seu IDE.
  2. Adicione a biblioteca pfodVC820MeterParser ao esboço. Clique em Sketch → Incluir Biblioteca → pfodVC820MeterParser. Isso adicionará as instruções de inclusão na parte superior do esboço.
  3. Editar analisador pfodParser_codeGenerated ("V1"); para o analisador pfodParser_codeGenerated (""); Isso desativa o cache do menu em pfodApp para que suas alterações de menu sejam exibidas. Você pode reverter para “V3” quando terminar todas as alterações para reativar o cache de menu.
  4. Adicione essas linhas para criar os objetos para o serial do software e o multímetro. pfodVC820MeterParser meter;
  5. No final da configuração () adicione Serial1.begin (2400); meter.connect (& Serial1);
  6. O loop acima () adiciona long sem sinal validReadingTimer = 0; const sem sinal long VALID_READINGS_TIMEOUT = 5000; // 5secs bool haveValidReadings = true; // definido como verdadeiro quando houver leituras válidas int mediçãoType = meter. NO_READING; e no topo do loop () adicione if (meter.haveReading ()) {if (meter.isValid ()) {validReadingTimer = millis (); haveValidReadings = true; } int newType = meter.getType (); if (measureType! = newType) {// gera novos títulos de registro de dados parser.print (F ("sec,")); parser.println (meter.getTypeAsStr ()); } mediçãoType = newType; } if ((millis () - validReadingTimer)> VALID_READINGS_TIMEOUT) {haveValidReadings = false; // nenhuma nova leitura válida nos últimos 5 segundos}
  7. Mais abaixo no loop, substitua parser.print (F ("{= Multimeter | time (secs) | Plot_1 ~~~ ||}")); com parser.print (F ("{= Multímetro | tempo (segundos) | Leitura do medidor ~~~")); parser.print (meter.getTypeAsStr ()); parser.print (F ("||}"));
  8. No final do loop () substitua sendData (); com if (haveValidReadings) {sendData (); }
  9. Em sendData () substitua parser.print (','); parser.print (((float) (plot_1_var-plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); com parser.print (','); parser.print (meter.getAsStr);
  10. Em sendMainMenu () substitua parser.print (F ("~ Label")); com parser.print ('~'); if (haveValidReadings) {parser.print (meter.getDigits ()); parser.print (meter.getScalingAsStr ()); parser.print (meter.getTypeAsUnicode ()); } else {parser.print (F ("- - -")); }
  11. Em sendMainMenuUpdate () adicione parser.print (F ("|! A")); parser.print ('~'); if (haveValidReadings) {parser.print (meter.getDigits ()); parser.print (meter.getScalingAsStr ()); parser.print (meter.getTypeAsUnicode ()); } else {parser.print (F ("- - -")); } Para atualizar a leitura ao usar o cache de menu.

Conclusão

Este tutorial mostrou como conectar um multímetro barato a um Arduino Mega2560 via RS232. Muitas outras placas também são suportadas. A pfodVC820MeterParserlibrary analisa os dados do multímetro em flutuações para cálculos do Arduino e strings para exibição e registro. pfodDesignerV2 foi usado para gerar um esboço básico para exibir a leitura do multímetro e mostrar um gráfico dos valores em um celular Android usando pfodApp. Nenhuma programação Android é necessária. A este esboço básico foi adicionado o manuseio do multímetro e o esboço final exibe a leitura atual do multímetro em seu celular Android, bem como traça as leituras e registra-as em um arquivo em seu celular para uso posterior.

Recomendado: