PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

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

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 22-04-2009, 12:30 AM   #1
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
Trích:
Nguyên văn bởi namqn View Post
Bạn có thể dùng MS Excel để tạo ra bảng dữ liệu trên. Cách làm đơn giản như sau:

- Chọn giá trị đỉnh, ví dụ là 400, khi đó bạn sẽ cộng thêm offset bằng giá trị đỉnh để các giá trị trong bảng luôn luôn không âm.

- Chọn số phần tử trong bảng, ví dụ là 1000

- Trong bảng tính, tạo ra một cột với các giá trị chỉ số chạy từ 0 đến 999 (1000 hàng, tương ứng với 1000 phần tử).

- Ở cột bên cạnh, nhập công thức tính giá trị = 400*sin(giá trị của ô bên trái*2*pi/1000) + 400. Chẳng hạn, giả thiết cột A chứa các chỉ số từ 0 đến 999, ô B1 sẽ có công thức = 400*sin(A1*2*pi/1000) + 400

Sau đó xuất cột B ra một tập tin văn bản, rồi cắt/dán vào mã nguồn, và thêm các dấu "," vào những vị trí cần thiết. Nếu dùng MATLAB thì có thể tự động xử lý toàn bộ phần định dạng, rồi xuất ra tập tin văn bản, sau đó chỉ cần cắt/dán vào mã nguồn.

Lập trình khéo hơn một chút thì chỉ cần lưu 1/4 bảng trên vào flash/ROM là đủ.

Thân,
Như vậy các giá trị ta đang tìm chính là giá trị tức thời của hàm
u=400+400*sin(2*pi*f_dieuche*t)
tại các thời điểm t = {0,1,2,....,998,999}
phải ko anh Nam.
Em băn khoăn vì sao biểu thức trong hàm sin anh viết: sin(A1*2*pi/1000), chia cho 1000 là sao vậy anh? Như vậy có phải tần số điều chế là (1/1000). Em chưa hiểu chỗ này.
Đáng lẽ phải thế này chứ: T_dieuche=sophantubangsin*T_pwm =1000*T_pwm
--> f_dieuche=1/T_dieuche = 1/(1000*T_pwm)= f_pwm/1000
Như vậy biểu thức trên phải là: công thức = 400*sin(A1*2*pi*f_pwm/1000) + 400
Anh coi giùm em với.

thay đổi nội dung bởi: truongqt, 22-04-2009 lúc 12:42 AM.
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-04-2009, 12:44 AM   #2
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 truongqt View Post
Như vậy các giá trị ta đang tìm chính là giá trị tức thời của hàm
u=400+400*sin(2*pi*f_dieuche*t)
tại các thời điểm t = {0,1,2,....,998,999}
phải ko anh Nam.
Em băn khoăn vì sao biểu thức trong hàm sin anh viết: sin(A1*2*pi/1000), chia cho 1000 là sao vậy anh? Như vậy có phải tần số điều chế là (1/1000). Em chưa hiểu chỗ này.
Gọi f_sw là tần số chuyển mạch, tín hiệu được điều chế sẽ có tần số là f_sw/1000. Như vậy, các giá trị được tính toán là giá trị được lấy mẫu tại các khoảng đều nhau của hàm (trong ví dụ này một chu kỳ của tín hiệu được điều chế được chia thành 1000 khoảng lấy mẫu đều nhau):

u = 400 + 400*sin(2*pi*(f_sw/1000)*t)

Vì các giá trị của cột A chạy từ 0 đến 999, các giá trị của cột B sẽ chạy từ 400 + 400*sin(0) đến 400 + 400*sin(999*2*pi/1000), tức là vừa đúng một chu kỳ sóng sin (chú ý là sin(1000*2*pi/1000) = sin (0) = 0).

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 01-05-2009, 03:17 PM   #3
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
Lightbulb Điều chế Sin

1). Chương trình bác Nam sửa ở trang 1,#11, mình mô phỏng bằng proteus 7.4, code viết trong CCS 4.0.., kết quả mô phỏng chạy ra đúng như tính toán:
Tpwm=20us --> Fpwm=50KHz
Tsin = 16ms --> Fsin=62,5Hz.
Trong đó, mình dùng thẳng thạch anh 40MHz để tần số clock=40MHz. Mình gửi kèm file đã làm (tên file: PWM-truonglao.rar).

2). Thế nhưng khi mình điều chế sin Fsin= 50Hz:
Chọn: Fpwm=20KHz hay Tpwm=50us, theo cthuc Tpwm=4*(PTPER+1)/Fosc
suy ra: PTPER=49. (Thach anh Fosc = 4MHz)
Sóng sin có Fsin=50Hz --> so ptu bang sin = Fpwm:Fsin=20000:50=400 phần tử.
Như vậy:
Tpwm = 50us
Tsin = 20ms
Nhưng kết quả mô phỏng được:
Tpwm=50us ( tức Fpwm=20KHZ -> Fpwm đúng theo tính toán)
Tsin = 40ms --> Fsin = 25Hz (--> cái này như vậy là sai mất rồi)
Mình gửi kèm file đã làm các bạn xem (20KHzPWM-sin50Hz.rar).

3). Vì theo câu (2), khi mình điều chế Fsin=50Hz mà kết quả ra là 25Hz, nên mình đã đi điều chế Fsin=100Hz xem thử nó có ra tần số 50Hz ko. --> kết quả mô phỏng: điều chế Fsin=100Hz thì kết quả mô phỏng ra là 50Hz.
Gửi kèm file (20KHzPWM-sin100Hz.rar).

*** Mong các bạn xem và sớm giải thích giùm mình, ngày hnay mất 1 ngày mà vẫn chưa tìm ra cause.
// bổ sung thông tin CCS: mình cài CCS trong ổ đĩa G, nên nếu các bạn cài CCS trong ổ C thì phải chọn lại đường dẫn file devices và drivers cho chương trình thì mới complie được đó.
File Kèm Theo
File Type: rar PWM_truonglao.rar (59.7 KB, 423 lần tải)
File Type: rar 20KHzPWM-sin50Hz.rar (57.5 KB, 422 lần tải)
File Type: rar 20KHzPWM-sin100Hz.rar (56.5 KB, 318 lần tải)

thay đổi nội dung bởi: truongqt, 01-05-2009 lúc 06:05 PM. Lý do: sửa vị trí trang bài viết bác Nam + bổ sung thông tin CCS
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-05-2009, 08:36 PM   #4
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
Bảng sin

Gửi kèm luôn file excel tính bảng sin.
Bảng sin 200 tuơng ứng Fsin=100Hz
''' 400 ''' Fsin=50Hz
File Kèm Theo
File Type: rar bang sin200.rar (5.9 KB, 212 lần tải)
File Type: rar bang sin 400.rar (9.0 KB, 248 lần tải)
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-05-2009, 06:49 PM   #5
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
Ủa sao ko thấy ai nói j zậy ta. Mọi người nghỉ lễ kĩ thế.
__________________
Trường.
http://vn.myblog.yahoo.com/nguyenvantruongqt
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-05-2009, 10:24 PM   #6
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
Pwm

Thôi ko làm phiền các bác nữa nha. Mình nâng tần số thạch anh trong bài của mình lên 40MHz (bằng bài của anh Nam), đồng thời tính lại bảng sin cho khớp với thạch anh 40MHz này thì kết quả mô phỏng đã đúng rồi. Hi. Nhưng ko hiểu vì sao với thạch anh 4MHz thì kq mô phỏng ko đúng, với thạch anh 40MHz thì lại đúng, mà chắc ko cần quan tâm điều này làm j cho tốn calo. Hi. Sắp tới làm mạch thực rồi kiếm cái oscillo đo xem thế nào.
Chúc cả nhà vui.

//PS; nhân tiện cho mình hỏi: trong datasheet 18F4431 (hình dưới) ko đưa ra việc dùng thạch anh 40MHz, ko biết mình lắp mạch với 40MHz có được ko?

Trích:
Theo anh Nam:
Tôi dùng thạch anh 10 MHz và PLL, do đó tần số clock của PIC là 40 MHz
Cho em hỏi khai báo trong CCS để sử dụng đựoc tần số này anh Nam nha.
Hình Kèm Theo
File Type: jpg 18f.JPG (113.6 KB, 30 lần tải)
__________________
Trường.
http://vn.myblog.yahoo.com/nguyenvantruongqt

thay đổi nội dung bởi: truongqt, 02-05-2009 lúc 10:36 PM. Lý do: hỏi về thạch anh
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-05-2009, 01:38 AM   #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 truongqt View Post
...
Cho em hỏi khai báo trong CCS để sử dụng đựoc tần số này anh Nam nha.
Tôi không dùng CCS C, mà tài liệu hướng dẫn của trình dịch này cũng không đề cập đến chế độ HSPLL của một số PIC18. Dựa vào tập tin header của PIC18F4431, tôi đoán là bạn sẽ dùng giá trị H4 khi thiết lập cấu hình bộ dao động cho PIC trong CCS C. Bạn cũng có thể đọc thêm phần ví dụ của directive #use delay về một cách mô tả khác cho chế độ HSPLL.

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 17-09-2009, 11:57 PM   #8
JohnnyNguyen
Đệ tử 3 túi
 
Tham gia ngày: Jul 2009
Bài gửi: 46
:
Trích:
Nguyên văn bởi namqn View Post
Gọi f_sw là tần số chuyển mạch, tín hiệu được điều chế sẽ có tần số là f_sw/1000. Như vậy, các giá trị được tính toán là giá trị được lấy mẫu tại các khoảng đều nhau của hàm (trong ví dụ này một chu kỳ của tín hiệu được điều chế được chia thành 1000 khoảng lấy mẫu đều nhau):

u = 400 + 400*sin(2*pi*(f_sw/1000)*t)

Vì các giá trị của cột A chạy từ 0 đến 999, các giá trị của cột B sẽ chạy từ 400 + 400*sin(0) đến 400 + 400*sin(999*2*pi/1000), tức là vừa đúng một chu kỳ sóng sin (chú ý là sin(1000*2*pi/1000) = sin (0) = 0).

Thân,
cho em hỏi,việc lựa chọn giá trị đỉnh 400 dựa vào yếu tố nào để lựa chọn.

thay đổi nội dung bởi: JohnnyNguyen, 20-09-2009 lúc 08:03 PM.
JohnnyNguyen 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:12 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