Innehållsförteckning:

Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp: 10 steg (med bilder)
Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp: 10 steg (med bilder)

Video: Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp: 10 steg (med bilder)

Video: Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp: 10 steg (med bilder)
Video: Terrible Backlash! Ukrainian Forces Blow Up Russian Artillery Units With Howitzers In Donetsk 2024, Juli
Anonim
Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp
Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp
Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp
Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp
Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp
Hög noggrannhet fjärrdataloggning med multimeter/Arduino/pfodApp

Uppdaterad 26 april 2017 Reviderad krets och kort för användning med 4000ZC USB -mätare.

Ingen Android -kodning krävs

Denna instruerbara visar dig hur du får tillgång till ett brett spektrum av mätningar med hög noggrannhet från din Arduino och skickar dem också på distans för loggning och plottning. För höghastighetsdataloggning (2000 samplingar/sek) se denna instruktion, fjärrhöghastighetsdataloggning med Arduino/GL AR150/Android/pfodApp

AtoD-omvandlaren inbyggd i Arduino har dålig noggrannhet, vanligtvis +/- 10% och mycket begränsat intervall, vanligtvis bara 0 till 5V DC volt. Med hjälp av en enkel krets och ett bibliotek kan du mata din Arduino med hög noggrannhet automatisk avståndsmätning från en multimeter med en optiskt isolerad RS232-anslutning. Med mätningarna tillgängliga för din skiss kan du styra utdata baserat på värdena. Denna handledning omfattar också att skicka mätningen på distans, via WiFi, Bluetooth, Bluetooth Low Energy eller SMS, till en Android -mobil för visning, loggning och plottning med pfodApp.

Denna instruerbara använder ett Arduino Mega2560 5V -kort som du kan para med en mängd olika kommunikationsskärmar, Ethernet, WiFi, Bluetooth V2 (classic), Bluetooth LE eller SMS. Gränssnittshårdvaran och biblioteket som presenteras här kan också användas med 3.3V Arduino -kompatibla kort. Förutom Mega2560 kan du använda en mängd andra kort som UNO med och Ehternet -sköld, ett ESP8266 -baskort (fristående), ett kort med integrerad Bluetooth Low Energy, som Arduino 101, eller kort som ansluts till kommunikationen delsystem som använder SPI som RedBear BLE-sköld och Adafruts Bluefruit SPI-kort. pfodDesignerV2 stöder alla dessa kortkombinationer och genererar koden för dem. Det begränsande villkoret är att du måste ha en gratis hårdvaruserial för att ansluta till denna multimeter RS232 -sköld.

Kretsen och koden som presenteras här fungerar med ett antal multimetrar. En lättillgänglig, billig, en är en Tekpower TP4000ZC, även känd som Digitek TD-4000ZC. Multimetrar som fungerar med denna krets och bibliotek inkluderar 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

Steg 1:

Denna handledning har två delar:

Den första delen täcker hårdvarugränssnittet till multimetern och kodbiblioteket med en Arduino Mega. Om du bara vill få mätningen i din Arduino är detta allt du behöver.

Den andra delen handlar om att skicka mätningen till en avlägsen Android -mobil för visning, loggning och plottning. I det här exemplet kommer vi att använda en Bluetooth -skärm och generera den grundläggande skissen med pfodDesignerV2, men du kan också generera kod för WiFi, Ethernet, Bluetooth Low Energy och SMS -anslutningar med pfodDesignerV2. Multimeterbiblioteket läggs sedan till i grundskissen för att slutföra koden. Ingen Android -kodning krävs för att visa, logga och plotta avläsningen. Allt styrs från din Arduino -kod.

Detta projekt är också tillgängligt online på www.pfod.com.au

För en fjärrstyrd display för multimetern, se denna instruerbara, Arduino Data Glasses For My Multimeter av Alain.

Steg 2: Multimetern

Multimetern
Multimetern

Multimetrarna som används i denna handledning är den billiga (~ US40) Tekpower TP4000ZC (även känd som Digitek DT-4000ZC) och den äldre Digitech QM1538, som den inte längre säljs. Båda dessa mätare är visuellt desamma och använder samma RS232 -kodning för mätningen.

