Inhoudsopgave:

Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp - Ajarnpa
Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp - Ajarnpa

Video: Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp - Ajarnpa

Video: Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp - Ajarnpa
Video: Hoe implementeer je nu een 2e orde setpoint? [NL] 2024, November
Anonim
Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp
Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp
Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp
Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp
Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp
Hoge nauwkeurigheid datalogging op afstand met behulp van multimeter/Arduino/pfodApp

Bijgewerkt 26 april 2017 Herzien circuit en bord voor gebruik met 4000ZC USB-meters.

Geen Android-codering vereist

Deze instructable laat je zien hoe je toegang krijgt tot een breed scala aan zeer nauwkeurige metingen van je Arduino en ze ook op afstand kunt verzenden voor logging en plotten. Voor High Speed Data Logging (2000 samples/sec) zie deze instrucatble, Remote High Speed Data Logging met Arduino/GL AR150/Android/pfodApp

De AtoD-converter die in de Arduino's is ingebouwd, heeft een slechte nauwkeurigheid, meestal +/-10% en een zeer beperkt bereik, meestal alleen 0 tot 5V DC volt. Met behulp van een eenvoudig circuit en een bibliotheek kunt u uw Arduino voeden met zeer nauwkeurige metingen met automatisch bereik vanaf een multimeter met een optisch geïsoleerde RS232-verbinding. Als u de metingen voor uw schets beschikbaar hebt, kunt u de uitvoer regelen op basis van de waarden. Deze tutorial behandelt ook het verzenden van de meting op afstand, via WiFi, Bluetooth, Bluetooth Low Energy of sms, naar een Android-mobiel voor weergave, logging en plotten met behulp van pfodApp.

Deze instructable maakt gebruik van een Arduino Mega2560 5V-kaart die u kunt koppelen met een breed scala aan communicatieschilden, Ethernet, WiFi, Bluetooth V2 (klassiek), Bluetooth LE of SMS. De interfacehardware en -bibliotheek die hier worden gepresenteerd, kunnen ook worden gebruikt met 3.3V Arduino-compatibele kaarten. Naast de Mega2560 kun je een groot aantal andere boards gebruiken, zoals UNO met en Ehternet-shield, een ESP8266-baseboard (stand alone), een board met geïntegreerde Bluetooth Low Energy, zoals Arduino 101, of boards die verbinding maken met de communicatie subsysteem met SPI zoals RedBear BLE shield en Adafrut's Bluefruit SPI boards. pfodDesignerV2 ondersteunt al deze bordcombinaties en zal de code ervoor genereren. De beperkende voorwaarde is dat je een gratis Hardware Serial nodig hebt om verbinding te maken met deze Multimeter RS232-shield.

De hier gepresenteerde schakeling en code werkt met een aantal multimeters. Een gemakkelijk verkrijgbare, goedkope is een Tekpower TP4000ZC, ook bekend als Digitek TD-4000ZC. Multimeters die met dit circuit en deze bibliotheek werken, zijn onder meer 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

Stap 1:

Deze zelfstudie bestaat uit twee delen:

Het eerste deel behandelt de hardware-interface naar de multimeter en de codebibliotheek met behulp van een Arduino Mega. Als je alleen de meting in je Arduino wilt krijgen, is dit alles wat je nodig hebt.

Het tweede deel behandelt het verzenden van de meting naar een externe Android-mobiel voor weergave, logging en plotten. In dit voorbeeld gebruiken we een Bluetooth-shield en genereren we de basisschets met pfodDesignerV2, maar u kunt ook code genereren voor WiFi-, Ethernet-, Bluetooth Low Energy- en sms-verbindingen met pfodDesignerV2. De multimeterbibliotheek wordt vervolgens toegevoegd aan de basisschets om de code te voltooien. Er is geen Android-codering vereist om de meting weer te geven, te loggen en te plotten. Alles wordt bestuurd vanuit je Arduino-code.

Dit project is ook online beschikbaar op www.pfod.com.au

Voor een head-up display op afstand van de multimeter, zie deze instructable, Arduino Data Glasses For My Multimeter van Alain.

