I am working on a project where I take over the control of a Nintendo 3DS Touch Screen. The touch screen is a 4 pin system.

I have it all wired up and working, however I cannot get the screen to simulate the click anywhere outside of the 1,1 coordinate.

I am using an Arduino Mega2560 which does NOT have a real DAC. I did try adding a simple low pass filter to the circuit but saw no difference. (low pass is 0.1uf capacitor with 100 ohm resistor).

I am using 2 PWM pins for X+ and Y+ input and 1 Analog pin for sensing Y+.

The documentation here: (https://github.com/dekuNukem/3xtDS/blob/master/overview.pdf) Code here: (https://github.com/dekuNukem/3xtDS/blob/master/tp3ds.cpp)

Page 7 of the documentation shows how the timing works. In the example they are using a Teensy 3.1 with real DAC "since the touch screen requires really fast response".

  • Is my issue not having a real DAC?
  • Maybe my low pass filter is wrong?

enter image description here

  • \$\begingroup\$ Circuit diagrams for your implementation? \$\endgroup\$ – Scott Seidman Sep 29 '15 at 16:08
  • \$\begingroup\$ A 100 Ohm resistor on a 100nF capacitor as low pass? That is, in the scheme of AVR-PWM, not at all very low. 100 * 1 * 10^-7 = 1*10^-5 s => 100kHz, based on RC-time. Other than that, see @ScottSeidman 's request. \$\endgroup\$ – Asmyldof Sep 29 '15 at 16:10
  • \$\begingroup\$ Yes the issue is the touchscreen Y does require a DAC not a slow PWM, look at the scope shot in the article. Problem with filtering PWM is the settling time will be too slow to drive the touchscreen controller. \$\endgroup\$ – MarkU Sep 29 '15 at 19:04
  • \$\begingroup\$ I am new to electronics so please excuse my schematic as I am not yet able to draw diagrams with Eagle. Link to image below: drive.google.com/file/d/0B40GI33FTALtU3R2YXFqVkd1SWM/… Please let me know if this makes it clearer. \$\endgroup\$ – Bumbleparrot Sep 29 '15 at 19:18
  • \$\begingroup\$ If DAC is the issue, would this solve it? sparkfun.com/products/12918 \$\endgroup\$ – Bumbleparrot Sep 29 '15 at 22:29

It seems you have two problems. The first is that the low pass filter. The 1k resistor is out of place. The micro is able to charge the capacitor though the 100 ohm but when micro swings low it just discharges it though the 100 ohm faster then through the 1k to the level shifter.

The second problem is the level shifter. Unless it is a special linear kind they normally only do digital outputs. The low pass filter on the input to a digital level shifter is pointless and can cause problems with the level shifter. Try placing the low pass filter between the screen and level shifter.

| improve this answer | |
  • \$\begingroup\$ The level shifter I am using is this one from Sparkfun. Based on the TXB0104. Is this still an issue? It seems to work fine for all the other things wired into it. (The 3ds analog joystick). sparkfun.com/products/11771 \$\endgroup\$ – Bumbleparrot Sep 29 '15 at 22:14
  • \$\begingroup\$ @MichaelVo The level shifter may definitely be a problem. With the bidirectional kind that you are using it's very hard to tell. What complicates the problem even more is that this level shifter is specifically a weak driver. \$\endgroup\$ – vini_i Sep 30 '15 at 10:00
  • \$\begingroup\$ I will try using a direct connection without a filter or level shifter and see what happens! \$\endgroup\$ – Bumbleparrot Sep 30 '15 at 18:09
  • \$\begingroup\$ Trying without the filter and without the level shifter made no difference. I think I need a true DAC. \$\endgroup\$ – Bumbleparrot Oct 9 '15 at 2:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.