Sommario:

Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp: 10 passaggi (con immagini)
Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp: 10 passaggi (con immagini)

Video: Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp: 10 passaggi (con immagini)

Video: Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp: 10 passaggi (con immagini)
Video: Tesi di laurea online - figuracce 1 2024, Novembre
Anonim
Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp
Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp
Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp
Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp
Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp
Registrazione dati remota ad alta precisione tramite multimetro/Arduino/pfodApp

Aggiornato il 26 aprile 2017 Circuito e scheda revisionati per l'uso con i misuratori USB 4000ZC.

Nessuna codifica Android richiesta

Questa istruzione mostra come accedere a una vasta gamma di misurazioni ad alta precisione dal tuo Arduino e anche inviarle in remoto per la registrazione e la stampa. Per la registrazione dei dati ad alta velocità (2000 campioni/sec) vedere questo instrucatble, registrazione dati ad alta velocità remota utilizzando Arduino/GL AR150/Android/pfodApp

Il convertitore AtoD integrato nell'Arduino ha una scarsa precisione, in genere +/- 10% e un intervallo molto limitato, in genere solo da 0 a 5 V CC. Utilizzando un semplice circuito e una libreria, puoi alimentare il tuo Arduino con misurazioni di auto-range ad alta precisione da un multimetro con una connessione RS232 otticamente isolata. Avere le misurazioni disponibili per il tuo schizzo ti consente di controllare gli output in base ai valori. Questo tutorial copre anche l'invio della misurazione in remoto, tramite WiFi, Bluetooth, Bluetooth Low Energy o SMS, a un cellulare Android per la visualizzazione, la registrazione e la stampa tramite pfodApp.

Questo istruibile utilizza una scheda Arduino Mega2560 5V che puoi accoppiare con un'ampia varietà di schermi di comunicazione, Ethernet, WiFi, Bluetooth V2 (classico), Bluetooth LE o SMS. L'hardware di interfaccia e la libreria presentati qui possono essere utilizzati anche con schede compatibili con Arduino da 3,3 V. Oltre al Mega2560 è possibile utilizzare un'ampia varietà di altre schede come UNO con e Ehternet shield, una scheda base ESP8266 (stand alone), una scheda con Bluetooth Low Energy integrato, come Arduino 101, o schede che si collegano alla comunicazione sottosistema che utilizza SPI come RedBear BLE shield e le schede Bluefruit SPI di Adafrut. pfodDesignerV2 supporta tutte queste combinazioni di schede e genererà il codice per esse. La condizione limitante è che è necessario disporre di un seriale hardware gratuito per connettersi a questo schermo RS232 del multimetro.

Il circuito e il codice presentati qui funzionano con un numero di multimetri. Uno facilmente reperibile, poco costoso, è un Tekpower TP4000ZC, noto anche come Digitek TD-4000ZC. I multimetri che funzionano con questo circuito e questa libreria includono 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:

Questo tutorial ha due parti:

La prima parte riguarda l'interfaccia hardware al multimetro e la libreria di codici utilizzando un Arduino Mega. Se vuoi solo ottenere la misurazione nel tuo Arduino, questo è tutto ciò di cui hai bisogno.

La seconda parte riguarda l'invio della misurazione a un cellulare Android remoto per la visualizzazione, la registrazione e il tracciamento. In questo esempio utilizzeremo uno scudo Bluetooth e genereremo lo schizzo di base utilizzando pfodDesignerV2, ma puoi anche generare codice per connessioni WiFi, Ethernet, Bluetooth Low Energy e SMS utilizzando pfodDesignerV2. La libreria del multimetro viene quindi aggiunta allo schizzo di base per completare il codice. Non è necessaria alcuna codifica Android per visualizzare, registrare e tracciare la lettura. Tutto è controllato dal tuo codice Arduino.

Questo progetto è disponibile anche on-line su www.pfod.com.au

Per un display head-up remoto del multimetro, vedere questo istruibile, Arduino Data Glasses For My Multimeter di Alain.

