![]() |
Module Quadrature Encoder Interface (QEI)
Mở luồng này để các bạn thảo luận và trang bị những kiến thức cơ bản về QEI vì chưa thấy luồng thảo luận về vấn đề này được mở ra.
Chúc vui. Tài liệu tham khảo: [1] Section 16. Quadrature Encoder Interface (QEI) - dsPIC30F FRM [2] Cảm biến encoder, dùng loại nào: Absolute - Incremental [3] AN908: Using the dsPIC30F for Vector Control of an ACIM [4] Datasheet dsPIC30F6010A |
QEI ( Quadrature Encoder Interface ) là module dùng để giao tiếp với Quadrature Encoder (hay còn gọi là incremental encoder ).
Thông tin về incremental encoder đã được anh F giới thiệu trong phần cảm biến: http://www.picvietnam.com/forum//showthread.php?t=224 Incremental encoder có thể dùng để định vị và xác định vận tốc của một chuyển động quay quanh trục và được dùng phổ biến trong các động cơ do cấu tạo đơn giản,rẻ tiền và độ phân giải lớn. Incremental encoder gồm 2 pha: pha A và pha B và có thể thêm pha index. Pha A và B để xác định vận tốc và chiều quay. Pha index dùng để đối chiếu, xác định số vòng quay và tham chiếu vị trí. Để tính vận tốc ta có thể xác định số xung của encoder trong 1 khoảng thời gian và chia cho độ phân giải ta được vận tốc trong 1 đơn vị thời gian. Ví dụ encoder có độ phân giải 400pps (pulses per revolution) và trong 1s ta đếm được 1000 xung => tốc độ quay là 1000/400 = 2.5 vòng/giây. Để xác định vận tốc này trong PIC ta có thể dùng ngắt ngoài RB0, mỗi lần ngắt ta đếm thêm 1 xung và sau một khoảng thời gian ta xác định số xung, chia cho khoảng thời gian thì tìm được vận tốc. Để xác định chiều quay ta dùng cả hai pha A và B. Nếu pha A nhanh hơn pha B => quay theo chiều thuận và ngược lại. Một cách khác để xác định chiều quay được anh F giới thiệu: Trích:
Có thể nối pha A vào RB0 dùng ngắt ngoài theo cạnh xuống và lúc xảy ra ngắt kiểm tra giá trị của pha B (nối vào RB1 chẳng hạn và RB1 được khai báo là input): Code:
Code:
#INT_RB |
PIC/dsPIC có hỗ trợ module QEI thì ko việc gì phải dùng đến ngắt ngoài RB0 hay ngắt RB4-RB7, thế thì còn gì là module QEI.
Lật ngay datasheet con nào hỗ trợ QEI như PIC18F4331, dsPIC2010,...phần QEI rất rõ ràng. Ko hiểu bạn đang thảo luận về module QEI hay cách đọc encoder. |
Vậy dùng QEI như thế nào.Bác nào có thể cho xin code ví dụ được ko,ds hay 18F cũng đc.
|
Cho mình hỏi về cách thiết lập module QEI trong 30f4011,nhận xung encoder 2 pha từ động cơ.encoder của mình không có chân INDEX.
Mình thiết lập như thề này nhưng vẫn chưa đọc đuoc POSCNT Ai biết thì chỉ dùm mình nhé. Code:
void InitQEI(void) |
QEI của dspic 30f4011 có digital filter output. Em muốn hỏi hoạt động của bộ filter này như thế nào.
|
em thấy luồng này rất hay sao ko phát triển thêm hả anh F, bác viết bài huóng dẫn bọn em với
|
Dưới đây là cách khởi động QEI.
NHớ TRIS các chân A,B,và index Giá trị xung nằm trong thanh ghi POSCNT void setup_encoder(void) { ADPCFG = 0xffff; // all digital IO MAXCNT = 0xffff; // (used as preset when index pulse seen) POSCNT = 0x0000; QEICON = 0; // clr CNTERR bit (among others) QEICONbits.QEIM = 6; // x4 reset by index pulse QEICONbits.POSRES = 0; // TRICK! dont allow index to reset counter DFLTCON = 0; // digital filter set off DFLTCONbits.IMV = 3; // in x4 mode, DFLTCONbits.QEOUT = 1; // enable digital filter on phase a,b,i /* set up interrupts for encoder */ IFS2bits.QEIIF = 0; // clear Interrupt flag IPC10bits.QEIIP = 1; // bits <2:0> are the priority IEC2bits.QEIIE = 1; // go live } |
em cũng đang tìm hiểu cái này , nhưng em biết ít tiếng anh chuyên ngành quá nên không cắt được nghĩa
bác nào tốt bụng thì có thể hướng dẫn cụ thể cho anh em trong bang học hỏi với . Nếu dịch cái modul QEI ra tiếng việt thì càng tốt, để có cái sườn mà nghiên cứu |
Trích:
Em cảm ơn. Trân trọng !. |
em đang làm về module này, nhưng gặp phải vấn đề ko biết phải viết CCS cho module này như thế nào. em đã đọc hết datasheet của con 18f4431, cũng biết được cách hoạt động của module này rồi. Nhờ các anh hướng dẫn giúp.
cụ thể là em đang viết chương trình nhận xung từ encoder. loại encoder em đang sử dụng là loại encoder 6 dây, bao gồm 1 dây nguồn, 1 dây mass, 2 dây là pha a và pha b, 2 dây còn lại không sử dụng. 2 dây pha này em nối vào 2 chân QEA và QEB của píc8F4431, em xin hỏi viết code như thế nào để có thể đếm xung nhận được từ 2 pha của encoder Thanks |
CCS phiên bản mới đã có lệnh hỗ trợ QEI nhưng mình chưa thử bao giờ, bạn vào đó đọc xem có thu được gì không.
|
Trích:
thanks |
Bản mình đang dùng là v4.107 trong Help có đoạn sau
Code:
setup_qei( ) |
Trích:
thanks |
Múi giờ GMT. Hiện tại là 07:45 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