[HN Gopher] A generic VHDL touch controller - add capacitive but...
       ___________________________________________________________________
        
       A generic VHDL touch controller - add capacitive buttons to any
       FPGA
        
       Author : _quarks_
       Score  : 66 points
       Date   : 2021-10-16 09:46 UTC (13 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | amelius wrote:
       | Does this work for portable devices? If the device is moved
       | around wouldn't C_base change?
        
         | [deleted]
        
         | kurthr wrote:
         | Yes (usually temperature drift is a bigger issue), generally
         | there is some (moderately complex) low pass filter that
         | maintains a relatively stable baseline and recovers gracefully
         | (no false positive, minimal false negative) from
         | noise/moisture/thermal and other adverse events.
         | 
         | One interesting case is buttons in your pocket or face down on
         | a desk. This is made more complex when low power requirements
         | are made (e.g. lower sampling rate). A second is breathing on a
         | very cold device. There are guarding methods that reduce the
         | effect of moisture, but they may also run into IP challenges.
        
           | amelius wrote:
           | How can you maintain a baseline for C_base if somebody keeps
           | touching the pad while moving?
        
       | reedjosh wrote:
       | I love VHDL!!!
        
       | spicybright wrote:
       | I'm confused. Is this a system to be able to add buttons to
       | FPGA's through their logic gate sort of system? Do you plug the
       | buttons into a particular "slot" or something?
        
         | 8note wrote:
         | This is a library you run on your FPGA.
         | 
         | When you are making a circuit board, you can make a big pad of
         | exposed copper and connect it to one of the I/O pins on the
         | chip.
         | 
         | You can then use that pad as a button, instead of buying a
         | button and soldering it to the board
        
           | exmadscientist wrote:
           | But don't do this unless you have to, since a button is a
           | hundred times more reliable and easier to use. (Buttons
           | actually provide tactile feedback, for one....)
        
       | kurthr wrote:
       | Unfortunately, this RC rise time method has quite a number of
       | issues with interference (which is quite common, if you have a
       | switching charger attached or a GSM cell phone nearby). Some form
       | of demodulation (or even dual slope conversion) will greatly
       | improve real world performance. A wide variety of algorithms are
       | also required to minimize false activation and "stuck" buttons in
       | the presence of noise/moisture.
       | 
       | I would recommend that those looking for good solutions for
       | capacitive buttons search the literature. There are quite a few
       | articles from ~2000 (and patents expiring) that describe
       | unencumbered IO based methods of sensing... although many require
       | more than one IO per sensor or some method of multiplexing.
       | 
       | This expired (2019) patent comes to mind:
       | https://patentimages.storage.googleapis.com/52/dc/c3/005f65c...
       | 
       | In full disclosure, I'm listed on other capacitive sensing
       | patents, but many do not expire for several more years.
        
         | RicoElectrico wrote:
         | It seems that the best method to use with non-specialized GPIO
         | is the charge transfer. Instead of using a resistor, charge a
         | sampling capacitor.
         | 
         | The presentation below deals with a specialized block, but the
         | only major change is using hardware for cycle counting and
         | multiplexing a single sampling capacitor.
         | 
         | https://www.st.com/content/ccc/resource/training/technical/p...
        
           | kurthr wrote:
           | Charge sampling is nice because it effectively puts a (leaky)
           | integrator into the measurement narrowing the band. It looks
           | like the ST solution requires an internal mux to share the
           | storage/sampling cap, which may be present in your micro-
           | controller/FPGA, but isn't quite so standard. The cited
           | patent (above) actually shows how to reuse IOs to get a pair
           | of sensors on a pair of IOs (and a shared component cap),
           | which is fairly efficient for charge transfer.
           | 
           | However, be careful of IP... I can only really recommend
           | OpenSource implementations that read directly on out of
           | coverage patents. There are even sigma-delta and other
           | relatively narrow-band IO based solutions, but they may carry
           | IP risk.
        
             | RicoElectrico wrote:
             | I was about to link Atmel QTouch, they do the same thing
             | with plain vanilla GPIO, but annoyingly do not provide the
             | exact sequence of operations as ST presentation does. But
             | they seem to be equivalent.
             | 
             | This chip on the diagram is ATTiny in disguise - just
             | rearrange the cap and no special hardware needed:
             | https://eu.mouser.com/new/microchip/atmel_qtouch/
        
       ___________________________________________________________________
       (page generated 2021-10-16 23:00 UTC)