16F726 Capacitive sensing module


Closed Thread
Results 1 to 40 of 40

Hybrid View

  1. #1
    Join Date
    Jan 2009
    Location
    Miami, Florida USA
    Posts
    704


    Did you find this post helpful? Yes | No

    Default

    rmteo,

    Nice project. I have a project using CSM (capacitive sensing module) on a 16F727. In that project I'm using only two buttons. Yes, you can do it with any PIC but you will need some extra external components.

    How did you do the external plastic cover for the buttons? Was it custom made by some company?

    Robert

  2. #2
    Join Date
    May 2007
    Posts
    604


    Did you find this post helpful? Yes | No

    Default

    I used a clear acetate (0.012in.thick) overlay for the buttons. This way, the end user can change legends by printing their own labels on paper using an ink-jet printer. This is one of the nice features of a capacitive switch - you don't have to spend a lot of money for custom labels (and the attendant lead times). And you can change labels easily and cheaply at any time. There is a downside though - there is no feedback (like tactile with a mechanical switch). I implemented an audible click using a buzzer like this one, which is also used for alarms, etc.


  3. #3
    Join Date
    Jan 2009
    Location
    Miami, Florida USA
    Posts
    704


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by rmteo View Post
    I used a clear acetate (0.012in.thick) overlay for the buttons. This way, the end user can change legends by printing their own labels on paper using an ink-jet printer.
    Nice! Now, that is one more item for my "To Buy List".

    Robert

  4. #4
    Join Date
    May 2007
    Posts
    604


    Did you find this post helpful? Yes | No

    Default

    I got the material from a local office supply place - OfficeMax. It is the clear stuff used as covers for book bindings.

  5. #5
    Join Date
    Oct 2004
    Posts
    440


    Did you find this post helpful? Yes | No

    Default

    I have been using capacitive touch switches for several years with little problem except the
    Q prox chips became obsoleted after a couple of years.

    Any Microchip can be used as the requirements are unbelievably simple:
    An I/O pin to charge with supply voltage and an AD pin to read the cap sense value.

    I sometimes take 20 to 100 readings, bubble sort them highest to lowest, then average
    only array elements 20% to 80% to to remove any errant readings.
    The outcome is stable, varies only one or two at 8 bit.
    The AD needs to be coded for power conservation however.

    The following code is derived almost directly from AN1286:
    Code:
    'PIC18F2520  
    subLOAD_AD_ARRAY:
        ADCON0 = %00000001  'ENABLES AD
        For i = 0 To 99
            LOW PORTA.0
            LOW PORTA.2 
            ASM 
            NOP 
            ENDASM 
            TRISA.0 = 1 'INPUT
            HIGH PORTA.2
            ASM 
            NOP
            ENDASM 
    
            'AD BY REGISTER'S  
            ADCON0.1 = 1   ' START AD  GO/DONE BIT
            While ADCON0.1 = 1 : Wend  ' AD ENDED GO/DONE Bit
            wAD.LowByte = ADRESL       ' 2520 10 BIT AD ONLY
            wAD.HighByte = ADRESH  
            yAD_ARRAY100[i] = wAD >> 2
        Next
        ADCON0 = %00000000  'DISABLE AD
        Return
    The touch button is simply a 3/16" stainless steel machine screw through the faceplate with
    a double nut tightened around a soldered wire loop connected to the AD.
    I add a little grommet for looks.
    The charge lead is simply wound several times around the screw behind the faceplate.

    Another version is individual metal tabs of sheet metal adhered to the underside of the
    enclosure for buttons.
    The AD wire is soldered to each tab and the charge wire only needs to wrap around the
    AD wire or all AD wires.

    The cap sensor readings can vary over time and the base line to compare the readings against
    should be re zeroed and a new max value redetermined at regular intervals.

    I laminate an inkjet photo quality paper (not photo paper) printout for the faceplate.

    The last consideration is ESD.
    A simple 100k resistor in line on both leads is a good solution.

    Norm
    Last edited by Normnet; - 7th May 2010 at 04:50.

  6. #6
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,144


    Did you find this post helpful? Yes | No

    Default

    Hi Norm.

    I think you can shorten your code by Left justify the AD results and take only the ADRESH. Same as with the lines:

    Code:
            wAD.LowByte = ADRESL       ' 2520 10 BIT AD ONLY
            wAD.HighByte = ADRESH  
            yAD_ARRAY100[i] = wAD >> 2
    Ioannis

  7. #7
    Join Date
    Jan 2009
    Location
    Miami, Florida USA
    Posts
    704


    Did you find this post helpful? Yes | No

    Default

    Norm,

    There are many ways to do it. You can also use the interrupt TMR1 to detect changes in the output frequency due to a pad being touched by a finger. This is explained in AN1101 "Introduction to Capacitive Sensing".

    http://ww1.microchip.com/downloads/e...tes/01101a.pdf


    Quote Originally Posted by Normnet View Post
    The following code is derived almost directly from AN1286:
    I see that you are using AN1286 "Water-Resistant Capacitive Sensing". If you are using your touch sensors in a wet environment, then you might want to consider using inductive sensors. Take a look at the table I attached to this post.

    http://www.microchip.com/stellent/id...param=en538303

    Name:  Inductive.JPG
Views: 7819
Size:  38.5 KB

    Robert

  8. #8
    Join Date
    Oct 2005
    Location
    New Zealand
    Posts
    171


    Did you find this post helpful? Yes | No

    Default Errors left right and center

    I'm trying to use capacitive touch too - was kinda hoping that the inbuilt capacitive sensing was a bit more straight forward than the convoluted mess and complexity it looks like. Would it be too hard for microchip to make it a bit user friendly so you just enable named pins as capacitive, then read the register to see which were pressed and had inbuilt filtering etc??

    I've used Mister E's capacitive touch idea before and it seems so much simpler than the "integrated' solution.

    Anyrate - enough of my ramblings, I'd like to learn to use it - hopefully it's not as complex as it appears from outset. I've copied byte butchers code as above and pasted it directly into MCS and I have errors all over the place. I have a fresh install of PBP2.6 and have also just downloaded DTs' ints-14.

    How come it works for him and not for me? I had the chip type 16F726 like his also

    While I'm on a roll, why wont MCS allow you to copy and paste the error list???

    I think many of the issues come from the Interrupt routine but asm and interrupts are well over my head. Is there any reason Byte Butcher used interrupts rather than just checking pins periodically?

    Thanks

    Error[118]c:\pbp...asm 213 : Overwriting previous address contents (2007)
    Error[101]c:\pbp...asm 342 : ERROR: (wsave variable not found)
    Error[101]c:\pbp...asm 308 : ERROR: (" Add:" wsave VAR BYTE $20 SYSTEM)
    Error[101]c:\pbp...asm363 : ERROR: (Chip has RAM in BANK1, but WSAVE was not found)
    Error[101]c:\pbp...asm315 : :ERROR: (" Add:" wsave VAR BYTE $A0 SYSTEM)
    Error[128]c:\pbp...asm 989 : Missing argument(s)
    Error[101]c:\pbp...asm672 : ERROR: ("INT_Handler" - Interrupt Flag (FlagReg,FlagBit) not found)
    Error[128]c:\pbp...asm 1000 : Missing argument(s)
    Error[101]c:\pbp...asm 672 : ERROR: (INT_ENABLE" - Interrupt Flag ( FlagReg,FlagBit) not found)

Similar Threads

  1. Version Control
    By btaylor in forum mel PIC BASIC Pro
    Replies: 33
    Last Post: - 16th October 2011, 17:12
  2. Relaxation oscillators (for capacititive touch sensing)
    By HankMcSpank in forum mel PIC BASIC Pro
    Replies: 24
    Last Post: - 6th December 2009, 22:03
  3. mTouch capacitive sensing
    By jrprogrammer in forum mel PIC BASIC Pro
    Replies: 14
    Last Post: - 1st November 2008, 22:54
  4. Replies: 1
    Last Post: - 27th July 2008, 06:14
  5. Rf module
    By tangray in forum Adverts
    Replies: 0
    Last Post: - 7th August 2006, 07:14

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts