Touch sensoren

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

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.

Gepost door hadv op dinsdag 3 mei 2016 21:12

Prima uitleg.
Vooral de schakeling met de PIC vind ik behoorlijk ingenieus.

Gepost door Lambiek op woensdag 4 mei 2016 15:31

Bedankt voor het compliment. :+

Als je ingelogd bent kun je een reactie plaatsen.