482 804 läst · 1 879 svar
483k läst
1,9k svar
Elmätare, H1-port / P1-port / HAN-port (många namn verkar florera)
Det senare kräver dock ofta att man lägger till en transistor (och resistorer) på kortet då många CPUer bara levererar 3,3V på ut-pinnarna. Ibland fungerar det med 3,3V, ibland fungerar det inte. Typiskt styr man en BC547 eller liknande via en resistor på B och har E mot GND, samt att man stoppar in en R av lämplig storlek mellan 5V och C (som sen också kopplas in på #2). Då blir en nolla på den styrande pinnen en etta på #2 och tvärtom. Bara något att tänka på i det läget för den som tänker göra det. Här finns ett liknande schema fast för att invertera inkommande signal så att den blir rättvänd:B Bo Berglund skrev:Då är din adapter konstruerad för att använda sin egen strömförsörjning (dvs från en dator-anslutning tex USB). Så har jag inte i mitt fall för det är skåp på en stolpe...
Så här fungerar mätaren:
+5V extern matning ut till ansluten adapter är stift 1. Jord är stift 3 och 6 (de kopplar jag ihop fast jag vet inte om det krävs.
A) Om man aktiverar HAN-porten hos el-leverantören så kommer det ut +5V på stift 1
B) Stift 2 är "data request" och mätaren skickar ut bara om den är kopplad till 5V (till stift 1)
Ofta hårdkopplar man mellan stiften 1-2 (5V-DRQ) och då skall mätaren streama ut data med sitt grundintervall 5-10 sek mellan paketen.
Men man kan också köra stift 2 som en request, dvs när man vill läsa aktiverar man det stiftet och väntar in data varefter man avaktiverar stiftet igen.
- https://hanporten.se/svenska/kretsschema/
Notera dock att man där väljer att alltid ha #1 aktiv.
Medlem
· Stockholm
· 1 418 inlägg
Detta med data request var med bara för att säga vad stiftet används till.
Det är enklare om man låter den vara permanent enablad genom att koppla ihop stift 1 ch 2 på RJ12-sladden.
Sen får man hålla ordning på dataströmmen i mjukvaran (tex se till så man inte får buffer overflow med data man inte läser).
Och till en RPi4 så behöver man en inverterare också, en enkel NPN-transistor plus ett 4K7 motstånd kopplat till RPi4's 3.3V och kollektorn till serial in (GPIO15).
Det är enklare om man låter den vara permanent enablad genom att koppla ihop stift 1 ch 2 på RJ12-sladden.
Sen får man hålla ordning på dataströmmen i mjukvaran (tex se till så man inte får buffer overflow med data man inte läser).
Och till en RPi4 så behöver man en inverterare också, en enkel NPN-transistor plus ett 4K7 motstånd kopplat till RPi4's 3.3V och kollektorn till serial in (GPIO15).
Eller så inverterar man signalen i ett mjukvaru-serieport-bibliotek istället, det går det också. Jag gör detta då min in-port av någon orsak inte var inverterad, detta gjorde att jag med min inverteringskrets fick fel. Så jag inverterar signalen två gånger om...B Bo Berglund skrev:Detta med data request var med bara för att säga vad stiftet används till.
Det är enklare om man låter den vara permanent enablad genom att koppla ihop stift 1 ch 2 på RJ12-sladden.
Sen får man hålla ordning på dataströmmen i mjukvaran (tex se till så man inte får buffer overflow med data man inte läser).
Och till en RPi4 så behöver man en inverterare också, en enkel NPN-transistor plus ett 4K7 motstånd kopplat till RPi4's 3.3V och kollektorn till serial in (GPIO15).
Medlem
· Stockholm
· 1 418 inlägg
Medlem
· Stockholm
· 1 418 inlägg
Med ESP8266-baserade enheter så kan man invertera seriesignalen i chippet självt och sedan använda den normala Serial-porten för läsning.pacman42 skrev:
Jag har skrivit en simulator som skickar HAN-data som en elmätare för att ha vid bänktester, och då är ju signalen "normal" TTL (dvs inverterad jämfört med vad HAN skickar.
Så jag har en bygel på mitt ESP-kort som jag ställer i ett läge vid debug och ett annat vid normaldrift. Ena läget inverterar data in till Serial medan andra läget inte gör det.
Lite kod:
const int jumperPin = 5;
pinMode(jumperPin, INPUT);
int jumperstate = digitalRead(jumperPin);
// Setup a hw serial connection for comm with P1 meter and logging (Tx not using inversion)
Serial.begin(BAUD_RATE, SERIAL_8N1, SERIAL_FULL);
if (jumperstate == HIGH) //Invert
{
Serial.flush();
USC0(UART0) = USC0(UART0) | BIT(UCRXI);
}
Långsam för att sampla i nära realtid. Helt trivialt är det inte, trots att det är timerinterruptstyrt. Högupplösta timers är lite buggiga på ESPn. Man får ha tungan i rätt mun...B BosseHansson skrev:
Elektroniktokig
· Nårrrje ;-)
· 143 inlägg
Hej dere som jobber med å snekre kode for ESP8266 og ESP32!
Dere bør ta en titt på vår firmware.
Den er OpenSource, og er i bruk på ca 2000 enheter rundt om i Europa (både på vår hardware og DIY).
Om dere ikke ønsker å løse alle utfordringene selv, da... ;-)
Kildekode og ferdige binærfiler finner du på: https://github.com/UtilitechAS/amsreader-firmware
Dere bør ta en titt på vår firmware.
Den er OpenSource, og er i bruk på ca 2000 enheter rundt om i Europa (både på vår hardware og DIY).
Om dere ikke ønsker å løse alle utfordringene selv, da... ;-)
Kildekode og ferdige binærfiler finner du på: https://github.com/UtilitechAS/amsreader-firmware
Inloggade ser högupplösta bilder
Logga in
Skapa konto
Gratis och tar endast 30 sekunder
Då jag ska få min elmätare utbytt i morgon till en med HAN port (RJ12) så börjar jag planera att byta ut den ESP8266 med ljussensor jag har idag. Tänkte nog fortsätta på samma spår då det är enkelt och väl fungerande. Dock är jag lite frågande till alla guider man ser på kretschema etc. Alla verkar använda en transistor av något slag till data signalen. Dock ska den enligt specificaktionen vara open collector så med mina basic elektronikkunskaper så borde inte den behövas. Visst att signalen också måste inverteras men det kan man ju göra på tex ESP8266 i chippet. Är guiderna bara föråldrade då inverteringsfunktionen inte fanns i tex esphome tills för något år sedan eller är det mina kunskaper som är för dåliga?
Är ju embedded programmerare men man har ju alltid hårdvaruingengörer som kan allt bättre som är enklast att fråga så man har ju förträngt den mer avancerade kunskapen.
Är ju embedded programmerare men man har ju alltid hårdvaruingengörer som kan allt bättre som är enklast att fråga så man har ju förträngt den mer avancerade kunskapen.
Jag inverterar med softserial på min NodeMCU mini, det går bra. Kom ihåg att lägga in en "delay(1);" i main-loopen för att minska strömförbrukningen, du kan till och med lägga in "delay(5);". Utan delayen så riskerar du att den drar för mycket ström. Att kolla på stacken om det finns paket är mycket dyrare energimässigt per klockcykel än att bara kolla klockan (Har det gått 1ms snart? Har det gått 1ms snart?), även om det är svårt att tro...J Jensa86 skrev:Då jag ska få min elmätare utbytt i morgon till en med HAN port (RJ12) så börjar jag planera att byta ut den ESP8266 med ljussensor jag har idag. Tänkte nog fortsätta på samma spår då det är enkelt och väl fungerande. Dock är jag lite frågande till alla guider man ser på kretschema etc. Alla verkar använda en transistor av något slag till data signalen. Dock ska den enligt specificaktionen vara open collector så med mina basic elektronikkunskaper så borde inte den behövas. Visst att signalen också måste inverteras men det kan man ju göra på tex ESP8266 i chippet. Är guiderna bara föråldrade då inverteringsfunktionen inte fanns i tex esphome tills för något år sedan eller är det mina kunskaper som är för dåliga?
Är ju embedded programmerare men man har ju alltid hårdvaruingengörer som kan allt bättre som är enklast att fråga så man har ju förträngt den mer avancerade kunskapen.
MIKROE-4137 med esp32 använder jag ihop med amsreader/ams2mqtt. Kör dock med extern strömförsörjning skall tilläggas.
Medlem
· Stockholm
· 1 418 inlägg
Se mitt inlägg i denna tråd ovan angående aktivering av seriedatainvertering...J Jensa86 skrev:
En anledning till att ha transistorn där som inverterare är att man då enkelt kan koppla in en annan signalkälla under testfasen, tex en HAN-simulator som sänder telegram via en TTL-serial adapter...
Sen kan ju inte alla hårdvaruplattformar invertera en serieports indata genom någon inbyggd funktion. Svårt om man tex kör med RaspberryPi.
Medlem
· Stockholm
· 1 418 inlägg
Eon:s elmätare verkar begränsa strömmen i HAN-porten...
För några dagar sedan började jag få problem med omstarter och avbrott i min HAN-läsare uppbyggd med en ESP07S-modul.
Har försökt förstå vad som hänt och flashat äldre f/w för att kolla men inget har hjälpt. Men nu tror jag att jag zoomat in på själva problemet:
Det ser faktiskt ut som om elmätaren börjat begränsa strömmen som levereras på 5V utgången!
Jag fick sätta dit en lysdiod på inkommande 5V för att säkerställa att jag kunde se när det fanns matning och då visar det sig att LED-en lyser till att börja med någon sekund, sen börjar den fladdra för att till sist slockna.
Såklart fungerar inte HAN-läsaren i detta fall...
Men saken är den att den har suttit på plats hela sommaren och mätt utan problem, det är bara sen förra veckan som detta har uppstått. Satte upp min HAN-läsare i maj efter att Eon hade bytt ut elmätarna och då fungerade all direkt vid inkoppling.
Är det någon som vet ifall Eon har gjort något för att ändra på detta?
Jag har just mätt upp vad min HAN-läsare konsumerar från 5V och det är 80mA, varierar mellan 79 och 81 mA. Mätt i labbet när jag matar från ett 5V supply.
Jag har för mig att elmätarna skall leverera betydligt mycket mer än så på P1-porten....
Är det någon annan här som sett detta?
För några dagar sedan började jag få problem med omstarter och avbrott i min HAN-läsare uppbyggd med en ESP07S-modul.
Har försökt förstå vad som hänt och flashat äldre f/w för att kolla men inget har hjälpt. Men nu tror jag att jag zoomat in på själva problemet:
Det ser faktiskt ut som om elmätaren börjat begränsa strömmen som levereras på 5V utgången!
Jag fick sätta dit en lysdiod på inkommande 5V för att säkerställa att jag kunde se när det fanns matning och då visar det sig att LED-en lyser till att börja med någon sekund, sen börjar den fladdra för att till sist slockna.
Såklart fungerar inte HAN-läsaren i detta fall...
Men saken är den att den har suttit på plats hela sommaren och mätt utan problem, det är bara sen förra veckan som detta har uppstått. Satte upp min HAN-läsare i maj efter att Eon hade bytt ut elmätarna och då fungerade all direkt vid inkoppling.
Är det någon som vet ifall Eon har gjort något för att ändra på detta?
Jag har just mätt upp vad min HAN-läsare konsumerar från 5V och det är 80mA, varierar mellan 79 och 81 mA. Mätt i labbet när jag matar från ett 5V supply.
Jag har för mig att elmätarna skall leverera betydligt mycket mer än så på P1-porten....
Är det någon annan här som sett detta?
EON's Landis&Gyr, E350/E370 är det väl?, ska ju inte behöva någon matning, deras egen dongle Elna fungerar ju utan. Sen kan ju nätägarna pusha ut nya firmware. Man får ofta bege sig ut i Githubs värld för att bli säker på hur det är.B Bo Berglund skrev:Eon:s elmätare verkar begränsa strömmen i HAN-porten...
För några dagar sedan började jag få problem med omstarter och avbrott i min HAN-läsare uppbyggd med en ESP07S-modul.
Har försökt förstå vad som hänt och flashat äldre f/w för att kolla men inget har hjälpt. Men nu tror jag att jag zoomat in på själva problemet:
Det ser faktiskt ut som om elmätaren börjat begränsa strömmen som levereras på 5V utgången!
Jag fick sätta dit en lysdiod på inkommande 5V för att säkerställa att jag kunde se när det fanns matning och då visar det sig att LED-en lyser till att börja med någon sekund, sen börjar den fladdra för att till sist slockna.
Såklart fungerar inte HAN-läsaren i detta fall...
Men saken är den att den har suttit på plats hela sommaren och mätt utan problem, det är bara sen förra veckan som detta har uppstått. Satte upp min HAN-läsare i maj efter att Eon hade bytt ut elmätarna och då fungerade all direkt vid inkoppling.
Är det någon som vet ifall Eon har gjort något för att ändra på detta?
Jag har just mätt upp vad min HAN-läsare konsumerar från 5V och det är 80mA, varierar mellan 79 och 81 mA. Mätt i labbet när jag matar från ett 5V supply.
Jag har för mig att elmätarna skall leverera betydligt mycket mer än så på P1-porten....
Är det någon annan här som sett detta?