9

I'm working on a little project I call my "Green Box". Basically, I'm trying to drop my electric usage as low as possible, without losing the convenience of my gadgetry.

So far, I'm incorporating a passive IR sensor for motion detection, an ambient light sensor, and using [hopefully] a small SNMP subset to an ethernet shield to determine the state of activity. Based on these factors, I want to turn on/off various devices (PWM for fans speed of laptop cooler, IR to power on/off a few components, wireless X-10 for controlling lights), etc. I'll admit, I'm lazy; I could just do all of this myself, but with 6 kids running around, it's easy to forget to hit a power switch (let alone 5 or 6).

I have 2 Samsung monitors which have capacitive touch controls on the front. I would like to trigger these with the Arduino in the box to turn the monitors on/off, without having to rip them apart and hack them. I'm a perpetual upgrader, and I'd like to sell them in "like new" condition when I decide to.

So, from googling, I've found a few people mention that I could put a small metal plate over the sensor, and use a transistor to ground that plate to trigger the touch. I know nothing but theory of how capacitive touch works so:

This seems plausible to me; is it?

If so, can it be ANY gound (the one from the Arduino), or does it have to be the ground from the monitor?

Based on answers from the previous questions; could I run a single lead to a PNP transistors base and collector, and connect the emitter to the plate? Would this work?

Passerby
  • 72,580
  • 7
  • 90
  • 202
AC2MO
  • 231
  • 2
  • 4
  • 1
    Why not use X10 for the monitors? The AC-DC converters in the monitors will draw parasitic power that the X10 modules remove from the circuit, and that setup is far simpler than rigging up a capacitive actuator. Note: Intellectual curiosity or the challenge of the project are perfectly legitimate reasons. – Kevin Vermeer Sep 13 '11 at 17:09
  • 1
    @Kevin, First, curiosity and the challenge are major factors; in fact those are the original motivators for starting the project :) I had considered using the X-10 for the monitors, but I want to control them independently (1 for PS3, 1 for laptop, not always on at the same time), and that would have lead to a minimum of 3 X-10 modules of which I only have 1 on hand (using for my desk lamp). From reading the specs, when they're "off", they draw 0.Xw vs. 3.Xw in standby mode. I don't necessarily need zero, near-zero is fine :) – AC2MO Sep 13 '11 at 19:24
  • @Kevin, just re-read the comment and realised we both missed an important point; the X-10 modules also draw parasitic (vampire) power. I would wager it's around the same amount as the monitors, since they have to constantly "watch" the power line for signals, so there might be little/no benefit (efficiency wise) of doing it that way :) – AC2MO Sep 13 '11 at 19:40
  • I'm aware that the X-10 modules will draw parasitic power, but disagree with your wager. The most they'll ever have to do is change the state of an SSR or relay. The monitor power supply is designed to deliver 100W or more, the X10 should never need more than 1W. Efforts to reduce parasitic power draw in the X10 should be much easier and more effective than whatever the designers of the monitor were able to accomplish. – Kevin Vermeer Sep 13 '11 at 19:52
  • 1
    I'll up the ante a little (I like a challenge)... According to [This Page](http://davehouston.net/x10-power.htm), that guy actually used a Kill-A-Watt meter to measure the power consumption of the X-10 modules, which ranged from 0.4w to 1.4w; According to [Samsung](http://www.samsung.com/ae/consumer/computers-peripherals/monitors/lcd-monitor/LS24PUHKFV/ZN/index.idx?pagetype=prd_detail&tab=specification), my monitors draw "Under 0.3Watts Stand-by Power" :) I believe, just like an ATX power supply, they probably have a "stand-by" regulator to power an MCU to sense the touch to turn on/off. – AC2MO Sep 13 '11 at 20:04
  • 1
    Well, so much for my supposition. Thanks for bringing in some numbers to our discussion. You win one commment thread, thanks for playing. – Kevin Vermeer Sep 13 '11 at 20:37

4 Answers4

6

On how capacitative touch "works", have you had a chance to read through the CapSense library page on the Arduino Playground? It's a decent overview. The technique is typical - measure how long it takes to "charge" a metal plate up to some voltage through a known resistance and infer the capacitance from that time interval. There's also a very instructive lab exercise at Cornell's microcontrollers course website.

What are the physics going on here? When you bring your hand closer to the plate you are increasing capacitance (by narrowing the distance between "the plates") - see also wikipedia entry on capacitance. You kind of serve as the plate of the capacitor connected to GND. So yes in principle driving an actual plate to GND through a transistor could work. Furthermore, if your Arduino is plugged into the wall, you most likely don't need to worry about whether you're at "the same" GND, it will be close enough. You might have a slight issue if you're Arduino is battery or USB powered though.

As for the actual circuit. I would actually try just connecting an actual digital pin to the plate. When you want to simulate "no touch", turn the pin to an input (without internal pullups enabled). When you want to simulate "touch" turn the pin to an output set to LOW. The only reason for using a transistor is if you have a current demand that exceeds the rating of the pin (about 40mA I believe), and this case really doesn't qualify.

vicatcu
  • 22,499
  • 13
  • 79
  • 155
  • In the end, the Arduino will be line powered, BUT, I currently have an ATX power supply rigged to power all of my gadgets (eliminated 7 wall-warts and a lot of clutter), so it would be drawing power from that instead of a direct wall-wart. I've only been working with the Arduino for a short time, and was unaware you could disable the internal pull-ups, which is why I originally had the thought of the transistor. I'll connect a small plate directly to a pin later and give it a whirl and let you know how it goes! – AC2MO Sep 13 '11 at 19:34
  • Back to square 1. Unfortunately, I had no luck. The small sheet of copper alone triggered the "touch" as expected as I was taping it to the monitor. I tried using the Arduino ground, no luck. I read in a forum that it has to be the same ground as the sensor, so I tried using the chassis ground from a metal plate on the back of the monitor. Still no luck. Not quite sure what to try next... – AC2MO Sep 15 '11 at 01:13
  • Great, that actually works! :-) Thank you so much! – Thomas Sparber Mar 04 '20 at 10:15
3

This is easy. Use a relay to enable/disable a connection to another piece of metal (same ground as sensor, or any floating piece of metal may even work).

You can't use a transistor. Any semiconductor pin will trigger due to parasitic capacitances. You need the actual physical connect and disconnect of a relay.

Anton
  • 484
  • 5
  • 15
  • 1
    Bingo! That's it. "Parasitic Capacitance" wasn't even on my radar, but it explained what I was observing. I added a relay, and now it's totally working. Thanks. – jimhark Mar 23 '21 at 06:51
1

It doesn't make sense to me that you're taking current Acer stuff and trying to make it lower power; surely quiescent power is 20 milliwatts if not less? No fair just following the breakers with triac sense/controllers?

It seems simplest to splice into HDMI or whatever cables and switch VSYNC or another enable pin in or out.

Was a copper plate 50mm^2 (in wood chopsticks) triggering things by itself? The trick is that you'd tristate/float it (or otherwise present more than a megohm between it and anything) to make it insufficient to the cap sense electronics; it's not so much your finger as what it's attached to that impresses the sense circuit. By that measure some stainless mesh with a label might be handier....

1

I have had good experiences in similar situations using a piece of metal (copper foil or similar) covering the sensor with a wire running from the foil to a microcontroller pin.

How to optimally drive the metal conductor depends on the capacitive sensor and the algorithms used to detect a touch, but a good starting point would be to switch between driving the pin low/high and setting the pin to float (usually done by setting the pin as an input-pin with no pull-up or pull-down).

Another strategy that I have had success with is to output a pwm-signal to the pin, on some sensors this can be picked up as a touch.