Tìm kiếmĐăng ký thành viên  >  Đăng nhập    Liên hệ     
  

Trang chủ



Các chuyên mục



 NHÂN VẬT - SỰ KIỆN
 CHUYÊN ĐỀ HỌC THUẬT: Điện tử - LabVIEW - CATIA - Điều khiển



1. Điện tử nâng cao: Lớp LabVIEW online
2. Khóa LabVIEW 1: Học nhanh LabVIEW
3. Nhập môn điện tử
4. Chuyên đề vi điều khiển AVR



.Bài 1: Input and output - AVR
.Bài 2: Mạch nạp thông dụng đơn giản cho AVR
.Bài 3: Cách sử dụng Codevision để lập trình - nạp cho AVR
.Bài 4 AVR - Cách dùng Timer trong vi điều khiển AVR



5. Chuyên đề vi điều khiển PIC
6. Chuyên đề Relay
7. Chuyên đề LCD HD44780: Giao tiếp và lập trình ứng dụng
8. Các vấn đề chung về thiết kế CAD/CAM/CNC
9. Chuyên đề nâng cao: Thiết kế với CATIA
10. Cùng học ProEngineer Online
11. Khóa học: Cơ sở điều khiển tự động
12. Nhập môn MATLAB và Simulink
14. Điện tử nâng cao: Điện tử công suất
15. Điện tử nâng cao: Giao tiếp máy tính và xe hơi
16. Điện tử nâng cao: Giao tiếp CAN
17. Toán ứng dụng trong ngành kỹ thuật và điều khiển tự động
18. Các chuyên tổng hợp
19. Điều khiển tự động trong ô tô
21. Điện tử nâng cao: Hệ thống quan sát (Vision System)



 ÔTÔ - XE MÁY
 TỰ ĐỘNG HÓA - ĐIỆN - ĐIỆN TỬ
 ROBOT: Robot công nghiệp - Hệ robot song song - Haptics
 TƯ VẤN: Khuyến mãi, Tuyển dụng, Tin doanh nghiệp
 GIÁO DỤC - ĐÀO TẠO: Tin tức đào tạo ngành kỹ thuật
 IT: Thế giới công nghệ số



Tài liệu tham khảo
Tra cứu



Thảo luận



Tiêu điểm



http://hocdelam.org

http://labview.hocdelam.org

http://vagam.dieukhien.net/index.php?tpid=5&catid=10&chapid=83

http://vagam.dieukhien.net/index.php?tpid=5&catid=24&chapid=75

http://vagam.dieukhien.net/index.php?tpid=5&catid=5&chapid=33

http://vagam.dieukhien.net/index.php?arid=37

http://vagam.dieukhien.net/discuss.php?thid=148&pagenum=1

http://vagam.dieukhien.net/discuss.php?thid=456

http://vagam.dieukhien.net/discuss.php?thid=497&pagenum=1

http://vagam.dieukhien.net/discuss.php?ftopid=12&fcatid=44

http://www.dieukhien.net

http://dieukhientudong.com

http://suno.vn


http://spkt.net/diendan/

http://sanpham.hocdelam.org

http://robot.kut.ac.kr

http://labview.hocdelam.org/vn/Nghien-cuu/Hoi-thao-khoa-hoc.nso

http://www.phone4vn.com



Bài 4 AVR - Cách dùng Timer trong vi điều khiển AVR
Người gửi: bmnhy

Sử dụng bộ định thời là nhu cầu của nhiều lập trình viên. Thông thường mỗi loại vi điều khiển đều có bộ định thời. Hôm nay VAGAM xin giới thiệu tới các bạn bài viết về cách dùng Timer trong vi điều khiển AVR.

Đặc tính:

