Touch sensoren

Gepost door Jeroen Vreuls op dinsdag 3 mei 2016 20:15

Het principe

De touch sensor is bijna niet meer weg te denken uit onze apparaten, denk aan koffiezetapparaten, magnetron, televisie, wasautomaat, vaatwasmachine, audio apparatuur, verlichting, dimmers, speelgoed, waterkraan, enzovoort. Maar ook in de industrie worden deze sensoren toegepast, denk aan positie sensoren, niveau sensoren, daarvoor kunnen dus ook capacitieve sensoren worden gebruikt. Ook op machinebedieningen komen ze voor.

De werking van zo'n sensor is als volgt. Je hebt het touch gedeelte, dat kan van alles zijn, een plaat, een klein metalen knopje, een stukje printplaat, enzovoort. Rond de plaat heb je een veld, als je de touch sensor aanraakt wordt dat veld verstoord, de capaciteit verandert dus. De verandering van de capaciteit wordt gemeten en verwerkt door de controller. Hieronder het principe van zo'n sensor.

Principe van een touch sensorPrincipe van een touch sensor

Je ziet dat door aanraking van de plaat het veld verandert en dat de lijnen afbuigen naar het ontvangst gedeelte, op deze manier kan er met dat signaal iets geschakeld worden. Zo'n sensor kan op vele manieren gemaakt worden, het kan heel simpel maar is daar door wel minder betrouwbaar. Het kan met één elektrode of met twee elektrodes.

Schema's

Touch sensor met een transistorTouch sensor met een transistor

Hierboven een voorbeeld met een transistor, hier wordt de gevoeligheid van de basis samen met de versterkingsfactor van de transistor gebruikt om de LED te schakelen. Dit werkt wel, maar is verre van betrouwbaar.

Maar om er een beetje mee te experimenteren is het wel leuk natuurlijk. Hetzelfde kan ook met een MOSFET gedaan worden, dan sluit je de sensorplaat aan op de gate van de MOSFET. Maar ook dat is niet echt betrouwbaar.

Het voorbeeld hieronder is al iets beter.

Betere touch sensor met een transistorBetere touch sensor met een transistor

Zoals je kunt zien is de basis van de transistor niet meer zwevend omdat de basis met een 1 MΩ weerstand verbonden is met massa, dat betekent dat deze schakeling minder gevoelig zou moeten zijn voor storing van buiten af. Je zou met de weerstand nog wat kunnen spelen tot dat je de juiste balans gevonden hebt.

Het is wel zo dat je nu twee touch platen hebt, één aan de plus en één aan de basis van de BC517.

Dit kun je ook weer doen met een MOSFET, je zult dan zien dat het weer heel anders reageert dan met de BC517.

In het voorbeeld hieronder kun je zien hoe je zoiets met een NAND-poort kan doen. De poort staat hier als inverter geschakeld en de ingang wordt hoog gehouden door de 10 MΩ weerstand. De uitgang is standaard laag en zal veranderen bij aanraking van de touch plaat.

Touch sensor met een NAND-poortTouch sensor met een NAND-poort

De voorbeelden die getoond zijn, zijn allemaal voorbeelden waarbij de uitgang veranderd bij aanraking van de touch plaat. Maar de uitgang blijft niet hoog wanneer de touch plaat weer los gelaten wordt, aanraken is hoog, niet aanraken is laag. Als je dat wil aanpassen zou je er een flipflop schakeling achter moeten zetten.

Hieronder een voorbeeld met een NE555.

Touch sensor met een NE555Touch sensor met een NE555

Met dit voorbeeld kun je wel iets aan en uit zetten, als de touch platen "AAN" aangeraakt worden gaat de LED aan en blijft aan. Als de touch platen "UIT" aangeraakt worden gaat de LED uit en blijft uit. Het touch gedeelte zou je op een print kunnen maken met bijvoorbeeld twee ringen die je dan op het koper etst, twee voor aan en twee voor uit.

Er zijn tegenwoordig ook kant en klare IC's te koop waar je op eenvoudige wijze een touch sensor mee kan maken, bijvoorbeeld de TS20, TSM12, QT113 en QT1070. Zoek maar eens op het internet, er is genoeg over te vinden.

Kant en klare sensoren

Tegenwoordig met de opkomst van de Arduino zijn er ook veel kant en klare shields te koop. Hieronder bekijken we een paar voorbeelden.

Hieronder een sensor van Phidgets.

Touch sensor 1129 van PhidgetsTouch sensor 1129 van Phidgets

Hieronder zie je een sensor van Grove.

Touch sensor van GroveTouch sensor van Grove

Hieronder een sensor die veel gebruikt wordt in combinatie met een Arduino.

Touch sensor voor ArduinoTouch sensor voor Arduino

En zo zijn er nog veel meer te vinden op internet. De meeste sensoren zijn met meerdere controllers te gebruiken natuurlijk. Denk hierbij aan Arduino, AVR, Microchip, Raspberry Pi, enzovoort.

Touch sensor met een PIC12F629

Maar we kunnen zo'n sensor ook zelf maken, met bijvoorbeeld een PIC12F629 van Microchip is dat goed te doen. Het kan natuurlijk ook met een ander type controller. Hieronder het schema.

Schema voor een touch sensor met een PIC12F629Schema voor een touch sensor met een PIC12F629

Zoals je kunt zien op het schema heb ik gebruik gemaakt van een Vigortronix voedingsmodule type VTX-214-005-105. Deze module mag direct aan 230 VAC en er komt een mooie gestabiliseerde spanning van 5 VDC uit. Ik heb nog wel een paar elco's van 220 µF achter de uitgang gezet omdat het een gevoelige schakeling is.

De pinnen 5, 6, en 7 van de PIC12F629 liggen via een SIL-weerstand van 10 kΩ aan massa. Pin 5 is de uitgang voor het relais, dit wordt geschakeld door een BC547. Deze heeft voor dit type relais een voldoende versterkingsfactor. Mocht je een groter relais willen schakelen dan kun je voor een BC517 gaan, deze heeft een grotere versterkingsfactor. Het relais is van Omron, type G5LA-1. Het relais mag 10 A schakelen bij 230 VAC, ruim voldoende voor allerlei doeleinden. Mocht dit niet genoeg zijn kun je via de contacten een groter relais schakelen.

Het sensor gedeelte zit op de pinnen 2 en 3, op pin 2 staat een bepaalde frequentie die via R-SENS en een condensator van 100 nF op de touch sensor is aangesloten. Als de touch sensor aangeraakt wordt komt dit verstoorde signaal op de ingang pin 3 terecht, als het signaal daarbinnen komt en de vergelijking klopt dan wordt de uitgang hoog en blijft hoog totdat de touch sensor weer aangeraakt wordt.

Als test heb ik een draad met een lengte van ± 100 mm tussen de touch sensor en de ingang zitten, als deze draad erg veel langer wordt moet R-SENS aangepast worden. Als je R-SENS groter maakt wordt de touch sensor gevoeliger, maak je R-SENS kleiner wordt de touch sensor dus minder gevoelig. Als je dus een langere sensordraad wil gebruiken wordt de touch sensor gevoeliger (de sensor pikt meer op) en moet R-SENS kleiner worden. Als test voor de touch sensor heb ik een M6 slotbout gebruikt, maar in principe kun je daar van alles voor gebruiken.

Hieronder een voorbeeld van het touch gedeelte.

Touch gedeelte van de PIC16F629 touch sensorTouch gedeelte van de PIC16F629 touch sensor

Zoals je ziet staat er op de uitgang continue een frequentie, als deze verstoord wordt door aanraking van de sensor zal er een ander signaal op de ingang komen te staan.

Zoals je kunt zien aan de opbouw, kun je een kunststof laagje aanbrengen op de sensorplaat. De gevoeligheid moet dan wel aangepast worden, ik heb het getest met een 1 mm dikke plexiglas plaat en dat werkte prima. Op deze manier kun je de sensoren achter een frontplaat zetten zonder dat je ze ziet, als dat plexiglas is dan zou je het plexiglas kunnen spuiten. Dat geeft trouwens een mooi glanzende frontplaat.

Zoals je ook kan zien in het voorbeeld moet de sensor wel geïsoleerd opgesteld worden door een eventuele isolatielaag, de sensor mag niet in aanraking komen met een wand van een kastje of een frontplaat. Als je daar rekening mee houdt werkt de sensor uitstekend.

Als sensor materiaal kan je eigenlijk ieder elektrisch geleidend materiaal gebruiken, bijvoorbeeld koper, messing, aluminium, gegalvaniseerd staal of RVS.

Hieronder het PICBASIC programma voor de sensor.

'*  Name    : TOUCH SENSOR.                                     
'*  Author  : H van Zwieten.                                    
'*  Notice  : Copyright (c) 2016 H.v.Z.                        
'*          : All Rights Reserved                              
'*  Date    : 26-3-2016                                        
'*  Version : 1.0                                              
'*  Notes   :                                                   
                                                 
Device 12F629

Xtal 4                        ; Processor snelheid 4MHz

Config INTRC_OSC_NOCLKOUT,_   ; Interne oscilator aan
       WDT_OFF,_              ; WatchDog Timer uit
       PWRTE_ON,_             ; Power-up Timer Enable aan
       MCLRE_OFF              ; Externe Master Reset Enable uit
             
All_Digital true              ; alle poorten digitaal

Symbol LED = GPIO.2           ; Uitgang xxxxxxxxx

Symbol TOUCH = GPIO.4         ; Ingang sensor

Symbol PULS = GPIO.5          ; Puls uitgang

Symbol ONDERDRUKKING = 100    ; Onderdrukking storing

Dim STATUS_1 As Bit           ; Waarde status1 bit
Dim STATUS_2 As Bit           ; Waarde status2 bit

Clear                         ; wis geheugen
  
         ;543210              ; hulpregel 
GPIO   = %000000              ; maak poorten laag                 
TRISIO = %010000              ; in en uitgangen

;------------------------
; PROGRAMMA TOUCH SENSOR.
;------------------------

STATUS_1 = 0
STATUS_2 = 0
LED = 0

RUN:

    PULS = 1
    STATUS_1 = TOUCH
    DelayMS ONDERDRUKKING
    PULS = 0
    STATUS_2 = TOUCH
    DelayMS ONDERDRUKKING
      
    If STATUS_1 = STATUS_2 Then
        GoSub UITGANG
    EndIf
GoTo RUN


UITGANG:

    Toggle LED
    DelayMS 1000
    Return
GoTo UITGANG

End

Zoals je kunt zien is het programma niet echt groot. In de RUN lus wordt de puls gegenereerd en de status van de touch sensor gecontroleerd. Zolang STATUS_1 en STATUS_2 niet gelijk zijn, veranderd er niets aan het uitgangsniveau van de controller. Als zowel STATUS_1 en STATUS_2 gelijk zijn (dat is na aanraking van de sensor) zal de uitgang van de controller hoog worden.

Met ONDERDRUKKING in het programma worden eigenlijk twee dingen gedaan: ten eerste de delay bepaalt de frequentie van de puls die op de sensor komt en ten tweede onderdrukt de delay eventuele storing van buitenaf. De delay staat nu op 100 milliseconden, maar daar kan nog iets mee gespeeld worden. De DelayMS tijd bij de UITGANG lus kun je ook nog iets aanpassen, maar deze waarde geeft bij mij goede resultaten. Voor de rest wijst het programma voor zich denk ik.

Ik heb er ook een print voor gemaakt, zie hieronder.

Print van de touch sensor met PIC12F629Print van de touch sensor met PIC12F629

Het relais mag 10 A schakelen, maar ik houd het op maximaal 5 A. En met 1150 W kun je aardig uit de voeten voor bijvoorbeeld verlichting. Daar zijn ook de sporen op berekend, de koperlaag op het printmateriaal heeft een koperdikte van 35 micrometer.

Hieronder het printje met de aansluitingen.

Aansluitschema van de touch sensor met PIC16F629Aansluitschema van de touch sensor met PIC16F629

Er zijn geen montage gaten in de print gemaakt omdat dit gedeelte ingegoten wordt. Als je dat niet gaat doen kun je montage gaten in de print maken. Je kunt er ook voor kiezen dat je het relaiscontact potentiaalvrij maakt, dan kan je daar mee schakelen wat je wilt. Zelf was ik van plan om er verlichting mee te schakelen, dus vandaar dat ik er 230 VAC mee schakel.

Je kunt er natuurlijk van alles en nog wat mee schakelen, of er een beetje mee experimenteren. Als je niet de mogelijkheid hebt om zelf printen te etsen kun je het ook op een breadboard zetten of op experimenteerprint.

Ik hoop dat je een beetje inzicht gekregen hebt in de werking van touch sensoren. In principe werken ze allemaal zo'n beetje hetzelfde.

Dit artikel is geschreven door Lambiek.