Giới thiệu Volume xoay rotary encoder 360 độ
Mạch Volume xoay Rotary Encoder 360 độ không giới hạn số vòng quay, encoder đưa ra 2 xung vuông 90 độ gọi là 2 phase A và B, xung từ encoder đưa ra có thể dùng để nhận biết chiều quay, tốc độ quay, vị trí, module cung cấp 2 ngõ ra cho 2 phase và 1 ngõ ra dạng nút nhấn.
Encoder module KY-040 trông giống 1 module biến trở nhưng có ngõ ra dạng xung số. Bằng việc xoay núm vặn, ngõ ra xung của 2 kênh sẽ thay đổi với 1 độ lệch pha xác định (90 độ) giúp phân biệt được chiều xoay.
Đếm số lượng xung ngõ ra sẽ cho biết vị trí góc xoay, vị trí này là không giới hạn. Đồng thời module cũng cung cấp 1 nút nhấn có thể được lập trình để trở thành 1 nút reset giá trị đếm.

Sơ đồ nguyên lý và chức năng chân
- Chân cấp nguồn 3~5VDC
- GND: chân cấp nguồn âm 0VDC
- CLK: phase A
- DT: phase B
- SW: button

Sơ đồ dạng sóng volume xoay rotary encoder

Thông số kỹ thuật
- Điện áp hoạt động : 5V
- Dòng điện hoạt động : 20mA
- Công suất hoạt động : 100mW
- Chuẩn truyền : dạng xung vuông
- Độ phân giải : 20xung/vòng
- Nhiệt độ hoạt động : -40°C – 150°C
- Số chân : 5
- Số nút : 1
- Loại : Module
- Quét tích cực : Do người thiết kế
- Kích thước : 87mm*70mm*20mm
Chương trình Test
Nguyên lý kết nối

Chương trình
Thư viện : Tại đây ButtonFever.h hoặc tải trực tiếp từ Arduino IDE
#include <BfButton.h>
int btnPin=3; //GPIO #3-Push button on encoder
int DT=4; //GPIO #4-DT on encoder (Output B)
int CLK=5; //GPIO #5-CLK on encoder (Output A)
BfButton btn(BfButton::STANDALONE_DIGITAL, btnPin, true, LOW);
int counter = 0;
int angle = 0;
int aState;
int aLastState;
//Button press hanlding function
void pressHandler (BfButton *btn, BfButton::press_pattern_t pattern) {
switch (pattern) {
case BfButton::SINGLE_PRESS:
Serial.println("Single push");
break;
case BfButton::DOUBLE_PRESS:
Serial.println("Double push");
break;
case BfButton::LONG_PRESS:
Serial.println("Long push");
break;
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println(angle);
pinMode(CLK,INPUT_PULLUP);
pinMode(DT,INPUT_PULLUP);
aLastState = digitalRead(CLK);
//Button settings
btn.onPress(pressHandler)
.onDoublePress(pressHandler) // default timeout
.onPressFor(pressHandler, 1000); // custom timeout for 1 second
}
void loop() {
// put your main code here, to run repeatedly:
//Wait for button press to execute commands
btn.read();
aState = digitalRead(CLK);
//Encoder rotation tracking
if (aState != aLastState){
if (digitalRead(DT) != aState) {
counter ++;
angle ++;
}
else {
counter--;
angle --;
}
if (counter >=100 ) {
counter =100;
}
if (counter <=-100 ) {
counter =-100;
}
Serial.println(counter);
}
aLastState = aState;
}
Liên hệ làm mạch
- Phone: 0967.551.477
- Zalo: 0967.551.477
- Email: dientunhattung@gmail.com
- Chi tiết : Nhận làm mạch và hướng dẫn đồ án sinh viên
Tham khảo chương trình mẫu và thông tin linh kiện chi tiết tại:

Module giảm áp LM2596 ADJ 3A, Module ổn áp DC-DC giảm áp 3A
Pic16F1823 SMD, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
Hàng rào đực đơn chân cong 1*40P 2.54mm, Jump header đơn 40 pin
Điện trở 15R 1/4W 5 vòng màu, Điện trở 1/4W - 100 con
Đồng hồ điện áp Volt 12-60VDC màu đỏ, Hiển thị led 7 đoạn
PIC18F4550 DIP, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
TRANSISTOR NPN TIP41 DIP, DÃY HOẠT ĐỘNG 100V VÀ 6A
CẦU DIODE KBP210 DIP, CHỈNH LƯU TOÀN KỲ 2A - 1000V
PIC18F6520 SMD, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
DS18B20 Dây, CẢM BIẾN NHIỆT ĐỘ - 2M
ADC0804 CHUYỂN ANALOG SANG DIGITAL, IC ADC 8 BIT
IC SỐ SN74HC11 CỔNG AND, IC CỔNG LOGIC 14 CHÂN DIP
Pic12F683 DÁN SMD, VI ĐIỀU KHIỂN HỌ PIC CỦA MICROCHIP
HC-SRF05, CẢM BIẾN ĐO KHOẢNG CÁCH 















Đánh giá
Chưa có đánh giá nào.