Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bewaak uw energierekening via Modbus, MKR WiFi 1010 en RS485

Componenten en benodigdheden

Arduino MKR WiFi 1010
× 1
Arduino MKR 485 Shield
× 1
USB-A naar micro-USB-kabel
× 1
USB-voeding
Elke voeding compatibel. Het MKR485-schild heeft een ingebouwde 7-24V buck-converter.
× 1
Twisted enkel paar afgeschermde kabel
× 1

Benodigde gereedschappen en machines

Digilent Mastech MS8217 Autorange digitale multimeter
Elektriciensschaar
Kleine platte schroevendraaier
voor MKR485-terminals
Middelgrote philips-schroevendraaier

Apps en online services

Home Assistant
Arduino Web Editor
MQTT

Over dit project

Als je je huis echt slimmer wilt maken, wil je waarschijnlijk beginnen met je maandelijkse rekeningen (d.w.z. energie, gas, enz...). Zoals sommigen zeggen:Goed voor Planet, The Wallet en The Bottom Line . Open source hardware is onze manier om duurzaamheid in de thuisomgeving te bereiken! Dit idee bracht ons ertoe een eenvoudige en veilige oplossing te bouwen, gemakkelijk te integreren met alle domoticasoftware, aangezien het gegevens via MQTT blootlegt (in ons geval zullen we u laten zien hoe u het kunt integreren in Home Assistant).

Overzicht

Om het elektrische energieverbruik te meten, hebben we ervoor gekozen om de Finder-energiemeter te gebruiken, omdat deze is ontworpen voor gebruik op een DIN-rail en perfect past in de hoofdkast van ons huis. Het leuke van dit product is dat het een RS485 Modbus . heeft interface, een industrieel standaard communicatieprotocol dat het praten met een Arduino heel eenvoudig maakt. Arduino heeft zelfs een officieel schild uitgebracht, de MKR485 en twee bibliotheken om het protocol te decoderen. Als moederbord hebben we gekozen voor de Arduino MKR WiFi 1010, omdat het de MKR-vormfactor deelt en WiFi-connectiviteit heeft.

Instellen

Waarschuwing! Controleer de voorschriften van uw land met betrekking tot het omgaan met uw elektrische systeem in huis en wees uiterst voorzichtig, want dit kan dodelijk zijn! Als je het niet weet hoe, bel een elektricien. De eerste stap is het installeren van de meter in uw elektriciteitskast. Om ervoor te zorgen dat u in een veilige omgeving werkt, schakelt u de stroom uit van de elektrische aansluiting vóór uw systeem en controleer nogmaals met de multimeter of er geen spanning staat tussen de klemmen .

Plaats vervolgens de energiemeter in uw kast en sluit de stroomvoerende en neutrale draden van de hoofdonderbreker aan op de ingang van de meter, denk eraan de kleurconventie te gebruiken (blauw voor neutraal en bruin/zwart/grijs voor stroom in de EU). De uitgang moet worden aangesloten op de rest van het systeem.

Gedaan? Het is tijd om de RS485-verbinding in te schroeven! We gebruiken een getwiste enkelvoudige kabel met aarde, meestal gebruikt voor telefoonlijnen. Met deze kabel kun je over lange afstand (1,2 km) zenden. We gebruiken echter gewoon een kabel die lang genoeg is om de kast te verlaten en de arduino op een toegankelijke plaats te plaatsen.

De RS485-interface noemt de klemmen A, B en COM.

Omdat het MKR-schild ook Full Duplex ondersteunt, zie je twee andere terminals, Y en Z. Hier gaan we het andere uiteinde van de kabel vastschroeven, omdat we uit de datasheet weten dat half-duplexcommunicatie alleen op Y en Z plaatsvindt terminals. De COM-terminal moet worden aangesloten op ISOGND. Aangezien we een half-duplex verbinding gebruiken en aangezien de bekabeling peer-to-peer is, moeten we de schakelaars op het MKR485-schild instellen om overeen te komen met onze opstelling:we zetten HALF (2 op UIT) en afsluiting op YZ (3 naar AAN); de eerste maakt niet uit. De afsluiting is een weerstand die de twee dataterminals verbindt, voor het dempen van interferenties.

Dit is het. Nu kunt u de kast sluiten en focussen op de software kant!

Software

Start uw computer en open uw IDE. U kunt de Arduino IDE of Arduino Create Editor gebruiken. De code voldoet aan de volgende verzoeken:

  • Modbus-communicatie,
  • WiFi-beheer
  • MQTT-protocol

Modbus is een open source protocol voor industriële sensoren en machines. Om Arduino Modbus te laten praten, gaan we de Arduino Modbus-bibliotheek gebruiken. Deze bibliotheek bevat alle handlers en maakt het aansluiten van elk Modbus-apparaat heel snel. Omdat we registers gaan lezen, kunnen we volgens het gegevensblad van de meter alle informatie vinden die we nodig hebben, zoals functiecodes, adres van het register en de grootte van het register in woorden. Maar om het duidelijker te maken, laten we uitleggen hoe Modbus werkt:

Modbus-berichten volgen een eenvoudige structuur:

01 03 04 00 16 00 02 25 C7

0x01 is het Apparaatadres

0x03 is de Functiecode dat vertelt het apparaat of we data willen lezen of schrijven *in dit geval lees holding registers

0x04 voor Byte Count00 16 - We sturen 4 bytes aan registeradres (00 16) die het apparaat vertelt wat we willen lezen

00 02 - tvan de grootte van het register (00 02) in woorden (elk woord is 2 bytes lang)

Laatste 4 bytes zijn CRC-code . Deze code wordt gegenereerd door een wiskundige functie over eerdere bytes, dit zorgt ervoor dat het bericht correct is ontvangen.

In Arduino worden al deze dingen afgehandeld in de if staat:

// Gemaakt door Alberto Perro - Officine Innesto//// Lees geheel getal van een modbus-apparaat met registersfloat readCurrent(){ float ampere =0.; // volgende opdracht formatteer het verzoek en verzend het via RS485 als (!ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) { //Error Handling Serial.print ("kon de spanning niet lezen!"); Serial.println(ModbusRTUClient.lastError()); } else { uint16_t word1 =ModbusRTUClient.read(); // MSW lezen uit buffer uint16_t word2 =ModbusRTUClient.read(); // LSW lezen van buffer int32_t milliamp =woord1 <<16 | woord2; // voeg woorden samen om int ampère =milliamp/1000.0 op te halen; //converteer naar ampère} retourneer ampère;} 

In de anders deel hebben we de respons handler.

Aangezien dit register twee woorden lang is, moeten we ze samenvoegen met binaire wiskunde. We lezen de woorden uit de buffer en slaan ze op in een niet-ondertekend geheel getal van 16 bits lang (2 bytes of een woord), dan voegen we ze samen in een ondertekend geheel getal van 32 bits lang, waarbij het eerste woord naar links wordt verschoven en een OF boven het tweede woord. Op deze manier krijgen we de stroommeting in mA terug, delen door 1000 hebben we stroom in ampère.

Ditzelfde proces is aangepast aan alles wat we willen lezen.

De rest van de code is bedoeld voor het afhandelen van MQTT- en wifi-netwerken.

Home Assistant-integratie

Het toevoegen van de meter aan Home Assistant is vrij eenvoudig. Ervan uitgaande dat u een MQTT-makelaar hebt geconfigureerd (hier is de gids), hoeft u alleen maar nieuwe definities toe te voegen onder het bestand configuration.yaml.

sensor:- platform:mqtt naam:"Main Voltage" state_topic:"energy/main/voltage" unit_of_measurement:"V" 

Hier moet u de naam van de meting, het te lezen MQTT-onderwerp en de meeteenheid van de hoeveelheid invoeren. Sla het bestand op, controleer de configuratie en laad Home Assistant opnieuw, nu verschijnen de metingen op de hoofdpagina.

Home Assistant zorgt voor het maken van grafieken en automatiseert processen die worden geactiveerd door uw metingen. Deze tutorial is voltooid, nu is het aan jou om functies toe te voegen en aan te passen voor je eigen doeleinden!

Code

Modbus RTU naar MQTT-brug voor Finder
Deze schets biedt een volledige brug tussen de vinder-energiemeter en mqtt. Ontwikkeld om de elektriciteitskosten en het verbruik in Casa Jasmina te monitoren.

Productieproces

  1. Bouw uw internetgestuurde videostreamingrobot met Arduino en Raspberry Pi
  2. Maak Monitor Ambilight met Arduino
  3. Een Arduino-energiemonitor en datalogger bouwen
  4. LCD-animatie en gaming
  5. DIY voltmeter met Arduino en smartphone
  6. Hartslagmeter met IoT
  7. Arduino Temp. Monitor en realtimeklok met 3.2-weergave
  8. WebServerBlink met Arduino Uno WiFi
  9. Arduino - Stuur temperatuur naar internet via serieel
  10. Python3- en Arduino-communicatie
  11. Vormen van energie:kinetische en potentiële energie