PDA

View Full Version : Encoder: absolute và incremental? Dùng loại nào?


falleaf
02-06-2005, 02:52 AM
Trước khi đặt câu hỏi đó, các bạn download chương trình này về, tuần sau chúng ta sẽ nói về absolute encoder và incremental encoder.

Encoder_Design.exe (http://www.picvietnam.com/download/Encoder_Design.exe)

Đây là chương trình thiết kế cả hai loại absolute encoder và incremental encoder. Các bạn xem cho vui, khi nào tôi có thời gian sẽ post bài về nó.

tinhthanthep
02-06-2005, 09:04 PM
Bác falleaf cho hỏi sao tôi chạy file này thì máy tính lại báo: encoder_design.exe is not a valid Win32 application. ( Máy tính của tôi sử dụng hệ điều hành windows XP SP1 ). Thanhs!

falleaf
02-06-2005, 09:42 PM
Có lẽ do bạn cài đặt nhiều thứ quá trong máy tính, nên máy tính của bạn gặp trục trặc, hoặc khi download bằng dialup, đường truyền không tốt, dữ liệu down về bị hư...

Mình đã thử download lại file này, và chạy tại chỗ. File chạy tốt, máy mình dùng XP SP2, vẫn chạy bình thường.

Bạn thử kiểm tra lại nhé.

thangngo
30-07-2005, 04:54 PM
Cho em hỏi bác falleaf một chút,em thấy chương trình Encoder_design thiết kế nhanh thật,nhưng khi in ra để chế thì lai không nét một chút nào,cho nên không chình xac.Em thử chỉ thiết kế encoder 1 lỗ thì nó lại ra thế này,em chẳng hiểu nỗi

falleaf
10-08-2005, 09:22 AM
Thì nó đúng là encoder 1 lỗ rồi còn gi?

tinhthanthep
11-08-2005, 06:50 PM
Cái lỗ tròn nhỏ ở giữa của cái đĩa là để xỏ qua trục của động cơ. Còn phần vòng cung trắng là phần cắt đi của đĩa để tín hiệu có thể đí qua được. Như vậy trong một vòng quay của trục thì chỉ có 1 lần tín hiệu được truyền qua.

caonam
16-08-2005, 09:29 PM
Các bác vào đây, chắc là phiên bản 2.0 của encoder designer!
http://users.adelphia.net/~skbosko/Robot_top.htm

Bác falleaf giới thiệu tí về cách thực hiện một bộ encoder đi! dùng cảm biến thì chắc giống mắt dò đường của robot! còn về đếm (đo khoảng cách) với VDK???

falleaf
16-08-2005, 09:47 PM
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/falleafd/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/falleafd/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/falleafd/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/falleafd/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...

caonam
21-08-2005, 08:03 AM
bác post tiếp cho anh em xem đi, hay lắm!

falleaf
26-08-2005, 09:46 PM
2) Incremental encoder

Nhận thấy một điều rằng, encoder tuyệt đối rất có lợi cho những trường hợp khi góc quay là nhỏ, và động cơ không quay nhiều vòng. Khi đó, việc xử lý encoder tuyệt đối trở nên dễ dàng cho người dùng hơn, vì chỉ cần đọc giá trị là chúng ta biết ngay được vị trí góc của trục quay.

Tuy nhiên, nếu động cơ quay nhiều vòng, điều này không có lợi, bởi vì khi đó, chúng ta phải xử lý để đếm số vòng quay của trục.

Ngoài ra, như các bạn thấy đó, nếu thiết kế encoder tuyệt đối, chúng ta cần quá nhiều vòng lỗ, và dẫn tới giới hạn về kích thước của encoder, bởi vì việc gia công chính xác các lỗ quá nhỏ là không thể thực hiện được. Chưa kể rằng việc thiết kế một dãy đèn led và con mắt thu cũng ảnh hưởng rất lớn đến kích thước giới hạn này.

Theo kinh nghiệm của cá nhân tôi, tôi thấy encoder 8 bit là đã rất chi tiết rồi, và ở trường DHBKHCM có loại encoder 12bit đã là loại tốt nhất mà tôi biết. Tôi chưa thấy loại encoder tuyệt đối nào 16 bit cả, và cũng không có ý định tìm nó trên internet.

