Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
Thông báo
Collapse
No announcement yet.
có ai giúp em cách lập trình điều khiển dc dùng encoder ko?
có ai giúp em cách lập trình điều khiển dc dùng encoder ko?
help me em sáp nộp đồ an rùi but chua bit cach làm có anh nào bit chi em cách lập trình đi .khi lấy signal tu encoder rồi xủ lí nó nhu thế nào đây có ai bit giúp dùm đi
Hiện tôi có cả schematic, PCB lẫn mã nguồn (asm) để chạy con AT89S52.
Mạch gồm 3 cái SW: Chạy tới, dừng và chạy lui; 3 số LED 7 đoạn hiển thị
xung trong 1 giây. Đão chiều motor bằng relay, điều chỉnh tốc độ motor
theo cách điều rộng khổ xung (PWM). Mạch đơn giản không có hồi tiếp
để ổn định tốc độ và không có giải mã cho bộ encoder (quadrature clock
converter).
Nếu cần thì cho biết.
bạn haidien oi! có thể gửi cho mình ct điều chỉnh tốc độ motor theo cách điều rộng khổ xung đc ko? tks nhiều lắm đang cần gấp lắm... có gì send cho tui nhé ( ms.cuong@gmail.com)
help me em sáp nộp đồ an rùi but chua bit cach làm có anh nào bit chi em cách lập trình đi .khi lấy signal tu encoder rồi xủ lí nó nhu thế nào đây có ai bit giúp dùm đi
Bài toán xử lý encoder là bài toán chung cho mọi vi điều khiển thôi. Cách mà tôi làm như sau:
1. Thứ nhất bạn đưa chân tin hiệu vào chân ngắt ngoài của vi điều khiển (thường được kí hiệu là INT0, INT1, ...)
2. Enable ngắt, có một biến đếm là biến toàn cục, tăng giá trị biến đếm trong chương trình ngắt.
3. Sử dụng một timer, mỗi lần timer ngắt tràn thực hiện xử lý giá trị xung đếm được, gán biến đếm bằng 0 để bắt đầu chu ký mới.
Xử lý tín hiệu encoder? Nếu chỉ làm 1 nhiệm vụ giải mã thì không cần bất cứ ngắt nào
cả. Vấn đề quan trọng ở đây là phase của 2 xung clock từ bộ encoder mà theo lý thuyết
là lệch nhau 90 độ. Người ta phân biệt được chiều chuyển động cũng dựa vào yếu tố
lệch phase này. Thí dụ nếu clk A sớm phase hơn clk B thì chuyển động theo chiều kim
đồng hồ và ngược lại. Mà đã nói đến sớm trễ phase thì phải nói đến thời gian, thời gian
ở đây bao gồm cả quá khứ, hiện tại và tương lai. Phải thỏa đủ 3 điều kiện về thời gian
như trên mới giải mã 1 cách chính xác.
Chương trình điều rộng khổ xung (PWM):
Ta chia chu kỳ của tín hiệu điều rộng xung ra làm 2 phần: Có xung và không có xung.
Ta bắt đầu với độ rộng xung nhỏ nhất là 1/255 (8 bit), phần không có xung là 254/255.
Giờ ta tăng độ rộng xung thêm 1 là 2/255 thì phần khong có xung là 253/255. Cứ thế
mà tiếp tục. Hai phần của một chu kỳ ta nạp vào TH0 hoặc TH1 (tùy theo sử dụng timer
nào). Thí dụ ta đang xử lý ngắt timer_x trong phần có xung của chu kỳ thì ta nạp giá trị
của phần không có xung vào THx (lưu ý là timer phải chạy mode 8 bit auto reload) để
timer chạy đến giá trị nạp trong THx thì nó tạo ra 1 interrupt. Ngược lại thì giá trị có xung
vào THx. Sau đây là đoạn chương trình viết bằng hợp ngữ (nhớ khai báo các
biến, ...):
IsrTimer0:
PUSH ACC
PUSH PSW
JNB RunFlag, MotorOff
MotorOn:
JB MotorFlag, MotorOff ; Nếu motor đang on thì off
CLR PWM ; Ngược lại thì on
MOV TH0, DutyCycleComp ; Giá trị nạp lại cho thời gian ngừng
SETB MotorFlag ; kích hoạt motor (tắt)
POP PSW
POP ACC
RETI
MotorOff:
SETB PWM ;
MOV TH0, DutyCycle ; Giá trị nạp lại cho thời gian kích
CLR MotorFlag ; hoạt motor (chu trình tác động)
POP PSW
POP ACC
RETI
Theo tôi biết thì chỉ cần nối 2 dây tín hiệu của Encoder vào 2 chân bất kỳ của VDK rồi dùng timer để đếm số xung và tính tốc độ động cơ mà không cần đưa vào ngắt .
Bây giờ nếu muốn biết chiều của động cơ ta phải làm j???
Tôi đưa ra thuật toán thế này các bạn xem có được ko nhé :
- trong Timer ta sẽ đếm số xung (khỏang 1ms chẳng hạn thì kiểm tra các chân tín hiệu một lần)
- trong Timer ta cũng kiểm tra xem xung A , B xung nào có trước rồi set một cái cờ để nhớ kết quả (gọi là cờ chiều quay)
Ai đã làm rồi thì cho ý kiến nhé và nhớ post chương trình lên cho anh em tham khảo
Tôi cũng đang quan tâm về phần điều độ rộng xung để đk motor 1 chiều, bạn haidien có thể send cho tôi cả code asm và schematic được kô? Thank nhiều nhiều !!!!!
Tôi cũng đang quan tâm về phần điều độ rộng xung để đk motor 1 chiều, bạn haidien có thể send cho tôi cả code asm và schematic được kô? Thank nhiều nhiều !!!!!
Mai: npgiang@gmail.com
Tôi cũng đang quan tâm về phần điều độ rộng xung để đk motor 1 chiều, bạn haidien có thể send cho tôi cả code asm và schematic được kô? Thank nhiều nhiều !!!!!
Mai: npgiang@gmail.com
Tôi đã từng làm qua mạch đếm xung encoder bằng cách đếm mức cao thấp của xung A và B, kết quả là chạy một chiều thì được nhưng khi đảo chiều nhiều lần (nhất là cần giữ vị trí của servo) thì đếm bị sai.
Tôi đã làm mạch khác đếm theo cạnh xung A, B. Kết quả có thể nói đúng tuyệt đối. Tôi đã ứng dụng để làm bo điều khiển cữ NC cho máy cắt tôn, máy chấn tôn, máy đột dập CNC. Bo có thể điều khiển DC servo hay AC dùng Inverter đều được. Ai quan tâm thì mail cho tôi thi221096@yahoo.com
Cái gì không mua được bằng tiền thì có thể mua được bằng ... nhiều tiền
Mình cũng đang tìm hiểu cách lập trình điều khiển dc dùng encoder, bạn haidien hoặc ai có bài này có thể gửi cho mình được ko? cám ơn nhiều.
mail: phutuanhd@gmail.com
Không biết là bạn quan tâm cụ thể khâu nào. Khâu điều khiển tốc độ (servo driver) hay là khâu điều khiển vị trí?
Bộ driver mình chỉ sử dụng hàng có sẵn thôi chứ chưa tự làm bộ nào. Nếu bạn thích hãy tham khảo sơ đồ nguyên lý DC Servo driver của Fanuc.
Trong sơ đồ này, bộ F-V converter có thể thay bằng tachometer gắn ở đuôi motor.
Mình chỉ làm được bộ điều khiển vị trí thôi, sử dụng lại DC servo motor và DC servo driver cũ.
Attached Files
Cái gì không mua được bằng tiền thì có thể mua được bằng ... nhiều tiền
Hiện tôi có cả schematic, PCB lẫn mã nguồn (asm) để chạy con AT89S52.
Mạch gồm 3 cái SW: Chạy tới, dừng và chạy lui; 3 số LED 7 đoạn hiển thị
xung trong 1 giây. Đão chiều motor bằng relay, điều chỉnh tốc độ motor
theo cách điều rộng khổ xung (PWM). Mạch đơn giản không có hồi tiếp
để ổn định tốc độ và không có giải mã cho bộ encoder (quadrature clock
converter).
Nếu cần thì cho biết.
chao!minh dang rat can tai lieu do ban gui cho minh duoc ko.dia chi mail:duc_diep85@yahoo.com
À, sản phẩm họ thiết kế ra, họ yêu cầu mình chứng minh là sau chỉnh sửa thì 1 là gỡ jump cắm lại không hư mạch, 2 là gỡ jump thì 220Vdc vẫn dùng được led áp thấp 20V mà không hư led như mình báo, nên họ hiểu rõ mà....
Bài học kiểu trực tuyến dù là loại đơn giản bậc nhất cũng vẫn cần chú tâm. Chỉ bật tai nghe lên thì không có loại nào thấm nổi đâu. Cách hay hơn, dễ hơn là kiếm phim tiếng Anh nào đó xem, ban đầu bật phụ đề tiếng Việt, nghe và...
Ha ha !
Thay đổi cách nghĩ thì sẽ nghĩ ra.
.
.
.
Một thứ cần kiểm soát dòng + nhiệt + công suất tiêu tán. Nhưng lại dùng tư duy ổn áp. Làm sao mà giải quyết được.
Nó là mạch ổn dòng.
Vì thế các anh nước lạ không thèm quan tâm là phải....
Vì cứ phải chỉnh sửa cho mỗi dải điện áp, quên chỉnh thì hư chíp phải bảo hành nên em thấy bất tiện, mới cần cái mạch 1 dải áp cao dùng cho tất cả loại đèn đó bác!...
Mình thỉnh thoảng cũng làm việc với người nước ngoài nói tiếng Anh thì toàn ghép nhặt từ, cộng với quơ tay quơ chân để diễn tả, hix. Nỗi khổ là không biết cách để mô tả sự việc. Tôi muốn tìm các bài giảng tiếng anh nào phù hợp...
Comment