2017年4月19日 星期三

Arduino筆記 Lesson 4-與外部溝通第一步-TTP229 16 pin電容式按鈕

1.電容式按鈕原理

電容式觸摸感應按鍵的基本原理如圖所示,當人體接觸電極的時候,由于人體相當于一個接大地的電容,因此會在感應電極和大地方間形成一個電容CF,感應電容量通常有幾pF到幾十pF。利用這個最基本的原理,在外部搭建相關的電路,就可以根據這個電容量的變化,檢測是否有人體接觸電極。


觸控電容之原理
資料來源:http://www.digitimes.com.tw/tw/dt/n/shwnws.asp?CnlID=13&id=0000262383_JHD2DGH79LV7CB2GE8M28&ct=1&OneNewsPage=2&Page=1


2.TTP229電路解析
(1)Pin腳說明:
OUT1~OUT8實際上是Touch PAD當中的9~16....不要被騙了
SDO、SCL是 I2C的接腳
VCC是+電壓輸入
GND是地線

TTP229電路板
(2)啟動16Pin
在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



4.程式碼撰寫
/*
  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均要短路)




沒有留言:

張貼留言

零下世界-電子電路的狀態

我們分為幾個地方進行討論:在單晶片系統當中,包含了幾個元件 1.MCU 2.晶體震盪器 3.電池 下面就各個元件的狀態來說明零下的時候各個元件效應 1.MCU的工作狀態:資料來源, STM32F103 Datasheet The devices operate f...