Mình đang gặp vấn đề trong việc điều chế PWM cua Pic6f877a. Mình muốn dùng 2 chân điều chế PWM của Pic để điều khiển động cơ DC.mình viết code bằng CCS,nhưng khi mô phỏng trong Protus thì 2 chân CCP cua Pic không xuất ra xung gì cả.Nó luôn xuất ra mức 0.Mạch mô phỏng đơn giản lắm,chỉ là kiểm tra xem nó có xuất xung hay không thôi.Các bác Pro giúp mình với. Mình đang cần gấp lắm
Giúp mình vấn đề Điều chế PWM
Collapse
X
-
Tags: không có
-
#include<16f877a.h>
#fuses hs,NOWDT,PUT
#use delay(clock=20000000)
main()
{
setup_timer_2(T2_DIV_BY_16,239,1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
set_pwm1_duty(64);
set_pwm2_duty(900);
while(1) {}
}
Comment
-
có nguồn ở đây nè bạn. Bạn tìm đến file dktocdodc.rar .Hi vọng giúp được bạn.
Comment
-
có encoder hồi về phải làm sao
code đây sửa lại như thế nàoAttached Files
Comment
-
Dù ngắt liên tục thì nó cũng chỉ mất thời gian rất ngắn, bạn dùng ngắt đó + ngắt timer để tính tốc độ (cái này có cả đống bài trên picvietnam viết và code sẵn rồi), vấn đề là bạn đưa vào một tốc độ cần đạt được (tốc độ đặt), code của bạn sẽ so sánh với tốc độ bạn đọc được từ encoder để điều chỉnh. Mình đang làm điều khiển góc quay , giờ viểt báo cáo gấp để nộp cho khoa, sắp hết hạn rồi, mấy bài về cái này nhiều lắm, bạn tự tìm trong diễn đàn có hết
Đọc encoder nè: http://www.picvietnam.com/forum/showthread.php?t=1646
Cái này nữa nè: http://www.picvietnam.com/forum/show...?t=2296&page=7
Cái này thì hơi mệt chút: http://www.picvietnam.com/forum/show...?t=485&page=25Last edited by baquyen; 11-06-2010, 05:28 PM.Biển học mênh mông -- Quay đầu là bờ!
My blog
Comment
-
bác xem lại cái giá trị đặt trong pwm2 nhé.giá trị mình đặt phải nhỏ hơn giá trị trong thanh ghi PR2Nguyên văn bởi manhhung_cdt08 View Post#include<16f877a.h>
#fuses hs,NOWDT,PUT
#use delay(clock=20000000)
main()
{
setup_timer_2(T2_DIV_BY_16,239,1);
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
set_pwm1_duty(64);
set_pwm2_duty(900);
while(1) {}
}
Comment
-
sao mình thử mãi không được nhỉNguyên văn bởi manhdktd View Postbác xem lại cái giá trị đặt trong pwm2 nhé.giá trị mình đặt phải nhỏ hơn giá trị trong thanh ghi PR2
(
___________________________________
Cập nhật liên tục Lich thi dau world cup 2010 , Tin tuc, Tin tuc trong ngay ,Thoi trang & HOT Game , Nhac.Click ngay để Nghe nhac.
Comment
-
cậu không được chỗ nào?có thể nói cụ thể được không?Nguyên văn bởi trangkutehd View Postsao mình thử mãi không được nhỉ
(
___________________________________
Cập nhật liên tục Lich thi dau world cup 2010 , Tin tuc, Tin tuc trong ngay ,Thoi trang & HOT Game , Nhac.Click ngay để Nghe nhac.
Comment
-
bạn cùng thach anh 20000000 hz bạn phải sửa setup_timer2 lại đi; bạn chọn bộ chia 16 thi gia trị nhận được là 124
cach tinh nè bạn
//setup_timer_2(mode,period,postscale)
// * PWM Register Values
// * Oscillator Frequency Fosc = 20000000
// * Clock Frequency Fclk = 5000000
// TOSC=1/20000000=5000000
// * PWM Freq = 10000 HZ
// * Prescaler Value = 4
// * PR2 = 124
//10000=[(PR2+1).4.TOSC.(TMR2 PRESCALE)]
// * Maximum duty value = 500
Comment

Comment