Här är specifikationerna för Tekpower TP4000ZC: -DC Spänning: 400mV/4/40/400V ± 0,5%+5, 600V ± 0,8%AC Spänning: 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 Motstånd: 400Ω/4/40/400kΩ/4MΩ ± 1%+5, 40MΩ ± 2%+5 Kapacitet: 40nF ± 3,5%+10, 400nF/4/40μF ± 3%+5, 100μF ± 3,5% +5 Frekvens: 10Hz -10MHz ± 0,1% +5 Driftscykel: 0,1%-99,9%± 2,5% +5 Temperatur: 0oC - +40oC ± 3oC, -50oC - +200oC ± 0,75%± 3oC, +200oC - +750oC ± 1,5% ± 3oC, Upplösning 0,1oC via medföljande termoelement.

Multimeterns RS232 -anslutning är bara ett sätt och du kan inte ändra multimeterns inställningar på distans, så du måste manuellt välja typ av mätning. Mätaren går emellertid automatiskt och inställningarna för spänning och ström hanterar både AC och DC.

Steg 3: RS232 -gränssnittsmaskinvara

RS232 -gränssnittsmaskinvara
RS232 -gränssnittsmaskinvara
RS232 -gränssnittsmaskinvara
RS232 -gränssnittsmaskinvara
RS232 -gränssnittsmaskinvara
RS232 -gränssnittsmaskinvara

Det finns två gränssnitt. De nyare Digitek DT-4000ZC och Tekpower TP40000ZC-mätarna levereras med en USB-kabel. Medan den äldre Digitek QM1538 levererades en RS232 9pin D-anslutningskabel. Kretsen ovan (pdf-version) visar hur man ansluter multimätarens optokopplare för att driva en Arduino RX-seriell stift. Obs! Denna krets har uppdaterats för att lägga till ytterligare ett skyddsmotstånd, R2, för Digitek DT-4000ZC och Tekpower TP40000ZC-mätare. Detta motstånd ingick inte på 9 -stifts D -kontaktkortet som visas ovan.

Digitek DT-4000ZC och Tekpower TP40000ZC

För Digitek DT-4000ZC och Tekpower TP40000ZC behöver du en 3,5 mm ljudkabel hane till hane, stereo eller mono kommer att göra, och ett 3,5 mm uttag.

Digitek QM1538

För den äldre Digitek QM1538 behöver du ett 9pin D -uttag. 9pin D -kontakten har förskjutningsstift som inte kan anslutas till prototypskölden. Klipp bara av raden med 4 stift så att du kan löda kontakten till kortet, eftersom kretsen endast använder stift i andra raden med 5 stift. Monteringsbenen var böjda för att låta kontakten ligga platt och kontakten fästes på prototypskärmen med hjälp av 2 -deligt epoxilim ("Araldite") Anslutningsstiftets layout visas ovan är från denna webbplats. 10K -motståndet som monteras inuti kontakten på de medföljande RS232 -kablarna (anslutna mellan stift 2 och 3) krävs inte för detta projekt.

Ansluter signalen till ett Arduino RX -stift

Denna krets fungerar för både 5V och 3.3V Arduino -kort. Här använder vi en Mega2560 (5V) Arduino och monterade kretsen på en prototypsköld som visas ovan.

En flygande ledning används för att ansluta TP1 på skärmen till en Serial1 RX, stift D19, på Mega2560.

Anmärkning om programvaruserial: Ursprungligen kopplades denna skärm ihop med en UNO med hjälp av Software Serial på stift 10, 11. Men när den parades med Bluetooth -skölden på Serial vid 9600baud förlorades vissa mottagningsbyte. Att flytta RS232 till en hårdvaruseriell anslutning löste problemet. Så för pålitlig fjärrvisning och loggning, om du använder en kommunikationssköld som ansluts via seriell, behöver du antingen ett kort med två eller flera hårdvaruserier, till exempel Mega2560. Andra alternativ är en UNO med och Ehternet-sköld, ett ESP8266-baskort (fristående), ett kort med integrerat Bluetooth Low Energy som Anduino 101 eller kort som ansluts till kommunikationsundersystemet med SPI som RedBear BLE-sköld och Adafruts Bluefruit SPI brädor. pfodDesignerV2 stöder alla dessa kort och genererar koden för dem.

Steg 4: PfodVC820MultimeterParser -biblioteket

Tekpower TP4000ZC och ett antal andra multimetrar skickar inte mätningen via RS232 som ASCII -text, snarare skickar den 14 byte med bitar inställda beroende på vilka segment på LCD -skärmen som belyses. Kodningen av de 14 byten förklaras i denna pdf. Biblioteket pfodVC820MeterParser.zip avkodar dessa byte till textsträngar och flöten. (VC820 hänvisar till en av mätarna som använder denna kodning.) Se även QtDMM för Windows, Mac och Linux datorprogramvara som hanterar ett brett spektrum av multimetrar.

