![]() |
đọc encoder với pic
Tính Vận tốc động cơ
Vấn đề của bạn bao gồm 2 phần sau: Thứ nhất: Đọc được xung từ encoder, biết được chiều quay của encoder. Thứ hai: Tính toán vận tốc của động cơ dựa vào encoder đó. 1. Đọc xung từ encoder: Ở đây mình dùng ví dụ bạn dùng encoder có 2 kênh đó là A,B (còn A,B là gì thì bạn chịu khó đọc ở link hocavr ở trên). Kết nối phần cứng: -1 chân ngắt ngoài của PIC nối vào kênh A (hoặc B). -1 chân I/O của PIC nối vào kênh còn lại.(config cho nó là INPUT) -gọi là chân DIR (hướng) Phần mềm: -Kích hoạt chức năng ngắt ngoài của PIC trên chân đó. -Trong chương trình xử lý ngắt: bạn kiểm tra xem chân DIR nó là 0 thì tăng biến đếm encoder lên 1, bằng 1 thì giảm biến đếm encoder xuống 1, hoặc ngược lại cũng được. Code: void interrupt_isr(void) { Motor_EncoderDir = PIND.4; //PIND.4 là đọc giá trị từ chân D.4 if(!Motor_EncoderDir) MotorEncoder++; else MotorEncoder--; //MotorEncoder: tổng số xung encoder đã đếm được } các pro cho e hỏi tý, em muốn đo tốc độ động cơ encoder dùng 2 chân tín hiệu đưa vào vi điều khiển? e tìm được dòng code trên, nhưng chưa hiểu? vì chân tín hiệu là xung vuông, như dòng code ở trên thì biến motorEncoder ko thay đổi có phải khơne mới vào nghề,mong các pro giải thích cụ thể hơn! thanks. |
muốn encoder tăng bao nhìu thì thêm phần if bấy nhiu thôi mà bạn,dễ mà
Thiết kế bếp đẹp Thiết kế bếp hiện đại Lang cang cầu thang kính Thiết kế kiến trúc nhà phố |
Múi giờ GMT. Hiện tại là 10:37 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam