Innholdsfortegnelse:

Høy nøyaktighet ekstern datalogging ved bruk av multimeter/Arduino/pfodApp: 10 trinn (med bilder)
Høy nøyaktighet ekstern datalogging ved bruk av multimeter/Arduino/pfodApp: 10 trinn (med bilder)

Video: Høy nøyaktighet ekstern datalogging ved bruk av multimeter/Arduino/pfodApp: 10 trinn (med bilder)

Video: Høy nøyaktighet ekstern datalogging ved bruk av multimeter/Arduino/pfodApp: 10 trinn (med bilder)
Video: Åpent fagmøte: Healthy ageing – hva er det, og hvordan kan vi styrke oss for en god alderdom? 2024, Juli
Anonim
Høy nøyaktighet Ekstern datalogging ved bruk av multimeter/Arduino/pfodApp
Høy nøyaktighet Ekstern datalogging ved bruk av multimeter/Arduino/pfodApp
Høy nøyaktighet Ekstern datalogging ved bruk av multimeter/Arduino/pfodApp
Høy nøyaktighet Ekstern datalogging ved bruk av multimeter/Arduino/pfodApp
Høy nøyaktighet Ekstern datalogging ved bruk av multimeter/Arduino/pfodApp
Høy nøyaktighet Ekstern datalogging ved bruk av multimeter/Arduino/pfodApp

Oppdatert 26. april 2017 Revidert krets og kort for bruk med 4000ZC USB -målere.

Ingen Android -koding nødvendig

Denne instruksen viser deg hvordan du får tilgang til et bredt spekter av målinger med høy nøyaktighet fra Arduino, og sender dem også eksternt for logging og plotting. For høyhastighets datalogging (2000 prøver/sek) se denne instruksjonen, ekstern høyhastighets datalogging ved hjelp av Arduino/GL AR150/Android/pfodApp

AtoD-omformeren innebygd i Arduino har dårlig nøyaktighet, vanligvis +/- 10% og svært begrenset område, vanligvis bare 0 til 5V DC volt. Ved å bruke en enkel krets og et bibliotek, kan du mate din Arduino med høy nøyaktighet, automatiske målinger fra et multimeter med en optisk isolert RS232-tilkobling. Å ha målingene tilgjengelig for skissen din lar deg kontrollere utdataene basert på verdiene. Denne opplæringen dekker også å sende målingen eksternt, via WiFi, Bluetooth, Bluetooth Low Energy eller SMS, til en Android -mobil for visning, logging og plotting med pfodApp.

Denne instruerbare bruker et Arduino Mega2560 5V -kort som du kan koble til med et bredt utvalg av kommunikasjonsskjerm, Ethernet, WiFi, Bluetooth V2 (klassisk), Bluetooth LE eller SMS. Grensesnittmaskinvaren og biblioteket som presenteres her kan også brukes med 3.3V Arduino -kompatible kort. I tillegg til Mega2560 kan du bruke et bredt utvalg av andre brett som UNO med og Ehternet -skjold, et ESP8266 -basiskort (frittstående), et kort med integrert Bluetooth Low Energy, som Arduino 101, eller kort som kobles til kommunikasjonen delsystem som bruker SPI som RedBear BLE-skjold og Adafruts Bluefruit SPI-kort. pfodDesignerV2 støtter alle disse brettkombinasjonene og genererer koden for dem. Den begrensende betingelsen er at du må ha en gratis maskinvareserial for å koble til dette Multimeter RS232 -skjoldet.

Kretsen og koden som presenteres her fungerer med et antall multimeter. En lett tilgjengelig, billig, en er en Tekpower TP4000ZC, også kjent som Digitek TD-4000ZC. Multimetre som fungerer med denne kretsen og biblioteket inkluderer 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

Trinn 1:

Denne opplæringen har to deler:

Den første delen dekker maskinvaregrensesnittet til multimeteret og kodebiblioteket ved hjelp av en Arduino Mega. Hvis du bare vil ha målingen inn i Arduinoen din, er dette alt du trenger.