Det finns ett minimalt exempel, MeterParserExample.ino, på att använda biblioteket pfodVC820MeterParser. Anslut mätaren till en 2400 baud seriell anslutning och ring sedan haveReading () varje loop för att bearbeta byte. haveReading () återgår till sanning när en ny fullständig avläsning analyseras. Sedan kan du ringa getAsFloat () för att få värdet (skalat) som en float eller getAtStr () för att få avläsningen med skalning för utskrift och loggning. Det finns andra metoder för att komma åt typen av mätning, getTypeAsStr () och getTypeAsUnicode (), liksom andra verktygsmetoder.

#include "pfodVC820MeterParser.h" pfodVC820MeterParser meter; // void setup () {Serial.begin (74880); Serial1.begin (2400); meter.connect (& Serial1); } flytläsning; void loop () {if (meter.haveReading ()) {reading = meter.getAsFloat (); // använd detta för Arduino -beräkningar Serial.print ("Läsning med enheter:"); Serial.print (meter.getDigits ()); Serial.print (meter.getScalingAsStr ()); Serial.print (meter.getTypeAsStr ()); Serial.print (F ("= som flottör tryckt (6 siffror):")); Serial.println (läsning, 6); Serial.println ("Time (sec) and Reading as string for logging"); Serial.print (((float) millis ())/1000.0); Serial.print (", sek,"); Serial.print (meter.getAsStr ()); Serial.print (','); Serial.println (meter.getTypeAsStr ()); }}

Med mätaren inställd på Deg C och med hjälp av termoelementet ger exempelskissen denna utgång på Arduino IDE seriell bildskärm

Avläsning med enheter: 25,7C = som flottör tryckt (6 siffror): 25,700000Tid (sek) och Avläsning som sträng för loggning 2,40, sek, 25,7, C

Steg 5: Del 2 - Fjärrvisning, loggning och plottning

Denna del av självstudien behandlar hur du på distans visar, loggar och plottar mätaravläsningen på din Android -mobil. pfodApp används för att hantera visning, loggning och plottning på din Android -mobil. Ingen Android -programmering krävs. Alla skärmar, loggning och plottning styrs helt av din Arduino -skiss. Med den gratis pfodDesignerV2 -appen kan du designa din Android -meny och diagram och sedan generera en Arduino -skiss åt dig.

pfodApp stöder ett antal anslutningstyper, Ethernet, WiFi, Bluetooth V2 (classic), Bluetooth LE eller SMS. Denna handledning använder Arduino 101 (Bluetooth Low Energy) för dataloggning och plottning. Andra Bluetooth Low Energy -kort stöds också. Denna handledning använder SMS för att ansluta till pfodApp. Du kan använda pfodDesignerV2 för att lägga till dataloggning och kartläggning till det SMS -exemplet. pfodDesignerV2 har också alternativ för att generera Arduino -kod till en Bluetooth V2 (klassisk) sköld för att ansluta till pfodApp.

I det här exemplet kommer vi att använda en Iteadstudio Bluetooth Shield V2.2 som ansluter till Arduino Mega2560 via en 9600baud seriell anslutning. Med hjälp av den fria pfodDesignerV2 -appen sätter vi upp en enkel meny som bara har en etikett för att visa mätaravläsningen och en knapp för att öppna diagrammet. Den här sidan har ett antal självstudier för pfodDesignerV2. När vi har en grundläggande skiss kommer vi att modifiera den för att lägga till mätarparsaren och för att skicka mätaravläsningen och data för loggning och kartläggning.

Designa menyn

I det här avsnittet kommer vi att utforma en Android/pfodApp -meny som visar mätaravläsningen och en knapp för att öppna ett diagram över avläsningarna. Avläsningarna sparas också i en fil på Android -mobilen

Steg 6: Lägga till en etikett

Lägga till en etikett
Lägga till en etikett
Lägga till en etikett
Lägga till en etikett
Lägga till en etikett
Lägga till en etikett

Installera gratis pfodDesignerV2 och starta en ny meny.

Standardmålet är Serial vid 9600baud vilket är vad som behövs för Iteadstudio Bluetooth Shield V2.2. Om du ansluter med en Bluetooth Low Energy -enhet eller Wifi eller SMS klickar du på Target för att ändra valet.

För att lägga till en etikett för att visa mätaravläsningen, klicka på Lägg till menyalternativ och välj rulla ner för att välja Etikett.

Välj en lämplig teckenstorlek och färger. Lämna texten som etikett eftersom vi kommer att ändra den genererade koden för att ersätta den med mätaren senare. Här har vi ställt in teckenstorlek på +7, teckensnittsfärg till rött och bakgrund till silver.

Gå tillbaka till skärmen Redigeringsmeny_1 och ställ in ett uppdateringsintervall 1 sek. Det kommer att få pfodApp att begära om menyn ungefär en gång i sekunden för att visa den senaste avläsningen i etiketten.

Steg 7: Lägga till en diagramknapp

Lägga till en diagramknapp
Lägga till en diagramknapp
Lägga till en diagramknapp
Lägga till en diagramknapp
Lägga till en diagramknapp
Lägga till en diagramknapp
Lägga till en diagramknapp
Lägga till en diagramknapp

Klicka på Lägg till menyalternativ igen för att lägga till en diagramknapp.

Redigera texten på diagramknappen till något lämpligt, t.ex. bara "Chart" och välj en teckenstorlek och färger.

Klicka sedan på knappen "Diagram" för att öppna plotredigeringsskärmen. Det kommer bara att finnas en tomt så klicka på knapparna Redigera plot 2 och Redigera plot 3 och rulla ner och klicka på Dölj tomt för var och en av dem.

Redigera diagrametiketten till något lämpligt, t.ex. "Multimeter". Du behöver inte ändra någon av de andra plotinställningarna eftersom vi kommer att ändra skissen för att skicka olika y-axeletiketter beroende på multimeterinställningen.

Slutligen gå tillbaka till redigeringsmenyn_1 och redigeringsfrågan, detta ställer in texten längst ner i menyn och den övergripande menybakgrundsfärgen. Här har vi ställt uppmaningen till “Fjärrmultimeter” med teckenstorlek +3 och bakgrundsfärg Silver.

Du kan nu gå tillbaka till Redigeringsmeny_1 och klicka på Förhandsgranskningsmeny för att förhandsgranska menydesignen.

Om du inte gillar designen kan du ändra den innan du genererar koden. Om du vill ta ut etiketten från knappen kan du lägga till några tomma etiketter enligt beskrivningen här. Lägga till ett diagram och logga data om hur du visar/plottar Arduino -data på Android är en annan handledning om pfodDesignerV2/pfodApp -dataloggning och kartläggning.

Steg 8: Generera Arduino Sketch

Genererar Arduino Sketch
Genererar Arduino Sketch
Genererar Arduino Sketch
Genererar Arduino Sketch

För att generera Arduino -koden som visar denna meny i pfodApp, gå tillbaka till skärmen Redigeringsmeny_1 och rulla ner och klicka på knappen Generera kod.

Klicka på knappen "Skriv kod till fil" för att mata ut Arduino -skissen till filen /pfodAppRawData/pfodDesignerV2.txt på din mobil. Avsluta sedan pfodDesignerV2. Överför filen pfodDesignerV2.txt till din dator med antingen en USB -anslutning eller en filöverföringsapp, som wifi file transfer pro. En kopia av den genererade skissen finns här, pfodDesignerV2_meter.txt

Ladda skissen i din Arduino IDE och programmera din Uno (eller Mega) tavla. Lägg sedan till Iteadstudio Bluetooth Shield V2.2. Installera pfodApp på din Android -mobil och skapa en ny Bluetooth -anslutning, till exempel Multimeter. Se pfodAppForAndroidGettingStarted.pdf om hur du skapar nya anslutningar. När du sedan använder pfodApp för att öppna Multimeter -anslutningen ser du din designade meny.

Att öppna diagrammet visar inget intressant eftersom vi inte har lagt till i multimeter hårdvara/programvara.

Steg 9: Lägga till multimetern

Lägger till multimetern
Lägger till multimetern
Lägger till multimetern
Lägger till multimetern
Lägger till multimetern
Lägger till multimetern

Vi kommer att ändra den genererade skissen för att lägga till multimeter -parsern och skicka dess data till din Android -mobil. Den fullständiga modifierade skissen finns här, pfod_meter.ino

Dessa modifieringar lägger till multimeter -parsern och en 5sek -timer. Om det inte finns någon ny giltig avläsning under den tiden slutar skissen att skicka data och uppdaterar Android/pfodApp -skärmen till " - - -". När mätarens manuella val ändras, uppdateras diagrametiketterna, men du måste lämna diagrammet och välja det igen för att se de nya etiketterna. Å andra sidan uppdateras mätaravläsningen automatiskt varje sekund. Slutligen hanterar pfodApp Unicode som standard, så när metervärdet visas används metoden getTypeAsUnicode () för att returnera Unicode för ohm, Ω och degsC, ℃ för mätarens display.

Kartknappen visar ett uppdateringsdiagram över avläsningarna:-

Kartdata, i CSV -format, sparas också i en fil till din Android -mobil under /pfodAppRawData/Mulitmeter.txt för senare överföring till din dator och importeras till ett kalkylblad för ytterligare beräkningar och kartläggning.

Steg 10: Skissmodifieringarna i detalj

  1. Ladda ner biblioteket pfodVC820MeterParser.zip och öppna sedan Arduino IDE och klicka i Sketch → Inkludera bibliotek → Lägg till.zip för att lägga till detta bibliotek i din IDE.
  2. Lägg till biblioteket pfodVC820MeterParser till skissen. Klicka på Sketch → Inkludera bibliotek → pfodVC820MeterParser. Detta kommer att lägga till inkluderingsuttalanden högst upp på skissen.
  3. Redigera pfodParser_codeGenerated parser ("V1"); till pfodParser_codeGenerated parser (""); Detta inaktiverar menyn cachning i pfodApp så att dina menyändringar visas. Du kan återgå till “V3” när du har slutfört alla dina ändringar för att återaktivera menycachning.
  4. Lägg till dessa rader för att skapa objekten för programvarans serie och multimeter. pfodVC820MeterParser mätare;
  5. I slutet av installationen () lägg till Serial1.begin (2400); meter.connect (& Serial1);
  6. Ovanför loop () lägg till osignerad lång validReadingTimer = 0; const osignerad lång VALID_READINGS_TIMEOUT = 5000; // 5secs bool haveValidReadings = true; // satt till true när de har giltiga avläsningar intmåttTyp = meter. NO_READING; och högst upp i öglan () lägg till if (meter.haveReading ()) {if (meter.isValid ()) {validReadingTimer = millis (); haveValidReadings = true; } int newType = meter.getType (); if (måttyp! = newType) {// mata ut nya dataloggtitlar parser.print (F ("sek")); parser.println (meter.getTypeAsStr ()); } måttyp = ny typ; } if ((millis () - validReadingTimer)> VALID_READINGS_TIMEOUT) {haveValidReadings = false; // ingen ny giltig avläsning under de senaste 5 sekunderna}
  7. Längre ner i slingan ersätt parser.print (F ("{= Multimeter | time (sek)) | Plot_1 ~~~ ||}")); med parser.print (F ("{= Multimeter | tid (sek)) | Mätaravläsning ~~~")); parser.print (meter.getTypeAsStr ()); parser.print (F ("||}"));
  8. I botten av loop () ersätt sendData (); med if (haveValidReadings) {sendData (); }
  9. I sendData () ersätt 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 () ersätt parser.print (F ("~ Etikett")); med parser.print ('~'); if (haveValidReadings) {parser.print (meter.getDigits ()); parser.print (meter.getScalingAsStr ()); parser.print (meter.getTypeAsUnicode ()); } annat {parser.print (F (" - - -")); }
  11. I sendMainMenuUpdate () lägg till parser.print (F ("|! A")); parser.print ('~'); if (haveValidReadings) {parser.print (meter.getDigits ()); parser.print (meter.getScalingAsStr ()); parser.print (meter.getTypeAsUnicode ()); } annat {parser.print (F (" - - -")); } För att uppdatera avläsningen när du använder menycachning.

Slutsats

Denna handledning har visat hur du ansluter en billig multimeter till en Arduino Mega2560 via RS232. Många andra styrelser stöds också. PfodVC820MeterParserlibrary analyserar multimeterdata i flottörer för Arduino -beräkningar och strängar för visning och loggning. pfodDesignerV2 användes för att generera en grundläggande skiss för att visa multimeteravläsningen och visa en plott av värdena i en Android -mobil med pfodApp. Ingen Android -programmering krävs. Till denna grundläggande skiss lades multimeterhanteringen till och den sista skissen visar den aktuella multimeteravläsningen på din Android -mobil samt plottar avläsningarna och loggar dem till en fil på din mobil för senare användning.

Rekommenderad: