![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Sep 2009
Bài gửi: 16
: |
![]() --------------------------------------------------------------------------------
EM MUỐN DÙNG PIC16f877a điều khiển động cơ một chiều dc ! phụ thuộc vào điện áp do xung pwm trên hai chân ccp1 va ccp2 ! nhưng em ko hiểu rõ lắm về quy luật của nó ! khi em muốn đặt một tốc độ ở một thiết bị điều khiển bên ngoài kết nối vơi vi xử lý thì phải làm thế nào ! chỉ giùm với ! thanks |
![]() |
![]() |
![]() |
#2 |
Đệ tử 2 túi
Tham gia ngày: Sep 2008
Bài gửi: 27
: |
Mình nhớ là diễn đàn chúng ta đã có một threat rất đầy đủ về điều khiển động cơ dc, bạn xem lại nhé
thay đổi nội dung bởi: roi, 08-11-2009 lúc 12:18 AM. |
![]() |
![]() |
![]() |
#3 | |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 5
: |
Trích:
sau đó tính thời gian duty(nghĩa la thòi gian xung tồn tại ở mức cao) tốc độ qui định là sự phụ thuộc của thời gian duty và chu kỳ xung |
|
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: May 2008
Bài gửi: 7
: |
vừa qua mình mới học về multi state thấy rất hay, có bạn nào muốn công việc lập trình trở lên có kế hoạch, dễ kiểm tra lỗi và sử lỗi, nhân việc hỏi về điều khiển động cơ bước mình muốn phát triển một đề tài về điều khiển động cơ đa trạng thái, ví dụ như điều khiển máy bơm nước chẳng hạn, trạng thái 1 bơm nước và kiểm tra trong vòng 5s nếu như không thấy nước thì kết luận bể cạn và chuyển sang trạng thái error...
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Nov 2009
Bài gửi: 4
: |
chào bác cho em hỏi đạt được tốc độ thực tế cho động cơ là 100/phút và 10 vòng/phút thì value em đặt khoảng bao nhiêu là đủ vậy?đc em dùng là 24v gắn encoder xuất 108 xung/p
vì đây chỉ là mô phỏng. còn thực tế em chưa làm nên em không biết nên đặt bao nhiêu cả. mong bác chỉ dùm đây là code của em #INCLUDE <16F877a.H> #DEVICE *=16 ADC=8 #FUSES HS,NOWDT,NOPUT,NOLVP #USE DELAY (CLOCK=20000000) #INCLUDE <LCD.C> unsigned int16 solantran=0; double time_per_circle=0; int16 tocdo=0; int16 tocdo_dat; int16 value; int16 count=0; #int_ext void demxung() { count++; if (count==1) { set_timer1(3036); break; } if (count<101) //khi dat 101 xung thi da duoc 1 vong rui (vi encoder 100 xung)-->ta bat dau tinh toc do theo cong thuc duoi { break; } else { time_per_circle=(solantran*0.1)+(get_timer1()*0.00 00015); //0.1 la thoi gian tran cua timer1 tocdo= (60)/(time_per_circle); //0.0000016=0.1/(65536-3036)--gia tri nhan cho get_timer1() solantran=0; count=1; set_timer1(3036); } } #int_timer1 void dem_solantran(){ solantran++; set_timer1(3036);} void main() { set_tris_a(0b10000); set_tris_b(0b00011111); set_tris_d(0b00000000); set_tris_c(0b00000000); lcd_init(); delay_ms(20); setup_timer_1(t1_internal|t1_div_by_8); set_timer1(3036); enable_interrupts(int_timer1); enable_interrupts(int_ext) ; ext_int_edge(l_to_h); enable_interrupts(global); setup_ccp1(ccp_pwm); setup_timer_2(T2_div_by_16,156,1); value=1000; set_pwm1_duty(value); delay_ms(5000); while(1) { if(input(pin_a4)) { tocdo_dat=100 ; value=900; set_pwm1_duty(value); lcd_gotoxy(1,1); printf(lcd_putc,"SPEED_SET : %3Lu",tocdo_dat); lcd_gotoxy(1,2); printf(lcd_putc,"SPEED : %3Lu",tocdo); } else { tocdo_dat=10; value=300 ; set_pwm1_duty(value); lcd_gotoxy(1,1); printf(lcd_putc,"SPEED_SET : %3Lu",tocdo_dat); lcd_gotoxy(1,2); printf(lcd_putc,"SPEED : %3Lu",tocdo); } } } thay đổi nội dung bởi: dovandoan06011, 24-11-2009 lúc 01:56 AM. |
![]() |
![]() |
![]() |
#6 |
Nhập môn đệ tử
Tham gia ngày: Nov 2009
Bài gửi: 4
: |
ah wen đề tài của em là điều khiển động cơ 1 chiều với 2 tốc độ:100 và 10 prm
khi gặp màu xanh là 100 và màu trắng là 10 em dùng cái nút ấn để thay thế mạch phát hiện màu để mô phỏng mà nó không hiểu mức 1 của chân ra4. mong các bác chỉ dùm cảm ơn các pác nhìu nhìu |
![]() |
![]() |
![]() |
|
|