TTP224 Capacitive Touch switch Module 4 channel
โครงงานนี้เป็นการใช้งานโมดูลสวิตช์สัมผัส 4 ช่องด้วยไอซีควบคุม TTP224 (TTP224 Capacitive Touch switch Module 4 channel) ที่สามารถนำมาต่อใช้งานทั่วไปหรือต่อร่วมกับบอร์ดควบคุม Arduino ต่างๆ ได้เช่นกัน โดยในการทดลองโครงงานนนี้จะทดลองนำมาใช้งานแบบเดี่ยวๆ คือไม่ต่อร่วมกับบอร์ดควบคุมใดๆ และแบบต่อใช้งานร่วมกับบอร์ด Arduino UNO เพื่อประยุกต์ใช้งานในการปรับขนาดสัญญาณพัลซ์วิดมอดูเลตชั่น (PWM Signal) และการปรับความถี่ (Fpwm) นั้นเอง
Datasheet for TTP224 4 KEY TOUCH PAD DETECTOR
รูปที่ 1 และรูปที่ 2 แสดงบล็อกไดอะแกรมการทำงานภายในตัวไอซี TTP224 ของการเชื่อมโยงวงจรส่วนต่างๆ และในรูปที่ 2 เป็นลักษณะการต่อใช้งานไอซี TTP224 โดยรายละเอียดเพิ่มเติมของการกำหนดรูปแบบการทำงานดังแสดงในตารางรูปถัดไป
ในรูปที่ 3 ถึงรูปที่ 5 เป็นตารางการกำหนดการทำงานให้กับไอซี TTP224 ให้ทำงานในโหมดต่างๆ เกี่ยวกับ การกำหนดโหมดเอาต์พุต การกำหนดโหมดให้กับคีย์สวิตช์และการกำหนดช่วงเวลาทำงานให้กับคีย์สวิตช์ ซึ่งในโครงงานนี้จะยกมาเฉพาะส่วนที่สำคัญและยังมีตารางในการกำหนดอื่นๆ เพิ่มเติม โดยสามารถเข้าไปดูรายละเอียดได้ตามลิ้งก์เว็บไซต์อ้างอิงท้ายโครงงาน
ในรูปที่ 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
รูปที่ 9 และรูปที่ 10 เป็นการทดลองโมดูลสวิตช์สัมผัส 4 ช่องร่วมกับบอร์ด Arduino UNO ซึ่งเป็นการปรับความกว้างดิวตี้ไซเกิล (Duty Cycle) และปรับความถี่ให้กับสัญญาณพัลซ์วิดมอดูเลตชั่น ที่ตำแหน่งขา D9 และใช้ออสซิลโลสโคปวัดสัญญาณที่ได้ตามรูปถัดไป
สำหรับผลการทดลองการทำงานสามารถควบคุมการปรับความกว้างดิวตี้ไซเกิล (Duty Cycle) และปรับความถี่ให้กับสัญญาณพัลซ์วิดมอดูเลตชั่นได้เป็นปกติ และสำหรับโครงงานนี้เป็นการทดลองโมดูลสวิตช์สัมผัส 4 ช่องแบบง่าย ซึ่งเราสามารถนำไปต่อใช้งานได้หลายรูปแบบ นอกจากนี้ตัวโมดูลยังสามารถปรับโหมดการทำงานได้หลากหลาย เพื่อให้เหมาะสมกับการนำไปใช้งานต่างๆ ได้อีกด้วย สำหรับโครงงานการทดลองครั้งนี้ คงพอจะเป็นแนวทางเบื้องต้นให้ท่านสามารถนำไปพัฒนาร่วมกับวงจรอื่นๆ ได้ง่ายและรวดเร็วขึ้นต่อไป.
Reference
- https://www.instructables.com/TTP224-Module-Options/
- https://microcontrollerslab.com/ttp224-touch-ic-detector-pinout-arduino-interfacing-datasheet-applications/
- https://electropeak.com/learn/interfacing-ttp224-4-channel-capacitive-touch-sensor-module-with-arduino/
- https://www.elecrow.com/download/TTP224.pdf
- https://download.mikroe.com/documents/datasheets/ttp224.pdf
- https://www.youtube.com/watch?v=3_6g-FWzC0k