Stap 2: De multimeter

De multimeter
De multimeter

De multimeters die in deze tutorial worden gebruikt, zijn de goedkope (~ US40) Tekpower TP4000ZC (ook bekend als Digitek DT-4000ZC) en de oudere Digitech QM1538, die niet meer wordt verkocht. Beide meters zijn visueel hetzelfde en gebruiken dezelfde RS232-codering van de meting.

Hier de specificaties voor de Tekpower TP4000ZC:-DC Spanning: 400mV/4/40/400V ±0,5%+5, 600V ±0,8%AC Spanning: 4/40/400V ±0,8%+5, 400mV/600V ±1,2%+ 5DC Stroom: 400/4000μA ±2,0%+5, 40/400mA ±1,5%+5, 4/10A ±2%+5AC Stroom: 400/4000μA ±2,5%+3, 40/400mA ±2%+5, 4 /10A ±2,5%+5Weerstand: 400Ω/4/40/400kΩ/4MΩ ±1%+5, 40MΩ ±2%+5Capaciteit: 40nF ±3,5%+10, 400nF/4/40μF ±3%+5, 100μF ± 3,5%+5Frequentie: 10Hz-10MHz ±0,1%+5Inschakelduur: 0,1%-99,9% ±2,5%+5Temperatuur: 0oC - +40oC ±3oC, -50oC - +200oC±0,75% ±3oC, +200oC - +750oC ± 1,5% ±3oC, resolutie 0,1oC via meegeleverde thermokoppelsonde.

De RS232-aansluiting van de multimeter is slechts één manier en u kunt de instellingen van de multimeter niet op afstand wijzigen, dus u moet het type meting handmatig selecteren. De meter heeft echter een automatisch bereik en de instellingen voor spanning en stroom verwerken zowel AC als DC.

Stap 3: De RS232-interfacehardware

De RS232-interfacehardware
De RS232-interfacehardware
De RS232-interfacehardware
De RS232-interfacehardware
De RS232-interfacehardware
De RS232-interfacehardware

Er zijn twee interfaces. De nieuwere Digitek DT-4000ZC en Tekpower TP40000ZC meters worden geleverd met een USB-kabel. Terwijl de oudere Digitek QM1538 werd geleverd met een RS232 9-pins D-connectorkabel. Het bovenstaande circuit (pdf-versie) laat zien hoe de opto-koppeling van de multimeter moet worden aangesloten om een Arduino RX seriële pin aan te sturen. Opmerking: dit circuit is bijgewerkt om nog een beveiligingsweerstand, R2, toe te voegen voor de Digitek DT-4000ZC- en Tekpower TP40000ZC-meters. Deze weerstand was niet inbegrepen op het hierboven getoonde 9-pins D-connectorbord.

Digitek DT-4000ZC en Tekpower TP40000ZC

Voor de Digitek DT-4000ZC en Tekpower TP40000ZC heb je een 3,5 mm audiokabel mannelijk naar mannelijk, stereo of mono nodig, en een 3,5 mm-aansluiting.

Digitek QM1538

Voor de oudere Digitek QM1538 hebt u een 9-pins D-aansluiting nodig. De 9-pins D-connector heeft versprongen pinnen die niet in het prototype-schild kunnen worden gestoken. Knip gewoon de rij van 4 pinnen af, zodat u de connector op het bord kunt solderen, omdat het circuit alleen pinnen gebruikt in de tweede rij van 5 pinnen. De montagepoten waren omgebogen om de connector plat te laten liggen en de connector werd vastgemaakt aan het prototype schild met behulp van 2-componenten epoxylijm (“Araldite”). De hierboven getoonde lay-out van de connectorpin is van deze site. De 10K-weerstand die in de connector van de meegeleverde RS232-kabels wordt gemonteerd (verbonden tussen pin 2 en 3) is niet vereist voor dit project.

Het signaal aansluiten op een Arduino RX-pin

Dit circuit werkt voor zowel 5V als 3,3V Arduino-kaarten. Hier gebruiken we een Mega2560 (5V) Arduino en monteerden het circuit op een prototype-schild zoals hierboven weergegeven.

