|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
|
Ðiều Chỉnh | Xếp Bài |
29-10-2007, 02:28 PM | #1 |
PIC Bang chủ
|
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
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? thay đổi nội dung bởi: falleaf, 30-10-2007 lúc 03:13 PM. |
29-10-2007, 11:55 PM | #2 | |
Đệ tử 4 túi
Tham gia ngày: Aug 2006
Bài gửi: 61
: |
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:
#INT_EXT void ngat_RB0() { xung++; // tăng biến xung if (RB1 ==0) chieu =thuan; // xét giá trị pha B nếu pha B ở mức thấp => chiều thuận else chieu = nguoc; // ngược lại chiều ngược } Code:
#INT_RB void ngat_RB() { xung++; n = m; //giá trị trước của pha A m = RB7; // giá trị hiện tại của pha A if (m<n) // cạnh xuống pha A { if(RB6==1) // xét giá trị pha B q=0; // => chiều quay else q=1; } } thay đổi nội dung bởi: huybo02, 30-10-2007 lúc 12:06 AM. |
|
30-10-2007, 07:55 AM | #3 |
Đệ tử 9 túi
|
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.
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
07-12-2007, 10:46 AM | #4 |
Đệ tử 3 túi
Tham gia ngày: Oct 2005
Bài gửi: 47
: |
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.
|
05-05-2008, 06:07 PM | #5 |
Nhập môn đệ tử
Tham gia ngày: Jul 2007
Bài gửi: 1
: |
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) { ADPCFG |= 0x0038; // Configure QEI pins as digital inputs QEICONbits.QEIM = 0; // Disable QEI Module QEICONbits.CNTERR = 0;// Clear any count errors QEICONbits.QEISIDL = 0;// Continue operation during sleep QEICONbits.SWPAB = 0; // QEA and QEB not swapped QEICONbits.PCDOUT = 0; // Normal I/O pin operation QEICONbits.POSRES = 1; // Index pulse resets position counter DFLTCONbits.CEID = 1; // Count error interrupts disabled DFLTCONbits.QEOUT = 1; // Digital filters output enabled for QEn pins DFLTCONbits.QECK = 5; // 1:64 clock divide for digital filter for QEn //DFLTCONbits.INDOUT = 1;// Digital filter output enabled for Index pin //DFLTCONbits.INDCK = 5;// 1:64 clock divide for digital filter for Index POSCNT = 0; // Reset position counter QEICONbits.QEIM = 6; // X4 mode with position counter reset by Index } thay đổi nội dung bởi: namqn, 05-05-2008 lúc 06:29 PM. |
23-05-2008, 01:16 AM | #6 |
Đệ tử 6 túi
Tham gia ngày: Mar 2006
Bài gửi: 129
: |
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.
|
13-07-2008, 06:46 PM | #7 |
Đệ tử 3 túi
Tham gia ngày: Apr 2006
Bài gửi: 54
: |
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
|
20-09-2008, 06:16 PM | #8 |
Nhập môn đệ tử
Tham gia ngày: Jun 2005
Bài gửi: 1
: |
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 } |
21-09-2008, 12:55 AM | #9 |
Đệ tử 6 túi
Tham gia ngày: May 2007
Bài gửi: 127
: |
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 |
24-03-2009, 11:42 PM | #10 | |
Đệ tử 4 túi
Tham gia ngày: Jan 2008
Bài gửi: 68
: |
Trích:
Em cảm ơn. Trân trọng !.
__________________
Không có gì là Không thể, chỉ một điều Không thể khi bạn nghĩ nó Không thể !. Bạn có thể nếu bạn tin bạn có thể !. |
|
13-11-2010, 06:10 PM | #11 |
Nhập môn đệ tử
Tham gia ngày: Oct 2009
Bài gửi: 6
: |
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 thay đổi nội dung bởi: wakener_thesun, 13-11-2010 lúc 06:20 PM. |
13-11-2010, 09:29 PM | #12 |
Nhập môn đệ tử
Tham gia ngày: Jul 2010
Bài gửi: 4
: |
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.
__________________
ngcanhdtdn@gmail.com |
13-11-2010, 10:44 PM | #13 |
Nhập môn đệ tử
Tham gia ngày: Oct 2009
Bài gửi: 6
: |
|
13-11-2010, 11:34 PM | #14 |
Nhập môn đệ tử
Tham gia ngày: Jul 2010
Bài gửi: 4
: |
Bản mình đang dùng là v4.107 trong Help có đoạn sau
Code:
setup_qei( ) -------------------------------------------------------------------------------- Syntax: setup_qei( [unit,]options, filter,maxcount ); Parameters: Options- The mode of the QEI module. See the devices .h file for all options Some common options are: · QEI_MODE_X2 · QEI_TIMER_GATED · QEI_TIMER_DIV_BY_1 filter- This parameter is optional and the user can specify the digital filter clock divisor. maxcount- This will specify the value at which to reset the position counter. unit- Optional unit number, defaults to 1. Returns: void Function: Configures the Quadrature Encoder Interface. Various settings like modes, direction can be setup. Availability: Devices that have the QEI module. Requires: Nothing. Examples: setup_qei(QEI_MODE_X2|QEI_TIMER_INTERNAL,QEI_FILTER_DIV_2,QEI_FORWARD); Example Files: None Also See: qei_set_count() , qei_get_count() , qei_status().
__________________
ngcanhdtdn@gmail.com |
13-11-2010, 11:48 PM | #15 | |
Nhập môn đệ tử
Tham gia ngày: Oct 2009
Bài gửi: 6
: |
Trích:
thanks |
|
|
|