Độ chính xác của encoder 12 bit đã là 1/4096 rồi.

Tuy nhiên, điều này được khắc phục bằng incremental encoder một cách khá đơn giản. Chính vì vậy, ngày nay, đa số người ta sử dụng incremental encoder trong những ứng dụng hiện đại.

falleaf
22-09-2005, 11:14 AM
Thật đơn giản, incremental encoder, sẽ tăng 1 đơn vị khi một lần lên xuống của cạnh xung.

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

http://i3.photobucket.com/albums/y64/falleafd/encoder7.jpg

Các bạn thấy rằng, cứ mỗi lần quay qua một lỗ, thì encoder sẽ tăng một đơn vị trong biến đếm.

Tuy nhiên, một vấn đề là làm sao để biết được encoder quay hết một vòng? Nếu cứ đếm vô hạn như thế này, thì chúng ta không thể biết được khi nào nó quay hết một vòng. Nếu bây giờ các bạn đếm số lỗ encoder để biết nó đã quay một vòng, thì nếu với encoder 1000 lỗ chắc các bạn sẽ đếm đến sáng luôn.

Chưa kể, mỗi lần có những rung động nào đó mà ta không quản lý được, encoder sẽ bị sai một xung. Khi đó, nếu hoạt động lâu dài, sai số này sẽ tích lũy, ngày hôm nay sai một xung, ngày hôm sau sai một xung. Đến cuối cùng, có thể động cơ quay 2 vòng rồi các bạn mới đếm được 1 vòng.

Để tránh điều tai hại này xảy ra, người ta đưa vào thêm một lỗ định vị để đếm số vòng đã quay của encoder.

Như vậy, cho dù có lệch xung, mà chúng ta thấy rằng encoder đi ngang qua lỗ định vị này, thì chúng ta sẽ biết là encoder đã bị đếm sai ở đâu đó. Nếu vì một rung động nào đó, mà chúng ta không thấy encoder đi qua lỗ định vị, vậy thì từ số xung, và việc đi qua lỗ định vị, chúng ta sẽ biết rõ hiện tượng sai của encoder.

Đây là hình encoder có lỗ định vị:

http://i3.photobucket.com/albums/y64/falleafd/encoder8.jpg

Tuy nhiên, một vấn đề lớn nữa là, làm sao chúng ta biết encoder đang xoay theo chiều nào? Bởi vì cho dù xoay theo chiều nào, thì tín hiệu encoder cũng chỉ là các xung đơn lẻ và xoay theo hai chiều đều giống nhau.

Chính vì vậy, người ta đặt thêm một vòng lỗ ở giữa vòng lỗ thứ 1 và lỗ định vị như hình sau:

http://i3.photobucket.com/albums/y64/falleafd/encoder9.jpg

Chú ý rằng, vị trí góc của các lỗ vòng 1 và các lỗ vòng 2 lệch nhau. Các cạnh của lỗ vòng 2 nằm ngay giữa các lỗ vòng 1 và ngược lại.

Chúng ta sẽ khảo sát tiếp vấn đề encoder trong phần tín hiệu xung để hiểu rõ hơn về encoder. Tuy nhiên, các bạn sẽ thấy một điều rằng, thay vì làm 2 vòng encoder, và dùng 2 đèn LED đặt thẳng hàng, thì người ta chỉ cần làm 1 vòng lỗ, và đặt hai đèn LED lệch nhau.

Kết quả, các bạn sẽ thường thấy các encoder có dạng như hình 2:

http://i3.photobucket.com/albums/y64/falleafd/encoder8.jpg

Đây là dạng encoder phổ biến nhất hiện nay.

Chúng ta sẽ xem tiếp phần tín hiệu xung ở phần sau.

falleaf
25-09-2005, 01:42 PM
http://cp.literature.agilent.com/litweb/pdf/5988-8045EN.pdf


Đây là datasheet của encoder HEDs9700 mà các bạn thường gặp. Xem qua datasheet này, các bạn sẽ hình dung rõ hơn về thực tế của các thông số encoder.

Các bạn lưu ý rằng, đây chỉ là con mắt đọc, có nghĩa là bộ phận LED phát và thu, chứ không bao gồm đĩa encoder. Đối với mỗi loại optical encoder này, nó có một độ phân giải nhất định, và sẽ phù hợp với một số loại đĩa encoder nhất định.

falleaf
05-10-2005, 11:15 PM
http://i3.photobucket.com/albums/y64/falleafd/encoder_p.jpg

Hình trên là hình xung incremental encoder.

Các bạn thấy rằng nếu như khi xung A đang từ mức cao xuống mức thấp, mà lúc đó B đang ở mức thấp, thì chúng ta sẽ xác định được chiều chuyển động của encoder theo chiều mũi tên màu cam.

Nếu A đang từ mức cao xuống mức thấp, mà B đang ở mức cao, thì chúng ta sẽ biết encoder đang quay theo chiều màu nâu.

Chúc vui

planandwork
07-10-2005, 08:49 PM
anh ơi !
chỗ nào mua encoder tin cậy trong thành phố vậy !
thầy em nói có encoder seconde hand ở Vĩnh Viễn nhưng em đi mua DC vài lần mà chưa gặp bao giờ .

ủa mà anh còn ở VN ko vậy !

planandwork
07-10-2005, 08:52 PM
trong thi đấu robot , em định sử dụng mạch sensor dò đếm vạch và cả encoder cho ăn chắc . nhưng theo anh thì cái gì sẽ hỗ trợ cái gì . Ý em là cái gì ổn định hơn .

DTTD
12-10-2005, 02:27 PM
Sao tôi không thấy được hình nào vậy kìa. A falleaf làm ơn xem lại dùm đi.

falleaf
12-10-2005, 05:16 PM
to DTTD: Bạn phải login vào thì mới thấy được hình, có lẽ khi bạn xem bạn chưa login.

Về vấn đề cái nào chính xác hơn cái nào. Khẳng định một điều là dùng sensor dò vạch trong trường hợp thi robocon sẽ tốt hơn dùng encoder. Bởi vì một lý do đơn giản, xét trên một hệ tổng quát, vạch trắng chính là các cột mốc. Vậy thì nếu với các kỹ thuật đơn giản, sai số chế tạo... cột mốc cho phép định vị robot tốt hơn. Encoder, chỉ tương tác bên trong robot, nên nếu có các sai số như trục bánh xe không thẳng, ma sát bánh xe và sàn xe không tốt, đường kính bánh xe không đều, hai động cơ không đều (mà những điều này thì chắc chắn xảy ra). Khi đó, để hiệu chỉnh sai số, cột mốc sẽ làm tốt.

Thực ra, sân chơi robocon nhỏ quá, cho nên những cái anh nói lại trở nên vô nghĩa, vì thậm chí có những con robot chẳng bao giờ phải đếm vạch hay encoder gì cả. Với quãng đường di chuyển 30m, sai số cho rằng tăng đến 1% thì cũng chỉ sai có 30cm. Trong khi sân có 3m thì sai số chỉ còn lại 3cm, nó còn nhỏ hơn cái vạch trắng 4-5cm nữa.

Tóm lại, em phải thực hành thử, và xem hai giải pháp cái nào tốt hơn. Cá nhân anh khuyên nên dò vạch trắng.

Chúc vui.

thangngo
15-10-2005, 05:17 AM
anh ơi !
chỗ nào mua encoder tin cậy trong thành phố vậy !
thầy em nói có encoder seconde hand ở Vĩnh Viễn nhưng em đi mua DC vài lần mà chưa gặp bao giờ .

ủa mà anh còn ở VN ko vậy !

Có đấy cậu à .300k một bộ đóng gói chỉ lòi mổi cái trục ra thôi.Đó là loại 504 xung như anh Hiệp nói,cón 200 xung thì 30k (cuối đường Vĩnh viễn,chổ ông gì đó hay bán động cơ đó)

