Sainsmart 16 relais module

Ik vond het relaisbord van Sainsmart erg interessant en heb het via een bekende Chinese online winkel aangeschaft. Al snel bleek dat het bord niet zomaar op de Rapsberry Pi aan te sluiten is. Het bord is compact en zeer de moeite waard en biedt een mooie oplossing als je meerdere apparaten of verschillende soorten verlichting wilt schakelen.    

De Sainsmart 16 relais module is eigenlijk voor de Arduino ontwikkeld, maar met een kleine aanpassing ben je met de Raspberry Pi ook prima in staat de relaismodule 16 te gebruiken.

De module wordt vaak gebruikt binnen de Domotica (huis automatisering). Ook in de industrie worden dergelijke modules gebruikt, aangestuurd door minicomputers/-controllers. Dit project werkt erg goed in combinatie met het project GPIO-besturing via IR-afstandsbediening.

Als je ‘zware’ apparaten zoals motoren of grote halogeen spots wilt aansturen wordt een stuur- & lastrelais combinatie geadviseerd omdat dit meestal behoorlijk vermogen vraagt.

De relaismodule wordt met een 12V voeding verbonden en levert (!) zelf een 5V spanning. Het voordeel hiervan is dat de Raspberry Pi de module niet hoeft te voeden en je alleen het GPIO-stuursignaal hoeft aan te bieden. Vergeet daarbij niet dat de ground (GND) van zowel de Raspberry Pi als de relaismodule met elkaar verbonden moeten worden.

Bijzonder is dat de module met een LAAG (LOW) signaal aangestuurd wordt, zie afbeelding hieronder. Dat heeft gevolgen voor de programmering omdat we gewend zijn apparaten aan te sturen met een HOOG (HIGH) signaal.

Ingangspin 6 verbonden met de ground (GND). Relais gaat AAN.

Python 2 script
In principe is het Python script hetzelfde voor een LED als voor een relais. Om een relais van de module in te schakelen kun je het volgende script gebruiken.

import RPi.GPIO as GPIO
from time import sleep
pin=40
pauze=1
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin,GPIO.OUT)
sleep(pauze)
GPIO.output(pin,GPIO.HIGH)
sleep(pauze)
GPIO.output(pin, GPIO.LOW)
sleep(pauze)
GPIO.cleanup()

Niet wat we gewend zijn.
Als je van de Raspberry GPIO 21 (pin 40) met bijv. pin 1 van de relaismodule en beide grounds (GNDs) met elkaar verbindt en je in het Pythonscript de GPIO pin initialiseert met GPIO.setmode(GPIO.BOARD), dan gaat het relais op de module al AAN. Dit komt omdat de relaismodule met LAAG geschakeld wordt. Het relais gaat weer uit bij het commando GPIO.cleanup(), dat de GPIO poort schoont.

De commando’s HOOG GPIO.output(pin,GPIO.HIGH) en LAAG GPIO.output(pin, GPIO.LOW) hebben geen effect op de relaismodule omdat de signaalniveaus van de Raspberry Pi net niet voldoen om de module te laten schakelen.

Hoe lossen we dit op?
Naast het signaalniveau probleem wil ik dat het relais op de module aangaat bij HOOG, i.p.v. LAAG. Om dit te bewerkstelligen heb ik een klein circuitje gemaakt. Ik noem het de ‘inverter‘. Het maakt van HOOG LAAG en andersom. Bovendien zorgt het ervoor dat het signaalniveau goed is.

1-kanaals inverter

Probeer het circuitje uit op je breadboard en sluit er een kanaal op de relaismodule mee aan. Als je een beetje handig bent bouw je een inverter voor de 16 relais module, net als ik.

Mijn 16kanaals inverter

Eenmaal aangesloten werkt het als volgt.

Python – testscript

Veel succes ermee!

Have A Nice Day!