ron 17
Posts: 8
Joined: Mon Oct 16, 2017 5:23 am

raspberry valse gpio trigger

Thu Aug 16, 2018 7:40 am

Hoi,
Ik heb het volgende probleem: de raspberry 3b gebruikt 1 gpio pin voor het starten van een filmpje in een escape room. De rest van de sturing gebeurt via PLC (Siemens logo). Wanneer de PLC schakelt, begint het filmpje opnieuw, en opnieuw,..
Ik weet ondertussen wel hoe dit komt, ik heb ondertussen ook een externe pull up weerstand geplaatst(1k en10k met condensator), en de kabels tussen PLC en raspberry zo kort mogelijk gehouden (20cm). Dit lijkt echter het probleem niet op te lossen... Voorlopig heb ik een time.sleep geprogrammeerd om valse triggers te negeren, maar liefst zou ik het filmpje op elk moment kunnen resetten. Heeft iemand nog een ideetje om mijn zeer gevoelige raspberry immuun te maken voor externe invloeden?

zonstraal
Posts: 115
Joined: Fri Apr 10, 2015 8:50 am
Location: Spain

Re: raspberry valse gpio trigger

Thu Aug 16, 2018 7:48 am

Ik ga even volgen want mijn terras verlichting gaat ook uit als de pomp van het zwembad aanslaat :-(

ron 17
Posts: 8
Joined: Mon Oct 16, 2017 5:23 am

Re: raspberry valse gpio trigger

Thu Aug 16, 2018 8:04 pm

Hoi zonstraal,

Welkom op dit drukke topic 😉

Ik heb nog wat research verricht, en heb enkele mogelijke oplossingen gevonden. Ik ga het morgen even uittesten, en de uitkomst zal ik posten voor jou.

1. Kooi van faraday: je raspberry in een metalen behuizing plaatsen, die met de aarding in verbinding staat. Dit zou een schild vormen, wat de interferentie tegenhoudt.

2. Een optocoupler: dit zorgt voor een scheiding tussen je stuurcircuit en de gpio van je raspberry.

Ik gebruik echter geen outputs van de raspberry, enkel de input, dus ik weet niet of dit je gaat verder helpen..

Meer info na de test 😀

M.v.g. ron

Brandon92
Posts: 844
Joined: Wed Jul 25, 2018 9:29 pm
Location: Netherlands

Re: raspberry valse gpio trigger

Thu Aug 16, 2018 8:34 pm

Hallo,

De keuze van de optocouple is inderdaad de beste oplossing. Aan de andere kant de uitgang van je PLC is toch ook een relais. En dan is je optocouple niet echt nodig.

Echter hoe heb je nu je code er uit zien. Met name het gedeelte rondom je input. En ben je trouwens met het fenomeen "Switch Debouncing" Als je dit niet geimplemiteerd hebt dan is het mogelijk dat hij vaker triggert dan je verwacht.

En indien het mogelijk is mag je ook wel even een schets maken je aansluitschema. Want er zijn best wat mogelijkheden met die componenten.

En een behuizing gaat niet helpen als het probleem via de kabel naar binnen komt ;)

zonstraal wrote: Ik ga even volgen want mijn terras verlichting gaat ook uit als de pomp van het zwembad aanslaat :-(
Kan je misschien hier iets meer over vertellen, of moet je hier een aparte topic van maken? Wordt je groep niet teveel belast en schakelt de beveiliging van je pomp hem uit? (Te weinig spanning)

ron 17
Posts: 8
Joined: Mon Oct 16, 2017 5:23 am

Re: raspberry valse gpio trigger

Thu Aug 16, 2018 8:44 pm

Hoi brandon,
Bedankt voor je reactie!
Ik verzamel even de gegevens, en dan post ik ze. Kan wel even duren
Groeten, Ron

Brandon92
Posts: 844
Joined: Wed Jul 25, 2018 9:29 pm
Location: Netherlands

Re: raspberry valse gpio trigger

Thu Aug 16, 2018 8:47 pm

Oké is goed.

Had je dit als input voor je pi gebruikt. En dan in plaats van de optocouple heb je de "twee" uitgangen van je PLC
Image

Ik heb dit schema gebruikt om even wat snel te meten met de pi. Hoe lang iets aan staat.

ron 17
Posts: 8
Joined: Mon Oct 16, 2017 5:23 am

Re: raspberry valse gpio trigger

Thu Aug 16, 2018 10:51 pm

Dit is de code:
import RPi.GPIO as GPIO
import time
import os
import sys
from subprocess import Popen

GPIO.setmode(GPIO.BCM)

GPIO.setup(2, GPIO.IN, pull_up_down=GPIO.PUD_UP)

movie1 = ("/home/pi/Downloads/clip4.mp4")

last_state1 = True

input_state1 = True

quit_video = True
player = False

while True:
#Read states of inputs
input_state1 = GPIO.input(2)

#If GPIO(2) is shorted to ground
if input_state1 != last_state1:
if (player and not input_state1):
os.system('killall omxplayer.bin')
omxc = Popen(['omxplayer', '-b', movie1])
player = True
time.sleep(3600.0)


elif not input_state1:
omxc = Popen(['omxplayer', '-b', movie1])
player = True


#Set last_input states
last_state1 = input_state1

-------------
Kort samengevat speelt het filmpje volledig af, nadat een puls op de gpio komt. De 'time.sleep' heb ik erin geplaatst om valse triggers te negeren tijdens het afspelen. Het probleem is dat ik de film op een zelf gekozen moment wil kunnen resetten naar het begin. De code hiervoor staat klaar, met als enige verschil, dat het filmpje speelt zolang gpio verbonden is met ground. Indien het plc contact terug opent stopt de film, en zal opnieuw starten van zodra plc het contact terug sluit. deze code werkt perfect indien ik test met een drukknop, maar zodra de plc in het spel komt is het om zeep.

het aansluitschema is momenteel zo:
pullup.png
pullup.png (2.5 KiB) Viewed 5596 times
de gebruikte plc is een siemens Logo. De uitgangen van de Logo sturen elk een relais aan, waarvan ik vervolgens de schakelcontacten gebruik.

DirkS
Posts: 10347
Joined: Tue Jun 19, 2012 9:46 pm
Location: Essex, UK

Re: raspberry valse gpio trigger

Fri Aug 17, 2018 1:59 am

Volgende keer aub code tags gebruiken.
Maakt het niet alleen beter leesbaar, maar is essentieel on Python code correct te interpreteren

Code: Select all

import RPi.GPIO as GPIO
import time
import os
import sys
from subprocess import Popen

GPIO.setmode(GPIO.BCM)

GPIO.setup(2, GPIO.IN, pull_up_down=GPIO.PUD_UP)

movie1 = ("/home/pi/Downloads/clip4.mp4")

last_state1 = True

input_state1 = True

quit_video = True
player = False

while True:
	#Read states of inputs
	input_state1 = GPIO.input(2)

	#If GPIO(2) is shorted to ground
	if input_state1 != last_state1:
		if (player and not input_state1):
			os.system('killall omxplayer.bin')
			omxc = Popen(['omxplayer', '-b', movie1])
			player = True
			time.sleep(3600.0)


		elif not input_state1:
			omxc = Popen(['omxplayer', '-b', movie1])
			player = True
	

						#Set last_input states
	last_state1 = input_state1
Last edited by DirkS on Fri Aug 17, 2018 6:32 am, edited 1 time in total.

ron 17
Posts: 8
Joined: Mon Oct 16, 2017 5:23 am

Re: raspberry valse gpio trigger

Fri Aug 17, 2018 5:10 am

Bedankt voor de correctie Dirk.

zonstraal
Posts: 115
Joined: Fri Apr 10, 2015 8:50 am
Location: Spain

Re: raspberry valse gpio trigger

Fri Aug 17, 2018 7:39 am

Kan je misschien hier iets meer over vertellen, of moet je hier een aparte topic van maken? Wordt je groep niet teveel belast en schakelt de beveiliging van je pomp hem uit? (Te weinig spanning)

Zal een apart topic beginnen als ik tijd heb ;)

Brandon92
Posts: 844
Joined: Wed Jul 25, 2018 9:29 pm
Location: Netherlands

Re: raspberry valse gpio trigger

Fri Aug 17, 2018 10:07 am

Als eerste zal ik adviseren om het te testen met de schakeling die ik eerder noemde.
En daarnaast is het ook handig om je schakelaar software matig the debouncen, het is niet echt nodig wanneer de hardware goed is. Maar kwaad kan het ook niet. Ook is het handiger om je een interrupt te generen als de schakelaar bedient word. Hier staat dat wel uitgelegd in het Nederlands.

Return to “Nederlands”