TTP224 Capacitive Touch switch Module 4 channel

โครงงานนี้เป็นการใช้งานโมดูลสวิตช์สัมผัส 4 ช่องด้วยไอซีควบคุม TTP224 (TTP224 Capacitive Touch switch Module 4 channel) ที่สามารถนำมาต่อใช้งานทั่วไปหรือต่อร่วมกับบอร์ดควบคุม Arduino ต่างๆ ได้เช่นกัน โดยในการทดลองโครงงานนนี้จะทดลองนำมาใช้งานแบบเดี่ยวๆ คือไม่ต่อร่วมกับบอร์ดควบคุมใดๆ และแบบต่อใช้งานร่วมกับบอร์ด Arduino UNO เพื่อประยุกต์ใช้งานในการปรับขนาดสัญญาณพัลซ์วิดมอดูเลตชั่น (PWM Signal) และการปรับความถี่ (Fpwm) นั้นเอง

รูปที่ 1 แสดงบล็อกไดอะแกรมการทำงานภายในตัวไอซี TTP224 [Picture by Ref.5]

Datasheet for TTP224 4 KEY TOUCH PAD DETECTOR

รูปที่ 2 ลักษณะการต่อวงจรใช้งานให้กับไอซี TTP224 [Picture by Ref.5]

รูปที่ 1 และรูปที่ 2 แสดงบล็อกไดอะแกรมการทำงานภายในตัวไอซี TTP224 ของการเชื่อมโยงวงจรส่วนต่างๆ และในรูปที่ 2 เป็นลักษณะการต่อใช้งานไอซี TTP224 โดยรายละเอียดเพิ่มเติมของการกำหนดรูปแบบการทำงานดังแสดงในตารางรูปถัดไป

รูปที่ 3 แสดงตารางการกำหนดโหมดเอาต์พุตให้กับไอซี TTP224 [Picture by Ref.5]
รูปที่ 4 แสดงตารางการกำหนดโหมดให้กับคีย์สวิตช์กับไอซี TTP224 [Picture by Ref.5]
รูปที่ 5 แสดงตารางการกำหนดช่วงเวลาทำงานให้กับคีย์สวิตช์กับไอซี TTP224 [Picture by Ref.5]

ในรูปที่ 3 ถึงรูปที่ 5 เป็นตารางการกำหนดการทำงานให้กับไอซี TTP224 ให้ทำงานในโหมดต่างๆ เกี่ยวกับ การกำหนดโหมดเอาต์พุต การกำหนดโหมดให้กับคีย์สวิตช์และการกำหนดช่วงเวลาทำงานให้กับคีย์สวิตช์ ซึ่งในโครงงานนี้จะยกมาเฉพาะส่วนที่สำคัญและยังมีตารางในการกำหนดอื่นๆ เพิ่มเติม โดยสามารถเข้าไปดูรายละเอียดได้ตามลิ้งก์เว็บไซต์อ้างอิงท้ายโครงงาน

TTP224 Capacitive Touch switch Module 4 channel
รูปที่ 6 การต่อวงจรต่อใช้งานโมดูลสวิตช์สัมผัส 4 ช่องแบบเดี่ยวอย่างง่าย
TTP224 Capacitive Touch switch Module 4 channel
รูปที่ 7 การต่อวงจรให้กับโมดูลสวิตช์สัมผัส 4 ช่องแบบเดี่ยว
TTP224 Capacitive Touch switch Module 4 channel
รูปที่ 8 ผลการทดลองเมื่อใช้โมดูลสวิตช์สัมผัส 4 ช่องแบบเดี่ยว

ในรูปที่ 6 ถึงรูปที่ 8 เป็นการทดลองโมดูลสวิตช์สัมผัส 4 ช่องแบบเดี่ยว ด้วยการนำโมดูลมาต่อเข้ากับวงจรที่ออกแบบเพิ่มเติมตามในรูปที่ 6 เพื่อให้วงจรสามารถล็อกการทำงานค้างได้ ซึ่งเดิมสัญญาณเอาต์พุต (OUT1, OUT2) ที่ได้จากโมดูลสวิตช์จะเป็นกดติดและปล่อยดับ คือเมื่อเรากด SW1 แอลอีดีสีเขียวในรูปที่ 8 จะติดค้างและเมื่อเรากด SW2 แอลอีดีก็จะดับลงนั้นเอง

/*
   Arduino UNO Control TTP224 Capacitive Touch switch Module 4 channel  
   R&D By : www.electronicsDNA.com         
 */

#include <PWM.h>

int PWMpin = 9;    // pin PWM Driver Signal
int PWMsignal = 128; 
int frequency = 5000;

void setup()
{
  pinMode(2, INPUT);      //  SW1 for Low frequency
  pinMode(3, INPUT);      //  SW2 for High frequency 
  pinMode(4, INPUT);      //  SW3 for High Duty cycle PWM Signal 
  pinMode(5, INPUT);      //  SW4 for Low Duty cycle PWM Signal 
  pinMode(9, OUTPUT);   //  OUT PUT PWM Signal 
  
  //initialize all timers except for 0, to save time keeping functions
  InitTimersSafe();  
  Serial.begin(9600);   
  //sets the frequency for the specified pin
  bool success = SetPinFrequencySafe(PWMpin,frequency);  
  pwmWrite(PWMpin,PWMsignal);  
  
  if(success) {
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);   
    delay(300);  
    digitalWrite(13, LOW);  
    delay(300); 
  }       
 }
 
void loop()
{ 

  int buttonState2 = digitalRead(2);   //  SW1 for Low frequency 
  if (buttonState2 == 1) {    
     frequency = frequency+100; 
     if (frequency>10000) 
        {
         frequency = 10000;   
        }  
               
     bool success = SetPinFrequencySafe(PWMpin,frequency);          
     pwmWrite(PWMpin,PWMsignal);  
     delay(100); 
     }
     
  int buttonState3 = digitalRead(3);   //  SW2 for High frequency 
  if (buttonState3 == 1) {    
     frequency = frequency-100; 
      
     if (frequency<1000)  
        {
         frequency = 1000;   
        }   
     bool success = SetPinFrequencySafe(PWMpin,frequency);          
     pwmWrite(PWMpin,PWMsignal);  
     delay(100);     
     } 

  int buttonState4 = digitalRead(4);   //  SW3 for High Duty cycle PWM Signal 
  if (buttonState4 == 1) {    
     PWMsignal = PWMsignal+1; 
      
     if (PWMsignal>255)  
        {
         PWMsignal = 255;   
        }   
     bool success = SetPinFrequencySafe(PWMpin,frequency);          
     pwmWrite(PWMpin,PWMsignal);  
     delay(10);     
     } 

  int buttonState5 = digitalRead(5);    //  SW4 for Low Duty cycle PWM Signal 
  if (buttonState5 == 1) {    
     PWMsignal = PWMsignal-1;
      
     if (PWMsignal<2)  
        {
         PWMsignal = 1;   
        }   
     bool success = SetPinFrequencySafe(PWMpin,frequency);          
     pwmWrite(PWMpin,PWMsignal);  
     delay(10);     
     } 
} 

โปรแกรมข้างบนสำหรับการต่อใช้งานโมดูลสวิตช์ร่วมกับบอร์ด Arduino UNO เพื่อปรับขนาดสัญญาณพัลซ์วิดมอดูเลตชั่นและการปรับความถี่ ด้วยการรับสัญญาณ SW1-SW4 เข้ามายังขาอินพุต D2-D4 โดย SW1และ SW2 ทำหน้าที่ปรับความถี่ส่วน SW3 และ SW4 ทำหน้าที่ปรับขนาดความกว้างสัญญาณพัลซ์วิดมอดูเลตชั่น จากนั้นให้สัญญาณพัลซ์วิดมอดูเลตชั่นจ่ายออกมาที่ขา D9 นั้นเอง

Download Arduino Library —> PWM.h

TTP224 Capacitive Touch switch Module 4 channel
รูปที่ 9 การต่อใช้งานโมดูลสวิตช์สัมผัส 4 ช่องร่วมกับบอร์ดควบคุม Arduino UNO
TTP224 Capacitive Touch switch Module 4 channel
รูปที่ 10 ลักษณะการทดลองโมดูลสวิตช์สัมผัส 4 ช่องร่วมกับบอร์ด Arduino UNO

รูปที่ 9 และรูปที่ 10 เป็นการทดลองโมดูลสวิตช์สัมผัส 4 ช่องร่วมกับบอร์ด Arduino UNO ซึ่งเป็นการปรับความกว้างดิวตี้ไซเกิล (Duty Cycle) และปรับความถี่ให้กับสัญญาณพัลซ์วิดมอดูเลตชั่น ที่ตำแหน่งขา D9 และใช้ออสซิลโลสโคปวัดสัญญาณที่ได้ตามรูปถัดไป

TTP224 Capacitive Touch switch Module 4 channel
รูปที่ 11 ผลการทดลองปรับความกว้างและปรับความถี่ให้กับสัญญาณพัลซ์วิดมอดูเลตชั่น
TTP224 Capacitive Touch switch Module 4 channel
รูปที่ 12 ลักษณะการทดลองโมดูลสวิตช์สัมผัส 4 ช่องร่วมกับบอร์ด Arduino UNO

สำหรับผลการทดลองการทำงานสามารถควบคุมการปรับความกว้างดิวตี้ไซเกิล (Duty Cycle) และปรับความถี่ให้กับสัญญาณพัลซ์วิดมอดูเลตชั่นได้เป็นปกติ และสำหรับโครงงานนี้เป็นการทดลองโมดูลสวิตช์สัมผัส 4 ช่องแบบง่าย ซึ่งเราสามารถนำไปต่อใช้งานได้หลายรูปแบบ นอกจากนี้ตัวโมดูลยังสามารถปรับโหมดการทำงานได้หลากหลาย เพื่อให้เหมาะสมกับการนำไปใช้งานต่างๆ ได้อีกด้วย สำหรับโครงงานการทดลองครั้งนี้ คงพอจะเป็นแนวทางเบื้องต้นให้ท่านสามารถนำไปพัฒนาร่วมกับวงจรอื่นๆ ได้ง่ายและรวดเร็วขึ้นต่อไป.

Reference

  1. https://www.instructables.com/TTP224-Module-Options/
  2. https://microcontrollerslab.com/ttp224-touch-ic-detector-pinout-arduino-interfacing-datasheet-applications/
  3. https://electropeak.com/learn/interfacing-ttp224-4-channel-capacitive-touch-sensor-module-with-arduino/
  4. https://www.elecrow.com/download/TTP224.pdf
  5. https://download.mikroe.com/documents/datasheets/ttp224.pdf
  6. https://www.youtube.com/watch?v=3_6g-FWzC0k