odense
18-11-2005, 06:00 AM
Cho loại mini hoặc micro robot thì có thể dung Hatasuma P5587. Tôi thấy cái này vừa đơn giản, vừa hay (về mặt nguyên lý). Anh em trong Sài Gòn có biết cho nào mua thì thông báo cho anh em ngoài Hà nôi cái nhé.
Còn về Encoder thì ví dụ đơn giản nhất chính là các bạn mở một con chuột bi (wheeled mouse) ra là nhìn thấy ngay.
Chúc vui.

odense
18-11-2005, 06:14 AM
Thực ra, sân chơi robocon nhỏ quá, cho nên những cái anh nói lại trở nên vô nghĩa, vì thậm chí có những con robot chẳng bao giờ phải đếm vạch hay encoder gì cả. Với quãng đường di chuyển 30m, sai số cho rằng tăng đến 1% thì cũng chỉ sai có 30cm. Trong khi sân có 3m thì sai số chỉ còn lại 3cm, nó còn nhỏ hơn cái vạch trắng 4-5cm nữa.

Tóm lại, em phải thực hành thử, và xem hai giải pháp cái nào tốt hơn. Cá nhân anh khuyên nên dò vạch trắng.

Chúc vui.

Đồng ý với Falleaf là Robocon là một sân chơi nhỏ (xét theo khía cạnh kiến thức về Robotics). Kiến thức cần dùng đến của chuyên ngành robotics thật sự rất ít với chỉ cần một vài loại sensor đơn giản (IR array for line following, IR detector, và một vài loại sensor đơn giản khác là có thể đáp ứng được). Có lẽ yêu cầu cao nhất của cuộc chơi Robocon có lẽ là CƠ KHÍ CHÍNH XÁC & một chút của tối ưu hóa tốc độ robot. Chắc chắn rằng đây không phải là một công việc dễ đối với sinh viên VN hiện nay vì thật sự rất ít trường đại học có hệ thống máy móc cơ khí tốt cho Sinh Viên sử dụng cũng như có những đầu tư thích đáng cho việc chế tạo Robot.
Như Fallleaf đề cấp, encoder khi nhìn qua là một vấn đề đơn giản nhưng để giải quyết khi đi vào chi tiết thì không đơn giản như vậy đâu. Để đáp ứng cho hệ thông đòi hỏi độ chính xác cao thì rất nhiều vấn đề của giải thuật lọc cần được áp dụng, điển hình nhất là Kalman Filtering, Paticle Filter, Baysiean filter nên được áp dụng cho từng trường hợp.
Với một hệ thống không tuyến tính (non-linear systems) thì có lẽ vấn đề này càng khó khắn hơn rất nhiều.
Theo thiết nghĩ của tôi, có lẽ cần phải có thêm những sân chơi khác để chúng ta mở rộng hơn kiến thức của mình về nhưng lĩnh vực liên quan đến Robotics, như là sensor fusion, motion planning algorithm, artificial intelligence..... Nơi đó, mỗi người có thể tự phát triển các kiến thức theo khuynh hướng của riêng mình chứ không bị Quá bó hẹp như Robocon hiện nay.
Xin được cùng chia sẻ suy nghĩ riêng với các bạn
Cheers,

falleaf
19-11-2005, 07:11 PM
Hi, không biết odense là ai, sao đi giống hướng của tôi đi thời học đại học thế nhỉ?

Chúc may mắn trên con đường nghiên cứu.

odense
19-11-2005, 08:31 PM
Cảm ơn fallleaf về lời chúc, Odense cũng chỉ là một member ngâu nhiên vào diễn đàn thôi. Tuy nhiên, odense cũng có nhưng "đam mê" về các lĩnh vực liên quan đến robotics nên cũng có nhưng tìm hiểu về nó vì vậy khi vào diễn đàn thấy có những kiến thức có thể chia sẻ được thì cùng nêu lên để mọi người thảo luận với nhau thôi (cái chính là thấy một mình fallleaf "vất vả" điều hành diễn đàn và trả lời câu hỏi của nhiều bạn quá nên nhảy vào đá đông, đá tây chút :)):)):))).
Anyway, nếu tiện cho hỏi fallleaf ngày xưa học trường gì thế?, chuyên ngành gì, giờ đang chiến đấu ở "chiến trường nào thế" được không?
Thêm tí nữa xin hỏi luôn là tôi vừa kiếm được mấy con dsPIC dòng 30 và 33 nhưng toàn dưới dạng adapter board chứ không phải single chip. Falleaf có cái programming intefacer nào có thể dùng download cho cái đó không. Tool của Microchip đắt quá, hơn 500 USD cơ, hơi xót ruột.

vtt
21-08-2006, 10:24 PM
Chào bác F!
Bài viết của bác về Encoder rất hay, nhưng tôi đang gạp một khó khăn như thế này.
Hiện nay tôi đang dùng Encoder ơ ngoài thị trường, số xung của nó là 2048xung/vòng. việc xác định số xung của nó thì tôi có thể nhưng tôi chưa biết cách nào để xác định chiều quay của nó. Tôi dùng Encoder của hãng Autonics ký hiệu 50S8-2048-3-.. Mong sự giúp đỡ của bác và các thành viên khác.
Xin cảm ơn!

falleaf
22-08-2006, 12:13 AM
http://www.picvietnam.com/forum/showpost.php?p=651&postcount=13

Bạn xem lại bài viết số 13 này sẽ hiểu được cách xác định chiều quay của encoder. Bài viết có trong luồng này, có thể bạn chưa đọc thật kỹ các bài viết.

Chúc vui

briantk_1988
23-09-2006, 11:31 PM
Cac bài viết của bác về Encoder thật là hay nhưng cháu vẫn không biết làm thế nào để điều khiển động cơ bằng Encoder, làm thế nào để đếm các lỗ đó? Ngoai ra, chau hoi bi confused, Encoder la dung cho Stepper motor/Servo motor?

Thnx

B

falleaf
24-09-2006, 11:19 PM
Encoder được gắn ở đuôi động cơ (AC/DC tùy), không liên quan đến động cơ step hay là không. Encoder dùng để xác định vì trí của trục động cơ bằng cách gắn cái đĩa quay có đục lỗ (như các hình minh họa) vào trục động cơ (có thể đằng trước, có thể đằng sau... ) Nói chung, vì trục quay tròn, không biết được vị trí hay vận tốc trục quay, người ta phải gắn một tấm tròn đục lỗ vào để biết nó đang ở vị trí nào tại một thời điểm, vậy encoder thực chất chính là cái đĩa tròn đó.

Điều khiển động cơ, dùng encoder, thực chất là gì? Thực chất là động cơ cấp điện, vd: điện áp cao thì nó quay nhanh, điện áp thấp thì nó quay chậm (vd động cơ DC). Bây giờ giả sử muốn nó quay chính xác 1000 vòng/phút vậy thì cấp điện áp bằng bao nhiêu? và làm sao biết nó quay đúng 1000 vòng/phút hay chưa?

Bằng cách đọc giá trị của encoder, người ta biết nó đang quay ở tốc độ bao nhiêu, vd đang thấp hơn 1000 vòng/phút, thì người ta tăng điện áp lên, nếu đang quay nhanh hơn, người ta giảm điện áp xuống.

Đơn giản như vậy gọi là điều khiển.

Còn câu hỏi tăng giảm bao nhiêu để cho nó đáp ứng được nhanh, và chính xác, đòi hỏi phải có một bộ điều khiển. Một trong những bộ điều khiển đó, điển hình nhất, là bộ điều khiển PID.

Em có thể xem luồng về "Tìm người làm bài tập thực hành: bộ điều khiển PID" để đọc bên đó.

Còn nguyên tắc đọc encoder, thì anh đã viết rõ rồi, có thể là em chưa học đủ để hiểu, hiện tại thì anh chưa có thời gian để viết lại quá căn bản, có lẽ nhờ bạn nào đó viết lại và giải thích rõ hơn cho em này.

Cám ơn nhiều.

Chúc vui

son_um
29-09-2006, 11:48 PM
Trước tôi cũng đã từng tìm hiểu qua về Encoder,hy vọng bài viết này của tôi sẽ giúp cho các bạn hiêu thêm về cấu tạo và nguyên lý hoạt động của Encoder.Trước đề tài tôi làm về Tay máy 6 bậc nên phải sử dụng tới 6 Encoder.Độ phân giải của đĩa vạch khoảng 1600 xung,sau khi đi qua bộ chia xung,tôi có thể nâng độ phân phải lên 6400 xung/1 vòng quay.(Con thước dịch chuyển thẳng thì đạt tới độ phân giải 0.02mm).
Còn để xác định chiều quay của động cơ thì tôi nói qua: Tín hiêu từ Encoder là 2 xung vuông lệch pha nhau 1 góc 90 độ.Dựa vào mối quan hệ giữa mức và sườn của 2 xung mà ta có thể xác định được chiều quay của động cơ.Tôi sẽ gửi bài viết về vấn đề này sau.
(Không bít có cần Falleaf kiểm duyệt ko nhỉ?)
Thân.

son_um
30-09-2006, 12:01 AM
Bật mí:Tất cả đĩa chia vạch và thước thẳng đều là sản phẩm Made in Vietnam và đã được trung tâm đo lường quốc gia kiểm nghiệm,cho độ chính xác ko thua kém sản phẩm của nước ngoài.Chúng tôi đã làm 1 cái thước dài 1m2 với độ phân giải 0.02mm cho trung tâm đo lường quốc gia,mà giả rẻ bất ngờ.Nếu như mua thước này do nước ngoài sản xuất thì giá khoảng vài ngàn đô.
Thân.

falleaf
30-09-2006, 12:48 PM
(Không bít có cần Falleaf kiểm duyệt ko nhỉ?)
Thân.

Nếu bạn muốn gửi tài liệu, thì vấn đề đó do bạn quyết định gửi tài liệu. Chúng tôi không chịu trách nhiệm về tài liệu của bạn gửi, rất hoan nghênh và trân trọng những tài liệu thành viên đóng góp.

Tuy nhiên, nếu bạn muốn viết một tài liệu chính thức của picvietnam, thì có 2 điều kiện bạn phải theo, một là phải viết bằng form chuẩn của picvietnam, hai là khi cung cấp thì phải cung cấp tài liệu gốc (.doc, hoặc các tài liệu kèm theo cần thiết). Khi đó, tài liệu của bạn sẽ được lưu ở dạng Tutorial và lưu trữ trong kho dữ liệu của picvietnam.

Vì sao nên viết tài liệu cho picvietnam?
- Tính hệ thống và chuẩn hóa
- Khả năng lưu trữ, backup
- Thể hiện một tài liệu có tính đầu tư cao của picvietnam. Hầu hết những tài liệu các bạn cung cấp, khi có thời gian, chúng tôi đều đọc lại, và biên soạn lại. Nhưng thực sự chúng tôi không thể làm chuyện đó một mình. Chúng tôi phổ biến form chuẩn, và các tài liệu nhằm mục đích kêu gọi các bạn, hãy hệ thống lại mọi thứ.

Mới chỉ có 1 năm, nhưng khối lượng dữ liệu đã quá nhiều, và nếu 3 năm sau thì chắc không ai đọc lại nổi. Vậy hãy cùng chúng tôi làm điều đó. Sử dụng form chuẩn của picvietnam, và gửi cho chúng tôi file .doc của bạn để chúng tôi lưu trữ và khi cần có thể sửa chữa.

Chúc vui.

tronghuan
19-08-2007, 03:18 PM
hiện nay mình có 1 encorder ký hiệu "SBN-4096-6ME" của hãng nidec nemicon cỏp. Nó ra 7 đầu dây. Mình muốn tìm tài liệu hoặc giải mã về nó. Bạn nào biết thì giúp dùm mình. Mình cảm ơn!

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/teaching/phy107/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, 09:03 PM
http://www.shef.ac.uk/physics/teaching/phy107/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
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, 08: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, 01:20 PM
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, 12:36 PM
Hay quá tiếp đi bác

vai_thieu_b5
20-09-2010, 01:06 AM
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/falleafd/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/falleafd/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/falleafd/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/falleafd/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
20-09-2010, 11:07 PM
đ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, 02: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, 12: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!