Een losse kabel wordt gebruikt om de TP1 op het schild te verbinden met een Serial1 RX, pin D19, op de Mega2560.

Opmerking over software-serieel: aanvankelijk was dit schild gekoppeld aan een UNO met behulp van software-serieel op pinnen 10, 11. Maar toen het werd gekoppeld aan het Bluetooth-schild op serieel op 9600 baud, gingen enkele ontvangstbytes verloren. Het verplaatsen van de RS232 naar een hardware seriële verbinding loste dit probleem op. Dus voor betrouwbare weergave en logboekregistratie op afstand, als u een communicatieschild gebruikt dat via seriële verbinding wordt aangesloten, hebt u een bord nodig met twee of meer hardware-serienummers, zoals de Mega2560. Andere alternatieven zijn een UNO met en Ehternet-schild, een ESP8266-basisbord (stand-alone), een bord met geïntegreerde Bluetooth Low Energy zoals Anduino 101 of borden die verbinding maken met het communicatiesubsysteem via SPI zoals RedBear BLE-schild en Adafrut's Bluefruit SPI planken. pfodDesignerV2 ondersteunt al deze boards en zal de code voor hen genereren.

Stap 4: De PfodVC820MultimeterParser-bibliotheek

De Tekpower TP4000ZC en een aantal andere multimeters sturen de meting niet via RS232 als ASCII-tekst, maar 14 bytes met bits die zijn ingesteld afhankelijk van welke segmenten van het LCD-scherm verlicht zijn. De codering van de 14 bytes wordt uitgelegd in deze pdf. De bibliotheek pfodVC820MeterParser.zip decodeert deze bytes in tekenreeksen en floats. (De VC820 verwijst naar een van de meters die deze codering gebruikt.) Zie ook QtDMM voor Windows, Mac en Linux computersoftware die een breed scala aan multimeters aankan.

Er is een minimaal voorbeeld, MeterParserExample.ino, van het gebruik van de pfodVC820MeterParser-bibliotheek. Sluit de meter aan op een seriële verbinding van 2400 baud en roep haveReading() elke lus aan om de bytes te verwerken. haveReading() retourneert true wanneer er een nieuwe volledige lezing is geparseerd. Vervolgens kunt u getAsFloat() aanroepen om de waarde (geschaald) als een float of getAtStr() te krijgen om de waarde te krijgen met schaling voor afdrukken en loggen. Er zijn andere methoden beschikbaar om toegang te krijgen tot het type meting, getTypeAsStr() en getTypeAsUnicode(), evenals andere hulpprogramma's.

#include "pfodVC820MeterParser.h" pfodVC820MeterParser-meter; // ongeldige setup () { Serial.begin (74880); Serieel1.begin (2400); meter.connect(&Serial1); }vlotter lezen; void loop() {if (meter.haveReading()) { reading = meter.getAsFloat(); // gebruik dit voor Arduino-berekeningen Serial.print ("Lezen met eenheden: "); Serial.print(meter.getDigits()); Serial.print(meter.getScalingAsStr()); Serial.print(meter.getTypeAsStr()); Serial.print(F(" = as float gedrukt (6 cijfers):")); Serial.println (lezen, 6); Serial.println ("Tijd (sec) en Lezen als tekenreeks voor logboekregistratie"); Serial.print(((float)millis())/1000.0); Serieel.print(", sec, "); Serial.print(meter.getAsStr()); Serieel.print(', '); Serial.println(meter.getTypeAsStr()); } }

Met de meter ingesteld op Deg C en met behulp van de thermokoppel-sonde, geeft de voorbeeldschets deze uitvoer op de Arduino IDE seriële monitor

Lezen met eenheden: 25.7C = als float gedrukt (6 cijfers):25.700000Time(sec) en Lezen als string voor logging 2.40, sec, 25.7, C

Stap 5: Deel 2 – Weergave op afstand, logboekregistratie en plotten

Dit deel van de zelfstudie behandelt hoe u de meterstand op afstand kunt weergeven, loggen en plotten op uw Android-mobiel. pfodApp wordt gebruikt voor het weergeven, loggen en plotten op uw Android-mobiel. Er is geen Android-programmering vereist. Alle displays, logging en plotting worden volledig bestuurd door uw Arduino-schets. Met de gratis pfodDesignerV2-app kunt u uw Android-menu en -diagram ontwerpen en vervolgens een Arduino-schets voor u genereren.

pfodApp ondersteunt een aantal verbindingstypen, Ethernet, WiFi, Bluetooth V2 (klassiek), Bluetooth LE of SMS. Deze tutorial gebruikt Arduino 101 (Bluetooth Low Energy) voor datalogging en plotten. Andere Bluetooth Low Energy-kaarten worden ook ondersteund. Deze tutorial gebruikt sms om verbinding te maken met pfodApp. U kunt pfodDesignerV2 gebruiken om datalogging en grafieken toe te voegen aan dat SMS-voorbeeld. pfodDesignerV2 heeft ook opties om Arduino-code te genereren om een Bluetooth V2 (klassiek) schild te verbinden met pfodApp.

Voor dit voorbeeld gebruiken we een Iteadstudio Bluetooth Shield V2.2 die verbinding maakt met de Arduino Mega2560 via een seriële verbinding van 9600baud. Met behulp van de gratis pfodDesignerV2-app hebben we een eenvoudig menu opgezet dat alleen een label heeft om de meterstand weer te geven en een knop om de grafiek te openen. Deze pagina heeft een aantal pfodDesignerV2 tutorials. Zodra we een basisschets hebben, zullen we deze aanpassen om de meterparser toe te voegen en de meterstand en gegevens te verzenden voor logboekregistratie en grafieken.

Het menu ontwerpen

In deze sectie zullen we een Android/pfodApp-menu ontwerpen dat de meterstand weergeeft en een knop om een grafiek van de metingen te openen. De metingen worden ook opgeslagen in een bestand op de Android-mobiel

Stap 6: Een label toevoegen

Een label toevoegen
Een label toevoegen
Een label toevoegen
Een label toevoegen
Een label toevoegen
Een label toevoegen

Installeer de gratis pfodDesignerV2 en start een nieuw menu.

Het standaarddoel is serieel op 9600baud, wat nodig is voor de Iteadstudio Bluetooth Shield V2.2. Als u verbinding maakt via een Bluetooth Low Energy-apparaat of wifi of sms, klik dan op Doel om de selectie te wijzigen.

Om een label toe te voegen om de meterstand weer te geven, klikt u op Menu-item toevoegen en selecteert u naar beneden scrollen om Label te selecteren.

Kies een geschikte lettergrootte en kleuren. Laat de tekst als label staan, want we zullen de gegenereerde code wijzigen om deze later te vervangen door de metermeting. Hier hebben we lettergrootte ingesteld op +7, letterkleur op rood en achtergrond op zilver.

Ga terug naar het Editing Menu_1 scherm en stel een Refresh Interval 1 sec in. Het zorgt ervoor dat pfodApp het menu ongeveer één keer per seconde opnieuw opvraagt om de laatste meting in het label weer te geven.

Stap 7: Een grafiekknop toevoegen

Een grafiekknop toevoegen
Een grafiekknop toevoegen
Een grafiekknop toevoegen
Een grafiekknop toevoegen
Een grafiekknop toevoegen
Een grafiekknop toevoegen
Een grafiekknop toevoegen
Een grafiekknop toevoegen

Klik nogmaals op Menu-item toevoegen om een grafiekknop toe te voegen.

Bewerk de tekst van de kaartknop naar iets dat geschikt is, b.v. gewoon "grafiek" en kies een lettergrootte en kleuren.

Klik vervolgens op de knop "Grafiek" om het scherm voor het bewerken van de plot te openen. Er zal maar één plot zijn, dus klik op de knoppen Edit Plot 2 en Edit Plot 3 en scroll naar beneden en klik op Hide Plot voor elk van hen.

