BeneluxSpoor.net forum
Vraag en antwoord => Elektronica en analoog => Topic gestart door: Martijn Bu op 03 mei 2018, 23:56:27
-
Hallo, ik ben begonnen een Arduino te gebruiken als pendeltrein aansturing, om spanning op een spoor te zetten etc, en ook om lichteffecten op mijn modelbaan te genereren. De pendelfunctie van de Arduino wordt geactiveerd met een drukknop. Nu blijkt dat de Arduino te gevoelig is. Als er verderop in de modelbaan een puls is (vooral ontkoppelrails), denkt de Arduino dat de drukknop is ingedrukt en begint hij zn programma af te werken. De drukknop was echter helemaal niet ingedrukt. Heeft iemand een idee hoe de gevoeligheid van de Arduino te verlagen, zodat 'ie niet op onafhankelijke signalen van ontkoppelrails etc. reageert? Ik heb de input kabel van de Arduino al "beveiligd" met een ferriet of vervangen door coax kabel, maar dat heeft allemaal niet geholpen. Hartelijk dank voor eventuele ideeën
-
Pull up of pull down op de ingang juist staan?
-
Ik heb op de ingang een pull down weerstand staan, van ik meen uit mn hoofd 5 kohm
-
Ik zou juist voor een pull-up kiezen. Met pull-down is je lijn laag een stoorpuls veroorzaakt dus een hoog op je ingang. Met een pull-up is je lijn al hoog en dus minder gevoelig voor stoorpulsen. 5K is voldoende voor een "harde pull" je zou ook de interne pull-up kunnen gebruiken, maar daar lees je wel eens negatieve dingen over, zelf goede ervaringen mee.
Gr Peter
-
Interne Pull-up programmeren en externe R weghalen. Drukknop naar massa schakelen en C-tje over de ingang van 100nF.
Succes Frits
-
Beste Frits, wat bedoelje met een C-tje over de ingang? Bedoel je een condensator die parallel staat met de drukknop? Dank voor een kleine verduidelijking
-
Frits bedoelt inderdaad een condensator. Maar die moet je niet bij de drukknop zetten, maar zo dicht mogelijk bij de ingang van de Arduino.
Dit soort storingen kan je verminderen door elk contact aan een ingang te verbinden met een getwist aderpaar. Dus niet met een doorgeluste massa maar elk contact zijn eigen massa vanaf de Arduino.
-
Hallo Martijn,
Klaas was me voor. Even een plaatje van internet gehaald
(http://protological.com/wp-content/uploads/2014/11/debounce.png)
R1 kan vervallen als je de interne Pull Up weerstand in de Arduino programmeert. Overigens kan hij ook geen kwaad als je hem wel monteert (10k). De condensator van 100n (maar vermoedelijk werken alle waarden tussen 1nf en 1uF goed) zo dicht mogelijk op de ingang van de Arduino.
Succes Frits
-
Heel erg bedankt ik ga het proberen
-
Nog een extra tip, zorg dat de twee draden naar de schakelaar zo dicht mogelijk bij elkaar blijven.
En in het kader "don't fix it in hardware if you can fix it in software" ;D (los het niet op in hardware als het met software op te lossen is), een goede debounce op de knoppen zal dezelfde uitwerking hebben. Maar waarschijnlijk heb je wel een extremere debounce tijd nodig dan normaal. Een goede library daarvoor is Bounce2.
Timo
-
Klaas Zondervan en Fritsprt, het is me na een paar weken knutselen eindelijk gelukt dank zij jullie tips. Ik gebruik een reedcontact als signaal om 2 m verderop een monostabiel relais te activeren; en dit relais, op 15 cm van de Arduino, gebruik ik dan als input voor de Arduino met de schakeling die jullie hebben voorgesteld. Condensator van 1 nF (enige die ik had), met weerstand van 10 kohm. Werkt goed.
Timo, ik heb ook jouw tip toegepast ("twee draden bij elkaar"). De drempel voor fixen met software is voor mij toch nog hoog: ik weet iets van electronica maar mijn ervaring met programmeren is veel te ver weggezakt. Ik heb even op bounce2 gezocht, maar was al snel de draad kwijt. De hardware oplossing werkt redelijk - maar soms is er nog een vals signaal. Misschien ga ik ooit verder met bounce2.
Hartelijk dank allemaal :) :)