PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 07-07-2010, 02:48 AM   #5
stargreen1001
Nhập môn đệ tử
 
Tham gia ngày: Mar 2009
Bài gửi: 9
:
Talking

Trích:
Nguyên văn bởi uydanh View Post
Chào mọi người!
Mình xác định tốc độ động cơ DC như sau : đọc xung encoder phát ra cứ mỗi 1ms một lần, dùng timer0, từ số xung đó xác định tốc độ hiện tại của động cơ. Chương trình viết bằng mplab và chạy tốt nhưng có một nhược điểm lớn như sau:vì xung đọc về chỉ toàn là số nguyên (tất nhiên ko thể có phần thập phân) nên về bản chất của giải thuật trên cho ra một tốc độ động cơ ko thể nào chính xác được. Sai số sẽ rất lớn nếu hệ số nhân vào để quy đổi từ số xung ra tốc độ thực càng lớn.
Động cơ của mình ở tốc độ tối đa đếm được 6 xung/1ms (quy đổi 3336 vòng/phút). Ở các tốc độ thấp hơn thì số xung chỉ có thể là 5 ,4,3,2,1 hoặc 0 và tương ứng nếu thể hiện ra led 7 đoạn thì dù động cơ quay như thế nào đi nữa thì cũng chỉ có 7 giá trị tốc độ đó. Chưa kể đến việc nếu chạy ở tốc độ thấp, trong vòng 1ms mà chưa tạo ra hoàn thiện 1 xung thì kết quả là 0 vòng/phút.
Cho mình hỏi, có cách naò để việc đọc tốc độ chính xác hơn không ?( mà không phải tăng thời gian lấy mẫu).
Một câu hỏi thêm : việc thực hiện các phép nhân các số thập phân dùng asm như thế nào? (có chương trình con luôn thì tốt quá!)
Cảm ơn mọi người.
mình cũng đang kẹt cái chỗ này, mình đã thử dùng nhiều phương án, nhưng sai số rất lớn:
các phương án của mình đã làm thử là : đo số xung trong một thời gian lấy mẫu (bị sai số), tính thời gian giữa hai xung cạnh lên, tính thời gian giữa một vòng quay( cái này thì khi quay chậm thì cập nhật chậm, quay nhanh thì cập nhật nhanh) nhưng mà cái nào cũng có sai số hết, giờ mình cũng khônng biết làm sao nữa, có cao nhân nào chỉ mình cách giải thuật cho chính xác không???, encoder của mình có 100xung/vòng, là loại tương đối (1 vòng lỗ, ko có lỗ xác định một vòng quay luôn) động cơ mình dùng là loại động cơ dc nhỏ, mình cũng có ý định dùng thuật toán pid để điều khiển tốc độ, ai giúp mình cái, thank nhiều nhiều
stargreen1001 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 03:08 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam