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 k6886Điện 3 pha
Điện 3 pha là hệ thống cung cấp điện phổ biến trong công nghiệp và một số ứng dụng thương mại lớn. Hệ thống này gồm 3 dây pha (L1, L2, L3) và một dây trung tính (N), cung cấp dòng điện xoay chiều với hiệu điện...-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 16:05 -
-
Trả lời cho Hỏi về test hipot cao ápbởi nguyendinhvanCách nghĩ của bạn là theo duy tâm thôi. Còn trong công việc thì phải theo duy lý.
Bạn vào goggle và gõ từ : tiêu chuẩn an toàn cách điện.
Bạn sẽ thấy vô vàn các quy định, VN cũng có , quốc tế cũng có. Mỗi vùng , mỗi khu vực,...-
Channel: Điện tử dành cho người mới bắt đầu
02-11-2024, 20:04 -
-
bởi lamvu0677Chào mọi người, ai làm về điện, đặc biệt biến áp xung, mâý con nho nhỏ gắn vào mạch nguồn, cho e hỏi tí ą, e cũng làm trong ty về biển áp thì đo kiểm thành phẩm sẽ kiểm cao áp, tức là kiểm xem có phóng điện giữa các cuộn dây với...
-
Channel: Điện tử dành cho người mới bắt đầu
01-11-2024, 21:05 -
-
bởi AaaabbbbbEm chào các anh chị ,cô chú . Em đang có 1 đề tài: Mô phỏng điều khiển động cơ 1 chiều và bộ điều khiển điện áp tự động (AVR) sử dụng MATLAB/Simulink và Arduino . Anh chị có thế giải thích hoặc định hướng giúp em với được không ạ . Em xin cảm ơn !!...
-
Channel: Vi điều khiển AVR
30-10-2024, 16:38 -
-
bởi 2embeyeuem mới nhập môn, bác nào có sơ đồ của mạch này và cách cắm mạch trên panel cho em xin với, em cảm ơn ạ
-
Channel: Điện tử dành cho người mới bắt đầu
30-10-2024, 15:52 -
-
bởi dqt21091997Hi mọi người,
Team mình hiện là đối tác phân phối cho 1 dịch vụ Proxy US chuẩn bị mở mang tên Proxy Compass. Mọi người có thể trải nghiệm ở đây: https://proxycompass.com/vi/free-trial/
Điểm mạnh của Proxy Compass là:
- 50 địa chỉ IP proxy
...-
Channel: Tổng quan về ngành viễn thông
30-10-2024, 14:46 -
-
Trả lời cho Thắc mắc về kiến thức điện xoay chiềubởi SteinsKMình nhớ là do điện AC không có chia cực cố định như DC, thêm vào đó thì ổ điện loại mà 2 lỗ thì cũng không có phân biệt chiều cắm, thành ra mình cắm chiều nào cũng được. Đây là em hiểu như vậy, có bác nào có ý kiến khác không ạ....
-
Channel: Điện tử dành cho người mới bắt đầu
30-10-2024, 09:57 -
Comment