Verkeerde readings (floating pin?)

Hallo iedereen, ik zal proberen het verhaal niet te lang te maken.. Goed, ik wilde een kippendeur maken die open en dicht kan via een ESP8266 met Arduino. Dus wat heb ik gekocht/gebruikt een ESP8266 met Arduino code erop een 4 board relay die op 5V werkt, een simpele 12V motor die dus geschakeld word door het relay board. 2 magneet "sensors" geplaatst boven en onder zodat ik weet wanneer het deurtje boven of beneden is.

Je hebt schijnbaar ingebouwde PULLUP resistors maar werd afgeraden die te gebruiken. Dus ik had weerstandjes ertussen gezet zoals ergens omschreven op een site.

Probleem: Ik geef de opdracht om het deurtje open te maken en deze gaat soms goed open tot de sensor is bereikt maar vaak stopt die gewoon ineens?

// check of de motor aan is en dus uit moet..
if (digitalRead(RelayMDown) == LOW) {
// motor laat deur zakken, check of deze beneden is.
if (digitalRead(doorDownSensorPin) == LOW) {
Serial.println("Sensor bereikt, motor uit!");

Ik krijg dan dus ook te zien sensor bereikt.. Maar dit is dus niet waar. Toen per ongeluk de ESP opgeblazen. Heb nu een Wemos gekocht want die heeft een losse antenne voor wifi (beter bereik) en maar besloten om de interne weerstand te gebruiken (via massa dus)

pinMode(doorUpSensorPin, INPUT_PULLUP);
pinMode(doorDownSensorPin, INPUT_PULLUP);
pinMode(ManualButtonPin, INPUT_PULLUP);

Probleem nog steeds aanwezig, 1 keer gaat het goed of 2 keer.. en dan stopt die weer halverwege met dat de sensor bereikt is. Vervolgens alles eraf gesloopt en 2 microswitches geplaatst met een hefboompje een schroef in het deurtje gedraaid die dus de microswitch indrukt. Ook andere bedrading gebruikt.

Weer hetzelfde probleem! Ik snap echt niet waarom doorDownSensorPin naar LOW gaat terwijl de microswitch niet word ingedrukt.. Dus nog voor de zekerheid met de interne weerstanden is het probleem aanwezig maar ook als ik zelf aparte plaats (meen 10k)

Zie bijlage voor fotos.

Ik snap er echt niks meer van..

Edit, bedenk me nu wel dat ik ManualButtonPin niet gebruik nu.. die staat dus wel in de code alsin:

const int ManualButtonPin = 13; // D7 manual switch

pinMode(ManualButtonPin, INPUT_PULLUP);

Die zit dus niet aangesloten, maar lijkt mij niet het probleem toch?

Als het systeem verder goed werkt kan het probleem eigenlijk alleen nog maar veroorzaakt wotrden door stoorpulsen op de draden naar doorDownSensorPin. Die zijn zo te zien getwist, dat is prima, maar nog wel veel langer dan nodig.

Wat je kunt proberen:

  • de draden zo kort mogelijk maken
  • een afgeschermde kabel gebruiken
  • de pullup-weerstand verkleinen naar bv. 1k
  • een condensator (bv. 0.1 µF) tussen doorDownSensorPin en GND

En dan blijft nog de vraag waarom het deurtje wél netjes omhooggaat...

Oh sorry! Beide sensors geven problemen! Naar boven en onder stopt die dus random... Wat raar dat het zo gevoelig is met de lengte van de draden. Ik gebruikte eerst dus die UTP adertjes maar nu is alles voorzien van dat "speaker draad" dus ik moet weer stoppen met die INPUT_PULLUP en het ombouwen met zelf weerstanden ertussen? Wat een gedoe zeg voor een simpele switch die je indrukt..

Edit: ik weet het trouwens niet zeker maar het lijkt erop dat dus de eerste keren wel goed gaat en dan niet meer.. (misschien te snel achter elkaar? dan zou een condensator misschien het al oplossen?)

Ik dacht ook als misschien als oplossing als LOW word gedetecteerd dan delay voor paar MS en dan weer checken.. Maar of dit kan/slim is?

Beide sensors geven problemen

Aha, okee. Eén raadsel minder. :wink:

dus ik moet weer stoppen met die INPUT_PULLUP

Nee, waarom? Een weerstand van bv. 1k kun je gewoon parallel aansluiten tussen VCC en de inputpin.

als LOW word gedetecteerd dan delay voor paar MS

Ja, debouncing, daar heb ik ook aan gedacht, maar dat lijkt me hier eigenlijk niet van toepassing! Ik zoek het voorlopig nog in stoorpulsen op de sensordraden.

Is de voeding eigenlijk sterk genoeg? Een condensator van bv. 0,1 µF tussen VCC en GND (dus op de Arduino zelf!) wil ook nog wel eens helpen tegen dit soort vage storingen.

Ik had in de vorige setup ook een andere voeding geprobeerd. En dacht zelf ook nog zou het misschien komen door de voeding naar het relay board? Misschien moet ik eens proberen om het relay board een eigen 5v voeding te geven..

En die van VCC en inputpin snap ik niet..

Zoals het nu zit: beide microswitches krijgen GND van de Wemos en de andere pin op de microswitch gaat dus naar een pin op de wemos. Met de vorige setup was dit dus niet GND maar 3v met weerstanden.

Als je dus de microswitch indrukt verbind hij de GND van de Wemos met een read pin op de Wemos.

Een aparte voeding is het proberen waard, denk ik.

die van VCC en inputpin snap ik niet…

Als je INPUT_PULLUP gebruikt wordt er inwendig een weerstand (30-50k) tussen VCC en de pin geschakeld. Je kunt daar extern gewoon een weerstand aan parallel schakelen om de totale weerstandswaarde te verkleinen. Daardoor wordt ook de gevoeligheid voor stoorpulsen minder.

tweak-:
Wat raar dat het zo gevoelig is met de lengte van de draden.

Nee hoor dat is helemaal niet zo raar.
Relais zijn berucht om het veroorzaken van zulke problemen, maar meestal dan tijdens in of uitschakelen, en minder gedurende het ingeschakeld zijn.
Maar die motor van je kan er ook wat van.
Het ziet er uit als een motor met koolborstels.
Die maakt tijdens het draaien vonkjes tussen die borstels en de contactpunten op de rotor.
En die vonkjes zijn dus door de lucht vliegende energie: stoorpulsen voor veel apparaten.
Jij zit daar dan met tal van antennes (draden dus) vlak bij.
Daarom zie je vaak een condensatortje over zo’n motor zitten.
Maar dat is niet te zien bij jouw motor.

Verder moet je ook opletten dat relaisbords meestal bedoeld zijn voor 5 volt bedrijf.
En die boardjes die WiFi aan boord hebben zijn volgens mij meestal voor 3 volt bedacht.
Dus moet je er voor zorgen dat daar wel de juiste aanpassingen voor gemaakt zijn.

Een Wemos of een ESP8266 (nodemcu bordje) hebben 1 pin voor 5V voeding die gebruik ik nu dus voor het relay board. Al het andere is 3v.. (daarom had ik dus ook een fout gemaakt en de ESP8266 "opgeblazen") maar nu bedenk ik me dus, de GND die ook naar het relay board gaat is gedeeld met de microswitches.. Misschien toch maar eens een aparte voeding gebruiken voor het relay board. De motor weet ik niet precies, ze noemen het een motor met een "gearbox" en is veel te vinden online.

Hier nog even een foto van hoe het nu precies zit..

  • Zet je WEMOS netjes vast.
  • Monteer je antenne zo ver mogelijk weg van de boardjes en hang m zeker niet over andere kabels heen.
  • Gebruik geen "jumper wires" in je definitieve installatie; soldeer draden zo kort mogelijk direct op de soldeer eilandjes van de boardjes (dus ook niet aan de pennen die er nu aan zitten).
  • Gebruik sowieso geen draden die langer zijn dan noodzakelijk.
  • Gebruik liever twisted pairs, of twist je tweelingsoer handmatig (of met een schroefboormachine).
    Verwarm de kabel na het twisten kort zodat de isolatie zacht word en zich bij het weer uitharden zet naar de nieuwe en gewenste vorm.
  • Dierenverblijven zijn zeer agressief (stof, vocht, gassen) tegen elektronica.
    Bouw je installatie na het testen daarom in een gasdichte kast met wartels.
  • Bescherm ook je motor en mechanisme

Vast zetten word lastig, zitten geen schroefgaten omdat die zo klein is... Wilde eigenlijk een printje kopen en hem daar op solderen en alles dus daarop.

Antenna komt op een beugeltje..

Jumper wires gaan weg als printje er is en alles goed zou werken.

Draden ga ik nog wel inkorten, ik had alles daar geplaatst voor wifi bereik maar hoeft nu niet meer ivm antenne.

Behuizing was ik ook nog van plan.

Dit ligt er dus allemaal zo bij ivm testen.. Ik kon vandaag de aparte voeding niet testen voor het relais. Beesten liggen nu snel te "slapen" En dan vinden ze het niet leuk als ik daar zit te klooien.

Edit: Waarom is het zo gevoelig? Als je naar een wasmachine kijkt, print werkt meestal op 12v en schakelt ook aantal relais en krijgt bijv info terug van NTC en andere dingen. Die bedrading loopt ook allemaal langs elkaar en is lang. En zeker geen twisted pairs..

Omdat de elektronica in de wasmachine beter beschermd is door het gebruik van filters op de ingangen van de microcontroller.
Het ziet er soms niet zo uit maar het wasmachine design is uitvoerig getest en moet ook gekeurd worden voor het op de markt komt, dat is niet op een voormiddag ontworpen/uitgevoerd door een hobbyist.
Filters kunnen zeer klein (SMD) uitgevoerd worden op de PCB dicht bij de microcontroller, maar zijn wel zeer efficient.
Een WEMOS is geen industriële controller, dat heeft leuke invloed op de prijs maar ook gevolgen voor de storingsgevoeligheid.

EMI/EMC is ingewikkelde materie, EMI/EMC problemen kunnen enkel met veel geluk of grondige elektronicakennis opgelost worden.
EMI
Je kan je soms niet inbeelden welke lijdensweg de ontwerper afgelegd heeft.

Het probleem dat je hebt is een typisch EMI probleem, probeer eerst de storende component te vinden door de opstelling te doen werken zonder motor en /of zonder relais.
Gebruik de seriele monitor voor diagnose (toon de niveaus van de ingangen die je gebruikt).
Verbind daarna 1 voor 1 de verdachte stoorbronnen opnieuw en kijk of de ingangen de verwachte waardes tonen.
Geef de storende componenten een aparte voeding, plaats een filter in de voedingslijn naar de storende componenten.
De voeding is ZEER belangrijk, zorg eerst voor een goede voeding voor je alle andere diagnose start.
Plaats ontkoppelcondensators op de voedingslijn dicht bij de verbruiker om stoorpulsen te verzwakken.

Bedankt voor de duidelijke uitleg! Ik herinner me inderdaad dat het probleem er niet was toen ik aan het testen was met 1 microswitch bij mn pc (dus zonder relais en motor)

zonder motor/relais kan ik inderdaad wel testen. Goed plan! Vanavond als ik op tijd thuis ben nog even andere voeding proberen op de relais.

allereerst alle gnd apart naar de voeding trekken dus van je relaisbordje, twee stuks, een van de spoelenkant en een van de motorkant(die schakelt, en de gnd van je wemos allemaal apart zodat er geen rare stromen kunnen lopen.
dan de 5 Volt van de voeding apart naar het relaisbordje en de wemos zodat de stroom niet door de wemos naar het relaisbordje hoeft. kan wel 1 ampere gaan lopen naar de relais.
je kunt de pullup van het bordje gewoon naast je weerstandjes zetten de microswitch kan die stroom met gemak hebben. bijvoorbeeld 5000 ohm dan loopt er 1 milli ampere prima.
in je progamma voor test de status laten zien van schakelaars en status van de beweging.

Nou, ik heb gevonden waar het probleem vandaan komt.. maar hoe het op te lossen? ik hoef dus geen andere bedrading of extra weerstanden etc lijkt het. Ik heb net het deurtje hele tijd opdracht gegeven omhoog/omlaag etc en ging continu goed. Hoe? Zie de foto wat er voor nodig is :') (dus ik moet iemand vinden die hele tijd zo wilt zitten in het hok)

Edit: Condensator op de motor plaatsen kun dus helpen las ik ergens? Die heb ik niet echt liggen.. ja 1 nieuwe dat is een 50v 47UF condensator.

Vond die condensator niet leuk, en zag pas later dit artikel: Pololu - 9. Dealing with Motor Noise
Maar wat heb ik nu nodig voor die 12v motor die ik dus heen en weer laat draaien.. (want deze condensator heeft een + en - dat gaat natuurlijk niet goed)

tweak-:
Edit: Condensator op de motor plaatsen kun dus helpen las ik ergens?

MAS3:
Daarom zie je vaak een condensatortje over zo’n motor zitten.

Jij hebt een ELektrolytische COndensator (ElCo) liggen.
Die is inderdaad gevoelig voor polariteit, en wanneer je dat lang verkeerd doet zal ie je dat erg duidelijk maken (het ding explodeert).
Zullen je kippen je niet in dank afnemen.
Het door jou gevonden artikel zegt al wat goede beginwaardes zijn, en welk type condensator je dan nodig hebt.

Lees ook de tips die daar bij staan: Voor het beste resultaat combineer je deze 2 plaatjes en gebruik je dus 3 condensatoren (die kosten ook geen …).

Yes! Ik wilde vragen is dit goed zo? Maar hoef ik niet meer te vragen want het probleem is weg! Echt super bedankt iedereen, ik ga nu eindelijk alles proberen netjes te maken (andere plek WEMOS en kortere draden etc) WEMOS komt op een printje en die zet ik vast in een kastje etc. En uiteraard ga ik alles weer van de motor afhalen en de pootjes zo kort mogelijk maken en zorgen dat sluiting niet kan.

Hmm, mocht iemand nog tips hebben.. Ik wil dus de wemos in een plastic behuizing stoppen en het relais printje wel apart erbuiten (kan niet echt kwaad) maar ik wil niet de draden allemaal vast solderen, stel er is iets stuk dan moet ik in dat hok alles los gaan solderen. Dus ik dacht iets van draden solderen op het printje van de Wemos en dan via een opening naar buiten maar wat dan? Kroonsteentjes gaan we niet doen :')

Hoi.

Ik kan niet zien hoeveel diepte je in het doosje hebt, dus weet niet wat je kwijt kunt.
Ik zie dat je een gaatjesprint hebt waar bepaalde eilandjes zijn doorverbonden.
Ik weet natuurlijk niet of er aan de onderkant ook dingen zijn doorverbonden en of daar koper zit (zo niet, heb je het bordje op z'n kop).
Maar je moet dus wel opletten hoe je je Wemos er op zet.

Wanneer ik in een zoekmachine de woorden "aansluitklem print" opgeef, kom ik al snel op deze pagina (klik !) terecht.
Ik ken die shop niet en weet echt niet of je daar fijn kunt shoppen.
Wanneer je daar kiest voor een variant die een 'pitch' (nee, dat betekent niet toonhoogte) heeft van 5.08 mm, dan past die in de gaatjes van het printje dat je hebt (er word dan telkens 1 gaatje overgeslagen).
Misschien moet je dan wel die gaatjes iets groter boren.

Ik ben er zeker van dat waar je die print en het kastje vandaan hebt, ook deze dingen in huis heeft.
Je zegt "geen kroonsteentjes", maar dit is naar mijn idee helemaal geen slechte mogelijkheid, ook al worden ze ook wel printkroonsteentjes genoemd.
Maar dan zorg je er natuurlijk wel voor dat de draden niet aan deze klemmen trekken en er op 1 of ander wijze een trekontlasting en / of afdichting komt (dat is dus in 1 oplossing te doen).

Bedankt weer voor de info, die shop is goed hoor.. Want daar heb ik vandaag die condensators gehaald (Cuijk) haha en ook het printje! (behuizing is Alie)

De Wemos kan ik niet echt plaatsen op dat printje met doorverbind mogelijkheden (ja 1 kant dan)
Volgens mij heb ik hem wel goed geplaatst zoals op die foto, koper zit namelijk aan de onderkant. Maar ik bedoelde met kroonsteentjes die losse zeg maar.. Die van de URL zijn natuurlijk super, zet je vast op de print en daar de draden aan. Of het past weet ik nog niet, maar ik ga het zeker nakijken en terug naar Rutten om dat te halen. Ik neem dan de behuizing en alles mee om te zien of de diepte goed is.

Afdichting ga ik proberen te maken maar waar ik hem ga plaatsen gebeurd niks hoor, de kippen zullen er zeker niks mee doen, ze slapen er of leggen een ei.. Maar verder komen ze niet in het hok.

En het zelf doorlussen onder op de print is natuurlijk geen probleem dat lukt me wel.

Edit: even gekeken en denk dat de behuizing diep genoeg is! Dus komt goed denk ik.