- Capacitive Touch Sensor คืออะไร?
- วัสดุที่จำเป็น
- แผนภูมิวงจรรวม
- การเขียนโปรแกรมไมโครคอนโทรลเลอร์ Atmega AT89S52
ในโลกอิเล็กทรอนิกส์สมัยใหม่มีการใช้อินพุตแบบสัมผัสเกือบทุกที่ไม่ว่าจะเป็นโทรศัพท์มือถือหรือสวิตช์จอภาพ LCD Capacitive touch เป็นส่วนที่ใช้กันอย่างแพร่หลายในส่วนของเซ็นเซอร์สัมผัสและก่อนหน้านี้เราเคยใช้ capacitive touch กับ Raspberry Pi ที่นี่ในโครงการนี้เราจะติดต่อเซ็นเซอร์สัมผัสกับ 8051 AT89S52 หากคุณยังใหม่กับไมโครคอนโทรลเลอร์ 8051 คุณสามารถเริ่มด้วย LED กะพริบด้วย 8051
Capacitive Touch Sensor คืออะไร?
Capacitive touchทำงานกับประจุไฟฟ้าสถิตที่มีอยู่ในร่างกายของเรา หน้าจอถูกชาร์จด้วยสนามไฟฟ้าแล้ว เมื่อเราสัมผัสหน้าจอวงจรปิดจะเกิดขึ้นเนื่องจากประจุไฟฟ้าสถิตที่ไหลผ่านร่างกายของเรา นอกจากนี้ซอฟแวร์ตัดสินใจที่สถานที่ตั้งและการกระทำที่จะดำเนินการหน้าจอสัมผัสแบบ Capacitive จะใช้กับถุงมือมือไม่ได้เนื่องจากจะไม่มีการนำระหว่างนิ้วและหน้าจอ
Touch Sensor ที่ใช้ในโครงการนี้
เซ็นเซอร์สัมผัสที่ใช้ในโครงการนี้เป็นโมดูลเซ็นเซอร์สัมผัสแบบ capacitiveและไดรเวอร์เซ็นเซอร์จะขึ้นอยู่กับ IC ไดรเวอร์ TTP223 แรงดันไฟฟ้าในการทำงานของIC TTP23 คือ 2.0V ถึง 5.5Vและการใช้เซ็นเซอร์สัมผัสในปัจจุบันต่ำมาก เนื่องจากราคาไม่แพงใช้กระแสไฟต่ำและง่ายต่อการรวมการสนับสนุนเซ็นเซอร์สัมผัสกับ TTP223 จึงได้รับความนิยมอย่างกว้างขวางในกลุ่มนี้
ในภาพด้านบนเซ็นเซอร์ทั้งสองด้านจะแสดงโดยที่สามารถมองเห็นแผนภาพพินเอาต์ได้อย่างชัดเจน นอกจากนี้ยังมีจัมเปอร์บัดกรีซึ่งสามารถใช้เพื่อกำหนดค่าเซ็นเซอร์ใหม่ในส่วนที่เกี่ยวกับเอาต์พุต จัมเปอร์คือ A และ B การกำหนดค่าเริ่มต้นหรือในสถานะเริ่มต้นของจัมเปอร์บัดกรีเอาต์พุตจะเปลี่ยนจากต่ำไปสูงเมื่อสัมผัสเซ็นเซอร์ อย่างไรก็ตามเมื่อตั้งจัมเปอร์และกำหนดค่าเซ็นเซอร์ใหม่เอาต์พุตจะเปลี่ยนสถานะเมื่อเซ็นเซอร์สัมผัสตรวจจับการสัมผัส นอกจากนี้ยังสามารถกำหนดค่าความไวของเซ็นเซอร์สัมผัสได้โดยการเปลี่ยนตัวเก็บประจุ สำหรับข้อมูลโดยละเอียดแผ่นข้อมูลของ TTP 223มีประโยชน์มาก
ด้านล่างแผนภูมิแสดงผลลัพธ์ที่แตกต่างกันที่การตั้งค่าจัมเปอร์ที่แตกต่างกัน -
จัมเปอร์ A | จัมเปอร์ B |
สถานะล็อคเอาต์พุต |
เอาต์พุตระดับ TTL |
เปิด | เปิด |
ไม่มีล็อค |
สูง |
เปิด | ปิด |
ล็อคตัวเอง |
สูง |
ปิด | เปิด |
ไม่ล็อค |
ต่ำ |
ปิด | ปิด |
ล็อคตัวเอง |
ต่ำ |
สำหรับโปรเจ็กต์นี้เซ็นเซอร์จะถูกใช้ในการกำหนดค่าเริ่มต้นซึ่งมีอยู่ในเงื่อนไขการเปิดตัวจากโรงงาน ในโครงการนี้จะใช้เซ็นเซอร์สัมผัสเพื่อควบคุมหลอดไฟ AC โดยใช้ไมโครคอนโทรลเลอร์ AT89S52
รีเลย์เชื่อมต่อกับไมโครคอนโทรลเลอร์ 8051 Pinout ของรีเลย์สามารถมองเห็นได้ในภาพด้านล่าง -
NO เปิดตามปกติและเชื่อมต่อ NC ตามปกติ L1 และ L2 เป็นขั้วสองขั้วของคอยล์รีเลย์ เมื่อไม่ใช้แรงดันไฟฟ้ารีเลย์จะถูกปิดและ POLE จะเชื่อมต่อกับขา NC เมื่อแรงดันไฟฟ้าถูกนำไปใช้กับขั้วขดลวด L1 และ L2 ของรีเลย์จะเปิดขึ้นและ POLE จะเชื่อมต่อกับ NO ดังนั้นการเชื่อมต่อระหว่าง POLE และ NO สามารถเปิดหรือปิดได้โดยเปลี่ยนสถานะการทำงานของรีเลย์
วัสดุที่จำเป็น
- ไมโครคอนโทรลเลอร์ AT89S52 8051
- มาตรฐานคิวบิกรีเลย์ - 5V
- 11.592 MHz คริสตัล
- ตัวเก็บประจุ 33pF - 2 ชิ้น
- ตัวต้านทาน 2k -1 ชิ้น
- ตัวต้านทาน 4.7k - 1 ชิ้น
- ตัวเก็บประจุ 10uF
- BC549B ทรานซิสเตอร์
- TTP223 เซนเซอร์
- 1N4007 ไดโอด
- หลอดไฟพร้อมที่ใส่หลอดไฟ
- เขียงหั่นขนม
- แหล่งจ่ายไฟ 5V เครื่องชาร์จโทรศัพท์สามารถทำงานได้
- สายจัมเปอร์หรือสายไฟจำนวนมาก
- สภาพแวดล้อมการเขียนโปรแกรม AT89S52 พร้อม Programmer Kit และ IDE พร้อมคอมไพเลอร์
แผนภูมิวงจรรวม
แผนผังสำหรับการควบคุมแสงโดยใช้เซ็นเซอร์สัมผัสและ 8051 แสดงไว้ด้านล่างภาพ
ทรานซิสเตอร์ใช้เพื่อเปิดหรือปิดรีเลย์ เซ็นเซอร์สัมผัสเชื่อมต่อกับหน่วยไมโครคอนโทรลเลอร์ AT89S52 วงจรถูกสร้างขึ้นโดยใช้เขียงหั่นขนม
การเขียนโปรแกรมไมโครคอนโทรลเลอร์ Atmega AT89S52
รหัส 8051 ที่สมบูรณ์จะได้รับในตอนท้าย เรากำลังอธิบายบางส่วนของโค้ด หากคุณยังใหม่กับไมโครคอนโทรลเลอร์ 8051 ก่อนอื่นให้เรียนรู้ วิธีการเขียนโปรแกรมไมโครคอนโทรลเลอร์ 8051เส้นโค้ดด้านล่างนี้จะใช้สำหรับการบูรณาการการถ่ายทอดและเซนเซอร์แบบสัมผัสกับ 8051 ไมโครคอนโทรลเลอร์ REGX52 เป็นไฟล์ส่วนหัวสำหรับหน่วยไมโครคอนโทรลเลอร์ AT89S52 นอกจากนี้ยังมีการประกาศฟังก์ชันหน่วงเวลา
# รวม
ระบบสัมผัสและรีเลย์เริ่มต้นเป็น 0 เซ็นเซอร์สัมผัสจะเปลี่ยนลอจิก 0 เป็น 1 หากข้อความเป็นจริงเมื่อเซ็นเซอร์สัมผัสถูกเปิดใช้งานและด้วยเหตุนี้สถานะของรีเลย์จะเปลี่ยนไป อย่างไรก็ตามในการตรวจจับการสัมผัสอย่างแม่นยำจะใช้การหน่วงเวลาดีบัก
// ฟังก์ชันหลัก เป็นโมฆะ main (โมฆะ) { RELAY = 0; แตะ = 0; ในขณะที่ (1) { if (Touch == 1) { delay (15); // debounce delay ถ้า (Touch == 1) { RELAY =! RELAY; // สลับ ความล่าช้าของ ขา RELAY (30); } } } }
ด้านล่างมีการเขียนฟังก์ชันการหน่วงเวลา ฟังก์ชันนี้รับอินพุตในรูปแบบมิลลิวินาทีและสร้างการหน่วงเวลาโดยใช้สองค่า สำหรับ ลูป การหน่วงเวลานี้ไม่แม่นยำมากนัก แต่ยอมรับได้และส่วนใหญ่ขึ้นอยู่กับเวลาของวงจรนาฬิกา
/ * ฟังก์ชันที่เกี่ยวข้องกับการหน่วงเวลา * / ความล่าช้าเป็นโมฆะ (ถ่าน ms) {int a, b; สำหรับ (a = 0; a <1295; a ++) {สำหรับ (b = 0; b
นี้สัมผัสควบคุมวงจรไฟมีการทดสอบบนเขียงหั่นขนมที่มีหลอดไฟพลังงานต่ำเชื่อมต่อกับมัน ร่างที่สมบูรณ์แบบด้วยวิดีโอสาธิตที่แนบมาด้านล่าง คุณสามารถตรวจสอบโครงการระบบอัตโนมัติในบ้านเพิ่มเติมได้ที่นี่