probleem met kWh meter met S0

Hardware die niet past in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 178
Geregistreerd: 22 Jan 2013, 16:40

probleem met kWh meter met S0

Berichtdoor zuid » 18 Okt 2019, 18:10

In mijn voorgaande post over de kWh meter was er een combinatie van een probleem met de kWh meter en het ongewenst herstarten van de Wemos D1 R2.
Dat herstarten is nu zo lijkt het opgelost.
Graag zou ik nog wat advies willen over de aansluiting van de kWh meter.
De Wemos is een 3.3 volt board De kWh meter is via pin D4 met een interne 10k pull-up via een level shifter op de Wemos aangesloten.
Level shifter: https://drive.google.com/open?id=1sX9fXsIGHJCXBJpMOqH65uVLn_qXvWmG
De pulsen worden via een interrupt routine geteld. Tellerstanden worden o.a. elk uur gelogd op een SD kaart
Bij controle van die logfiles is nu gebleken dat vanaf de installatie er ook in de nachturen pulsen worden geteld.
Per maand ongeveer 30 a 40 extra pulsen in de nacht. Waarschijnlijk komen er dus ook extra pulsen bij daglicht.
De extra pulsen vallen alleen op indien ze na zonsondergang elkaar snel opvolgen, dan lijkt er een hoge PV opbrengst.
De vraag is nu kan dit opgelost worden.
Koepel schreef in een reactie op mijn vorige post:(https://www.arduinoforum.nl/viewtopic.php?f=6&t=3939
"Normaal gesproken zou 1 mA door de contacten van het relais voldoende zijn.
In de datasheet staat echter 2-100 mA. Dus zij adviseren om minimaal 2mA door die contacten te laten gaan.
3.3V / 2mA = 1650
Mijn advies is een weerstand van 1k5 of 1k als pullup weerstand."
Begrijp ik het goed dat de interne pull-up van 10k vervangen zou moeten worden door een pull-up van 1k5? (dus aanzienlijk kleinere weerstand)

Ik heb ook nog op internet het volgende alternatief gevonden: [url]https://www.twoenter.nl/blog/arduino-esp/s0-kabel-maken-en-opwek-monitoren-domoticz/
[/url]
Gaat dit wel goed? komt er zo bij elke puls geen 5v op de Wemos te staan?

Advertisement

Gebruikers-avatar
Berichten: 2537
Geregistreerd: 06 Aug 2016, 01:03

Re: probleem met kWh meter met S0

Berichtdoor Koepel » 18 Okt 2019, 20:53

De uitgang van de meter is een relais contact.
Dat is hetzelfde als een drukknop waar iemand bij iedere puls even op drukt.
Heb je wel eens een level shifter bij een drukknop gezien ?
Valt je hier iets op: https://www.arduino.cc/en/tutorial/button.
En hier: https://www.youtube.com/watch?v=HKh-zfgpzGM (vanaf 1:39 even opletten).
Als je een drukknop op de Arduino aansluit, denk je dan een alternatief te kunnen vinden ?
Het enige verschil is dat soms de drukknop aan de hoge kant zit (3.3V of 5V) met een pulldown weerstand en soms de drukknop aan de lage kant (GND) met een pullup weerstand.

Bij die link die je geeft komt er natuurlijk 5V op de ingang van de ESP8266. Het schijnt dat hij daar niet stuk van gaat. Netjes is het niet.

Gebruikers-avatar
Berichten: 2537
Geregistreerd: 06 Aug 2016, 01:03

Re: probleem met kWh meter met S0

Berichtdoor Koepel » 18 Okt 2019, 23:28

Ik kan het op een andere manier proberen :lol:
Hou een draad in linkerhand en een draad in je rechterhand.
Breng ze naar elkaar toe totdat ze contact maken, dan maken ze contact.
Haal ze uit elkaar en ze maken geen contact.
Hoe ga je dat met een Arduino detecteren ?
Hint: https://www.arduino.cc/en/tutorial/button.

Gebruikers-avatar
Berichten: 178
Geregistreerd: 22 Jan 2013, 16:40

Re: probleem met kWh meter met S0

Berichtdoor zuid » 19 Okt 2019, 08:50

Dank voor je reactie Koepel. Je poging om mij te laten inzien hoe ik het probleem moet oplossen lijken niet helemaal bij mij binnen te komen.
Ik heb een (schijnbaar) werkend systeem waarbij dit jaar 3.176.000 pulsen van de kWh meter zijn geregistreerd. Achteraf blijkt nu dat hiervan minder dan 0,1% fout pulsen waren.
Ik maak nu meer dan 50 jaar computer programma's. Helaas heb ik in al die jaren nooit de kennis verzamelt om computers te maken.
Elektronica is dus NIET mijn specialiteit :(
Vanaf 2012 probeer ik met de Arduino in combinatie met een oude Android smartphone een PV systeem te monitoren.
Bij het gebruik van de Wemos D1 R2 ben ik mij er van bewust dat in tegenstelling tot de eerder gebruikte UNO en MEGA ik met 3.3v rekening moet houden.
Als je zegt dat de kWh meter een relais contact is te vergelijken met een drukknop, vraag ik mij af waarom er dan in de specificatie van de kWh meter "minimaal" 5 volt wordt genoemd.
Bij alle aangedragen voorbeelden is de UNO 5v en is er geen drukknop gebruikt waarmee het volt probleem voor mij zou zijn opgelost
Dus je vraag "heb je wel eens een drukknop in combinatie met een level shifter gezien" is het antwoord NEE.
Maar voor mij is de kWh meter elektronica en geen eenvoudige mechanische drukknop.
Ook geven de voorbeelden uit zowel het filmpje als op de Arduino site geen antwoord op mijn vraag: is een pull-up weerstand van 1k5 de oplossing.
In tegendeel in het filmpje wordt uitdrukkelijk een weerstand van MINIMAAL 10k genoemd.
Ik ben dus nog altijd opzoek naar een oplossing waarbij de Wemos 3.3v en de kWh meter 5v met elkaar verbonden zijn zonder extra getelde pulsen.
Bij elke oplossing die ik nu zelf zou bedenken blijft voor mij de vraag: is dit zo wel goed. :)

Gebruikers-avatar
Berichten: 5030
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: probleem met kWh meter met S0

Berichtdoor nicoverduin » 19 Okt 2019, 12:20

Het is een solid state relais. Daar heb je een minimale spanning voor nodig. Overigens zou ik hem instellen op minimaal 10mA voor stabiliteit. Dus bij 5V moet er een weerstand van R = U / I = 5 / 0.05 = 100 ohm. Ideaal zou zijn om er een scope aan te hangen hoe de puls eruit ziet. Als die een beetje rommelig eruit ziet gooi je er desnoods een Schmitt trigger tussen (bijv. 74HC14). Let er wel op dat een schmitt trigger inverting is ("1"en "0" worden omgepoold). Verder weet ik niet wat de laatste sketch is die je gebruikt mbt hoe je de interrupt service routine laat reageren.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 178
Geregistreerd: 22 Jan 2013, 16:40

Re: probleem met kWh meter met S0

Berichtdoor zuid » 19 Okt 2019, 13:24

Nico, de vraag om de code is eenvoudig te beantwoorden, zie hieronder.
Mogelijkheden om met en scope te kijken heb ik niet.
Mijn probleem blijft dat bij mij teveel kennis ontbreekt om je overige tekst goed te begrijpen.
Is een 74HC14 te vergelijken met een 74LS04? Die gebruik ik in dit project al voor het inverteren van de data van de P1 poort van de slimme meter.
Je rekent in de formule met 5v de Wemos is 3.3v.
Waar ik op zoek naar ben is iemand die aangeeft op welke manier ik deze Wemos 3.3v moet aansluiten aan de kWh meter die eigenlijk 5v wil hebben.
In mijn oplossing zit nu een interne pull-up van 10k ohm.
Jij komt nu met een weerstand van 100 Ohm (bij 5 volt)
Koepel schreef eerder 1k5 ohm (bij 3.3v).
Nogmaals het programmeer deel van de oplossing is voor mij niet gauw een belemmering.
Elektronica componenten op de juiste wijze combineren is dat WEL.
m.v.g. Nico


cpp code
// ISP data
volatile unsigned long last_interrupt_time = 0;
volatile long interrupt_time;
volatile byte interruptCounter = 0;

const byte interruptPin = D4;
static unsigned long last_update_time = 0;


// kWh setup
void kWhBegin() {
//pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
//pinMode(LED_BUILTIN, OUTPUT);
//ISP setup
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), handlekWhInterrupt, RISING);
//
}

//ISP
void handlekWhInterrupt() {
interrupt_time = millis();
// If interrupts come faster than 300ms, assume it's a bounce and ignore
if (interrupt_time - last_interrupt_time > 300 || interrupt_time < last_interrupt_time)
{
interruptCounter++;
last_interrupt_time = interrupt_time;
//digitalWrite(LED_BUILTIN, LOW); // Note that this switches the LED *on*
}
}
//

void kWhLoop() {
//ISP
if (interruptCounter > 0)
{
interruptCounter--;
infoNow[4]++; //PVtotaal infoNow[4]++
infoNow[8]++; //PVdag infoNow[8]++
//PVnu infoNow[7]
infoNow[7] = 3600000 / (millis() - last_update_time ); // millis per uur / aantal millis puls [/ aantal pulsen per kW * 1000]
last_update_time = millis();

}
if ( millis() - last_interrupt_time > 1000) { // i seconde na interupt LED uit
//digitalWrite(LED_BUILTIN, HIGH) ; // Note that this switches the LED *off*
}
if ( millis() - last_interrupt_time > 600000) { // 10minuten na interupt opbrengst nu 0
infoNow[7] = 0 ; //PVnu nul
}
}

Gebruikers-avatar
Berichten: 5030
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: probleem met kWh meter met S0

Berichtdoor nicoverduin » 19 Okt 2019, 15:25

Maak van die long interrupt time een unsigned long.
Daarnaast zou ik geen millis() gebruiken in een interrupt service routine.
Eenvoudig is om een global boolean variabele op false te zetten en in de ISR op True.
In de loop kan je dan kijken of deze true is en vervolgens eventueel die test uitvoeren met millis() en weer op false zetten. En indien nodig ook nog
Overigens zou de test met millis niet nodig moeten zijn omdat het een Solid state relay is (= gewoon een transistor).

Nu de elektronica:

Je hebt minimaal 5V nodig om die transistor (=SSR) goed te laten werken. Dus gewoon aan klem 20 hang je een weerstand van 100 ohm naar 5V (dus niet 3.3V). Klem 21 gaat naar GND van de Arduino.
Aan die 74Ls04 heb je niets neem een 74LS14. Die maakt een mooie strakke blokgolf van de puls. Deze inverteerd overigens ook.
De ingang sluit je eveneens aan op klem 20.
De uitgang van de 74LS14 verbind je met de level shifter naar de 3.3V WEMOS uitgang.
Overigens heb je tegenwoordig goedkope scoopjes op Ali die op de PC aangesloten kunnen worden zodat je ook kan "zien" wat er gebeurt.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 2537
Geregistreerd: 06 Aug 2016, 01:03

Re: probleem met kWh meter met S0

Berichtdoor Koepel » 19 Okt 2019, 18:07

Dankje wel Nico. Denk je dat de SSR een optocoupler met een mosfet uitgang is ?
Dus met de level shifter werkte het (een beetje) omdat die een 10k pullup heeft, waarschijnlijk naar 5V.

Gebruikers-avatar
Berichten: 178
Geregistreerd: 22 Jan 2013, 16:40

Re: probleem met kWh meter met S0

Berichtdoor zuid » 19 Okt 2019, 18:17

Nico bedankt voor je antwoord. De "interrupt_time = millis();" gebruik ik niet alleen voor de test op een bounce maar ook om de tijd tussen twee pulsen te bepalen,
De test op bounce kan dus weg, de meting van de tijd tussen de pulsen is nodig voor de berekening van de actuele opbrengst in Wh.
Ik kan dit ook verplaatsen naar de loop, is iets onnauwkeuriger maar dat zal niet opvallen.
De elektronica zal ik eerst in een schets tekenen. Kijken of ik alles snap.
Ik kom hier graag op terug.

Nog even een vraag over de 74LS14, is het wel mogelijk deze ook voor de inversie van de P1 data van de slimme meter te gebruiken. (dus met de 74LS14 de 74LS04 vervangen)

m.v.g.

Nico

Gebruikers-avatar
Berichten: 5030
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: probleem met kWh meter met S0

Berichtdoor nicoverduin » 19 Okt 2019, 20:01

Yep
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast