Taula de continguts:

Registre remot de dades d'alta precisió mitjançant el multímetre / Arduino / pfodApp: 10 passos (amb imatges)
Registre remot de dades d'alta precisió mitjançant el multímetre / Arduino / pfodApp: 10 passos (amb imatges)

Vídeo: Registre remot de dades d'alta precisió mitjançant el multímetre / Arduino / pfodApp: 10 passos (amb imatges)

Vídeo: Registre remot de dades d'alta precisió mitjançant el multímetre / Arduino / pfodApp: 10 passos (amb imatges)
Vídeo: CS50 2013 - Week 9 2024, Juny
Anonim
Registre remot de dades d'alta precisió mitjançant Multímetre / Arduino / pfodApp
Registre remot de dades d'alta precisió mitjançant Multímetre / Arduino / pfodApp
Registre remot de dades d'alta precisió mitjançant Multímetre / Arduino / pfodApp
Registre remot de dades d'alta precisió mitjançant Multímetre / Arduino / pfodApp
Registre remot de dades d'alta precisió mitjançant Multímetre / Arduino / pfodApp
Registre remot de dades d'alta precisió mitjançant Multímetre / Arduino / pfodApp

Actualitzat el 26 d'abril de 2017 Circuit i placa revisats per utilitzar-los amb comptadors USB 4000ZC.

No cal cap codificació d'Android

Aquest instructiu us mostra com accedir a una àmplia gamma de mesures d’alta precisió des del vostre Arduino i també enviar-les de forma remota per registrar-les i traçar-les. Per al registre de dades d’alta velocitat (2000 mostres / s), consulteu aquest registre de dades d’alta velocitat instrucatble mitjançant Arduino / GL AR150 / Android / pfodApp

El convertidor AtoD integrat a l’Arduino té una precisió deficient, normalment +/- 10% i un rang molt limitat, normalment només de 0 a 5V DC volts. Mitjançant un circuit i una biblioteca senzills, podeu alimentar el vostre Arduino amb mesures d’autonomia de gran precisió des d’un multímetre amb una connexió RS232 òpticament aïllada. Tenir les mesures disponibles per al vostre esbós us permet controlar les sortides en funció dels valors. Aquest tutorial també inclou l'enviament de la mesura de manera remota, mitjançant WiFi, Bluetooth, Bluetooth de baix consum o SMS, a un mòbil Android per a la visualització, registre i representació mitjançant pfodApp.

Aquest instructiu utilitza una placa Arduino Mega2560 5V que podeu combinar amb una gran varietat de blindatges de comunicació, Ethernet, WiFi, Bluetooth V2 (clàssic), Bluetooth LE o SMS. El maquinari i la biblioteca de la interfície que es presenten aquí també es poden utilitzar amb plaques compatibles Arduino de 3,3 V. A més del Mega2560, podeu utilitzar una gran varietat d’altres plaques, com ara UNO amb i blindatge Ehternet, una placa base ESP8266 (autònoma), una placa amb Bluetooth Low Energy integrat, com Arduino 101, o plaques que es connecten a la comunicació subsistema que utilitza SPI com RedBear BLE shield i les taules SPI Bluefruit d'Adafrut. pfodDesignerV2 admet totes aquestes combinacions de taulers i en generarà el codi. La condició limitant és que necessiteu disposar d’un serial de maquinari gratuït per connectar-vos a aquest escut multímetre RS232.

El circuit i el codi que es presenta aquí funciona amb diversos multímetres. Un de fàcil accés, econòmic, és un Tekpower TP4000ZC, també conegut com Digitek TD-4000ZC. Els multímetres que funcionen amb aquest circuit i biblioteca inclouen 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

Pas 1:

Aquest tutorial té dues parts:

La primera part cobreix la interfície de maquinari del multímetre i la biblioteca de codis mitjançant un Arduino Mega. Si només voleu obtenir la mesura al vostre Arduino, això és tot el que necessiteu.

La segona part tracta de l'enviament de la mesura a un mòbil Android remot per a la visualització, registre i representació. En aquest exemple, utilitzarem un escut Bluetooth i generarem l'esbós bàsic mitjançant pfodDesignerV2, però també podeu generar codi per a connexions WiFi, Ethernet, Bluetooth Low Energy i SMS mitjançant pfodDesignerV2. A continuació, s’afegeix la biblioteca multímetre a l’esbós bàsic per completar el codi. No es necessita cap codificació d'Android per mostrar, registrar i representar la lectura. Tot està controlat des del vostre codi Arduino.

Aquest projecte també està disponible en línia a www.pfod.com.au

Per obtenir una visualització remota remota del multímetre, consulteu aquest instructiu Arduino Data Glasses For My Multimeter d’Alain.

Pas 2: el multímetre

El multímetre
El multímetre

Els multímetres que s’utilitzen en aquest tutorial són el Tekpower TP4000ZC (també conegut com Digitek DT-4000ZC) i el Digitech QM1538, que ja no es ven. Aquests dos mesuradors són visualment iguals i fan servir la mateixa codificació RS232 de la mesura.

Aquí teniu les especificacions del Tekpower TP4000ZC: -Tensió DC: 400mV / 4/40 / 400V ± 0,5% + 5, 600V ± 0,8% Voltatge CA: 4/40 / 400V ± 0,8% + 5, 400mV / 600V ± 1,2% + Corrent 5DC: 400 / 4000μA ± 2,0% + 5, 40 / 400mA ± 1,5% + 5, 4 / 10A ± 2% + 5 CA Actual: 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% + 5 Capacitat: 40nF ± 3,5% + 10, 400nF / 4 / 40μF ± 3% + 5, 100μF ± 3,5% + 5 Freqüència: 10Hz-10MHz ± 0,1% + 5 Cicle de treball: 0,1% -99,9% ± 2,5% + 5 Temperatura: 0oC - + 40oC ± 3oC, -50oC - + 200oC ± 0,75% ± 3oC, + 200oC - + 750oC ± 1,5% ± 3oC, resolució 0,1oC mitjançant sonda de termopar inclosa.

La connexió RS232 del multímetre és només una manera i no podeu canviar la configuració del multímetre de manera remota, de manera que heu de seleccionar manualment el tipus de mesura. Tanmateix, el mesurador es pot ajustar automàticament i els paràmetres de tensió i corrent gestionen tant CA com CC.

Pas 3: el maquinari de la interfície RS232

El maquinari d'interfície RS232
El maquinari d'interfície RS232
El maquinari d'interfície RS232
El maquinari d'interfície RS232
El maquinari d'interfície RS232
El maquinari d'interfície RS232

Hi ha dues interfícies. Els mesuradors més nous Digitek DT-4000ZC i Tekpower TP40000ZC inclouen un cable USB. Mentre que al Digitek QM1538 més antic se li proporcionava un cable de connector RS232 de 9 pines D. El circuit anterior (versió pdf) mostra com connectar l’acoblador opto del multímetre per accionar un pin sèrie Arduino RX. Nota: Aquest circuit s'ha actualitzat per afegir una altra resistència de protecció, R2, per als comptadors Digitek DT-4000ZC i Tekpower TP40000ZC. Aquesta resistència no es va incloure a la placa de connectors D de 9 pins que es mostra a la part superior.

Digitek DT-4000ZC i Tekpower TP40000ZC

Per al Digitek DT-4000ZC i el Tekpower TP40000ZC, necessiteu un cable d'àudio de 3,5 mm entre mascle i estèreo o mono, i una presa de 3,5 mm.

Digitek QM1538

Per a la versió anterior de Digitek QM1538, necessiteu un sòcol de 9 pines D. El connector D de 9 pines té pins compensats que no es connectaran al prototip de protecció. Només heu de tallar la fila de 4 pins perquè pugueu soldar el connector a la placa, ja que el circuit només utilitza pins de la segona fila de 5 pins. Les potes de muntatge es van doblegar per deixar el connector pla i el connector es va fixar al prototip de protecció mitjançant cola epoxi de dues parts ("Araldita"). La resistència de 10K que ve muntada dins del connector dels cables RS232 subministrats (connectats entre els pins 2 i 3) no és necessària per a aquest projecte.

Connexió del senyal a un pin Arduino RX

Aquest circuit funcionarà tant per a plaques Arduino de 5V com de 3,3V. Aquí estem utilitzant un Arduino Mega2560 (5V) i muntem el circuit en un prototip de protecció com es mostra més amunt.

Un cable volador s’utilitza per connectar el TP1 a l’escut a un Serial1 RX, pin D19, al Mega2560.

Nota sobre el programari en sèrie: inicialment aquest escut es va emparellar amb un UNO que utilitza el programari en sèrie als pins 10, 11. Tot i que quan es va emparellar amb el Bluetooth Shield en sèrie a 9600 baud, es van perdre alguns bytes de recepció. Moure l'RS232 a una connexió de maquinari en sèrie ha resolt aquest problema. Per tant, per a una visualització i registre remots fiables, si utilitzeu un blindatge de comunicació que es connecta per sèrie, necessiteu una placa amb dos o més sèries de maquinari com el Mega2560. Altres alternatives són un escut UNO i Ehternet, una placa base ESP8266 (autònoma), una placa amb Bluetooth Low Energy integrat com Anduino 101 o plaques que es connecten al subsistema de comunicació mitjançant SPI com RedBear BLE shield i Bluefruit SPI d’Adafrut taulers. pfodDesignerV2 admet tots aquests taulers i generarà el codi per a ells.

Pas 4: la biblioteca PfodVC820MultimeterParser

El Tekpower TP4000ZC i altres mulímetres no envien la mesura mitjançant RS232 com a text ASCII, sinó que envien 14 bytes amb bits configurats en funció dels segments de la pantalla LCD que estiguin il·luminats. La codificació dels 14 bytes s’explica en aquest pdf. La biblioteca pfodVC820MeterParser.zip descodifica aquests bytes en cadenes de text i flotants. (El VC820 fa referència a un dels comptadors que utilitza aquesta codificació.) Vegeu també el programari QtDMM per a Windows, Mac i Linux que gestiona una àmplia gamma de multímetres.

Hi ha un exemple mínim, MeterParserExample.ino, d’utilitzar la biblioteca pfodVC820MeterParser. Connecteu el comptador a una connexió sèrie 2400baud i, a continuació, truqueu a haveReading () cada bucle per processar els bytes. haveReading () tornarà cert quan hi hagi una nova lectura completa analitzada. A continuació, podeu trucar a getAsFloat () per obtenir el valor (escalat) com a float o getAtStr () per obtenir la lectura amb escala per imprimir i registrar. Hi ha altres mètodes disponibles per accedir al tipus de mesura, getTypeAsStr () i getTypeAsUnicode (), així com altres mètodes d’utilitat.

#include "pfodVC820MeterParser.h" pfodVC820MeterParser meter; // void setup () {Serial.begin (74880); Serial1.begin (2400); meter.connect (& Serial1); } lectura flotant; bucle buit () {if (meter.haveReading ()) {reading = meter.getAsFloat (); // utilitzeu això per als càlculs d'Arduino Serial.print ("Lectura amb unitats:"); Serial.print (meter.getDigits ()); Serial.print (meter.getScalingAsStr ()); Serial.print (meter.getTypeAsStr ()); Serial.print (F ("= com a imprès flotant (6 dígits):")); Serial.println (lectura, 6); Serial.println ("Temps (seg) i Lectura com a cadena per al registre"); Serial.print ((((float) millis ()) / 1000.0); Serial.print (", sec"); Serial.print (meter.getAsStr ()); Serial.print (','); Serial.println (meter.getTypeAsStr ()); }}

Amb el mesurador configurat a Deg C i utilitzant la sonda de termoparell, l’esbós d’exemple dóna aquesta sortida al monitor sèrie Arduino IDE

Lectura amb unitats: 25,7C = com a imprès flotant (6 dígits): 25,700000 Temps (seg) i Lectura com a cadena per registrar 2,40, seg, 25,7, C

Pas 5: Part 2: visualització, registre i traçat remots

Aquesta part del tutorial explica com visualitzar, registrar i representar de forma remota la lectura del comptador al vostre mòbil Android. pfodApp s'utilitza per gestionar la visualització, el registre i la representació del vostre mòbil Android. No cal programar Android. Totes les visualitzacions, registre i traçat estan completament controlades pel vostre esbós Arduino. L'aplicació gratuïta pfodDesignerV2 us permet dissenyar el menú i el gràfic d'Android i, a continuació, us genera l'esbós Arduino.

pfodApp admet diversos tipus de connexions, Ethernet, WiFi, Bluetooth V2 (clàssic), Bluetooth LE o SMS. Aquest tutorial utilitza Arduino 101 (Bluetooth Low Energy) per al registre i la representació de dades. També s’admeten altres plaques Bluetooth de baix consum. Aquest tutorial utilitza SMS per connectar-se a pfodApp. Podeu utilitzar pfodDesignerV2 per afegir registre de dades i gràfics a aquest exemple de SMS. pfodDesignerV2 també té opcions per generar codi Arduino a un blindatge Bluetooth V2 (clàssic) per connectar-se a pfodApp.

Per a aquest exemple utilitzarem un Iteadstudio Bluetooth Shield V2.2 que es connecta a l'Arduino Mega2560 mitjançant una connexió sèrie 9600baud. Mitjançant l’aplicació gratuïta pfodDesignerV2, configurem un menú senzill que només té una etiqueta per mostrar la lectura del comptador i un botó per obrir el gràfic. Aquesta pàgina conté diversos tutorials de pfodDesignerV2. Un cop tinguem un esbós bàsic, el modificarem per afegir l’analitzador del comptador i enviar la lectura i les dades del comptador per al registre i el gràfic.

Disseny del menú

En aquesta secció dissenyarem un menú Android / pfodApp que mostrarà la lectura del comptador i un botó per obrir un gràfic de les lectures. Les lectures també es guarden en un fitxer al mòbil Android

Pas 6: Afegir una etiqueta

Afegir una etiqueta
Afegir una etiqueta
Afegir una etiqueta
Afegir una etiqueta
Afegir una etiqueta
Afegir una etiqueta

Instal·leu el pfodDesignerV2 gratuït i inicieu un menú nou.

El destí predeterminat és Serial a 9600baud, que és el que es necessita per a Iteadstudio Bluetooth Shield V2.2. Si us connecteu mitjançant un dispositiu Bluetooth de baix consum, Wifi o SMS, feu clic a Destinació per canviar la selecció.

Per afegir una etiqueta per mostrar la lectura del comptador, feu clic a Afegeix un element de menú i seleccioneu el desplaçament cap avall per seleccionar Etiqueta.

Trieu una mida i colors de lletra adequats. Deixeu el text com a etiqueta ja que modificarem el codi generat per substituir-lo per la mesura del mesurador més endavant. Aquí hem definit la mida de la font a +7, el color de la font a Vermell i el fons a Plata.

Torneu a la pantalla Menú d'edició_1 i configureu un interval d'actualització 1 s. El programa farà que pfodApp torni a sol·licitar el menú aproximadament un cop per segon per mostrar la darrera lectura a l’etiqueta.

Pas 7: afegir un botó de gràfic

Afegir un botó de gràfic
Afegir un botó de gràfic
Afegir un botó de gràfic
Afegir un botó de gràfic
Afegir un botó de gràfic
Afegir un botó de gràfic
Afegir un botó de gràfic
Afegir un botó de gràfic

Feu clic a Afegeix un element de menú per afegir un botó de gràfic.

Editeu el text del botó de gràfic per fer-lo adequat, per exemple. només cal que trieu "Gràfic" i trieu la mida i els colors de la lletra.

A continuació, feu clic al botó "Gràfic" per obrir la pantalla d'edició de la trama. Només hi haurà una trama, així que feu clic als botons Edita la trama 2 i Edita la trama 3 i desplaceu-vos cap avall i feu clic a Amaga la trama per a cadascun d'ells.

