Controlling Light using Touch Sensor and 8051 Microcontroller - Điều khiển ánh sáng bằng Cảm biến cảm ứng và Vi điều khiển 8051
Circuit Diagram
Materials Required
- AT89S52 8051 Microcontroller
- Standard Cubic Relay - 5V
- 11.592 MHz Crystal
- 33pF capacitors - 2pcs
- 2k resistor -1 pc
- 4.7k resistor - 1 pc
- 10uF capacitor
- BC549B transistor
- TTP223 Sensor
- 1N4007 Diode
- Light Bulb With Bulb Holder
- A breadboard
- 5V power supply, A phone charger can work.
- Lots of jumper wires or berg wires.
- AT89S52 programming environment with Programmer Kit and IDE with compiler
Transistor được sử dụng để bật hoặc tắt Rơle. Bộ cảm ứng được kết nối với bộ vi điều khiển AT89S52. Mạch được xây dựng bằng breadboard.
Programming Atmega AT89S52 Microcontroller
Mã 8051 hoàn chỉnh được đưa ra ở cuối. Ở đây chúng tôi đang giải thích một số phần của mã. Nếu bạn chưa quen với vi điều khiển 8051 thì trước tiên hãy học cách lập trình vi điều khiển 8051.
Các dòng mã dưới đây được sử dụng để tích hợp Relay và Touch Sensor với Vi điều khiển 8051. REGX52 là tệp tiêu đề cho bộ vi điều khiển AT89S52. Một hàm trì hoãn cũng được khai báo.
#include<REGX52.h> // RELAY Pin sbit RELAY = P1^0; // Pin P1.0 is named as RELAY // Touch Sensor Pin sbit Touch = P1^1; // Pin P1.1 is named as Touch Sensor //Function declarations void delay(char ms);
Cảm ứng và rơ le được khởi tạo bằng 0. Cảm biến cảm ứng thay đổi logic 0 thành 1. Nếu tuyên bố là đúng khi cảm biến cảm ứng được kích hoạt và do đó, trạng thái của Rơle sẽ thay đổi. Tuy nhiên, để phát hiện cảm ứng một cách chính xác, một độ trễ gỡ lỗi được sử dụng.
// Main function void main(void) { RELAY = 0; Touch = 0; while(1){ if (Touch == 1){ delay(15); // debounce delay if (Touch == 1){ RELAY = !RELAY; // Toggle RELAY pin delay(30); } } } }
Dưới đây, hàm trì hoãn được viết. Hàm nhận đầu vào ở định dạng mili giây và tạo ra độ trễ bằng cách sử dụng hai vòng lặp for. Độ trễ này không chính xác nhiều nhưng có thể chấp nhận được và nó chủ yếu phụ thuộc vào thời gian của chu kỳ đồng hồ.
/*Delay related Function*/ void delay(char ms){ int a,b; for (a=0; a<1295; a++){ for (b=0; b<ms; b++); } }
Mạch Đèn điều khiển bằng cảm ứng này được thử nghiệm trên bảng mạch với bóng đèn công suất thấp được kết nối với nó. Bản phác thảo hoàn chỉnh với video trình diễn được đính kèm bên dưới.