PIC Vietnam

Go Back   PIC Vietnam > Robotics > Thực hành

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

Thực hành Bắt đầu làm một robot như thế nào? Mẹo vặt? Kỹ thuật? Công nghệ?... Hãy bắt tay vào việc...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 05-02-2008, 10:36 PM   #391
buoiit
Nhập môn đệ tử
 
Tham gia ngày: Dec 2007
Bài gửi: 2
:
Chào tất cả các anh, em muốn làm một cái mô hình điều khiển PID động cơ DC như các anh đã làm hiện tại em đã làm xong phần mô hình và mạch cầu H dùng IR2110 như anh namqn đã post lên, em đã đọc tất cả các bài viết trong luồng này nhưng vẩn có một số thắc mắc mong các anh chỉ giáo:
+ Cái động cơ em mua của đức tra cataloge như hình

có phải cái động cơ này encorder có số xung /vong là 1000 không ? (nó ghi 1000 lmp/umdr vì là tiếng đức nên em pó tay)
+ Em muốn cho động cơ chỉ chạy theo 1 chiều cố định thì em sẽ nối chân Pwm ở vi điều khiển vào Q1 và Q4; và Q2,Q3, hai chân Shutdown ở 2 con IR2110 em nối GND làm như vậy có được không?

Xin mời các anh xem mô hình của em



buoiit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-02-2008, 01:47 AM   #392
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi buoiit View Post
Chào tất cả các anh, em muốn làm một cái mô hình điều khiển PID động cơ DC như các anh đã làm hiện tại em đã làm xong phần mô hình và mạch cầu H dùng IR2110 như anh namqn đã post lên, em đã đọc tất cả các bài viết trong luồng này nhưng vẩn có một số thắc mắc mong các anh chỉ giáo:
+ Cái động cơ em mua của đức tra cataloge như hình

có phải cái động cơ này encorder có số xung /vong là 1000 không ? (nó ghi 1000 lmp/umdr vì là tiếng đức nên em pó tay)
+ Em muốn cho động cơ chỉ chạy theo 1 chiều cố định thì em sẽ nối chân Pwm ở vi điều khiển vào Q1 và Q4; và Q2,Q3, hai chân Shutdown ở 2 con IR2110 em nối GND làm như vậy có được không?

Xin mời các anh xem mô hình của em



+ Có lẽ 1000 imp/umdr là 1000 xung/vòng rồi, vì với encoder thì còn thông tin gì khác ngoài độ phân giải đâu.

+ Bạn không cho biết sơ đồ của bạn ra sao thì làm sao biết Q1 đến Q4 là những linh kiện gì. Tôi đã post lên vài sơ đồ trong luồng này, làm sao biết được bạn dùng sơ đồ nào.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-02-2008, 10:40 AM   #393
buoiit
Nhập môn đệ tử
 
Tham gia ngày: Dec 2007
Bài gửi: 2
:
chào anh namqn em làm cái mạch cầu H theo sơ đồ nguyên lý anh post ở #281 trong luồng này, vây em muốn cho động cơ chỉ chạy theo 1 chiều cố định thì em sẽ nối chân Pwm ở vi điều khiển vào Q1 và Q4; và Q2,Q3, hai chân Shutdown ở 2 con IR2110 em nối GND làm như vậy có được không?
buoiit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-02-2008, 05:24 PM   #394
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi buoiit View Post
chào anh namqn em làm cái mạch cầu H theo sơ đồ nguyên lý anh post ở #281 trong luồng này, vây em muốn cho động cơ chỉ chạy theo 1 chiều cố định thì em sẽ nối chân Pwm ở vi điều khiển vào Q1 và Q4; và Q2,Q3, hai chân Shutdown ở 2 con IR2110 em nối GND làm như vậy có được không?
Giả sử động cơ quay theo chiều thuận khi dòng điện đi vào động cơ từ trái sang phải (nhìn trên sơ đồ).

Để động cơ quay theo chiều thuận:
- Q3 ngắt (off) thường trực, Q4 đóng (on) thường trực
- Q1 và Q2 có tín hiệu PWM ngược nhau

Để động cơ quay theo chiều ngược:
- Q1 ngắt (off) thường trực, Q2 đóng (on) thường trực
- Q3 và Q4 có tín hiệu PWM ngược nhau

Nếu không dùng chân Shutdown thì có thể nối đến GND.

Nếu bạn không có nhu cầu đảo chiều thì không cần sử dụng cầu H, chỉ cần dùng mạch truyền động đơn giản đính kèm dưới đây.

Thân,
Hình Kèm Theo
File Type: gif Simple_DCDrive.gif (2.2 KB, 837 lần tải)
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-02-2008, 01:19 PM   #395
dvnccbmacbt
Đệ tử 4 túi
 
Tham gia ngày: May 2007
Bài gửi: 65
:
Trích:
Nguyên văn bởi scentoflove View Post
Biết ai ko mechatronic, he he làm interface xấu quá. Interface nè

dao động liên tục

dao động tắt dần

vọt lố

vọt lố sau đó tiến tới set point


Cái nét cuối đồ thị là do soft thêm vào ko phải đáp ứng động cơ. làm cho mình xài nên mọi người đừng chê nha buồn lắm đó.

Có bác nào làm phần giao tiếp vói máy tính dùng Matlab qua cổng Com chưa ạ? Em đang học giao tiếp với máy dùng Matlab nên muốn tham khảo cách viết. Có thể post code lên được không ạ? Mong mọi người giúp đỡ.

namqn: bạn tham khảo bên box dành cho lập trình cổng COM và LPT, bên đó có một số luồng liên quan đến giao tiếp với cổng COM bằng MATLAB. Bạn đã hỏi ở đó về vấn đề này rồi thì không nên post ở những luồng không liên quan.

thay đổi nội dung bởi: namqn, 19-02-2008 lúc 07:49 PM.
dvnccbmacbt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-04-2008, 12:11 AM   #396
tuyenqs
Nhập môn đệ tử
 
Tham gia ngày: Aug 2007
Bài gửi: 3
:
đề tài này giờ bỏ trống hả các Bác?

namqn: đề tài này đã kết thúc, đã có nhiều người thực hành, và đã báo cáo kết quả, bạn đọc lại luồng này nhé.

thay đổi nội dung bởi: namqn, 15-04-2008 lúc 01:36 AM.
tuyenqs vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-04-2008, 02:00 AM   #397
phanyen
Đệ tử 1 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 16
:
nghe nói e cũng khoái lăm , vì e cung đang lam bài tập lớn với nội dung như trên nhưng không làm phần cứng . nếu được làm thì hay biết mấy . bác nào biết nhiều nhiều chỉ em với
thân ái !
phanyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-04-2008, 02:01 AM   #398
phanyen
Đệ tử 1 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 16
:
liên hệ với em theo địa chỉ này nè ! nguyenson8486@yahoo.com or Mr.son84@gmail.com
phanyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-04-2008, 02:09 AM   #399
phanyen
Đệ tử 1 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 16
:
chào các bác !
e cũng đang làm bài tập lớn về phần này . nếu được tham gia thì hay biết mấy ! cùng nhau làm các bác nhe !
Mr.son84@gmail.com
phanyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-04-2008, 11:39 PM   #400
phanyen
Đệ tử 1 túi
 
Tham gia ngày: Apr 2008
Bài gửi: 16
:
em cũng muốn tham gia . anh F giúp em nhé !
địa chỉ của e nè : nguyễn thành sơn
148/8b đường ung văn khiêm - bình thạnh
phanyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-04-2008, 06:29 PM   #401
jean
Đệ tử 1 túi
 
jean's Avatar
 
Tham gia ngày: Jan 2007
Bài gửi: 21
:
Trích:
Nguyên văn bởi bluepine View Post
Code:
#include <16f877a.h>
#fuses HS,NOPROTECT,NOWDT,NOBROWNOUT
#use delay (clock = 20000000)
// Giao tiep vi dieu khien
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8) // Giao tiep RS232

#include <stdlib.h>
#include <string.h>
#include <math.h>
#include<ctype.h>


#byte PR2 = 0x92

int16 e2;
int16 e1;
///////////////////////////////////////////////////////

int16 v_set = 350;

/////////////////////////////////////////////////////////
int16 v_cur;
int16 e_sum;
int16 e_del;
int16 flag_timer0;


//////////////////// cac thong so pid ban co the thay doi cho 
//////////////////// phu hop voi dong co cua ban
unsigned long kp =2.5;
unsigned long ki = 0.0092;
unsigned long kd = 0;
////////////////////////////////////////////////////////////

int16 i = 1 ;
int16 pw_duty;
int16 counted_round_value;
int16 temp_timer0;
int16 temp_timer1;
int16 update_counted_round_value;

//#byte TMR0 = 0x01 //timer0 REGISTER
//#byte TMR1_L = 0X0E
//#byte TMR1_H = 0X0F

#define START_VALUE_TIMER0 5 //tri khoi tao ban dau cua timer0 5, so xung dem duoc moi khi ngat la 255 - 5
#define START_VALUE_TIMER1 5535 //tri khoi tao ban dau cua timer1 65536-5536=60000


#INT_TIMER0 // ngat timer0 tang bien len 1
void TIMER0_int()
{

set_timer0(START_VALUE_TIMER0);
i++;

///////////// ban sai cho nay

if(i==60 ){

temp_timer1 = get_timer1();
set_timer1(START_VALUE_TIMER1);
i=0;

v_cur =  2*(temp_timer1 - START_VALUE_TIMER1);

flag_timer0 = 1;
}

}

#INT_TIMER1  /// thuc hien khi ngat timer 1
void timer1_int(){
set_timer1(START_VALUE_TIMER1);


}

void init_timer0()
{

setup_timer_0(RTCC_INTERNAL | RTCC_DIV_16); // moi lan tran timer0 tuong ung 250*16*1/5 us = 0.8ms,chu ky lay mau=0.8*60=48ms


setup_timer_1(T1_EXTERNAL | T1_DIV_BY_2); //  he so chia la 2 moi lan tran timer0 , khoi tao lai luon gia tri dem xung timer1

enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
enable_interrupts(INT_TIMER1);

}

void init_PWM(int16 frequency){

setup_ccp1(CCP_PWM); // initiate PWM
PR2 = 20000000/4/frequency - 1; // set PWM period

setup_timer_2(T2_DIV_BY_1,255,1); // initiate time 2 The cycle time will be (1/clock)*4*t2div*(period+1)
// (1/20000000)*4*1*(255+1) = 51.2 us( will over flow every 51.2 us, will intrup every 51.2 uS or 19.5 khz;

}

void cal_pid(){

long temp_kp;
long temp_ki;
long temp_kd;
e2 = v_set - v_cur;
e_sum += e2;
e_del = e2 - e1;
e1 = e2;

temp_kp = kp*e2;
temp_ki = ki*e_sum;
temp_kd = kd*e_del;
pw_duty +=temp_kp;

if (pw_duty <1000)
pw_duty += temp_ki;
if (pw_duty <1000)
pw_duty += temp_kd;
if (pw_duty <256) // vi khi pw_duty <256 thi PWM chi dieu rong xung 8 bit / //chu khong phai 10 bit,
pw_duty = 256;
if (pw_duty >1000) // bao hoa
pw_duty = 1000;

printf(" \t%ld", v_cur); // truyen toc do xung ve may tinh hien thi tren Hyperterminal
}

void main()
{
int8 timer0_value;

init_timer0();
init_PWM(19500);
//set_pwm1_duty(500);
while(true){
if (flag_timer0 ==1){
flag_timer0 = 0;
cal_pid();
set_pwm1_duty(pw_duty);
}
}
}
tôi có gửi cho bạn đoạn code để bạn so sánh
thân,
theo tôi biết thì trong ccs c, nếu 1 biến khai báo là int16 thì mặc định biến đó là biến không dấu. tuy nhiên, sai số e1, e2 lại là số có dấu. Như vậy đoạn code ở trên có hợp lý không?
unsigned long ki = 0.0092. nếu khai báo như thế này thì ki là số nguyên phải không? Nếu vậy thì ki ở đây sẽ bằng 0. Không biết tôi có sai chỗ nào không. Các bạn góp ý nhé
jean vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-04-2008, 12:52 AM   #402
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Hai vấn đề bạn jean thảo luận đều đúng.

Nếu không dùng directive #TYPE signed để định nghĩa lại kiểu mặc định là signed thì các khai báo int16 đều được CCS C hiểu ngầm là số không dấu => có vấn đề, vì sai số nên được biểu diễn bằng số có dấu.

kd, ki đều dùng kiểu số thực khi đặt giá trị, nhưng lại khai báo là unsigned long. Có 2 khả năng xảy ra, CCS C sẽ chuyển kiểu biểu thức thành kiểu của biến (có vấn đề) hay chuyển kiểu của biến thành float để có thể chứa giá trị của biểu thức (không có vấn đề). Tôi không dùng CCS C nên không thể đánh giá được. Nhờ các bạn khác có sử dụng CCS C đánh giá vấn đề này.

Nói chung, không nên để trình biên dịch làm chủ chúng ta, mà chúng ta nên làm chủ trình biên dịch, tức là hiểu rõ phải viết code C ra sao để có được kết quả mong muốn. Nếu chưa hiểu được trình biên dịch sẽ dịch code đang đặt nghi vấn ra sao, tại sao chúng ta không viết code thử nghiệm, biên dịch nó, và đánh giá kết quả bằng việc mô phỏng/thử nghiệm.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-05-2008, 07:29 PM   #403
kstn
Đệ tử 1 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 21
:
cầu h dùng ir2101

Xin các cao thủ chỉ giúp xem mạch cầu h này có vấn đề gì không, cách chọn CV1,CV2 như thế nào
File Kèm Theo
File Type: pdf cauh2101.pdf (41.9 KB, 281 lần tải)
kstn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-05-2008, 08:25 PM   #404
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi kstn View Post
Xin các cao thủ chỉ giúp xem mạch cầu h này có vấn đề gì không, cách chọn CV1,CV2 như thế nào
Các mạch đệm BJT của bạn làm giảm tác dụng của mạch bootstrap, dẫn đến các MOSFET phía cao sẽ không dẫn bão hòa. Cụm R, C, D có lẽ không cần thiết. Sơ đồ ứng dụng đã có trong datasheet của IR2101.

Giá trị CV2 có thể chọn là 1 uF, dùng tụ tantalum 16 V (hoặc 25 V), đặt càng gần IR2101 càng tốt.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-05-2008, 12:52 AM   #405
kstn
Đệ tử 1 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 21
:
Hỏi Về Cầu H Ir2101

Nhân tiện xin hỏi nếu làm cầu h bằng ir2101 thì chất lượng có cao không vì con này kích dòng hơi nhỏ (0.3A). Nếu thay BYV79E bằng n5819 thì có sao kô vì byv79e khá mắc. Cầu h này có thể chạy 20khz được không (nếu bỏ các bộ đệm BJT).
chúc thắng lợi!
kstn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bà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à 12:01 AM.


Đượ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