Editeu l'etiqueta del gràfic perquè sigui adequada, per exemple. "Multímetre". No cal canviar cap altra configuració de la trama, ja que modificarem l'esbós per enviar diferents etiquetes de l'eix Y en funció de la configuració del multímetre.

Finalment, torneu al menú Edició_1 i Edita el símbol, això defineix el text a la part inferior del menú i el color de fons general del menú. Aquí hem establert la sol·licitud a "Multímetre remot" amb mida de lletra +3 i color de fons Plata.

Ara podeu tornar a Editar menú_1 i fer clic a Vista prèvia del menú per previsualitzar el disseny del menú.

Si no us agrada el disseny, podeu canviar-lo abans de generar el codi. Si voleu deixar espai a l'etiqueta del botó, podeu afegir algunes etiquetes en blanc tal com es descriu aquí. Afegir un gràfic i registrar dades sobre com mostrar / representar dades d’Arduino a Android és un altre tutorial sobre registre de dades i gràfics de pfodDesignerV2 / pfodApp.

Pas 8: generació de l'esbós d'Arduino

S'està generant l'Arduino Sketch
S'està generant l'Arduino Sketch
Generació de l’Arduino Sketch
Generació de l’Arduino Sketch

Per generar el codi Arduino que mostrarà aquest menú a pfodApp, torneu a la pantalla Edició del menú_1 i desplaceu-vos cap avall i feu clic al botó Genera codi.

Feu clic al botó "Escriu codi al fitxer" per enviar l'esbós d'Arduino al fitxer /pfodAppRawData/pfodDesignerV2.txt del vostre mòbil. A continuació, sortiu del pfodDesignerV2. Transferiu el fitxer pfodDesignerV2.txt al vostre PC mitjançant una connexió USB o una aplicació de transferència de fitxers, com ara wifi file transfer pro. Aquí es troba una còpia de l’esbós generat, pfodDesignerV2_meter.txt

Carregueu l’esbós al vostre Arduino IDE i programa la vostra placa Uno (o Mega). A continuació, afegiu Iteadstudio Bluetooth Shield V2.2. Instal·leu pfodApp al vostre mòbil Android i creeu una nova connexió Bluetooth anomenada, per exemple, Multímetre. Consulteu pfodAppForAndroidGettingStarted.pdf per saber com crear noves connexions. Després, quan utilitzeu pfodApp per obrir la connexió Multímetre, veureu el menú dissenyat.

L’obertura del gràfic no mostra res interessant perquè no hem afegit cap programari o maquinari al multímetre.

Pas 9: Afegir el multímetre

Afegir el multímetre
Afegir el multímetre
Afegir el multímetre
Afegir el multímetre
Afegir el multímetre
Afegir el multímetre

Modificarem l'esbós generat per afegir l'analitzador multímetre i enviar les seves dades al vostre mòbil Android. L’esbós modificat complet és aquí, pfod_meter.ino

Aquestes modificacions afegeixen l’analitzador multímetre i un temporitzador de 5 segons. Si no hi ha cap nova lectura vàlida en aquest temps, l'esbós deixa d'enviar dades i actualitza la pantalla d'Android / pfodApp a "- - -". A mesura que es canvia la selecció manual del comptador, les etiquetes del gràfic s’actualitzen, però heu de sortir del gràfic i tornar-lo a seleccionar per veure les etiquetes noves. D'altra banda, la lectura del comptador s'actualitza automàticament cada segon. Finalment, pfodApp gestiona Unicode per defecte, de manera que quan es mostra el comptador llegint el mètode getTypeAsUnicode () s’utilitza per retornar l’Unicode per a ohms, Ω i degsC, ℃ per a la visualització del comptador.

El botó gràfic mostra un gràfic d'actualització de les lectures: -

Les dades del gràfic, en format CSV, també es desen en un fitxer al vostre mòbil Android a /pfodAppRawData/Mulitmeter.txt per transferir-les posteriorment a l’ordinador i importar-les a un full de càlcul per obtenir més càlculs i gràfics.

Pas 10: les modificacions de l'esbós en detall

  1. Descarregueu la biblioteca pfodVC820MeterParser.zip i obriu Arduino IDE i feu clic a Sketch → Include Library → Add.zip per afegir aquesta biblioteca al vostre IDE.
  2. Afegiu la biblioteca pfodVC820MeterParser a l'esbós. Feu clic a Esbós → Inclou biblioteca → pfodVC820MeterParser. Això afegirà les declaracions d’inclusió a la part superior de l’esbós.
  3. Editeu l'analitzador pfodParser_codeGenerated ("V1"); a l'analitzador pfodParser_codeGenerated (""); Això desactiva la memòria cau de menú a pfodApp, de manera que es mostraran els canvis de menú. Podeu tornar a "V3" quan hàgiu acabat tots els canvis que feu per tornar a habilitar la memòria cau del menú.
  4. Afegiu aquestes línies per crear els objectes de la sèrie de programari i del multímetre. pfodVC820MeterParser meter;
  5. Al final de la configuració () afegiu Serial1.begin (2400); meter.connect (& Serial1);
  6. A la part superior del bucle () afegiu un signe llarg validReadingTimer = 0; const unsigned long VALID_READINGS_TIMEOUT = 5000; // 5secs bool haveValidReadings = true; // s'estableix en true quan tenen lectures vàlides int MeasurementType = meter. NO_READING; i a la part superior del bucle () afegiu if (meter.haveReading ()) {if (meter.isValid ()) {validReadingTimer = millis (); haveValidReadings = true; } int newType = meter.getType (); if (typeThesure! = newType) {// publica nous títols de registre de dades parser.print (F ("sec")); parser.println (meter.getTypeAsStr ()); } mesuramentTip = nouTip; } if ((millis () - validReadingTimer)> VALID_READINGS_TIMEOUT) {haveValidReadings = false; // no hi ha cap lectura vàlida en els darrers 5 segons}
  7. Més avall en el bucle substituïu parser.print (F ("{= Multímetre | temps (segons) | Plot_1 ~~~ ||}")); amb parser.print (F ("{= Multímetre | temps (segons) | Lectura de comptador ~~~")); parser.print (meter.getTypeAsStr ()); parser.print (F ("||}"));
  8. A la part inferior del bucle () substituïu sendData (); amb if (haveValidReadings) {sendData (); }
  9. A sendData () substituïu parser.print (','); parser.print (((float) (plot_1_var-plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); amb parser.print (','); parser.print (meter.getAsStr);
  10. A sendMainMenu () substituïu parser.print (F ("~ Label")); amb parser.print ('~'); if (haveValidReadings) {parser.print (meter.getDigits ()); parser.print (meter.getScalingAsStr ()); parser.print (meter.getTypeAsUnicode ()); } else {parser.print (F ("- - -")); }
  11. A sendMainMenuUpdate () afegiu parser.print (F ("|! A")); parser.print ('~'); if (haveValidReadings) {parser.print (meter.getDigits ()); parser.print (meter.getScalingAsStr ()); parser.print (meter.getTypeAsUnicode ()); } else {parser.print (F ("- - -")); } Per actualitzar la lectura quan s'utilitza la memòria cau de menú.

Conclusió

Aquest tutorial ha mostrat com connectar un multímetre econòmic a un Arduino Mega2560 mitjançant RS232. També s'admeten molts altres taulers. El pfodVC820MeterParserlibrary analitza les dades del multímetre en flotants per als càlculs Arduino i cadenes per a la visualització i registre. pfodDesignerV2 es va utilitzar per generar un esbós bàsic per mostrar la lectura del multímetre i mostrar un gràfic dels valors en un mòbil Android mitjançant pfodApp. No cal programar Android. A aquest esbós bàsic es va afegir la gestió del multímetre i l'esbós final mostra la lectura actual del multímetre al vostre mòbil Android, a més de traçar les lectures i registrar-les a un fitxer al mòbil per a un ús posterior.

Recomanat: