PDA

View Full Version : Encoder.. là gì?



CKD
08-05-2015, 11:35:42 AM
Encoder.. là gì?

Hẵn là gần đây có quá nhiều bài viết có liên quan đến từ Encoder, nhưng Encoder là gì, nó như thế nào.. thì hơi mơ hồ vì có quá nhiều khái niệm.
Theo hiểu biết ít ỏi của mình thì Encoder là một thiết bị, hoặc chương trình mã hóa. Mình xin chia sẻ một số khái niệm encoder mà mình biết để các bạn có thể tham khảo làm quen. Do hiểu biết ít ỏi nên có thể đúng, cũng có thể sai, bạn nào Pro rồi thì vào góp ý thêm nhé.

Còn những khái niệm Encoder thường được nhắc đến trên diễn đàn ta là chỉ các thiết bị sau:
- Quadrature Encoder
- Rotary Encoder
- Linear Encoder
- v.v...

Nhiều khái niệm vậy thôi chứ có thể phân thành mấy loại sau:
- Phân loại theo phương pháp đọc mã:
--- Loại tiếp xúc; thường thấy dưới dạng các núm vặn điều chỉnh trong các thiết bị, như là các công tắc tiếp điểm.
--- Loại dùng quang học (optical encoder (https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=optical+encoder)) thường thấy ở các servo, closed loop step v.v...
--- Loại dùng từ trường (magnetic encoder (https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=magnetic+encoder&spell=1)) loại này thì hơi mới.. nên mình chưa tiếp xúc ;)

- Phân loại theo kiểu:
--- Loại xoay (rotary encoder (https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=rotary+encoder))
--- Loại thẳng (linear encoder (https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=linear+encoder)), dân thợ thường gọi là thước quang.

- Ngoài ra còn phân loại theo giao tiếp, cách mã hóa, mã hóa tương đối, tuyệt đối v.v... Mà mấy cái này thì cũng hơi hiếm thấy, và về bản chất là người dùng thường ít quan tâm đến nên thôi :) (chẵng qua là không biết nên không nói hehe.) Các khái niệm này sẽ nhắc tới.. khi dùng tới ;).

Một số hình ảnh minh họa.

- Loại xoay (rotary encoder)
7491 7490

Các dạng đĩa mã hóa trong rotary enocder (INC & ABS)
http://julioterra.com/journal/wp-content/uploads/2013/01/encoder_header.png

- Loại thẳng (linear encoder)
7492

- Loại dùng từ trường (magnetic encoder)

7489 7488

Thêm cái clip cho sinh động

https://www.youtube.com/watch?v=CpwGXZX-5Ug

CKD
08-05-2015, 11:46:47 AM
Encoder có nhiều hình dạng, nhiều ứng dụng. Nhưng đặc điểm chung của phần lớn các encoder là có chung cách thức mã hóa. Mình chỉ trình bày loại thông dụng nhất, hay gặp nhất là: rotary encoder, dùng quang học, loại tương đối (INC).

Loại mã hóa hay được dùng là loại 2bit (A, B) hoặc 2bit (A, B, Z) và được gọi là Gray code. Gray code tham khảo từ Wiki (http://en.wikipedia.org/wiki/Gray_code). Trong đó:
- A, B là 02 bit dữ liệu, tín hiệu có dạng on/off và 2 bit dữ liệu lệch nhau 90o.
- Z là tín hiệu Index, báo hiệu encoder quay được 1 chu kỳ (1 vòng).
7493

Xác định trạng thái và sự thay đổi trạng thái của các kênh A/B sẽ cho ta biết được hướng di chuyển. Đếm số lần thay đổi trạng thái của các kênh A/B cho ta biết được lượng di chuyển.
http://svglobe.com/arduino/arduino/enc_wave.png
Ảnh minh họa A/B tương đương với out1/out2.

Độ phân giải là số chu kỳ thay đổi của kênh A/B trên một vòng quay (với rotary encoder), ký hiệu là PPR (pulse per revolution) hoặc xung/vòng.
http://svglobe.com/arduino/arduino/enc_wave0.png

Như hình ta thấy, 1 chu kỳ hoàn chỉnh của encoder là sự thay đổi giá trị từ mức thấp lên mức cao và trở lại mức thấp của cả 2 kênh A và B. Tổng cộng có 04 sự thay đổi trạng thái của A/A. 1 A từ mức thấp lên mức cao, 1 A từ cao xuống thấp, 1 B từ thấp lên cao, 1 B từ cao xuống thấp.

Nguồn http://svglobe.com/arduino/encoders.html

CKD
08-05-2015, 12:20:44 PM
Như vậy trong một chu kỳ ta có 04 lần thay đổi trạng thái.. theo mức logic của BA thì: 00, 01, 11, 10.

Ví dụ với encoder có số xung là 100ppr, thì chúng ta có tới 400 lần thay đổi trạng thái thấp/cao của A & B.

Căn cứ vào sự thay đổi trạng thái này ta có thể xác định được chiều di chuyển, đếm số thay đổi trạng thái ta có thể xác định được vị trí. Có mấy cách ghi nhận sự thay đổi trạng thái sau:
- Cách 1.
http://svglobe.com/arduino/arduino/enc_wave4.png
Với cách này ta chỉ theo dõi sự thay đổi trạng thái của 01 kênh (A hoặc B), chỉ theo dỏi trạng thái từ thấp lên cao hoặc từ cao xuống thap, đếm số lần thay đổi trạng thái của kênh này để xác định vị trí, xác định trạng thái của kênh còn lại để biết được chiều quay.
Như thế với cách đọc này encoder 100ppr sẽ xác định được 100 vị trí / 1 vòng quay. Chế độ đọc này được gọi là X1.

- Cách 2.
http://svglobe.com/arduino/arduino/enc_wave2.png or http://svglobe.com/arduino/arduino/enc_wave3.png
Với cách này ta chỉ theo dõi sự thay đổi trạng thái của 01 kênh (A hoặc B), theo dỏi trạng thái từ thấp lên cao và từ cao xuống thấp, đếm số lần thay đổi trạng thái của kênh này để xác định vị trí, xác định trạng thái của kênh còn lại để biết được chiều quay.
Như thế với cách đọc này encoder 100ppr sẽ xác định được 200 vị trí / 1 vòng quay. Chế độ đọc này được gọi là X2.

- Cách 3.
http://svglobe.com/arduino/arduino/enc_wave1.png
Với cách này ta chỉ theo dõi sự thay đổi trạng thái của cả 2 kênh (A và B), theo dỏi trạng thái từ thấp lên cao và từ cao xuống thấp, đếm số lần thay đổi trạng thái để xác định vị trí, xác định trạng thái của kênh còn lại để biết được chiều quay.
Như thế với cách đọc này encoder 100ppr sẽ xác định được 400 vị trí / 1 vòng quay. Chế độ đọc này được gọi là X4.

CKD
08-05-2015, 01:11:12 PM
Sự thay đổi trạng thái (CW & CCW) của Gray code 2 bit (enocder AB)

7496

Sơ đồ & bảng thay đổi trạng thái A/B theo chiều thuận.
7497

Sơ đồ & bảng thay đổi trạng thái A/B theo chiều nghịch.
7498

Bảng giá trị Gray code cho tất cả các thay đổi trạng thái (X4)
7499

Bảng giá trị Gray code cho tất cả các thay đổi trạng thái ở 01 kênh (X2)
7500

ít nói
09-05-2015, 09:09:50 AM
loại của vexta là loạn encoder gì cụ. liệu có phải là từ trường . chắc ko vì cái bánh xe sau dành cho vị trí nó ko hút gì hết

CKD
09-05-2015, 02:02:17 PM
loại của vexta là loạn encoder gì cụ. liệu có phải là từ trường . chắc ko vì cái bánh xe sau dành cho vị trí nó ko hút gì hết

Cái đó là resolver, không phải là encoder.

CKD
13-05-2015, 02:57:59 PM
Lụm được cái ảnh động về nguyên lý encoder nên Up vào cho nó thêm sinh động.
http://www.creative-robotics.com/sites/default/files/tutorials/QuadratureAnimation.gif

http://www.creative-robotics.com/quadrature-intro

huynhbacan
18-03-2016, 10:05:18 AM
Với encoder ABZ, Z để làm gì vậy bác, em đọc ở đâu đó em quên rồi nói là Z để xác lại vì AB có thể bị sai. Như thế có đúng không ạ.

CKD
18-03-2016, 12:05:01 PM
Z thường được gọi là index.. encoder quay đúng 1 vòng thì Z có tín hiệu 1 lần.. và tại một vị trí xác định.

ducduy9104
18-03-2016, 12:59:17 PM
Sự thay đổi trạng thái (CW & CCW) của Gray code 2 bit (enocder AB)

7496

Sơ đồ & bảng thay đổi trạng thái A/B theo chiều thuận.
7497

Sơ đồ & bảng thay đổi trạng thái A/B theo chiều thuận.
7498

Bảng giá trị Gray code cho tất cả các thay đổi trạng thái (X4)
7499

Bảng giá trị Gray code cho tất cả các thay đổi trạng thái ở 01 kênh (X2)
7500

Bổ sung thêm tí:
Ngày xưa người ta sử dụng absolute encoder dạng mã BCD rất nhiều nhưng sau một thời gian sử dụng thì họ phát hiện thường xảy ra hiện tượng lỗi do với một góc quay có quá nhiều trạng thái thay đổi từ trắng sang đen (nhiều bit đổi trạng thái) và ngược lại. Nên sau này mới phát triển cái bộ mã Gray này để với mỗi lần chuyển đổi trạng thái chỉ một bit để tránh lỗi.

Gamo
18-03-2016, 03:42:22 PM
Huhu... có trùm encoder nào biết cách đọc encoder TAMAGAWA SEIKI OAB-13/29bit FA-CODER TS 5642 này ko? Nó ko phải ABZ mới nhục chứ
http://m1.daumcdn.net/cfile216/R400x0/232B8F3B541A9908242863

nhatson
18-03-2016, 04:02:25 PM
Huhu... có trùm encoder nào biết cách đọc encoder TAMAGAWA SEIKI OAB-13/29bit FA-CODER TS 5642 này ko? Nó ko phải ABZ mới nhục chứ
http://m1.daumcdn.net/cfile216/R400x0/232B8F3B541A9908242863

chạy serial, 2 chân nguồn, 2 chân pin, 2 chan clock, 2 chân truyền đại khái là vậy

nhatson
18-03-2016, 04:12:07 PM
http://www.tamagawa-seiki.com/pdf/download/1228N55EJ_shusei.pdf
nghiên cứu cái này xem sao cụ gà

ppgas
19-03-2016, 08:33:54 AM
Cảm ơn CKD đã mở chủ đề. Có câu hỏi sau xin các bác giải thích giúp:
Cũng là encoder, sao có cái có 5 dây, còn có cái 8 dây?
Nếu servo thì có ngõ nối encoder, nhưng nếu là động cơ step có encoder như dưới đây thì encoder là loại gì và đấu nối ra sao ah?

16958
16959

Cảm ơn.

Gamo
19-03-2016, 08:47:34 AM
Hoho, cho tui đi....

Con encoder của ông có ghi sau lưng đó. Rẻ tiền thì thường chỉ có 4-5 dây: 5V-24V, Gnd, A, B, Z.
Hạng sang thì 5V-24V, Gnd, A+, A-, B+, B-, Z+, Z-

Gamo
19-03-2016, 08:48:27 AM
http://www.tamagawa-seiki.com/pdf/download/1228N55EJ_shusei.pdf
nghiên cứu cái này xem sao cụ gà

Đúng là chuyên gia thật :D Cảm ơn Mr Linh đẹp giai :x :x :x

CKD
19-03-2016, 08:52:05 AM
Sơ đồ thì phải cụ thể của con nào thì mới xác định đúng được bác ạ. Vì có quá nhiều kiểu output của các hãng.

Như ảnh thì nó sẽ có V+, A, B, Z, V-. Chiều và vị trí.. thì phải xem lại pdf chứ không nhớ rỏ.
Một số loại khác thì:
- V+, A+, A-, B+ B-, V- (có thể có thêm Z+, Z-, và shield)
- Số xịn hơn thì truyền serial, loại này thì chắc botay.com

nhatanh75
23-07-2016, 08:45:48 PM
E cũng bị dính vài cái servo mitsu 600w có encoder oab-13/29bit như a,a giải quyết driver ra sao với con đó a chỉ e với,cám ơn

Tiêu Diêu Tử
06-01-2018, 07:55:28 PM
chạy serial, 2 chân nguồn, 2 chân pin, 2 chan clock, 2 chân truyền đại khái là vậy

của mình nó 14 dây cơ

Vanhiep96
18-05-2018, 09:49:41 PM
Với encoder ABZ, Z để làm gì vậy bác, em đọc ở đâu đó em quên rồi nói là Z để xác lại vì AB có thể bị sai. Như thế có đúng không ạ.

cái này thường dùng để về home anh ạ

Gamo
18-05-2018, 09:53:42 PM
Ủa, về home ra sao hả bác?