Den andre delen dekker sending av målingen til en ekstern Android -mobil for visning, logging og plotting. I dette eksemplet vil vi bruke et Bluetooth -skjold og generere den grunnleggende skissen ved hjelp av pfodDesignerV2, men du kan også generere kode for WiFi, Ethernet, Bluetooth Low Energy og SMS -tilkoblinger ved hjelp av pfodDesignerV2. Multimeterbiblioteket legges deretter til den grunnleggende skissen for å fullføre koden. Ingen Android -koding er nødvendig for å vise, logge og plotte lesingen. Alt styres fra din Arduino -kode.

Dette prosjektet er også tilgjengelig online på www.pfod.com.au

For en ekstern head-up-visning av multimeteret, se denne instruktive Arduino Data Glasses For My Multimeter av Alain.

Trinn 2: Multimeteret

Multimeteret
Multimeteret

Multimetrene som brukes i denne opplæringen er de billige (~ US40) Tekpower TP4000ZC (også kjent som Digitek DT-4000ZC) og den eldre Digitech QM1538, som den ikke lenger selges. Begge disse målerne er visuelt de samme og bruker den samme RS232 -kodingen for målingen.

Her er spesifikasjonene for Tekpower TP4000ZC: -DC Spenning: 400mV/4/40/400V ± 0,5%+5, 600V ± 0,8%AC Spenning: 4/40/400V ± 0,8%+5, 400mV/600V ± 1,2%+ 5DC Strøm: 400/4000μA ± 2.0%+5, 40/400mA ± 1.5%+5, 4/10A ± 2%+5AC Strøm: 400/4000μA ± 2.5%+3, 40/400mA ± 2%+5, 4 /10A ± 2,5%+5 Motstand: 400Ω/4/40/400kΩ/4MΩ ± 1%+5, 40MΩ ± 2%+5 Kapasitet: 40nF ± 3,5%+10, 400nF/4/40μF ± 3%+5, 100μF ± 3,5% +5Frekvens: 10Hz -10MHz ± 0,1% +5 Driftssyklus: 0,1%-99,9%± 2,5% +5 Temperatur: 0oC - +40oC ± 3oC, -50oC - +200oC ± 0,75%± 3oC, +200oC - +750oC ± 1,5% ± 3oC, oppløsning 0,1oC via inkludert termoelementprobe.

Multimeterets RS232 -tilkobling er bare én måte, og du kan ikke endre multimeterets innstillinger eksternt, så du må velge målingstype manuelt. Måleren går imidlertid automatisk og innstillingene for spenning og strøm håndterer både vekselstrøm og likestrøm.

Trinn 3: RS232 -grensesnittmaskinvaren

RS232 -grensesnittmaskinvare
RS232 -grensesnittmaskinvare
RS232 -grensesnittmaskinvare
RS232 -grensesnittmaskinvare
RS232 -grensesnittmaskinvare
RS232 -grensesnittmaskinvare

Det er to grensesnitt. De nyere Digitek DT-4000ZC og Tekpower TP40000ZC-målerne har en USB-kabel. Mens den eldre Digitek QM1538 ble levert en RS232 9pin D-kontaktkabel. Kretsen ovenfor (pdf-versjon) viser hvordan du kobler multimeterens optokobler til å drive en Arduino RX seriell pin. Merk: Denne kretsen er oppdatert for å legge til en annen beskyttelsesmotstand, R2, for Digitek DT-4000ZC og Tekpower TP40000ZC-målere. Denne motstanden var ikke inkludert på 9 -pinners D -kontaktkortet vist ovenfor.

Digitek DT-4000ZC og Tekpower TP40000ZC

For Digitek DT-4000ZC og Tekpower TP40000ZC trenger du en 3,5 mm lydkabel mann til mann, stereo eller mono vil gjøre, og en 3,5 mm kontakt.

Digitek QM1538

For den eldre Digitek QM1538 trenger du en 9pin D -kontakt. 9pin D -kontakten har forskyvede pinner som ikke kan kobles til prototypeskjoldet. Bare kutt av raden med 4 pinner, slik at du kan lodde kontakten til brettet, ettersom kretsen bare bruker pinner i andre rad med 5 pinner. Monteringsbeina ble bøyd for å la kontakten ligge flatt, og kontakten ble festet til prototypeskjoldet ved hjelp av 2 -delt epoksylim ("Araldite") Koblingsstiftets layout er vist ovenfor er fra dette nettstedet. 10K -motstanden som er montert inne i kontakten til de medfølgende RS232 -kablene (koblet mellom pinner 2 og 3) er ikke nødvendig for dette prosjektet.

Koble signalet til en Arduino RX -pin

Denne kretsen vil fungere for både 5V og 3.3V Arduino -kort. Her bruker vi en Mega2560 (5V) Arduino og monterte kretsen på et prototypeskjold som vist ovenfor.

En flygende bly brukes til å koble TP1 på skjoldet til en Serial1 RX, pin D19, på Mega2560.

Merknad om programvareserie: I utgangspunktet ble dette skjermet parret med en UNO ved å bruke programvareserial på pinne 10, 11. Men når det ble paret med Bluetooth -skjoldet på serienummeret 9600baud, gikk noen mottagelsesbyte tapt. Å flytte RS232 til en maskinvareseriell tilkobling løste dette problemet. Så for pålitelig ekstern visning og logging, hvis du bruker et kommunikasjonsskjerm som kobles til via seriell, trenger du enten et kort med to eller flere maskinvareserier, for eksempel Mega2560. Andre alternativer er et UNO med og Ehternet-skjold, et ESP8266-grunnkort (frittstående), et kort med integrert Bluetooth Low Energy som Anduino 101 eller brett som kobles til kommunikasjonsundersystemet ved hjelp av SPI som RedBear BLE-skjold og Adafrut's Bluefruit SPI brett. pfodDesignerV2 støtter alle disse kortene og vil generere koden for dem.

Trinn 4: PfodVC820MultimeterParser -biblioteket

Tekpower TP4000ZC og en rekke andre mulimeter sender ikke målingen via RS232 som ASCII -tekst, snarere sender den 14 byte med bits angitt avhengig av hvilke segmenter på LCD -skjermen som er opplyst. Kodingen av de 14 bytes er forklart i denne pdf -filen. Biblioteket pfodVC820MeterParser.zip dekoder disse byte til tekststrenger og flyter. (VC820 refererer til en av målerne som bruker denne kodingen.) Se også QtDMM for Windows, Mac og Linux dataprogramvare som håndterer et bredt spekter av multimetre.

Det er et minimalt eksempel, MeterParserExample.ino, på bruk av biblioteket pfodVC820MeterParser. Koble måleren til en 2400 baud seriell tilkobling, og ring deretter haveReading () hver sløyfe for å behandle byte. haveReading () kommer tilbake når det er en ny fullstendig lesing analysert. Deretter kan du ringe getAsFloat () for å få verdien (skalert) som en float eller getAtStr () for å få avlesningen med skalering for utskrift og logging. Det finnes andre metoder for å få tilgang til målingstypen, getTypeAsStr () og getTypeAsUnicode (), så vel som andre verktøy.

#include "pfodVC820MeterParser.h" pfodVC820MeterParser meter; // ugyldig oppsett () {Serial.begin (74880); Seriell1.begynner (2400); meter.connect (& Serial1); } flytende lesing; void loop () {if (meter.haveReading ()) {reading = meter.getAsFloat (); // bruk dette til Arduino -beregninger Serial.print ("Lesing med enheter:"); Serial.print (meter.getDigits ()); Serial.print (meter.getScalingAsStr ()); Serial.print (meter.getTypeAsStr ()); Serial.print (F ("= som float trykt (6 sifre):")); Serial.println (lesing, 6); Serial.println ("Tid (sek) og lesing som streng for logging"); Serial.print (((float) millis ())/1000.0); Serial.print (", sek,"); Serial.print (meter.getAsStr ()); Serial.print (','); Serial.println (meter.getTypeAsStr ()); }}

Med måleren satt på Deg C og ved hjelp av termoelementproben, gir eksempelskissen denne utgangen på Arduino IDE seriell skjerm

Avlesning med enheter: 25,7C = som flottør trykt (6 sifre): 25,700000Tid (sek) og Avlesning som streng for logging 2,40, sek, 25,7, C

Trinn 5: Del 2 - Fjernvisning, logging og plotting

Denne delen av opplæringen dekker hvordan du eksternt viser, logger og plotter måleravlesningen på din Android -mobil. pfodApp brukes til å håndtere visning, logging og plotting på din Android -mobil. Ingen Android -programmering er nødvendig. Alle skjermer, logging og plott er fullstendig kontrollert av din Arduino -skisse. Den gratis pfodDesignerV2 -appen lar deg designe Android -menyen og diagrammet og deretter generere en Arduino -skisse for deg.

pfodApp støtter en rekke tilkoblingstyper, Ethernet, WiFi, Bluetooth V2 (klassisk), Bluetooth LE eller SMS. Denne opplæringen bruker Arduino 101 (Bluetooth Low Energy) for datalogging og plotting. Andre Bluetooth Low Energy -kort støttes også. Denne opplæringen bruker SMS for å koble til pfodApp. Du kan bruke pfodDesignerV2 til å legge til datalogging og kartlegging i det SMS -eksemplet. pfodDesignerV2 har også alternativer for å generere Arduino -kode til et Bluetooth V2 (klassisk) skjold for å koble til pfodApp.

I dette eksemplet vil vi bruke en Iteadstudio Bluetooth Shield V2.2 som kobles til Arduino Mega2560 via en 9600baud seriell tilkobling. Ved å bruke gratis pfodDesignerV2 -appen satte vi opp en enkel meny som bare har en etikett for å vise måleravlesningen og en knapp for å åpne diagrammet. Denne siden har en rekke opplæringsprogrammer for pfodDesignerV2. Når vi har en grunnleggende skisse, vil vi endre den for å legge til målerparseren og for å sende måleravlesningen og data for logging og kartlegging.

Utforming av menyen

I denne delen vil vi designe en Android/pfodApp -meny som viser måleravlesningen og en knapp for å åpne et diagram over avlesningene. Avlesningene lagres også i en fil på Android -mobilen

Trinn 6: Legge til en etikett

Legge til en etikett
Legge til en etikett
Legge til en etikett
Legge til en etikett
Legge til en etikett
Legge til en etikett

Installer gratis pfodDesignerV2 og start en ny meny.

Standardmålet er Serial at 9600baud, som er det som trengs for Iteadstudio Bluetooth Shield V2.2. Hvis du kobler til med en Bluetooth Low Energy -enhet eller Wifi eller SMS, klikker du på Target for å endre valget.

For å legge til en etikett for å vise måleravlesningen, klikk på Legg til menyelement og velg rull ned for å velge Etikett.

Velg en passende skriftstørrelse og farger. La teksten stå som etikett, da vi vil endre den genererte koden for å erstatte denne med måler senere. Her har vi satt skriftstørrelse til +7, skriftfarge til rød og bakgrunn til sølv.

Gå tilbake til redigeringsmenyen_1 -skjermen og angi et oppdateringsintervall 1 sek. Det vil få pfodApp til å be om menyen omtrent en gang i sekundet for å vise den siste lesningen i etiketten.

Trinn 7: Legge til en diagramknapp

Legger til en diagramknapp
Legger til en diagramknapp
Legger til en diagramknapp
Legger til en diagramknapp
Legger til en diagramknapp
Legger til en diagramknapp
Legger til en diagramknapp
Legger til en diagramknapp

Klikk på Legg til menyelement igjen for å legge til en diagramknapp.

Rediger teksten i diagramknappen til noe passende, f.eks. bare "Chart" og velg en skriftstørrelse og farger.

Klikk deretter på "Chart" -knappen for å åpne plottredigeringsskjermen. Det vil bare være ett plott, så klikk på knappene Rediger plott 2 og Rediger plott 3, rull ned og klikk på Skjul plott for hver av dem.

Rediger kartetiketten til noe passende, f.eks. "Multimeter". Du trenger ikke å endre noen av de andre plottinnstillingene, da vi vil endre skissen for å sende forskjellige y-akser, avhengig av multimeterinnstillingen.

Til slutt går du tilbake til redigeringsmenyen_1 og redigeringsledeteksten, dette setter teksten nederst på menyen og den generelle bakgrunnsfargen på menyen. Her har vi satt ledeteksten til “Remote Multimeter” med skriftstørrelse +3 og bakgrunnsfarge Silver.

Du kan nå gå tilbake til Editing Menu_1 og klikke Preview Menu for å forhåndsvise menydesignet.

Hvis du ikke liker designet, kan du endre det før du genererer koden. Hvis du vil plassere etiketten fra knappen, kan du legge til noen tomme etiketter som beskrevet her. Legge til et diagram og logge data om hvordan du viser/plotter Arduino -data på Android er en annen opplæring om pfodDesignerV2/pfodApp datalogging og kartlegging.

Trinn 8: Generering av Arduino Sketch

Genererer Arduino Sketch
Genererer Arduino Sketch
Genererer Arduino Sketch
Genererer Arduino Sketch

For å generere Arduino -koden som vil vise denne menyen i pfodApp, gå tilbake til redigeringsmenyen_1 -skjermen og bla ned og klikk på Generer kode -knappen.

Klikk på "Skriv kode til fil" -knappen for å sende Arduino -skissen til filen /pfodAppRawData/pfodDesignerV2.txt på mobilen. Avslutt deretter pfodDesignerV2. Overfør pfodDesignerV2.txt -filen til PC -en din enten ved hjelp av en USB -tilkobling eller en filoverføringsapp, som wifi file transfer pro. En kopi av den genererte skissen er her, pfodDesignerV2_meter.txt

Legg skissen inn i Arduino IDE og programmer ditt Uno (eller Mega) brett. Legg deretter til Iteadstudio Bluetooth Shield V2.2. Installer pfodApp på Android -mobilen din, og opprett en ny Bluetooth -tilkobling, for eksempel Multimeter. Se pfodAppForAndroidGettingStarted.pdf for hvordan du oppretter nye tilkoblinger. Når du bruker pfodApp til å åpne Multimeter -tilkoblingen, ser du den utformede menyen.

Å åpne diagrammet viser ikke noe interessant fordi vi ikke har lagt til i multimeter maskinvare/programvare.

Trinn 9: Legge til multimeteret

Legger til multimeteret
Legger til multimeteret
Legger til multimeteret
Legger til multimeteret
Legger til multimeteret
Legger til multimeteret

Vi vil endre den genererte skissen for å legge til multimeter -parseren og for å sende dataene til Android -mobilen din. Den komplette modifiserte skissen er her, pfod_meter.ino

Disse modifikasjonene legger til multimeter -parseren og en timer på 5 sekunder. Hvis det ikke er noen ny gyldig lesning på den tiden, slutter skissen å sende data og oppdaterer Android/pfodApp -skjermen til " - - -". Etter hvert som målerens manuelle valg endres, oppdateres kartetikettene, men du må gå ut av diagrammet og velge det på nytt for å se de nye etikettene. På den annen side oppdateres måleravlesningen automatisk hvert sekund. Til slutt håndterer pfodApp Unicode som standard, så når du viser måleravlesningen, brukes metoden getTypeAsUnicode () for å returnere Unicode for ohm, Ω og degsC, ℃ for måledisplayet.

Kartknappen viser et oppdateringskart over målingene:-

Kartdataene, i CSV -format, lagres også i en fil til din Android -mobil under /pfodAppRawData/Mulitmeter.txt for senere overføring til datamaskinen og importeres til et regneark for videre beregninger og kartlegging.

