PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 01-11-2009, 10:48 PM   #1
thevinhbk3i
Đệ tử 1 túi
 
Tham gia ngày: Sep 2009
Bài gửi: 16
:
Angry hoi về dùng pic16f877a điều khiển động cơ một chiều DC

--------------------------------------------------------------------------------

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
thevinhbk3i vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-11-2009, 11:06 PM   #2
roi
Đệ 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.
roi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-11-2009, 02:20 PM   #3
tanphatc62000
Nhập môn đệ tử
 
Tham gia ngày: Jul 2009
Bài gửi: 5
:
Trích:
Nguyên văn bởi thevinhbk3i View Post
--------------------------------------------------------------------------------

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
trước tiên bạn cần tính một chu kỳ xung
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
tanphatc62000 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-11-2009, 11:56 PM   #4
dhbk3i
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...
dhbk3i vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-11-2009, 01:39 AM   #5
dovandoan06011
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.
dovandoan06011 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-11-2009, 01:42 AM   #6
dovandoan06011
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
dovandoan06011 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 06:08 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam