電容式觸摸感應按鍵的基本原理如圖所示,當人體接觸電極的時候,由于人體相當于一個接大地的電容,因此會在感應電極和大地方間形成一個電容CF,感應電容量通常有幾pF到幾十pF。利用這個最基本的原理,在外部搭建相關的電路,就可以根據這個電容量的變化,檢測是否有人體接觸電極。
觸控電容之原理 |
2.TTP229電路解析
(1)Pin腳說明:
OUT1~OUT8實際上是Touch PAD當中的9~16....不要被騙了
SDO、SCL是 I2C的接腳
VCC是+電壓輸入
GND是地線
TTP229電路板 |
在TP2尚未被焊接的時候,僅有Touch PAD當中的1~8被啟動,後面八個按鈕是不會動的。
經說明後,需要將上述下排,由左至右第二個JUMP短路後
才會從8Pin啟動為16Pin input。
TTP229電路板的Schematic圖形 |
3.Arduino Nano 與TTP229的第一類接觸
資料來源:http://forum.hobbycomponents.com/viewtopic.php?f=73&t=1781&hilit=hcmodu0079
TTP229 16按鈕與Arduino UNO串接 |
TTP229是I2C介面,因此在UNO當中
SCL Pin腳位為8
SDO Pin腳位為9
轉換到Nano當中的I2C介面
SCL Pin腳位為19
SDO Pin腳位為18
如果說要轉換成STM32F103C8T6,則需要將腳位改寫為
*For STM32F103C8T6 Minimum Development Board*SCL connected to PB8
*SDO connected to PB9
/*
Reading a TTP229 based capacitive touch Keyboard
to enable 16-Key Mode short TP2 with a 820kOhms (up to 1MOhms)
Resistor to GROUND or close Jumper 3 on TP229 Module
hardware required TTP229 Module with
*For Arduino Nano Virtual Pin
* SCL connected to 19
* SDO connected to 18
*For STM32F103C8T6 Minimum Development Board
*SCL connected to PB8
*SDO connected to PB9
Adopted by Hunt Hung
This example code is part of the public domain
*/
/* Define the digital pins used for the clock and data */
#define SCL_PIN 19
#define SDO_PIN 18
/* Used to store the key state */
byte Key;
void setup()
{
/* Initialise the serial interface */
Serial.begin(9600);
/* Configure the clock and data pins */
pinMode(SCL_PIN, OUTPUT);
pinMode(SDO_PIN, INPUT);
}
/* Main program */
void loop()
{
/* Read the current state of the keypad */
Key = Read_Keypad();
/* If a key has been pressed output it to the serial port */
if (Key)
Serial.println(Key);
/* Wait a little before reading again
so not to flood the serial port*/
delay(100);
}
/* Read the state of the keypad */
byte Read_Keypad(void)
{
byte Count;
byte Key_State = 0;
/* Pulse the clock pin 16 times (one for each key of the keypad)
and read the state of the data pin on each pulse */
for(Count = 1; Count <= 16; Count++)
{
digitalWrite(SCL_PIN, LOW);
/* If the data pin is low (active low mode) then store the
current key number */
if (!digitalRead(SDO_PIN))
Key_State = Count;
digitalWrite(SCL_PIN, HIGH);
}
return Key_State;
}
5.測試與改良當然上述的狀態是比較
實驗結果~若要外接額外的Pin腳,則資料會不斷的亂跳
6.閱讀TTP229 IC datasheet
通泰科技TTP229 IC Datasheet(英文完全版)
文中有說明到,若要修改對應鍵的靈敏度,則需要調整電容值。 CJ0~CJ3 和 CJWA~CJWB 的电容值可用于調節對應案件的靈敏度。电容值越小,靈敏度越高。灵敏度的调节必须是根据实际应用的 PCB 来做决定。电容值的取值范围是 1pF≦ CJ0~CJ3≦ 50pF ,1pF≦ CJW A~CJWB≦50pF。建议先通过调节 CJ0~CJ3 的容 值来调节 K0~K15 的灵敏度,再調節CJWA 和 CJWB 的容值来來調節喚醒靈敏度。
把IC對照PCBA Schematic來看,CJ0~CJ3= C1~C4,CJWA~CJWB=C5~C6,因此若要調整靈敏度,就要將C1~C4換成50pF,若再不行的話連C5~C6都要換成50pF
SMD 電容 |
因此在原本的電路板中,好像都是1pF的電容,因此要把他們全部都換成50pF的電容
再測試看看會不會比較穩定一點不會亂跳。
7.進階玩法:開啟TTP229之功能列
當系統可以啟動的時候,於是乎小編的友人繼續的來開啟相關隱藏功能
"有沒有可以多點觸控啊....."
於是乎再來不斷的survey相關的datasheet.....
由上述可以看到,TP3~TP4的狀態有無短路,代表的是多點觸控的開始........因此銲槍打開來繼續玩......(TP3與TP4均要短路)
沒有留言:
張貼留言