Trinn 10: Skisseendringene i detalj

  1. Last ned pfodVC820MeterParser.zip -biblioteket, åpne Arduino IDE og klikk i Sketch → Inkluder bibliotek → Legg til.zip for å legge dette biblioteket til IDE.
  2. Legg til pfodVC820MeterParser -biblioteket i skissen. Klikk på Sketch → Inkluder bibliotek → pfodVC820MeterParser. Dette vil legge til inkluderingsuttalelsene øverst på skissen.
  3. Rediger pfodParser_codeGenerated parser ("V1"); til pfodParser_codeGenerated parser (""); Dette deaktiverer hurtigbufring av menyen i pfodApp, slik at menyendringene dine vises. Du kan gå tilbake til "V3" når du er ferdig med alle endringene for å aktivere hurtigbufring av menyen.
  4. Legg til disse linjene for å lage objektene for programvareserien og multimeteret. pfodVC820MeterParser meter;
  5. På slutten av oppsettet () legg til Serial1.begin (2400); meter.connect (& Serial1);
  6. Over loop () legg til usignert lang validReadingTimer = 0; const usignert lang VALID_READINGS_TIMEOUT = 5000; // 5sec bool haveValidReadings = true; // satt til true når har gyldige avlesninger int measureType = meter. NO_READING; og på toppen av løkken () legg til if (meter.haveReading ()) {if (meter.isValid ()) {validReadingTimer = millis (); haveValidReadings = true; } int newType = meter.getType (); if (MeasureType! = newType) {// output new datalogging titles parser.print (F ("sec,")); parser.println (meter.getTypeAsStr ()); } målingType = nyType; } hvis ((millis () - validReadingTimer)> VALID_READINGS_TIMEOUT) {haveValidReadings = false; // ingen ny gyldig avlesning de siste 5 sekundene}
  7. Lenger ned i sløyfen erstatt parser.print (F ("{= Multimeter | time (sek)) | Plot_1 ~~~ ||}")); med parser.print (F ("{= Multimeter | tid (sek)) | Meteravlesning ~~~")); parser.print (meter.getTypeAsStr ()); parser.print (F ("||}"));
  8. Nederst i løkken () erstatt sendData (); med if (haveValidReadings) {sendData (); }
  9. I sendData () erstatt parser.print (','); parser.print (((float) (plot_1_var-plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); med parser.print (','); parser.print (meter.getAsStr);
  10. I sendMainMenu () erstatt parser.print (F ("~ Etikett")); med parser.print ('~'); if (haveValidReadings) {parser.print (meter.getDigits ()); parser.print (meter.getScalingAsStr ()); parser.print (meter.getTypeAsUnicode ()); } annet {parser.print (F (" - - -")); }
  11. I sendMainMenuUpdate () legg til parser.print (F ("|! A")); parser.print ('~'); if (haveValidReadings) {parser.print (meter.getDigits ()); parser.print (meter.getScalingAsStr ()); parser.print (meter.getTypeAsUnicode ()); } annet {parser.print (F (" - - -")); } For å oppdatere lesingen når du bruker hurtigbufring i menyen.

Konklusjon

Denne opplæringen har vist hvordan du kobler et billig multimeter til en Arduino Mega2560 via RS232. Mange andre tavler støttes også. PfodVC820MeterParserlibrary analyserer multimeterdataene i flyter for Arduino -beregninger og strenger for visning og logging. pfodDesignerV2 ble brukt til å generere en grunnleggende skisse for å vise multimeteravlesningen og vise et plott av verdiene i en Android -mobil ved hjelp av pfodApp. Ingen Android -programmering er nødvendig. Til denne grunnleggende skissen ble multimeterhåndteringen lagt til, og den siste skissen viser gjeldende multimeteravlesning på Android -mobilen din, samt plotter avlesningene og logger dem til en fil på mobilen din for senere bruk.

Anbefalt: