Chào các đại ca. Em là dân mới tập toẹ bước vào nghiên cứu AVR,có bài toán này muốn hỏi mọi người: Em có điện áp Analog biến đổi tuyến tính đưa vào chân ADC0, động bước được điều khiển bằng cồng PORTD, bây giơ em muốn khi điện áp analog tăng thì vận tốc của Động cơ bước tăng. Các bác có thể nói qua về thuật toán cho em. Xin cảm ơn.
Thông báo
Collapse
No announcement yet.
ADC + Động cơ bước
Collapse
X
-
Tui chưa làm, nhưng gợi ý bác làm thế này.
- cho ADC chạy ở chế độ free running.
- dùng mảng lưu các mẫu trạng thái bit điều khiển động cơ bước (4 mẫu -> 1 bước, 8 mẫu -> 1/2 bước)
- dùng ngắt timer để chuyển trạng thái bit.
- trong trình phục vụ ngắt, update giá trị TCNTn bằng giá trị ADC đọc được.
pseudo-code như sau:
array[]={0x01;0x02;0x04;0x08}
timer interrupt isr
{
update TCNTn=ADCW;
if(++i>4) i=0;
PORTD = array[i];
}
main
{
initialize ADC, Timer, PortD, các biến ...;
sei;
while(1);
}
Bác làm thử xem.Phen này ông quyết buôn băng dính,
Vừa bán vừa hm... hm... cũng đắt hàng.
-
Đó là một cách giải hay, đơn giản và hiệu quả. Xin phép miêu tả rõ hơn thuật toán để bạn đọc dễ hiểu:
- ADC chạy free running tức là chạy ở chế độ chuyển đổi liên tục, kênh đầu vào liên tục được lấy mẫu và chuyển đổi sang số, thanh ghi kết quả chuyển đổi cũng được liên tục cập nhật giá trị mới. Tất nhiên tất cả các bước trong quá trình chuyển đổi đều hoàn toàn tự động kể từ khi cho phép chạy.
- mảng chứa các mẫu bit đưa ra điều khiển đóng cắt lần lượt các cuộn dây (4 mẫu bit tương ứng với chế độ full-step, 8 mẫu bit tương ứng với chế độ hafl-step). Trong ví dụ của tác giả là chế độ full-step.
- sử dụng một timer, cho chạy liên tục và cho phép ngắt tràn. Mỗi khi tràn timer vì vậy sẽ gây ra ngắt, trong chương trình phục vụ ngắt (chương trình xử lý ngắt) tác giả sẽ đưa mẫu bit điều khiển tiếp theo ra để điều khiển động cơ quay bước (nửa bước) tiếp theo. Đồng thời trong chương trình phục vụ ngắt tác giả cũng cập nhật thanh ghi đếm của timer bằng với giá trị kết quả chuyển đổi ADC. Như vậy giá trị chuyển đổi ADC càng lớn thì giá trị được nạp lại của thanh ghi đếm cũng càng lớn, lần ngắt tràn tiếp theo sẽ đến càng nhanh hơn, dẫn đến thời gian cập nhật các mẫu bit ngắn hơn ---> các cuộn dây được chuyển trạng thái nhanh hơn ---> tốc độ nhanh hơn. Ngược lại với trường hợp giá trị chuyển đổi nhận được thấp.
Trong ví dụ của tác giả có vài điểm cần để ý nếu muốn giải quyết triệt để hơn:
- cần chọn timer có độ phân giải phù hợp (8 bit hay 16 bit), từ đó có giải pháp hợp lý cho việc cập nhật thanh ghi đếm từ kết quả chuyển đổi 10 bit.
- cần có thao tác chặn trên đối với trường hợp timer8 bit
- với timer 16 bit cần có hệ số cập nhật K x kết quả chuyển đổi 10 bit để đạt được tốc độ nhanh hơn
- ...
Cũng có thể dùng timer cho chạy tràn với chu kỳ cố định = n micro giây. Mỗi lần tràn sẽ kiểm soát một số đếm i xem đã đủ m lần tràn chưa, nếu đủ rồi thì mới đưa mẫu bit điều khiển tiếp theo ra. Giá trị ngưỡng m đó cũng sẽ được cập nhật là một hàm của giá trị chuyển đổi ADC. Do đó mà có thể tạo sự thay đổi ở tốc độ theo giá trị điện áp đưa vào chuyển đổi.
Thân mến,
blackmoon.
Comment
-
Để tăng tốc độ step motor, bác tăng tốc độ xung kích. Nhưng tăng tốc độ xung kích tới 1 lúc nào đó thì momen giảm. Nguyên nhân là lúc đó dòng chưa kịp tăng (theo hàm mũ) đến giá trị danh định thì xung kích đã chuyển qua kích cuộn dây khác rồi. Thời gian để dòng tăng đến giá trị danh định phụ thuộc vào 3 yếu tố: điện cảm cuộn dây, điện trở cuộn dây, và điện áp kích. Trong 3 cái đó, rõ ràng là bác chỉ có thể thay đổi điện áp kích được thôi.
Theo đó, một cách để tăng tốc độ step motor là kích theo kiểu "high voltage chopper". Theo cách này, điện áp kich sẽ lớn hơn điện áp danh định của motor (có thể từ 5 đến 10 lần), mỗi xung kích là 1 chùm xung. Dòng cuộn dây sẽ tăng nhanh (đến giá trị danh định), cho phép bác tăng tốc độ xung kích
Cách khác là kich xung có 2 mức: 1 mức lớn hơn điện áp danh định (nhưng hẹp) để dòng cuộn dây tăng nhanh (đến giá trị danh định), tạo momen lớn cho motor nhảy bước; mức thứ 2 thấp hơn để duy trì momen tĩnh. Dĩ nhiên lúc này mạch driver sẽ phức tạp hơn.
Hai cách trên bác nhớ là hiểu rõ mới làm nhé. nếu không thì sẽ có khói bốc lên cao từ mạch/motor của bác đấy.
Cách khác đơn giản hơn là bác kích 2 cuộn 1 lúc, mẫu bit lúc này là {0x03, 0x06, 0xC0, 0x09}. Kích như vậy momen sẽ tăng, do đó bác có thể tăng tốc độ xung kích lên, nhưng sẽ không tăng được nhiều.
Bác download file này xem thêm:
http://rapidshare.de/files/29356966/step.zip.html (1.25MB)Last edited by taolao; 14-08-2006, 20:24.Phen này ông quyết buôn băng dính,
Vừa bán vừa hm... hm... cũng đắt hàng.
Comment
-
Xin hỏi bác Taolao, em thử dùng phương pháp "high voltage chopper" như bác nói rồi nhưng không được bác ạ, Điện áp em đưa vào là 12V, mức danh định của Động cơ khoảng 3V. Nó vẫn quay bình thường, chỉ thấy động cơ nóng kinh khủng thôi. Bác có thể nói rõ hơn ở chỗ thay một xung bằng một chùm xung được không? Ví dụ: thời gian trễ giữa các xung trong một chùm...
Cảm ơn bác!Nỏ biết chữ mần răng ký được??!! Thôi nhé.
Comment
-
Ấy ấy, không biết bác làm thế nào mà để nó "nóng kinh khủng" thế. Tôi chưa làm cái này, nên chỉ nói cách làm thôi, không có sơ đồ cụ thể. Bác nào có cao kiến xin chỉ thêm.
- làm 1 mạch tạo xung vuông có thể chỉnh tần số được từ vài KHz đến vài chục KHz (đơn giản là dùng 4093, C103, VR50K).
- dùng cổng AND 2-input để điều chế xung kích (1 đầu vào lấy xung kích từ VĐK bác đã làm, 1 đầu vào lấy xung từ mạch dao động). Ngõ ra cổng AND kích các transistor công suất.
- gắn thêm điện trở 0.5ohm/5W nối tiếp với cuộn dây để xem dòng trên osciloscope (I=U/0.5), rồi từ đó mà chỉnh tần số ở mạch dao động. Lúc này bác chẳng cần quan tâm đến áp trung bình trên cuộn dây mà chỉ quan tâm đến dòng qua nó.
- Tăng dần tần số xung kích (ở VĐK), đồng thời chỉnh tần số mạch dao động sao cho dòng ko vượt quá giá trị danh định.
Đơn giản hơn bác có thể dùng L297. Xem http://www.kevinro.com/chpdrv.pdfPhen này ông quyết buôn băng dính,
Vừa bán vừa hm... hm... cũng đắt hàng.
Comment
-
Nóng là cái chắc. Động cơ 3V mà bác chạy ở 12 V vượt quá mức danh định nhiều đấy. Gắn thêm cho nó con trở công suất để điện áp rơi lên cuộn dây là 3V. Nếu ko thích gắn trở thì phải thiết kế mạch phản hồi dòng. Đến khi nào dòng tăng đến mức danh định thì băm cái xung điện áp trong khoảng 3 V (Mặc dù nguồn vẫn cấp 12V).The road ahead
Comment
-
Vấn đề ở đây sẽ nằm ở cái mạch công suất, bác chạy bình thường thì ko sao, dưng mà nếu định chopper thì phải đảm bảo cái mạch công suất chịu được tần số đóng cắt cỡ vài chục kHz.PNLab
Mạch nạp/debug ULink2, Jlink ARM USB
Mạch nạp AVR, PIC, 8051, MSP430 USB
Mạch phát triển STM32, ARM9, ARM11
more...www.pnlabvn.com
Comment
-
Nếu theo như bác Tinhthanthep thì tôi nghĩ là chẳng có tác dụng đâu ạ, bởi vì cấp áp bao nhiêu thì cuối cùng trên động cơ áp vẫn bằng 3V => Cấp luôn 3V trực tiếp vào động cơ cho đỡ tốn tiền trở công suất, bác nghĩ thế nào? Tôi chỉ chưa hiểu ở chỗ Chopper thôiNỏ biết chữ mần răng ký được??!! Thôi nhé.
Comment
-
Sao lại không tác dụng? Tôi nói phóng đại thế này cho dễ hiểu nhé. Nếu bác cấp 3 v cho động cơ thì phải mất 10 giây (nói phóng đại) thì dòng điện mới tăng được từ 0 A lên đến I A (dòng danh định). Nhưng nếu bác đặt 12V vào rồi mắc thêm con trở công suất để điện áp rơi trên cuộn dây vẫn là 3 V thì chỉ mất 1 s là dòng điện tăng từ 0A lên tới IA rồi. Như thế tốc độ động cơ của bác vọt lên đáng kể. Thời gian tăng của dòng điện từ 0A lên đến I A tính bằng công thức: t=5*L/R. Trong đó L là điện cảm của cuộn dây. R điện trở trong của cuộn dây. Vậy để giảm t thì phải tăng R. Tăng R bằng cách lắp thêm điện trở vào. Và để vẫn đảm bảo điện áp đặt lên cuộn dây là 3 V thì lại phải tăng điện áp nguồn lên 12V.The road ahead
Comment
-
Cảm ơn bác, hôm trước em có đọc một tài liệu nào đó nói về cái này, nhưng mà không hiểu lắm, bây giờ bác nói em mới rõ. Thế bác có biết tăng áp theo kiểu này thì nó quan hệ với tốc độ như thế nào không ạ? Ví dụ như tăng VCC 5 lần thì tốc độ tăng 10 lần.... chẳng hạn?Nỏ biết chữ mần răng ký được??!! Thôi nhé.
Comment
-
Phải biết phân biệt Momen và tốc độ, thời gian chuyển xung giữa các cuộn dây sẽ quyết định tốc độ, gián tiếp quyết định momen, chứ ko có quan hệ ngược lại
À, nói thêm, cái mạch của cậu ý mà, chạy được ở vài trăm Hz mà may rồi, muốn biết tại sao thì đọc sách nhé, cái này nói quá nhiều rồi!PNLab
Mạch nạp/debug ULink2, Jlink ARM USB
Mạch nạp AVR, PIC, 8051, MSP430 USB
Mạch phát triển STM32, ARM9, ARM11
more...www.pnlabvn.com
Comment
Bài viết mới nhất
Collapse
-
bởi bqvietServo cuối cùng vẫn chỉ là điều chỉnh tốc độ và đọc phản hồi vị trí
Qua cổng song song LPT cổ
https://www.electronicsforu.com/elec...eed-controller
Qua cổng USB - xem thêm đám FT232RL-
Channel: Điện tử công nghiệp
22-11-2024, 15:56 -
-
bởi thiennam0703Em đang tìm hiểu cách xây dựng chương trình điều khiển động cơ Servo Yaskawa bằng máy tính tuy nhiên khi tìm kiếm trên mạng các hướng dẫn thì thường là điều khiển bằng vi điều khiển hoặc điều khiển bằng PLC hay điều khiển động cơ...
-
Channel: Điện tử công nghiệp
22-11-2024, 15:32 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi bacthoMình cũng bị như vậy mà chưa biết ở đâu
-
Channel: Vi điều khiển AVR
21-11-2024, 21:00 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi nhathung1101Câu trả lời là không dùng được.
Hai lớp dán mặt trước và mặt sau, gọi là film phân cực. Muốn hiểu rõ về nó thì chịu khó search nhé. Ở đây có rất nhiều chó cứ ngửi thấy phân là sủa nhặng, nên không giải thích nhiều....-
Channel: Thiết bị điện tử cá nhân
21-11-2024, 16:20 -
-
Comment on Tổng hợp các thông tin về mạch nạp cho AVRbởi Memem
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
Trả lời cho Tổng hợp các thông tin về mạch nạp cho AVRbởi MememMọi người ơi cho em hỏi cái này ạ, hiện tại em đang làm btl về hiển thị giá trị nhiệt độ trên led 7 thanh sử dụng atmega16, code em chạy trên mô phỏng rất oke nhưng khi lắp qua mạch thực thì bị lỗi ở led đầu tiên bị lỗi như thế này...
-
Channel: Vi điều khiển AVR
21-11-2024, 15:10 -
-
bởi mantruongepuNhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
-
Channel: Điện tử dành cho người mới bắt đầu
20-11-2024, 14:40 -
-
bởi TherulCảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
-
Channel: từ PIC tới dsPIC
20-11-2024, 07:20 -
-
Trả lời cho Em muốn hỏi mọi người về nguyên lý hoạt động, tần số của mạch công suất trong máy rửa siêu âm ạ.bởi nguyendinhvanBạn nên nghiên cứu cái chấn lưu đèn ống Compact fluorescent lamp hay đèn compact trước đã. Nó rẻ đỡ tốn kém.
Sau khi hiểu rõ rồi thì chuyển sang cái mạch này.
Ở cái chấn lưu, tần số của nó linh tinh lắm, tùy điện áp nguồn, tùy...-
Channel: Hỗ trợ học tập
19-11-2024, 22:44 -
Comment