Passaggio 2: il multimetro

Il multimetro
Il multimetro

I multimetri utilizzati in questo tutorial sono l'economico (~US40) Tekpower TP4000ZC (noto anche come Digitek DT-4000ZC) e il vecchio Digitech QM1538, che non è più in vendita. Entrambi questi misuratori sono visivamente uguali e utilizzano la stessa codifica RS232 della misurazione.

Qui le specifiche per il Tekpower TP4000ZC: - Tensione DC: 400mV/4/40/400V ±0.5%+5, 600V ±0.8% Tensione AC: 4/40/400V ±0.8%+5, 400mV/600V ±1.2%+ 5 Corrente CC: 400/4000μA ±2,0%+5, 40/400 mA ±1,5%+5, 4/10A ±2%+5 Corrente CA: 400/4000μA ±2,5%+3, 40/400 mA ±2%+5, 4 /10A ±2,5%+5Resistenza: 400Ω/4/40/400kΩ/4MΩ ±1%+5, 40MΩ ±2%+5Capacità: 40nF ±3,5%+10, 400nF/4/40μF ±3%+5, 100μF ± 3.5%+5Frequenza: 10Hz-10MHz ±0.1%+5Duty Cycle: 0.1%-99.9% ±2.5%+5Temperatura: 0oC - +40oC ±3oC, -50oC - +200oC±0.75% ±3oC, +200oC - +750oC ± 1.5% ±3oC, risoluzione 0.1oC tramite sonda a termocoppia inclusa.

La connessione RS232 del multimetro è unidirezionale e non è possibile modificare le impostazioni del multimetro da remoto, quindi è necessario selezionare manualmente il tipo di misurazione. Tuttavia, lo strumento è auto-range e le impostazioni di tensione e corrente gestiscono sia CA che CC.

Passaggio 3: hardware dell'interfaccia RS232

L'hardware dell'interfaccia RS232
L'hardware dell'interfaccia RS232
L'hardware dell'interfaccia RS232
L'hardware dell'interfaccia RS232
L'hardware dell'interfaccia RS232
L'hardware dell'interfaccia RS232

Ci sono due interfacce. I nuovi misuratori Digitek DT-4000ZC e Tekpower TP40000ZC sono dotati di un cavo USB. Mentre il vecchio Digitek QM1538 è stato fornito un cavo connettore RS232 a 9 pin D. Il circuito sopra (versione pdf) mostra come collegare l'accoppiatore ottico del multimetro per pilotare un pin seriale Arduino RX. Nota: questo circuito è stato aggiornato per aggiungere un altro resistore di protezione, R2, per i misuratori Digitek DT-4000ZC e Tekpower TP40000ZC. Questo resistore non era incluso nella scheda del connettore D a 9 pin mostrata sopra.

Digitek DT-4000ZC e Tekpower TP40000ZC

Per Digitek DT-4000ZC e Tekpower TP40000ZC, è necessario un cavo audio da 3,5 mm maschio a maschio, stereo o mono e una presa da 3,5 mm.

Digitek QM1538

Per il vecchio Digitek QM1538, è necessaria una presa D a 9 pin. Il connettore D a 9 pin ha pin sfalsati che non si inseriscono nello scudo del prototipo. Basta tagliare la fila di 4 pin in modo da poter saldare il connettore alla scheda, poiché il circuito utilizza solo i pin nella seconda fila di 5 pin. Le gambe di montaggio sono state piegate per consentire al connettore di rimanere piatto e il connettore è stato fissato allo scudo del prototipo utilizzando una colla epossidica bicomponente ("Araldite") La disposizione dei pin del connettore mostrata sopra proviene da questo sito. La resistenza da 10K che viene montata all'interno del connettore dei cavi RS232 in dotazione (collegati tra i pin 2 e 3) non è necessaria per questo progetto.

Collegamento del segnale a un pin Arduino RX

Questo circuito funzionerà sia per le schede Arduino da 5 V che da 3,3 V. Qui stiamo usando un Arduino Mega2560 (5V) e abbiamo montato il circuito su uno scudo prototipo come mostrato sopra.

Un cavo volante viene utilizzato per collegare il TP1 sullo schermo a un Serial1 RX, pin D19, sul Mega2560.

Nota sul software seriale: inizialmente questo shield era associato a un UNO utilizzando Software Serial sui pin 10, 11. Tuttavia, quando accoppiato con Bluetooth Shield su seriale a 9600 baud, alcuni byte di ricezione andavano persi. Spostare l'RS232 su una connessione seriale hardware ha risolto questo problema. Quindi, per una visualizzazione e registrazione remota affidabili, se si utilizza uno schermo di comunicazione che si collega tramite seriale, è necessaria una scheda con due o più serial hardware come il Mega2560. Altre alternative sono una UNO con ed Ehternet shield, una scheda base ESP8266 (stand alone), una scheda con Bluetooth Low Energy integrato come Anduino 101 o schede che si collegano al sottosistema di comunicazione tramite SPI come RedBear BLE shield e Bluefruit SPI di Adafrut tavole. pfodDesignerV2 supporta tutte queste schede e genererà il codice per esse.

Passaggio 4: la libreria PfodVC820MultimeterParser

Il Tekpower TP4000ZC e una serie di altri mulimetri non inviano la misura via RS232 come testo ASCII, ma inviano 14 byte con bit impostati a seconda di quali segmenti del display LCD vengono illuminati. La codifica dei 14 byte è spiegata in questo pdf. La libreria pfodVC820MeterParser.zip decodifica questi byte in stringhe di testo e float. (Il VC820 fa riferimento a uno dei misuratori che utilizza questa codifica.) Vedere anche QtDMM per software per computer Windows, Mac e Linux che gestisce un'ampia gamma di multimetri.

C'è un esempio minimo, MeterParserExample.ino, dell'utilizzo della libreria pfodVC820MeterParser. Connettere lo strumento a una connessione seriale a 2400 baud e quindi chiamare haveReading() ogni ciclo per elaborare i byte. haveReading() restituirà true quando viene analizzata una nuova lettura completa. Quindi puoi chiamare getAsFloat() per ottenere il valore (ridimensionato) come float o getAtStr() per ottenere la lettura con ridimensionamento per la stampa e la registrazione. Sono disponibili altri metodi per accedere al tipo di misurazione, getTypeAsStr() e getTypeAsUnicode(), nonché altri metodi di utilità.

#include "pfodVC820MeterParser.h" pfodVC820MeterParser meter; // void setup() { Serial.begin(74880); Serial1.begin(2400); metro.connect(&Serial1); }lettura del galleggiante; void loop() { if (meter.haveReading()) { lettura = meter.getAsFloat(); // usa questo per i calcoli Arduino Serial.print("Lettura con unità: "); Serial.print(meter.getDigits()); Serial.print(meter.getScalingAsStr()); Serial.print(meter.getTypeAsStr()); Serial.print(F(" = come float stampato (6 cifre):")); Serial.println(lettura, 6); Serial.println("Time(sec) and Reading as string for logging"); Serial.print(((float)millis())/1000.0); Serial.print(", sec, "); Serial.print(meter.getAsStr()); Serial.print(', '); Serial.println(meter.getTypeAsStr()); } }

Con il misuratore impostato su Deg C e utilizzando la sonda a termocoppia, lo schizzo di esempio fornisce questo output sul monitor seriale Arduino IDE

Lettura con unità: 25.7C = come stampato in float (6 cifre):25.700000Time(sec) e Lettura come stringa per la registrazione 2.40, sec, 25.7, C

Passaggio 5: Parte 2 – Visualizzazione remota, registrazione e stampa

