![]() |
|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Dec 2008
Bài gửi: 25
: |
Xin giúp đỡ về dsp để làm bộ PID số
mình đang làm bộ điều khiển PID cho động cơ 1 chiều, 2 vòng tốc độ và dòng điện, mình nghe nói dòng dspic mà cụ thể mình dùng con 30F4011 có bộ dsp tính toán rất hay, mình xem trong file dsp.h thấy có mấy hầm có PID, ko phải đấy có phải thuật toán PID số ko, ai biết chỉ cách mình sử dụng, khai báo dsp như nào, và lọi dụng nó để làm PID số.
Thanks mọi người |
![]() |
![]() |
![]() |
#2 |
Đệ tử 1 túi
Tham gia ngày: Dec 2008
Bài gửi: 25
: |
ai đã biết về cái này xin chỉ giúp mình với, cho mình hỏi thêm mình dùng 30F4011 và thạch anh 20MHz, mình khai báo như nào để có tốc độ tốt nhất. Nếu khai báo như này _FOSC(CSW_FSCM_OFF & HS); Fcy chỉ có 5 Mhz, có nhân lên dc không khi dùng thạch anh lớn hơn 10MHz
thay đổi nội dung bởi: ham_hoc_hoi, 23-12-2008 lúc 04:27 PM. |
![]() |
![]() |
![]() |
#3 | |
Trưởng lão PIC bang
|
Trích:
Khi dùng PLL và thạch anh ngoài, bạn cần dùng option XT_PLL4 hay XT_PLL8 hay XT_PLL16 với _FOSC(). 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 |
|
![]() |
![]() |
![]() |
#4 |
Đệ tử 1 túi
Tham gia ngày: Dec 2008
Bài gửi: 25
: |
nếu em dùng thạch anh 7,3728 Mhz và PPLx16 thì chip làm việc vẫn bình thuòng hả bác, khi ấy tốc độ xử lý của chíp đuọc tăng lên khá nhiều, ko có vấn đề j hả bác,
Em dùng thạch anh 8Mhz và PPLx16 có được ko bác, dùng 8Mhz để số cho chẵn, |
![]() |
![]() |
![]() |
#5 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
![]() |
![]() |
![]() |
#6 |
Đệ tử 1 túi
Tham gia ngày: Dec 2008
Bài gửi: 25
: |
vậy để chắc ăn em dùng 7,3728MHz PLLx16, như thế này thì chip ko cần phải tản nhiệt nữa bác nhỉ
|
![]() |
![]() |
![]() |
#7 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
![]() |
![]() |
![]() |
#8 | |
Đệ tử 1 túi
Tham gia ngày: Dec 2008
Bài gửi: 25
: |
Trích:
Bác cho em hỏi thêm số fractional có dải từ đâu đến đâu ah, và định dạng số fractional Q(15) là như nào hả bác, số này có dải từ đâu đến đâu và có khác j so với số fractional ko ah. Mong bác giúp đỡ chỉ bảo em Thank bác thay đổi nội dung bởi: ham_hoc_hoi, 23-12-2008 lúc 11:12 PM. |
|
![]() |
![]() |
![]() |
#9 | |
Đệ tử 6 túi
Tham gia ngày: Mar 2007
Bài gửi: 150
: |
Trích:
Kô biết bạn áp dụng PID cho cái gì ?
__________________
_________________________________________________ Le Trung Duc Industry Research & Application Center NTT Institute of Hi_technolog ltduc@ntt.edu.vn leduc_cktd@yahoo.com.vn http://www.nttc.edu.vn CNC DIY : http://quangcaosanpham.com/shop/driverservo 0909300332 |
|
![]() |
![]() |
![]() |
#10 |
Đệ tử 1 túi
Tham gia ngày: Dec 2008
Bài gửi: 25
: |
mình cũng ap dụng PID để dk động cơ 53W, 38V, bạn có thể send cho mình phần code để tham khảo dc ko. Thanks bạn nhièu
|
![]() |
![]() |
![]() |
#11 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
bác nên dùng luôn thư viện PID của C30 nó có viết sãn hàm PID cho bác rồi mà
bác có thể tham khảo code sau: khai báo biến cho hàm PID Code:
tPID fooPID; fractional abcCoefficient[3] __attribute__ ((section (".xbss, bss, xmemory"))); fractional controlHistory[3] __attribute__ ((section (".ybss, bss, ymemory"))); fractional kCoeffs[] = {0,0,0}; Code:
void PID_Init(void){ fooPID.abcCoefficients = &abcCoefficient[0]; /*Set up pointer to derived coefficients */ fooPID.controlHistory = &controlHistory[0]; /*Set up pointer to controller history samples */ PIDInit(&fooPID); /*Clear the controler history and the controller output */ kCoeffs[0] = Q15(0.1); // Kp kCoeffs[1] = Q15(0.07); // Ki kCoeffs[2] = Q15(0.00); // Kd PIDCoeffCalc(&kCoeffs[0], &fooPID); /*Derive the a,b, & c coefficients from the Kp, Ki & Kd */ fooPID.controlReference = Q15(1) ; /*Set the Reference Input for your controller */ fooPID.measuredOutput = Q15(0) ; } Code:
fooPID.measuredOutput = Q15(v_calculate(data)/(float)80); PID(&fooPID); duty = (unsigned int)(Fract2Float(fooPID.controlOutput) * PTPER *2); |
![]() |
![]() |
![]() |
#12 |
Đệ tử 4 túi
Tham gia ngày: Jan 2007
Bài gửi: 79
: |
Bạn tìm tài liệu dsPIC30F Programmers Referece Manual ( search google là ra liền) và đọc ở trang 64 của tài liệu này thì sẽ hiểu số fractional là như thế nào. Khá chin tiết và dễ hiểu.
|
![]() |
![]() |
![]() |
#13 |
Nhập môn đệ tử
Tham gia ngày: Jul 2007
Bài gửi: 1
: |
em hỏi hơi lạc một chút, nhưng em đang làm PID trên một con VĐK 32bít, cụ thể là trên FPGA, nhúng lõi VĐK, nên cũng mới lắm, đk động cơ, bám vị trí mà mệt quá, ai có thể giúp em chút xíu về điều này không?
|
![]() |
![]() |
![]() |
|
|