PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

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

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 21-12-2008, 09:07 AM   #1
ham_hoc_hoi
Đệ 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
ham_hoc_hoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2008, 03:47 PM   #2
ham_hoc_hoi
Đệ 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.
ham_hoc_hoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2008, 04:44 PM   #3
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 ham_hoc_hoi View Post
... 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
Bộ PLL không chấp nhận tần số ngõ vào > 10 MHz. Bạn có thể chuyển sang dùng thạch anh 10 MHz và PLL x8 để có Fcy = 20 MHz, hoặc dùng thạch anh 7,3728 MHz và PLL x16 để có Fcy xấp xỉ 30 MHz.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2008, 07:19 PM   #4
ham_hoc_hoi
Đệ 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,
ham_hoc_hoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2008, 07:38 PM   #5
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 ham_hoc_hoi View Post
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,
Thạch anh 8 MHz với PLL x16 là nằm ngoài spec. của Microchip, do đó nếu có sự bất thường trong hoạt động của dsPIC thì họ sẽ không chịu trách nhiệm. Tôi tin rằng nếu được làm mát tốt thì dsPIC vẫn có thể hoạt động ổn định ở tốc độ clock này, nhưng đây chỉ là ý kiến của riêng tôi.

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 23-12-2008, 08:09 PM   #6
ham_hoc_hoi
Đệ 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ỉ
ham_hoc_hoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2008, 08:12 PM   #7
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 ham_hoc_hoi View Post
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ỉ
Theo một số người dùng thì ở tốc độ clock này, chip sẽ khá nóng. Việc có cần tản nhiệt hay không còn tùy vào trường hợp cụ thể của bạn: môi trường làm việc, các module ngoại vi được sử dụng, ...

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 23-12-2008, 08:32 PM   #8
ham_hoc_hoi
Đệ tử 1 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 25
:
Trích:
Nguyên văn bởi namqn View Post
Theo một số người dùng thì ở tốc độ clock này, chip sẽ khá nóng. Việc có cần tản nhiệt hay không còn tùy vào trường hợp cụ thể của bạn: môi trường làm việc, các module ngoại vi được sử dụng, ...

Thân,
Bác nói thế thì em dùng thach anh 8MHz PLLx8, Fcy = 16 MHz, tốc độ như này chắc đủ xử lý để em làm PID só bác nhỉ, mà với tốc độ này thì chip sẽ ko bị nóng và lam việc ổn định hả bác
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.
ham_hoc_hoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-12-2008, 11:30 PM   #9
LeDuc
Đệ tử 6 túi
 
LeDuc's Avatar
 
Tham gia ngày: Mar 2007
Bài gửi: 150
:
Trích:
Nguyên văn bởi ham_hoc_hoi View Post
Bác nói thế thì em dùng thach anh 8MHz PLLx8, Fcy = 16 MHz, tốc độ như này chắc đủ xử lý để em làm PID só bác nhỉ, mà với tốc độ này thì chip sẽ ko bị nóng và lam việc ổn định hả bác
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
Mình dùng con 18f2331 thach anh 4M , PLLx4 .Động cơ mình sử dụng 100w 24v . Driver của mình sử dụng nửa cầu H ghép lại .--> PID tương đối ổn .
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
LeDuc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-03-2009, 12:02 AM   #10
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Trích:
Nguyên văn bởi ham_hoc_hoi View Post
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.
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.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-12-2008, 11:21 AM   #11
ham_hoc_hoi
Đệ 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
ham_hoc_hoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-03-2009, 07:33 PM   #12
mtuankct
Đệ 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};
khởi tạo cho PID
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) ;  
}
sau đó dùng một timer để tạo ra chu kỳ gọi hàm PID, tính toán lại giá trị đo sau đó gọi hàm PID để xử lý
Code:
	fooPID.measuredOutput = Q15(v_calculate(data)/(float)80);
	PID(&fooPID);
	duty = (unsigned int)(Fract2Float(fooPID.controlOutput) * PTPER *2);
mtuankct vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2009, 05:14 PM   #13
MTAPIC
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?
MTAPIC 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à 01:30 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