PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ cấu chấp hành (Actuator) (http://www.picvietnam.com/forum/forumdisplay.php?f=13)
-   -   Encoder: absolute và incremental? Dùng loại nào? (http://www.picvietnam.com/forum/showthread.php?t=43)

navy 07-01-2008 11:30 PM

Cám ơn F bang chủ về loạt bài viết Encorder. Mình đang có 1 absolute encorder của Trung Quốc, đầu ra 8 bit nhưng là mã Gray. Mình muốn dùng PIC6F877A để đọc nó và hiển thị trên LED 7Seg or LCD. F bang chủ hay bạn nào đã từng làm nó rồi chỉ giáo cho mình mới, nhất là đoạn code chuyển mã Gray->BCD?

falleaf 08-01-2008 08:21 AM

http://www.shef.ac.uk/physics/teachi...107/codes.html

Không có thời gian viết nhiều nên copy cái này cho bạn.

Chúc vui

toan_h6 28-02-2008 04:17 PM

Chào các bác.
Em mới vào diễn đàn đọc bài viết của các bác về encoder hay quá.
Bác nào biết về encoder có độ phân giải thấp chỉ giúp em với nhé.
Cảm ơn các bác nhiều.

hoangvannghidtd 28-03-2008 04:20 PM

cám ơn nhé đúng thứ em đang cần

navy 12-05-2008 10:03 PM

Trích:

Nguyên văn bởi falleaf (Post 13740)
http://www.shef.ac.uk/physics/teachi...107/codes.html

Không có thời gian viết nhiều nên copy cái này cho bạn.

Chúc vui

Xin lỗi F bang chủ vì lâu rồi không đụng đến nó do công việc nhiều. Hôm nay quay lại làm cái này nên mới biết F bang chủ nhắn tin. Thành thật xin lỗi và cám ơn F bang chủ rất nhiều!

huynhatdn 22-03-2009 09:18 PM

Anh cho e hỏi tí.
encoder có 4 dây, 2 dây nguồn và đất thì khỏi nói, còn 2 dây kia làm sao bít dây nào là A và dây nào là B đây a.
Thanks a!

conglong 23-03-2009 12:09 AM

Trích:

Nguyên văn bởi huynhatdn (Post 23864)
Anh cho e hỏi tí.
encoder có 4 dây, 2 dây nguồn và đất thì khỏi nói, còn 2 dây kia làm sao bít dây nào là A và dây nào là B đây a.
Thanks a!

Thường thì encoder có chú thích trên đế của nó , nếu tôi nhớ không nhầm có 4 màu là:
blue: VCC
Green: GND
Yellow: Signal A
Pink: Signal B;
Bạn nhìn vào màu sắc của 4 dây ra này để xác định , còn nếu encoder nào mà các sợi dây ra chỉ có một màu duy nhất thì dùng osilocode để xác định còn cách xác định sao thì bạn đọc lại các bài viết Của Thầy F là OK à,
Trân trọng !.

namth.vp 22-04-2009 09:21 AM

Cho em hỏi chút. Mình có thể đọc số xung của encoder bằng cách nào? Mình có phải làm mạch hiển thị để nhìn thông số này không?hay co cách khác để nhìn thấy số xung này? Mong các bác chỉ giáo!
Thanks!

mtuankct 22-04-2009 02:20 PM

Trích:

Nguyên văn bởi namth.vp (Post 25096)
Cho em hỏi chút. Mình có thể đọc số xung của encoder bằng cách nào? Mình có phải làm mạch hiển thị để nhìn thông số này không?hay co cách khác để nhìn thấy số xung này? Mong các bác chỉ giáo!
Thanks!

Bác đọc số xung để làm gi? Nếu để xem thì cần hiển thị hoặc truyền lên máy tính. Còn nếu chỉ để dk thì hiển thị hay kô kô quan trọng :D
còn đọc xung thì đưa vào chân Timer hoặc input capture của vdk để đọc thôi

HAI1817 25-05-2010 01:36 PM

Hay quá tiếp đi bác

vai_thieu_b5 20-09-2010 02:06 AM

Trích:

Nguyên văn bởi falleaf (Post 496)
encoder mục đích dùng để quản lý vị trí góc của một đĩa quay, đĩa quay có thể là bánh xe, trục động cơ, hoặc bất kỳ thiết bị quay nào cần xác định vị trí góc.

Encoder được chia làm 2 loại, absolute encoder và incremental encoder. Tạm dịch là encoder tuyệt đối và encoder tương đối. Chữ encoder tuyệt đối dịch theo nguyên văn, nhưng vì tiếng việt mình cái gì có 2 loại, thì loại còn lại được dịch ngược lại với loại kia. Cho nen dịch là encoder tương đối cho incremental encoder.

Nếu dịch sát nghĩa, khi ta đọc absolute encoder, có nghĩa là encoder tuyệt đối, tức là tín hiệu ta nhận được, chỉ rõ ràng vị trí của encoder, chúng ta không cần xử lý gì thêm, cũng biết chính xác vị trí của encoder.

Còn incremental encoder, là loại encoder chỉ có 1, 2, hoặc tối đa là 3 vòng lỗ. Các bạn hình dung thế này, nếu bây giờ các bạn đục một lỗ trên một cái đĩa quay, thì cứ mỗi lần đĩa quay 1 vòng, các bạn sẽ nhận được tín hiệu, và các bạn đã biết đĩa quay một vòng. Nếu bây giờ các bạn có nhiều lỗ hơn, các bạn sẽ có được thông tin chi tiết hơn, có nghĩa là đĩa quay 1/4 vong, 1/8 vòng, hoặc 1/n vòng, tùy theo số lỗ nằm trên incremental encoder.

Cứ mỗi lần đi qua một lỗ, chúng ta phải lập trình để thiết bị đo đếm lên 1. Do vậy, encoder loại này có tên incremental encoder (encoder tăng lên 1 đơn vị).

http://i3.photobucket.com/albums/y64...d/encoder4.jpg

nguyên lý hoạt động cơ bản của encoder, led và lỗ

nguyên lý cơ bản của encoder, đó là một đĩa tròn xoay, quay quanh trục. Trên đĩa có các lỗ (rãnh). Người ta dùng một đèn led để chiếu lên mặt đĩa. Khi đĩa quay, chỗ không có lỗ (rãnh), đèn led không chiếu xuyên qua được, chỗ có lỗ (rãnh), đèn led sẽ chiếu xuyên qua. Khi đó, phía mặt bên kia của đĩa, người ta đặt một con mắt thu. Với các tín hiệu có, hoặc không có ánh sáng chiếu qua, người ta ghi nhận được đèn led có chiếu qua lỗ hay không.

Khi trục quay, giả sử trên đĩa chỉ có một lỗ duy nhất, cứ mỗi lần con mắt thu nhận được tín hiệu đèn led, thì có nghĩa là đĩa đã quay được một vòng.

Đây là nguyên lý rất cơ bản của encoder.

Tuy nhiên, những vấn đề được đặt ra là, làm sao để xác định chính xác hơn vị trí của đĩa quay (mịn hơn) và làm thế nào để xác định được đĩa đang quay theo chiều nào? Đó chính là vấn đề để chúng ta tìm hiểu về encoder.

Hình sau sẽ minh họa nguyên lý cơ bản của hoạt động encoder.

http://i3.photobucket.com/albums/y64...d/encoder1.jpg

các bạn thấy trong hình, có một đĩa mask, không quay, đó là đĩa cố định, thực ra là để che khe hẹp ánh sáng đi qua, giúp cho việc đọc encoder được chính xác hơn mà thôi. Chúng tôi không để cập đến đĩa mặt nạ này ở đây.


hoạt động của hai loại encoder này như thế nào?

1) absolute encoder

vấn đề chúng ta sẽ quan tâm ở đây, chính là vấn đề về độ mịn của encoder, có nghĩa là làm thế nào biết đĩa đã quay 1/2 vòng, 1/4 vòng, 1/8 vòng hay 1/n vòng, chứ không phải chỉ biết đĩa đã quay được một vòng.

Quay lại bài toán cơ bản về bit và số bit, chúng ta xem xét vấn đề theo một cách hoàn toàn toán học nhé:

Với một số nhị phân có 2 chữ số, chúng ta sẽ có 00, 01, 10, 11, tức là 4 trạng thái. Điều đó có nghĩa là với 2 chữ số, chúng ta có thể chia đĩa encoder thành 4 phần bằng nhau. Và khi quay, chúng ta sẽ xác định được độ chính xác đến 1/4 vòng.

Tương tự như vậy, nếu với một số có n chữ số, chúng ta sẽ xác định được độ chính xác đến 1/(2^n) vòng.

Thế làm sao để xác định 2^n trạng thái này của đĩa encoder?

Các bạn xem hình sau:

http://i3.photobucket.com/albums/y64...d/encoder2.jpg

Ở đây, tôi đưa ra ví dụ với đĩa encoder có 2 vòng đĩa. Các bạn sẽ thấy rằng, ở vòng trong cùng, có một rãnh rộng bằng 1/2 đĩa. Vòng phía ngoài, sẽ có 2 rãnh nằm đối diện nhau.

Như vậy, chúng ta cần 2 đèn led để phát xuyên qua 2 vòng lỗ, và 2 đèn thu.

Giả sử ở vòng lỗ thứ nhất (trong cùng), đèn đọc đang nằm ở vị trí có lỗ hở, thì tín hiệu nhận được từ con mắt thu sẽ là 1. Và ở vòng lỗ thứ hai, thì chúng ta đang ở vị trí không có lỗ, như vậy con mắt thu vòng 2 sẽ đọc được giá trị 0.

Và như vậy, với số 10, chúng ta xác định được encoder đang nằm ở góc phần tư nào, cũng có nghĩa là chúng ta quản lý được độ chính xác của đĩa quay đến 1/4 vòng. Trong ví dụ trên, nếu đèn led đọc được 10, thì vị trí của led phải nằm trong góc phần tư thứ hai, phía trên, bên trái.

Kết quả, nếu đĩa encoder có đến 10 vòng lỗ, thì chúng ta sẽ quản lý được đến 1/(2^10) tức là đến 1/1024 vòng. Hay người ta nói là độ phân giải của encoder là 1024 xung trên vòng (pulse per revolution - ppr).

Sau đây là ví dụ abosulte encoder 8 vòng lỗ:

http://i3.photobucket.com/albums/y64...d/encoder3.jpg



vậy cách thiết kế absolute encoder như thế nào?

Các bạn luôn chú ý rằng, để thiết kế encoder tuyệt đối, người ta luôn vẽ sao cho bit thứ n (đối với encoder có n vòng lỗ) nằm ở trong cùng, có nghĩa là lỗ lớn nhất có góc rộng 180 độ, nằm trong cùng. Bởi vì chúng ta thấy rằng, bit0 (nếu xem là số nhị phân) sẽ thay đổi liên tục mỗi 1/2^n vòng quay, vì thế, chúng ta cần rất nhiều lỗ. Nếu đặt ở trong thì không thể nào vẽ được, vì ở trong bán kính nhỏ hơn. Ngoài ra, nếu đặt ở trong, thì về kết cấu cơ khí, nó quá gần trục, và quá nhiều lỗ, sẽ rất yếu. Vì hai điểm này, nên bit0 luôn đặt ở ngoài cùng, và bitn-1 luôn đặt trong cùng như hình trên.

Rất nhiều người thắc mắc về cách thực tế để vẽ encoder như thế nào. Tuy nhiên, kể từ khi có chương trình thiết kế encoder này, tôi cho rằng chúng ta không nên quan tâm đến vấn đề đó nữa. Chỉ cần hiểu nó hoạt động ra sao, rồi sau đó chúng ta dùng chương trình này để vẽ.


Lười quá, mai pót tiếp ...hehhee...

bÁc pÓt quÁ chuẨn..em Đang kiẾm mÃi tÀi liỆu vỀ con nÀy

vanmanh1988 21-09-2010 12:07 AM

đa số hiện nay là incremental encoder, loại này chỉ dùng đo góc bi động thôi, còn đo góc chủ động phải sài absolute encoder. mà loại này rất hiếm, mà giá cũng rất đắc.

NBTrung 06-09-2011 03:34 AM

e hỏi ngoài lề tí, cái đĩa encoder này nó có phải chế tạo để khối tâm nằm đúng trục k? chứ e nhìn mấy hình của a.F thì nếu đĩa đồng khối độ dày như nhau tại mọi điểm thì khối tâm lệch chắc. Chắc encoder quá nhẹ nên k tác động lên cđ quay của ĐC

phanxuantuan 13-01-2012 01:00 AM

Chào các bác! Em vào thớt naỳ thấy bàn tán Encoder rôm rả, tiện thể cho em hỏi chút xíu, có gì mong mod đừng có del mất!
Em đang cần tìm mua ENcoder tuyệt đối tầm 10 bits đổ lên, tốt nhất là tầm 13 -15 bit, vậy bác nào có hoặc có biết làm ơn mail giùm em qua phantuanday@gmail.com giúp em với nhé!
Sinh viên nên cũng mong có giá mềm mềm! Cảm ơn mọi người!


Múi giờ GMT. Hiện tại là 09: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