- Bao gồm các bộ timer 8bit 16 bit, thường có từ 3 – 4 bộ Timer
- Có các kênh PWM (từ 4 đến 8 kênh tuỳ loại )
- Bao gồm nhiều chế độ ngắt và PWM …
- Có thể là một kênh đếm riêng biệt
- Tự động xoá Timer trong chế độ so sánh(tự động nạp lại)
- Có chế độ PWM
- Tạo ra tần số
- Đếm các dự kiện ngắt ngoài
- Tạo ra các ngắt tràn và ngắt so sánh
....

Introduction

Các chế độ hoạt động của timer:

Chế Độ Thông Thường:
Đây là chế độ hoạt động đơn giản nhất của Timer .Bộ đếm sẽ liên tục đếm tăng lên cho đến khi vượt quá giá trị lớn nhất TOP và sau đó sẽ được khởi động lại tại giá trị Bottom.Trong các hoạt động thông thường thì cờ tràn sẽ được thiết lập khi giá trị trong Timer đạt giá trị không và không bị xoá đi.Tuy nhiên nếu mà ngắt tràn được chấp nhận thì cờ ngắt sẽ tự động bị xoá khi ngắt được thực hiện.Giá trị trong Timer có thể được viết vào bất cứ lúc nào

Chế Độ So Sánh (CTC):
Đấy là chế độ mà giá trị trong Timer luôn được so sánh với giá trị trong thanh ghi ORC .Khi giá trị trong Timer bằng giá trị trong thanh ghi ORC thì giá trị trong Timer sẽ bị xoá đi.Giá trị trong ORC đóng vai trò là giá trị TOP cho bộ đếm.Chế độ này cũng cho phép tạo ra tần số so sánh ở đầu ra.Tuy nhiên trong chế độ này nếu giá trị mới ghi vào thanh ghi ORC mà nhỏ hơn giá trị tức thời của bộ đếm thì thì 1 so sánh sẽ bị lỡ, khi đó bộ đếm sẽ đếm đến giá trị lớn nhất sau đó rơi xuống giá trị 0 trước khi so sánh tiếp theo xuất hiện.


Sơ đồ thời gian của chế độ CTC


Chế Độ Fast PWM:
Cho phép tạo ra sóng với tần số cao.Sự khác biệt cơ bản giữa Fast PWM với các loại PWM khác là nó chỉ sử dụng 1 sườn dốc.Bộ đếm sẽ đếm từ Bottom đến Max sau đó khởi động lại từ bottom. Trong chế độ không đảo đầu ra của chân so sánh OCx sẽ bi xoá khi có phép toán so sánh giữa TCNTx và thanh ghi ORC là bằng nhau. Và sẽ được sét lên 1 khi giá trị đạt Bottom. Trong chế độ đảo ,đầu ra đảo sẽ được set lên 1 khi sự so sánh giữa thanh ghi ORC và giá trị trong Timer bằng nhau và sẽ bị xoá khi giá trị đạt Bottom.Trong cả hai trường hơp này tần số của chế đô Fast PWM đều gấp đôi so với chế độ phase correct PWM sử dụng hai sườn dốc
Với tần số cao này chế độ độ Fast PWM rất tốt cho các ứng dụng như ADC hay chỉnh lưu.Ngoài ra với tần số cao giúp làm giảm kích thước của thiết bị ngoài như cuộn dây tụ từ đó giúp làm giảm toàn bộ chi phí cho hệ thống
Sơ đồ dưới đây mô tả chu kỳ thời gian của chế độ:


Biều đồ thời gian chế độ Fast PWM

Chế độ Phase correct PWM:
Chế độ này hoạt động dựa trên hai sườn lên xuống.Bộ đếm sẽ đếm liên tục từ giá trị BOTTOM đến giá trị MAX và sau đó từ giá trị MAX đến giá trị BOTTOM.Trong chế độ so sánh không đảo chân so sánh (OCx) sẽ bị xóa khi giá trị TCNTx bằng giá trị OCRx trong quá trình đếm lên và sẽ được set bằng 1 khi giá trị so sánh xuất hiện trong quá trình đếm xuống.Chế độ so sánh đảo thì các giá trị là ngược lại.Với hoạt động hai sườn xung này thì chế độ này không tạo ra được tần số nhỏ như chế độ một sườn xung .Nhưng do tính cân đối của hai sườn xung thì nó tốt hơn cho điều khiển động cơ
Chế độ phase correct PWM hoạt động cố định là 8 bít.Trong chế độ này bộ đếm sẽ tăng cho đến khi đạt giá trị MAX ,khi đó nó sẽ đổi chiều đếm.Biểu đồ thời gian đây mô tả hoạt động của toàn bộ quá trình:



Từ biểu đồ thời gian ta nhận thấy việc thay đổi tần số trong hoạt động của phase correct PWM có thể thay thế bằng hai giá trị là MAX và BOTTOM. Nó linh hoạt hơn so với chế độ Fast PWM.
Tần số có thể tính theo công thức như sau:

f=fc/N*510

Trong đó N tạo ra bởi bộ chia nó có các giá trị là:1,8,64,256 hoặc 1024

Các thanh ghi trong bộ Timer/ Counter:

Thanh ghi điều khiển - TCCRx:



Bít 3,6 –WG00-WG01: Đây là các bít chọn chế độ trong Timer.Các giá trị được mô tả trong bảng sau.

Bảng chọn chế độ Timer:


Bít 5-4 : COM00-COM01: Quy định giá trị đầu ra trong các phép so sánh
Bít 2: 0 – CS2:0 :Đây là các bít quy định xung cấp cho hoạt động của Timer.Bảng dưới đây mô tả toàn bộ các giá trị

Chọn chế độ cho xung Clock



Thanh ghi cờ ngắt-TIFR:


Bít 1-OCFx : Khi hai giá trị bằng nhau bít này được set lên bằng 1
Bít 1-TVOx : Khi bộ đếm vượt quá giá trị Top thì bít này được set bằng 1

Thanh ghi mặt nạ ngắt-TIMSK:


Bít 1 – OCIEx: khi bít này được set lên bằng 1 thì cho phép ngắt so sánh
Bít 0 –TOIEX : Khi bít này được set lên bằng 1 thì cho phép ngắt tràn

đoạn chương trình trên dùng timer1. Timer này là bộ đếm 16bit nên giá trị đếm được tối đa là FFFF. Trong phần khởi tạo Timer ta khởi tạo xung clock cho bộ đếm là 125Khz = 125000 có nghĩa là bộ đếm sẽ đếm được 125000 giá trị trong 1 giây. Ta làm phép tính như sau:

125000 số ----1 giây
? số----- 0,02 giây (20ms)
ta tính được trong 20ms bộ timer sẽ đếm được là: 125000x0.02= 2500 số.
Ta cần là làm sao cho timer1 đếm được 2500 số sẽ tràn có nghĩa là cần phải nạp vô nó một giá trị xác định trước (mặc định nó sẽ đếm từ 0000
>FFFF và bị tràn) giá trị này sẽ nhỏ hơn 65535(FFFF) là 2500 (9C4 Hexa) vậy ta tính được giá trị cần nạp lại sau mỗi lần tràn là FFFF- 9C4 = F63B.

c code
  1. #include
  2.  
  3. unsigned char count=0;
  4.  
  5. interrupt [TIM1_OVF] void timer1_ovf_isr(void) //ngat xay ra sau 20ms
  6. {
  7. TCNT1H=0xF6; //giá trị nạp lại TCNT1L=0x3B;
  8. // goi ham can xu li sau 20mscount++;
  9. if (count>10)
  10. {
  11. count=0;
  12. //goi ham can xu li sau 2s }
  13. }
  14.  
  15. void main(void)
  16. {
  17. // Timer/Counter 1 initialization
  18. // Clock source: System Clock
  19. // Clock value: 125.000 kHz
  20. // Mode: Normal top=FFFFh
  21. // OC1A output: Discon.
  22. // OC1B output: Discon.
  23. // Noise Canceler: Off
  24. // Input Capture on Falling Edge
  25. // Timer 1 Overflow Interrupt: On
  26. // Input Capture Interrupt: Off
  27. // Compare A Match Interrupt: Off
  28. // Compare B Match Interrupt: OffTCCR1A=0x00;
  29. TCCR1B=0x03;
  30. TCNT1H=0xF6;
  31. TCNT1L=0x3B;
  32. ICR1H=0x00;
  33. ICR1L=0x00;
  34. OCR1AH=0x00;
  35. OCR1AL=0x00;
  36. OCR1BH=0x00;
  37. OCR1BL=0x00;
  38. #asm("sei") //bat co cho phep ngat toan cuc neu khong thi khong co ngat xay ra
  39. while (1)
  40. {
  41. ..........................
  42. };
  43. }


Bài tiếp: Ứng dụng Timer vào đk động cơ 1 chiều (PWM)

Bài 3: Cách sử dụng Codevision để lập trình - nạp cho AVR

Thảo luận về sử dụng AVR

Biên soạn
TuấnBK
VAGAM

 VAGAM


   Bài mới trong các chuyên mục khác:

 . LabVIEW - ngôn ngữ giao tiếp máy tính và mô phỏng
 . Điều khiển động cơ DC theo thuật toán bền vững
 . Một số đài tài cho các bạn sinh viên tham khảo
 . Thực hiện một đề tài tốt nghiệp ngành kỹ thuật (Cơ điện tử, ô tô, cơ khí..)
 . RTS001 Hệ thống thời gian thực là gì?
 . Đại học Sư phạm Kỹ thuật TP. HCM tuyển dụng
 . Hội thảo chuyên đề: Ứng dụng LabVIEW trong Kỹ thuật - Đào tạo TPHCM
 . Lập trình LabVIEW



Bookmark bài viết này:  del.icio.us  yahoo! myweb  Google  Windows Live  stumbleupon

   ngtuan  |  12-07-2007
Trang này thật hay!!!!

kênh PWM  nghĩa là gì ạ?

Ví dụ em lập trình cho 89C51 điều khiển tốc độ động cơ như sau:

Set cho động cơ chạy 10sec sau đó clr 2 sec thì PWM bằng bao nhiêu? (Giả sử rằng em điều khiển động cơ theo chuổi sau: Xung điều khiển từ 89 => TIFF 122 (là 1 loại transitor) => Relay từ việc đóng mở relay ở các khoảng thời gian khác nhau, thì sẽ có thể thay đổi vận tốc của động cơ. vậy đó có phải là nhịp xung và pwm ko ạ?

ngtuan


   lanquynh  |  07-10-2007
các đại ca cho em hỏi về cách điều chế dộ rộng xung dùng AT90S8515


   caodangvtc  |  07-12-2007
chao cac anh

em la thanh vien m,oi cua dieu khien.net?? em dang hoc ve ảv mong cac anh giup do ?? em thay avr rat hay. em hien dang tham khao tai lieu ve no ?? vay anh nao co cho em xin  nhe?? dia chi cua em la duc1122@gmail.com cam on cac anh

Tips: Nhắc nhỡ lần 2, Mong bạn gõ dấu tiếng Việt khi tham gia comment và thảo luận

Cảm ơn bạn!
Nhóm VAGAM





Google
 

Copyright © 2005-2008
Designed by ca-group
All rights reserved





Những tài liệu trên trang web này có bản quyền thuộc nhóm VAGAM của dieukhien.net. Ngoài những tài liệu đã ghi rõ nguồn gốc xuất xứ, tất cả những tài liệu trên trang web này là công trình chung của tất cả các thành viên tham gia mà chưa từng công bố hoặc xuất bản ở một nơi nào khác. Nghiêm cấm mọi hình thức sao chép, lưu trữ và sử dụng tài liệu trên trang web khi chưa được phép. Mọi trích dẫn đều phải ghi rõ nguồn vagam.dieukhien.net. Mọi thư từ liên hệ xin gửi về: bahai.ce@gmail.com