Questa parte del tutorial spiega come visualizzare, registrare e tracciare in remoto la lettura del contatore sul tuo cellulare Android. pfodApp viene utilizzato per gestire la visualizzazione, la registrazione e la stampa sul tuo cellulare Android. Non è richiesta alcuna programmazione Android. Tutti i display, la registrazione e la stampa sono completamente controllati dal tuo schizzo Arduino. L'app gratuita pfodDesignerV2 ti consente di progettare il menu e il grafico di Android e quindi genera uno schizzo Arduino per te.

pfodApp supporta diversi tipi di connessione, Ethernet, WiFi, Bluetooth V2 (classico), Bluetooth LE o SMS. Questo tutorial utilizza Arduino 101 (Bluetooth Low Energy) per la registrazione e la stampa dei dati. Sono supportate anche altre schede Bluetooth Low Energy. Questo tutorial utilizza SMS per connettersi a pfodApp. È possibile utilizzare pfodDesignerV2 per aggiungere la registrazione dei dati e la creazione di grafici a quell'esempio SMS. pfodDesignerV2 ha anche opzioni per generare codice Arduino su uno shield Bluetooth V2 (classico) per connettersi a pfodApp.

Per questo esempio utilizzeremo un Iteadstudio Bluetooth Shield V2.2 che si collega all'Arduino Mega2560 tramite una connessione seriale a 9600baud. Utilizzando l'app gratuita pfodDesignerV2 abbiamo impostato un semplice menu che ha solo un'etichetta per mostrare la lettura del contatore e un pulsante per aprire il grafico. Questa pagina ha una serie di tutorial pfodDesignerV2. Una volta che abbiamo uno schizzo di base, lo modificheremo per aggiungere il parser del contatore e inviare la lettura del contatore e i dati per la registrazione e la creazione di grafici.

Progettare il menu

In questa sezione progetteremo un menu Android/pfodApp che visualizzerà la lettura del contatore e un pulsante per aprire un grafico delle letture. Le letture vengono salvate anche in un file sul cellulare Android

Passaggio 6: aggiunta di un'etichetta

Aggiungere un'etichetta
Aggiungere un'etichetta
Aggiungere un'etichetta
Aggiungere un'etichetta
Aggiungere un'etichetta
Aggiungere un'etichetta

Installa il pfodDesignerV2 gratuito e avvia un nuovo menu.

Il target predefinito è Serial a 9600baud che è ciò che è necessario per Iteadstudio Bluetooth Shield V2.2. Se ti stai connettendo utilizzando un dispositivo Bluetooth Low Energy o Wi-Fi o SMS, fai clic su Target per modificare la selezione.

Per aggiungere un'etichetta per visualizzare la lettura del contatore, fare clic su Aggiungi voce di menu e selezionare scorrere verso il basso per selezionare Etichetta.

Scegli una dimensione e un colore del carattere adatti. Lascia il testo come etichetta poiché modificheremo il codice generato per sostituirlo con la misurazione del contatore in un secondo momento. Qui abbiamo impostato la dimensione del carattere su +7, il colore del carattere su Rosso e lo sfondo su Argento.

Torna alla schermata Menu di modifica_1 e imposta un Intervallo di aggiornamento 1 sec. La pfodApp richiederà nuovamente il menu circa una volta al secondo per visualizzare l'ultima lettura nell'etichetta.

Passaggio 7: aggiunta di un pulsante grafico

Aggiunta di un pulsante grafico
Aggiunta di un pulsante grafico
Aggiunta di un pulsante grafico
Aggiunta di un pulsante grafico
Aggiunta di un pulsante grafico
Aggiunta di un pulsante grafico
Aggiunta di un pulsante grafico
Aggiunta di un pulsante grafico

Fare nuovamente clic su Aggiungi voce di menu per aggiungere un pulsante Grafico.

Modifica il testo del pulsante Grafico in qualcosa di adatto, ad es. basta "Grafico" e scegliere una dimensione del carattere e i colori.

Quindi fare clic sul pulsante "Grafico" per aprire la schermata di modifica della trama. Ci sarà solo un grafico, quindi fai clic sui pulsanti Modifica grafico 2 e Modifica grafico 3 e scorri verso il basso e fai clic su Nascondi grafico per ciascuno di essi.

Modifica l'etichetta del grafico con qualcosa di adatto, ad es. “Multimetro”. Non è necessario modificare nessuna delle altre impostazioni di stampa poiché modificheremo lo schizzo per inviare un'etichetta dell'asse y diversa a seconda dell'impostazione del multimetro.

Infine torna al Menu di modifica_1 e al prompt di modifica, questo imposta il testo nella parte inferiore del menu e il colore di sfondo del menu generale. Qui abbiamo impostato il prompt su "Multimetro remoto" con dimensione del carattere +3 e colore di sfondo Argento.

Ora puoi tornare al Menu di modifica_1 e fare clic su Menu di anteprima per visualizzare in anteprima il design del menu.

Se non ti piace il design puoi cambiarlo prima di generare il codice. Se vuoi distanziare l'etichetta dal pulsante puoi aggiungere alcune etichette vuote come descritto qui. L'aggiunta di un grafico e la registrazione dei dati su come visualizzare/tracciare i dati Arduino su Android è un altro tutorial sulla registrazione e la creazione di grafici di pfodDesignerV2/pfodApp.

Passaggio 8: generazione dello schizzo Arduino

Generazione dello schizzo Arduino
Generazione dello schizzo Arduino
Generazione dello schizzo Arduino
Generazione dello schizzo Arduino

Per generare il codice Arduino che visualizzerà questo menu in pfodApp, torna alla schermata Menu di modifica_1 e scorri verso il basso e fai clic sul pulsante Genera codice.

Fare clic sul pulsante "Scrivi codice su file" per inviare lo schizzo Arduino al file /pfodAppRawData/pfodDesignerV2.txt sul tuo telefonino. Quindi esci da pfodDesignerV2. Trasferisci il file pfodDesignerV2.txt sul tuo PC utilizzando una connessione USB o un'app di trasferimento file, come wifi file transfer pro. Una copia dello schizzo generato è qui, pfodDesignerV2_meter.txt

Carica lo schizzo nel tuo IDE Arduino e programma la tua scheda Uno (o Mega). Quindi aggiungi Iteadstudio Bluetooth Shield V2.2. Installa pfodApp sul tuo cellulare Android e crea una nuova connessione Bluetooth denominata, ad esempio, Multimeter. Vedere pfodAppForAndroidGettingStarted.pdf per come creare nuove connessioni. Quindi quando usi pfodApp per aprire la connessione del multimetro vedrai il tuo menu progettato.

L'apertura del grafico non mostra nulla di interessante perché non abbiamo aggiunto hardware/software nel multimetro.

Passaggio 9: aggiunta del multimetro

Aggiunta del multimetro
Aggiunta del multimetro
Aggiunta del multimetro
Aggiunta del multimetro
Aggiunta del multimetro
Aggiunta del multimetro

Modificheremo lo schizzo generato per aggiungere il parser del multimetro e inviare i suoi dati al tuo cellulare Android. Lo schizzo modificato completo è qui, pfod_meter.ino

Queste modifiche aggiungono il parser del multimetro e un timer di 5 secondi. Se non ci sono nuove letture valide in quel momento, lo schizzo smette di inviare dati e aggiorna il display di Android/pfodApp su "- - - ". Quando la selezione manuale dello strumento viene modificata, le etichette del grafico vengono aggiornate, ma è necessario uscire dal grafico e riselezionarlo per visualizzare le nuove etichette. La lettura del contatore, invece, viene aggiornata automaticamente ogni secondo. Infine pfodApp gestisce Unicode per impostazione predefinita, quindi quando si visualizza la lettura del contatore, viene utilizzato il metodo getTypeAsUnicode() per restituire l'Unicode per ohm, e degsC, ℃ per il display del contatore.

Il pulsante grafico visualizza un grafico di aggiornamento delle letture:-

I dati del grafico, in formato CSV, vengono anche salvati in un file sul tuo cellulare Android in /pfodAppRawData/Mulitmeter.txt per il successivo trasferimento sul tuo computer e l'importazione in un foglio di calcolo per ulteriori calcoli e grafici.

Passaggio 10: le modifiche dello schizzo in dettaglio

  1. Scarica la libreria pfodVC820MeterParser.zip, quindi apri l'IDE Arduino e fai clic su Schizzo → Includi libreria → Aggiungi.zip per aggiungere questa libreria al tuo IDE.
  2. Aggiungi la libreria pfodVC820MeterParser allo schizzo. Fare clic su Schizzo → Includi libreria → pfodVC820MeterParser. Questo aggiungerà le istruzioni di inclusione nella parte superiore dello schizzo.
  3. Modifica pfodParser_codeGenerated parser("V1"); a pfodParser_codeGenerated parser(""); Questo disabilita la memorizzazione nella cache del menu in pfodApp in modo che le modifiche al menu vengano visualizzate. Puoi tornare a "V3" quando hai finito tutte le modifiche per riattivare la memorizzazione nella cache dei menu.
  4. Aggiungi queste righe per creare gli oggetti per la seriale del software e il multimetro. pfodVC820MeterParser misuratore;
  5. Alla fine di setup() aggiungi Serial1.begin(2400); metro.connect(&Serial1);
  6. Sopra loop() aggiungi unsigned long validReadingTimer = 0; const unsigned long VALID_READINGS_TIMEOUT = 5000; // 5secs bool haveValidReadings = true; // impostato su vero quando si hanno letture valide int measureType = meter. NO_READING; e all'inizio del loop() aggiungi if (meter.haveReading()) { if (meter.isValid()) { validReadingTimer = millis(); haveValidReadings = true; } int newType = meter.getType(); if (measurementType != newType) { // emette nuovi titoli di registrazione dati parser.print(F("sec, ")); parser.println(meter.getTypeAsStr()); } MeasurementType = newType; } if ((millis() - validReadingTimer) > VALID_READINGS_TIMEOUT) { haveValidReadings = false; // nessuna nuova lettura valida negli ultimi 5 sec }
  7. Più in basso nel ciclo sostituire parser.print(F("{=Multimetro|tempo (sec)|Plot_1~~~||}")); with parser.print(F("{=Multimetro|tempo (sec)|Lettura contatore~~~")); parser.print(meter.getTypeAsStr()); parser.print(F("||}"));
  8. In fondo a loop() sostituire sendData(); con if (haveValidReadings) { sendData(); }
  9. In sendData() sostituire parser.print(', '); parser.print(((float)(plot_1_var-plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); con parser.print(', '); parser.print(meter.getAsStr);
  10. In sendMainMenu() sostituire parser.print(F("~Label")); con parser.print('~'); if (haveValidReadings) { parser.print(meter.getDigits()); parser.print(meter.getScalingAsStr()); parser.print(meter.getTypeAsUnicode()); } else { parser.print(F("- - -")); }
  11. In sendMainMenuUpdate() aggiungi 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 aggiornare la lettura quando si utilizza la memorizzazione nella cache dei menu.

Conclusione

Questo tutorial ha mostrato come collegare un multimetro economico a un Arduino Mega2560 tramite RS232. Sono supportate anche molte altre schede. La libreria pfodVC820MeterParselibrary analizza i dati del multimetro in float per i calcoli Arduino e stringhe per la visualizzazione e la registrazione. pfodDesignerV2 è stato utilizzato per generare uno schizzo di base per visualizzare la lettura del multimetro e mostrare un grafico dei valori in un cellulare Android utilizzando pfodApp. Non è richiesta alcuna programmazione Android. A questo schizzo di base è stata aggiunta la gestione del multimetro e lo schizzo finale mostra la lettura corrente del multimetro sul tuo cellulare Android, oltre a tracciare le letture e registrarle in un file sul tuo telefonino per un uso successivo.

Consigliato: