wemos crash bij schakelen motor

Hallo,

ik heb een Wemos D1 mini met een I2C expander (MCP23017) om zo een aantal acties te nemen op inputs via Home Assistant.

Elke output schakelt een relais (op een 5V relaisbord) die op zijn beurt een 230V AC rolluikmotor laat draaien.

Dit werkt vrij goed maar van tijd tot tijd merk ik dat de wemos crasht en ik deze moet herstarten. Ik vermoed dat dit is omwille van de hoge stroom of (spannings?)piek bij het schakelen of afschakelen van het relais. Ik heb echter ook al gemerkt dat dit is terwijl een motor draait (dus het relais is dan al aangetrokken en de motor loopt)

Ik zie regelmatig gelijkaardige posts op fora waar sprake is om een condensator te plaatsen, maar het is me niet echt duidelijk waar exact.

In bijlage het schema van mijn opzet (indien het wat onduidelijk is licht ik het graag toe of dan teken ik het even op papier), maar het komt neer op het volgende:

- Wemos wordt gevoed via de µUSB (verschillende voedingen geprobeerd)
- Het 5V relaisbord (schakelt bij een hoog signaal) wordt gevoed via een afzonderlijke 5V DC voeding. Er staan optocouplers op het relais.
- GND van de 5V voeding en de wemos is met elkaar doorverbonden
- Wemos SCL/SDA signaal is 3,3V maar wordt via een level shifter naar 5V gebracht voor de MPCP23017. MCP23017 krijgt zijn voeding via de 5V voeding. Output signaal van de MPC23017 is dus 5V
- tussen MCP23017 output en input relaisbord staat een 330ohm weerstand (zou in principe weg kunnen meen ik)
- wemos, mpc23017, level shifter, ... zijn gesoldeerd op een gaatjesprint. Kabels tussen MCP23017 output en input relayboard zijn vrij kort (+- 10cm, dupont kabels)
- de inputs krijgen 5V (via de 5V voeding + -> UTP kabel naar drukknop -> naar input). Lengte kan wel 20m zijn.
- wemos / level shifter / mcp23017 / outputs naar LED schakeling werd initieel getest op een breadbord, zonder problemen. Snellere testen werden gedaan met output naar relaisbord (weliswaar zonder motor erachter), leek ook ok.

Ook getest
- relaisbord voeden met de 5V pin van de wemos, maar de relais trekken dan niet altijd aan (wemos zal niet genoeg stroom kunnen leveren om de controleLED + relais te kunnen schakelen)
- 5V voeding enkel gebruiken om het relaisbord te voeden. Drukknoppen (dus inputs) krijgen 5V via de wemos zelf

Enige tips zijn welkom... Ik kan er momenteel geen duidelijke lijn in zien (werkt soms goed, nu lijkt hij te crashen als één specifieke motor omhoog gaat terwijl omlaag perfect werkt, ...)

Heeft u in het programma de twee schakelaars zo geprogrammeerd dat deze "dendervrij" zijn ?

Werkt alles wel goed als je de schakelaars direct op de i2c expander zet?

Waarom weggooien als het betaalbaar te repareren is!
bprosman

Golden Member

Zitten er diodes parallel aan de relais spoelen ?

De jongere generatie loopt veel te vaak zijn PIC achterna.

Bedankt alvast voor de reacties:

1) Dendervrije schakelaars
Had ik nog niet gedaan nee. Maar mijn scripts of logica werken zo dat een rolluik omhoog/omlaag zal gaan van zodra de input van off naar on gaat. Er wordt dan gecontroleerd of de motor al draait. Zoja? Deze stoppen. Zonee, omhoog of omlaag gaan. Met denderen zou ik de rolluik dus even omhoog/omlaag zien gaan om dan weer te stoppen.

Maar uiteraard, deze dendervrij programmeren is altijd beter en zal het dus aanpassen.

2) Schakelaars direct op de i2c
Ze zitten eigenlijk wel direct op de i2c expander, weliswaar op afstand via een lange UTP kabel. Ik kan als test wel met een kort kabeltje direct een 5V spanning op de input zetten als test.

Maar: vreemde in het verhaal ivm gisterenavond/deze morgen. Gisterenavond was er één specifiek rolluik die ik niet omhoog kreeg. Geen heel even omhoog, wemos crashte dan. Resetten, terug even omhoog doen, weer crash, ... Uiteindelijk zo gelaten voor vannacht (maar wemos wel een reset gegeven).

Deze morgen was de wemos terug geblokkeerd (terwijl er vannacht geen inputs werden gegeven). Reset gedaan, motor omhoog willen laten gaan dmv een script in Home Assistant zelf (dus de output softwarematig hoog maken zonder met een fysieke input te werken), weer een crash. Nogmaals herstart en daarna ging hij prima. Rolluik omlaag gedaan, terug omhoog, geen probleem.

Zal later op de dag nog eens een paar keer testen. Dus denk niet direct dat de inputs het probleem zijn, eerder als de motor draait en juist een te grote stroom of spanningsval maakt (of de spoel van het relais zelf).

Tot nu toe kan ik het probleem nog niet direct linken aan andere relais of motoren maar dat kan ik niet met 100% zekerheid zeggen. Kan de probleemmotor later wel eens preventief op een ander relais plaatsen...

Update/edit
Nog als aanvulling ivm de crash vannacht. In huis zijn er op dat moment geen extra zware verbruikers of dergelijke die voor een spanningsval of dergelijke kunnen zorgen (waarschijnlijk de gascondensatieketel, misschien even het condenspompje daar, maar voor de rest niets anders).

Die schakelaars zitten direct op de i2c expander. Dus die worden in software uitgelezen, en als de gebruiker ze bediend, gaat de software aan de slag om de gewenste actie te regelen. Het is heel makkelijk om die in software te ontdenderen: Gewoon als er 1x op de knop gedrukt is, moet er 10s "UP" relais bediend worden, dus hoef je 10s niet meer te kijken.

Als de TS "Relais module" zegt dan denk ik dat dit er zo een is:
https://www.aliexpress.com/item/32901222553.html

Die hebben optische isolatie aan de ingang.....

Ehh MMY, kan je eens proberen of het probleem aanhoudt als je de relais uit een geheel andere 5V voeding voedt ?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Relaisbord is er inderdaa zo eentje van de bekende overzeese webwinkel.
Met optische isoloatie ja (zoals ik kan afleiden uit de typenr's van de componenten).

Heb het ontdenderen reeds voorzien in de software nu.

Relais uit een andere 5V voeding voeden dacht ik ook al aan (ik neem aan dat je deze GND dan ook wel moet doorverbinden op de andere GNDs?). Alleen heb ik niet direct nog zo een voeding hier liggen. Daarom had ik al eens getest om de 5V voeding enkel voor het relaisbord te gebruiken en de knoppen van de inputs via de Wemos zelf.

fatbeard

Honourable Member

De 20m kabel zal als antenne werken en allerhande storing oppikken, die door de MCP23017 als geldig signaal kan worden gezien. Afhankelijk hoe vaak de Wemos de I²C bus bevraagt kan dat leiden tot een overflow in de Wemos. De opgepikte storing kan ook worden overgedragen op de voeding met alle ellende van dien...
De storing hoeft niet van een 220V gebruiker te komen, ook draadloze netwerken kunnen aanzienlijke storingen opleveren.

Haal de UTP-kabel enkele malen door een ferrietring en plaats die zo dicht mogelijk bij de electronica. Een condensatortje van maximaal 10nF over elke schakelaar-ingang van de MCP23017 kan hier ook helpen om de storing te minimaliseren.

Last but not least: zorg voor een voedingsontkoppeling van 100n+10uF parallel vlak bij de MCP23017.

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.

@fatbeard,
die condensator over de schakelaar ingang. Is dat dan tusen de input en de gnd?

En de voedingsontkoppeling 100nF+10µF Op welke punten van de wemos is dat dan aangezien deze zijn voeding via de µUSB krijgt

Ik kan als test de inputs een tijdje loskoppelen om te checken of de crash 's nachts, ... daarmee al opgelost wordt.

fatbeard

Honourable Member

Inderdaad tussen input en GND. Niet groter nemen dan 10nF omdat anders de schakelaar wat eerder stuk kan gaan.

een voedingsontkoppeling van 100n+10uF parallel vlak bij de MCP23017

Voedingsontkoppeling zit tussen +5V en GND...

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.

Op 5 december 2021 11:33:39 schreef Lead Acid:
Home Assistant gaat via Wifi ?

Home Asssitant draait op een Raspberry Pi, bekabeld aangesloten op het netwerk. Wemos via WiFi. WiFi is echter wel stabiel, lijkt me zeer onwaarschijnlijk dat deze het probleem geeft (zelfs bij disconnects)

Ze zitten eigenlijk wel direct op de i2c expander, weliswaar op afstand via een lange UTP kabel.

Is die lange kabel de I2C kabel of is het de kabel tussen de expander en de de schakelaars?

Als het de I2C kabel is, dan is het geen wonder dat je problemen hebt. I2C is nu eenmaal nooit bedoeld om als een soort van netwerk misbruikt te worden. Oorspronkelijk is het ontwikkeld als seriële inter IC communicatiebus. En dan praat je over lengtes van een cm of 10, 20. In elk geval niet veel meer als een halve meter. Nu kun je praktisch wel een stuk verder komen maar de problemen zullen dan ook toenemen. En twintig meter is dan wel heel erg ver weg.

Als het de andere draden zijn die zo lang zijn kun je verwachten dat de problemen daarvandaan komen. Zeer goed ontkoppelen is dan het devies en hardwarematig ontdenderen. Dan haal je problemen weg bij de bron. Je denders worden dan ook niet via die lange kabel verstuurd. En ze worden dan ook niet via de expander naar de processor verstuurd.

Gebruik je interrupts om de schakelaars te detecteren? De stack in die atmel is vrij beperkt. Een tiental interrupts veroorzaakt door een beetje denderen zorgt dat de boel vastloopt. De I2C routine loopt dan ook vast.

@Ex-fiets,

Ik was misschien niet heel duidelijk ivm de opzet.
De Wemos, level shifter en i2c expander zitten allemaal op dezelfde print. De i2c bus is <10cm lang (gesoldeerd).

De inputs (niko drukknoppen) staan verspreid in het huis en lopen elk via een UTP kabel naar de i2c expander (elke input is als pull-down schakeling opgezet).

Ontdenderen zal ik doen, maar ik denk niet dat ik valse inputs zie aangezien de logica bij elke hoog of laag op een input een specifieke actie zal doen. Maar kan natuurlijk altijd (of het denderen is zo snel dat de logica dit niet merkt, maar dan zou ik ook denken dat deze niet voor vollopend geheugen of dergelijke zou zorgen).

Hoe de status van de schakelaars gedecteerd worden? Eigenlijk geen idee hoe dit concreet gaat, dit is onderdeel van het OS (Home Assistant + node red en de wemos).

Als je pull-downs gebruikt aan de ingangen moeten dat wel stevige zijn (10k of meer is al veel te hoog)
(ik zou sowieso geen extenderport ingangen direct aan een eind kabel hangen, da's vragen om moeilijkheden.)

Ik zet daar meestal iets robuusts tussen als een UNL2803 of een optocoupler.

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Op 5 december 2021 15:50:32 schreef Arco:
Als je pull-downs gebruikt aan de ingangen moeten dat wel stevige zijn (10k of meer is al veel te hoog)

Wat bedoel je met "stevig zijn"? Ik gebruik momenteel wel 10k, lijkt op zich wel correct te werken (5V komt door bij druk op knop, bij loslaten wordt deze terug laag getrokken).

Ik zet daar meestal iets robuusts tussen als een UNL2803 of een optocoupler.

2803 heb ik hier misschien nog wel liggen, zal dit in gedachte houden.

Maar..., zeker nogmaal dank voor alle reacties, ik denk niet dat de inputs momenteel het grote probleem zijn (tenzij storing hierop de reboot/crash na x- aantal uren doet).

Vanavond nogmaals getest. Bij 1 specifieke rolluik (omhoog of omlaag) crasht de wemos. Zelfs als ik de output laat schakelen via de software (dus de input gebruik ik dan niet). Reset doen en daarna kan hij weer een seconde het relais aantrekken (dus na de reset en de test is max 30sec a 1min - lijkt me niet dat er op dat moment al teveel storing van inputs is). Als het probleem echter blijft ga ik wel zeker testen met alle inputs los.

Oplossing (met die motor) voorlopig is:
- 2 andere relais gebruiken op het bord EN 2 andere dupontkabels (male-female) van output i2c expander naar input relaisbord (kabels waren en zijn 10cm) Aan de i2c expander via een schroefconnector verbonden en via een pin header op het relaisbord. Zal morgenvroeg zien of de wemos nog online is en of deze de specifieke motor dan correct kan schakelen. Momenteel is deze al een 4tal uren terug online.

Indien er nog problemen zijn zal ik zeker de eerdere tips/aanbevelingen stap voor stap volgen en testen (ontstoorcondensatoren, inputs los of 2803 ervoor, andere voeding, ...)