Con robot của mình tới 10 động cơ, mình dùng ATmega32 để điều khiển bằng pwm, nhưng con ATmega32 có 4 ngõ ra pwm. muốn sử dụng nhiều hơn thì ngoài cách kết nối nhiều con vi điều khiển lại thì làm thế nào đc.hix
Điều khiển robot bằng tay
Collapse
X
-
cái này bạn phải dùng giải thuật thôi, các thế hệ trước kia đã dùng rất nhiều vì hồi đó chủ yếu là dùng 89, cách này điều xung tất cả các chân cũng dc.Nguyên văn bởi bqhoang Xem bài viếtCon robot của mình tới 10 động cơ, mình dùng ATmega32 để điều khiển bằng pwm, nhưng con ATmega32 có 4 ngõ ra pwm. muốn sử dụng nhiều hơn thì ngoài cách kết nối nhiều con vi điều khiển lại thì làm thế nào đc.hix
bạn cần dùng ngắt của 1 timer 8 bit (tần số pwm phụ thuộc vào bộ chia hoặc giá trị đặt ban dầu của bộ đếm)
code như sau:
unsigned char xx=0;
unsigned char pwm_0=0; //chân P0.0 chẳng hạn
unsigned char pwm_1=0; //chân P0.1 chẳng hạn
unsigned char pwm_2=0; ...
//xxxxxxxxxxxxxxxxxxxxxxxxxxxx
void main(){
pwm_0=100; pwm_1=200; //pwm_x: 0->255
while(1);
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
interrupt_timer0(){
xx++;
if(pwm_0!=0 && xx==0) P0.0=0; //on
if(pwm_1!=0 && xx==0) P0.1=0; //on
//...
if(xx==pwm_0) P0.0=1; //off
if(xx==pwm_1) P0.1=1; //off
//...
}
good lucky|
Comment
-
tớ biết 1 cách điều chế PWM ra 1 chân bất kì.đó là chọn chế độ normal sau đó kích hoạt 2 ngắt tràn và so sánh.khi viết chương trình ở 2 ngắt.vdu ta muốn điều chế PWM ra chân PORTA.0 thì ta làm như sau
ở ngắt tràn cho PORTA.0 =1
ở ngắt so sánh cho PORTA.0=0:sau đó thay đổi thanh ghi OCR0 ở hàm main thế là xong.rất đơn giản!mình hơi bận lên không làm ví dụ được cái nè cũng không khó mình hướng dẫn sơ qua vậy thôi mong các bạn làm tốt.chúc thành công!!
Comment
Bài viết mới nhất
Collapse
There are no results that meet this criteria.

Comment