DHT-sensoren met kabel verlengen

Alle sensoren die op een breadboard opgesteld zijn en op zo'n 20cm met de Raspberry Pi verbonden worden werken doorgaans naar verwachting. Maar wat te doen als je sensoren een aantal meters van de Pi af met draad wil verbinden. Werkt het dan nog steeds? Uit eigen ervaring kan ik vertellen dat dit niet het geval is. Hoe los je dit op? 

In deze tutorial laat ik zien hoe je sensoren, zoals de DHT-serie (temperatuur en luchtvochtigheid), kunt verlengen met een draad. Waarschijnlijk werkt dit ook bij andere sensoren, maar pas op, de oplossing bevat enkele voorwaarden die niet voor alle sensoren geschikt zijn. Ik leg het hieronder uit.

Daar gaan we…

Ingangsspanning = maximale uitgangsspanning
In deze tutorial maak ik gebruik van de DHT-sensoren die tussen de 3V en 6V gevoed kunnen worden. Hieronder vallen o.a. de volgende sensoren:

Je moet bij deze sensoren rekening houden dat de uitgangsspanning in relatie staat met de voedingsspanning. Dus 3,3V voeding geeft maximaal 3,3V uitgangsspanning en bij 5V voedingsspanning geeft de sensor maximaal 5V uitgangsspanning. Beide sensoren kennen een minimale en maximale voedingsspanning.

GPIO is voor 3,3V ontwikkeld
Een ander belangrijk punt is dat de GPIO van de Raspberry Pi ontwikkeld is voor 3,3V in- en uitgangsspanning. Oké, de GPIO kan 5V ingangsspanning voor een korte tijd prima verwerken, maar de kans op beschadiging is aanwezig.

‘Een slechte bedrading is een antenne met weerstand’
Zoals gezegd werken de sensoren prima op een breadboard dat zich op 20cm afstand van de Pi begeeft. De sensoren zijn met 3,3V door de Pi gevoed en het uitgangssignaal is maximaal 3,3V bij de GPIO. Niets aan de hand!

Echter, als je de 20cm verbindingsdraden vervangt door langere (>1m) draden of een multi kabel zal je merken dat de gemeten waarden bij een bepaalde draadlengte niet meer dezelfde zijn. Of er komt helemaal geen data meer binnen of de waarden haperen en wijken af. Hoe komt dit?

Het antwoord is net zo eenvoudig als dat het lastig op te lossen is: signaalverlies door draadweerstand, impedantie of externe invloeden. Bij een slechte kabel, of voor de verkeerde toepassing gebruikt kan dit aanzienlijk zijn.

Let op! Het meten van gelijkspanningswaarden over een draad is anders dat het meten van logische niveaus bij hoge datasnelheden over dezelfde draden. Ik raad aan deze laatste met een oscilloscoop te meten zodat je kunt zien wat er aan de hand is als je problemen met een kabel hebt.

Ook kunnen externe factoren zoals magneetvelden of spikes van voedingen of schakelapparatuur (relais) of motoren een rol spelen dat de GPIO onjuiste data leest. Bijvoorbeeld als je een sensor met 3,3V voedt en in de omgeving schakelt een 230V relais, pomp (motor) of oude Tl-verlichting in, waarbij het veld van de inschakelpuls op de bedrading inslaat dat naar de GPIO gestuurd wordt. Hierdoor kan het datasignaal verminkt raken en leest de GPIO i.c.m. de software onbegrijpelijke data. Soms crashed de software of zelfs de hele Pi.

De oplossing
Ik heb het probleem m.b.t. het verlengen van kabellengte een tijd onderzocht voor wat de oplossing voor bovenstaande probleem zou kunnen zijn. Je zou een gebalanceerde signaalversterker met ingebouwde datafilter zoals er voor USB verlengkabels te koop zijn kunnen aanschaffen, maar welke moet je hebben voor de communicatie die de sensoren gebruiken? Ik heb hier nog geen antwoord voor gevonden.

Forums
Blijkbaar ben ik niet de enige met het probleem dat er geen lange kabel voor de DHT-sensoren gebruikt kan worden. In een aantal forums wordt dit topic besproken. Door veel te lezen en te proberen heb ik inmiddels een prima en goedkope oplossing gevonden.

De oplossing

Stap 1 – Als eerste ben ik de sensoren gaan voeden met de hoogste spanning die ze mogen hebben, in dit geval 5V. Zo loop ik de kans dat er een signaal met een redelijk niveau bij de GPIO aankomt.

Stap 2 – Aangezien de 5V voeding dan ook het uitgangsniveau van de sensor wordt, moet hiervoor het logische spanningsniveau omlaag naar 3,3V om een veilig niveau op de GPIO aan te bieden. Hiervoor gebruik ik een bidirectionele logische niveau-omzetter, ook wel levelshifter genoemd. Deze in China 40 cent kostende module zet een logisch spanningsniveau van 5V naar 3,3V om en andersom als dat nodig is. Als je er meer over wilt weten kijk dan hier. Drie jaar geleden heb ik er een uitgebreide tutorial over gemaakt.

De bidirectionele logische niveau-omzetter

Stap 3 – Ik heb meerdere multi kabels getest zoals een goede afgeschermde kabel die ook voor USB gebruikt wordt en een standaard netwerk kabel. Op moment van schrijven gaf de netwerkkabel bij zo’n 7 meter erg goed resultaat. Het bleef even bij 7 meter omdat geen langere kabel in de buurt had…. wordt vervolgd. Van de kabel gebruik ik twee paren voor de aansluiting met de sensor.

Mocht je bij langere kabels succes hebben, laat het dan hieronder weten.

Tip: Om kwalitatief nog wat te verbeteren kun je het beste een afgeschermde netwerkkabel gebruiken, waarbij de afscherming aan de Pi-kant met de GND verbonden wordt.

Shielded twisted pair kabel, ook wel STP-netwerkkabel genoemd

Aansluitschema
Het schema van de sensor met de levelshifter en de Raspberry Pi ziet er dan als volgt uit. De diagonale stippellijn geeft de kabellengte aan. Het blijft een beetje experimenteren welke lengte de kabel kan hebben voordat de data door de GPIO niet meer ingelezen wordt.

In dit voorbeeld wordt poort V2 van de levelshifter gebruikt. Dit mag ook een van de andere 3 poorten zijn.

Let op! Vergeet de pull-up weerstand (10k) niet. Deze dient zich zo dicht mogelijk aan de kant van de sensor geplaatst te worden op de voeding (5V) en de data-uit pin.

De pull-up weerstand kan eenvoudig op de achterkant van de sensor gemonteerd worden.

De sensor heb ik via een connector met twee ’twisted’ paren verbonden. Hierbij wordt de GND van de sensor met de twee retourlijnen/-draden verbonden.

Heb jij nog tips hoe je het beste een sensor kan verlengen, laat dan hieronder een reactie achter. Alle informatie is welkom!

Have A Nice Day!

Geef als eerste een reactie

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd.


*