Bewerk het kaartlabel naar iets dat geschikt is, b.v. "Multimeter". Het is niet nodig om de andere plotinstellingen te wijzigen, omdat we de schets zullen aanpassen om verschillende y-aslabels te verzenden, afhankelijk van de multimeterinstelling.

Ga ten slotte terug naar het bewerkingsmenu_1 en de bewerkingsprompt, dit stelt de tekst onder aan het menu en de algemene achtergrondkleur van het menu in. Hier hebben we de prompt ingesteld op "Remote Multimeter" met lettergrootte +3 en achtergrondkleur Zilver.

Je kunt nu teruggaan naar Menu_1 bewerken en op Voorbeeldmenu klikken om een voorbeeld van het menuontwerp te bekijken.

Als het ontwerp u niet bevalt, kunt u het wijzigen voordat u de code genereert. Als u het label uit de knop wilt verwijderen, kunt u enkele blanco labels toevoegen zoals hier beschreven. Een grafiek toevoegen en gegevens loggen over het weergeven / plotten van Arduino-gegevens op Android is een andere tutorial over pfodDesignerV2/pfodApp datalogging en grafieken.

Stap 8: De Arduino-schets genereren

De Arduino-schets genereren
De Arduino-schets genereren
De Arduino-schets genereren
De Arduino-schets genereren

Om de Arduino-code te genereren die dit menu in pfodApp zal weergeven, gaat u terug naar het scherm Editing Menu_1 en scrolt u omlaag en klikt u op de knop Generate Code.

Klik op de knop "Code schrijven naar bestand" om de Arduino-schets uit te voeren naar het /pfodAppRawData/pfodDesignerV2.txt-bestand op uw mobiel. Sluit vervolgens de pfodDesignerV2. Breng het pfodDesignerV2.txt-bestand over naar uw pc via een USB-verbinding of een app voor bestandsoverdracht, zoals wifi-bestandsoverdracht pro. Een kopie van de gegenereerde schets is hier, pfodDesignerV2_meter.txt

Laad de sketch in je Arduino IDE en programmeer je Uno (of Mega) board. Voeg vervolgens de Iteadstudio Bluetooth Shield V2.2 toe. Installeer pfodApp op uw Android-mobiel en maak een nieuwe Bluetooth-verbinding met de naam bijvoorbeeld Multimeter. Zie pfodAppForAndroidGettingStarted.pdf voor het maken van nieuwe verbindingen. Wanneer u vervolgens pfodApp gebruikt om de Multimeter-verbinding te openen, ziet u uw ontworpen menu.

Het openen van de kaart geeft niets interessants weer omdat we geen hardware/software voor de multimeter hebben toegevoegd.

Stap 9: De multimeter toevoegen

De multimeter toevoegen
De multimeter toevoegen
De multimeter toevoegen
De multimeter toevoegen
De multimeter toevoegen
De multimeter toevoegen

We zullen de gegenereerde schets aanpassen om de multimeter-parser toe te voegen en de gegevens naar je Android-mobiel te sturen. De volledige aangepaste schets is hier, pfod_meter.ino

Deze aanpassingen voegen de multimeter-parser en een timer van 5 seconden toe. Als er in die tijd geen nieuwe geldige meting is, stopt de schets met het verzenden van gegevens en wordt het Android/pfodApp-scherm bijgewerkt naar "- - -". Als de handmatige selectie van de meter wordt gewijzigd, worden de kaartlabels bijgewerkt, maar u moet de kaart verlaten en opnieuw selecteren om de nieuwe labels te zien. Aan de andere kant wordt de meterstand elke seconde automatisch bijgewerkt. Ten slotte verwerkt pfodApp standaard Unicode, dus bij het weergeven van de meterstand wordt de methode getTypeAsUnicode() gebruikt om de Unicode voor ohm, Ω en degsC, ℃ voor de meterweergave te retourneren.

De grafiekknop geeft een bijgewerkte grafiek van de metingen weer: -

De grafiekgegevens, in CSV-indeling, worden ook opgeslagen in een bestand op uw Android-mobiel onder /pfodAppRawData/Mulitmeter.txt voor latere overdracht naar uw computer en importeren in een spreadsheet voor verdere berekeningen en grafieken.

Stap 10: De schetswijzigingen in detail

  1. Download de pfodVC820MeterParser.zip-bibliotheek en open vervolgens Arduino IDE en klik in Sketch → Include Library → Add.zip om deze bibliotheek aan uw IDE toe te voegen.
  2. Voeg de pfodVC820MeterParser-bibliotheek toe aan de schets. Klik op Schets → Bibliotheek opnemen → pfodVC820MeterParser. Hiermee worden de include-instructies bovenaan de schets toegevoegd.
  3. Bewerk pfodParser_codeGenerated parser ("V1"); naar pfodParser_codeGenerated parser(""); Dit schakelt de menu-caching in pfodApp uit, zodat uw menuwijzigingen worden weergegeven. U kunt terugkeren naar "V3" wanneer u klaar bent met alle wijzigingen om menucaching opnieuw in te schakelen.
  4. Voeg deze regels toe om de objecten voor de softwareserie en de multimeter te maken. pfodVC820MeterParser-meter;
  5. Voeg aan het einde van setup() Serial1.begin(2400) toe; meter.connect(&Serial1);
  6. Boven loop() voeg niet-ondertekende lange validReadingTimer = 0 toe; const unsigned long VALID_READINGS_TIMEOUT = 5000; // 5secs bool haveValidReadings = true; // ingesteld op true wanneer geldige metingen int meetType = meter. NO_READING; en voeg bovenaan de lus() if (meter.haveReading()) { if (meter.isValid()) { validReadingTimer = millis(); haveValidReadings = waar; } int newType = meter.getType(); if (measurementType != newType) {// output nieuwe datalogging titels parser.print(F("sec, ")); parser.println(meter.getTypeAsStr()); } metingType = nieuwType; } if ((millis() - validReadingTimer) > VALID_READINGS_TIMEOUT) { haveValidReadings = false; // geen nieuwe geldige lezing in de laatste 5 sec }
  7. Vervang verder in de lus parser.print(F("{=Multimeter|tijd (sec)|Plot_1~~~||}")); met parser.print(F("{=Multimeter|tijd (sec)|Meteraflezing~~~")); parser.print(meter.getTypeAsStr()); parser.print(F("||}"));
  8. Vervang aan de onderkant van loop() sendData(); met if (haveValidReadings) { sendData(); }
  9. Vervang in sendData() parser.print(', '); parser.print(((float)(plot_1_var-plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); met parser.print(', '); parser.print(meter.getAsStr);
  10. Vervang in sendMainMenu() parser.print(F("~Label")); met parser.print('~'); if (haveGalidReadings) {parser.print(meter.getDigits()); parser.print(meter.getScalingAsStr()); parser.print(meter.getTypeAsUnicode ()); } else { parser.print(F("- - -")); }
  11. Voeg in sendMainMenuUpdate() parser.print(F("|!A"));parser.print('~'); if (haveGalidReadings) {parser.print(meter.getDigits()); parser.print(meter.getScalingAsStr()); parser.print(meter.getTypeAsUnicode ()); } else { parser.print(F("- - -")); } Om de meting bij te werken bij gebruik van menu-caching.

Conclusie

Deze tutorial heeft laten zien hoe je een goedkope multimeter via RS232 op een Arduino Mega2560 kunt aansluiten. Veel andere boards worden ook ondersteund. De pfodVC820MeterParserlibrary ontleedt de multimetergegevens in floats voor Arduino-berekeningen en strings voor weergave en logging. pfodDesignerV2 werd gebruikt om een basisschets te genereren om de multimeter-uitlezing weer te geven en een plot van de waarden in een Android-mobiel te tonen met behulp van pfodApp. Er is geen Android-programmering vereist. Aan deze basisschets is de multimeter-afhandeling toegevoegd en de uiteindelijke schets geeft de huidige multimeter-uitlezing op uw Android-mobiel weer, evenals het plotten van de metingen en loggen in een bestand op uw mobiel voor later gebruik.

Aanbevolen: