Trong hướng dẫn này, chúng ta sẽ khám phá việc sử dụng PWM trong LPC2148 ARM7 Microcontroller. Pulse Width Modulation (PWM) là kỹ thuật rất hữu ích để điều khiển các mạch analog với bộ xử lý đầu ra kỹ thuật số. PWM được sử dụng trong nhiều ứng dụng khác nhau, từ đo lường và truyền thông đến điều khiển công suất. Như PWM là kỹ thuật nổi tiếng để tạo ra một tín hiệu của chu kỳ nhiệm vụ khác nhau. Ở đây chúng ta sẽ sử dụng nó để điều khiển độ sáng của đèn LED sử dụng LPC2148.
Tại sao chúng ta cần PWM?
Như chúng ta đều biết rằng vi điều khiển làm tất cả mọi thứ với những người thân và số không. Điều đó có nghĩa là vi điều khiển hoạt động với 3.3V và 0V như kỹ thuật số 1 & 0. Nó không thể tạo ra ví dụ 1V hoặc 2.5V hoặc bất kỳ giá trị nào khác với 0V và 3.3V. Ở đây tính năng PWM cho phép chúng ta tạo ra bất kỳ mức điện áp nào giữa 0V và 3.3V. Bây giờ chúng ta sẽ thấy cách nó được thực hiện bằng cách sử dụng PWM để chúng tôi sẽ kiểm soát độ sáng của đèn LED. Đây có lẽ là cách tốt nhất để xem hiệu ứng của PWM. Trước khi chúng ta tiến hành thêm nữa, hãy thảo luận một chút về chu kỳ nhiệm vụ.
Chu kỳ nhiệm vụ:
Khi tín hiệu là CAO, chúng tôi gọi đây là “thời gian ON”. Để mô tả số lượng “đúng giờ” (TON), chúng tôi sử dụng khái niệm về chu kỳ nhiệm vụ. Chu kỳ nhiệm vụ được tính bằng phần trăm. Chu kỳ nhiệm vụ phần trăm mô tả hiệu suất của tín hiệu số ON trong khoảng thời gian hoặc khoảng thời gian. Giai đoạn này là nghịch đảo của tần số của dạng sóng. Nếu tín hiệu kỹ thuật số dành một nửa thời gian ON và OFF còn lại, chúng tôi sẽ nói tín hiệu số này có chu kỳ làm việc là 50%. Nếu tỷ lệ phần trăm cao hơn 50% có nghĩa là tín hiệu kỹ thuật số dành nhiều thời gian ở trạng thái CAO hơn trạng thái LOW thì chúng tôi sẽ nói chu kỳ nhiệm vụ cao hơn 50%.
Biểu đồ trên đại diện cho dạng sóng 50%, 75% và 25% chu kỳ nhiệm vụ. 100% chu kỳ nhiệm vụ sẽ giống như thiết lập điện áp đến 3.3V (CAO). 0% chu kỳ nhiệm vụ sẽ giống như 0V hoặc nối đất tín hiệu. Mối quan hệ và tính toán đã được đánh giá bằng các phương trình sau:
PWM trong LPC2148 ARM7
PWM trong LPC2148 ARM7 trông phức tạp hơn so với mục đích chung giờ. Tuy nhiên nó thực sự là một bộ đếm thời gian mục đích chung bổ sung với một số phần cứng bổ sung. PWM trong LPC2148 có khả năng tạo ra sáu kênh điều khiển một cạnh PWM hoặc ba kênh PWM điều khiển hai cạnh. Phillips LPC2148 có 6 kênh điều chế độ rộng xung. Có 7 thanh ghi để chứa PWM với thanh ghi 0 được sử dụng để đặt tần số cơ sở (f = 1 / T). Vì vậy, vì chỉ có một tần số cơ sở đăng ký tất cả 6 kênh phải có tần số cơ sở.
Như thể hiện trong hình trên. PWM trong LPC2148 có thể là cạnh đơn hoặc cạnh kép. Trong điểm kết thúc xung nhịp đôi của xung và điểm bắt đầu của xung là một biến và có thể được thiết lập mỗi chu kỳ. Trong cạnh đơn PWM chỉ có cạnh cuối của PWM là một biến và cạnh bắt đầu luôn được đặt ở tần số cơ bản. Cạnh đơn yêu cầu một thanh ghi (cộng với thanh ghi cơ sở) để bạn có thể có 6 kênh cạnh đơn của PWM trên LPC2148. Đối với hai cạnh PWM. Bạn cần một thanh ghi cơ sở cộng với một thanh ghi cạnh bắt đầu cộng và thanh ghi cạnh cuối để chỉ có 3 kênh của cạnh đôi PWM có sẵn trên LPC2148. Bạn có thể kết hợp các kênh cạnh đơn và đôi miễn là bạn không sử dụng hết 6 thanh ghi có sẵn. Thay vì dành nhiều thời gian hơn tôi muốn bắt đầu thẳng để thực hiện dự án ví dụ.
Đăng ký: PWM trong LPC2148 ARM7
PWMTCR | Đăng ký kiểm soát bộ đếm thời gian PWM - PWMTCR được sử dụng để điều khiển các chức năng đếm thời gian. Bộ đếm thời gian có thể được vô hiệu hóa hoặc thiết lập lại thông qua PWMTCR. |
PWMPR | Đăng ký Prescale PWM - PWMTC (Bộ đếm thời gian PWM) được tăng lên mỗi chu kỳ PWMPR + 1 của PCLK. |
PWMMR0-PWMMR6 | Đăng ký trận đấu PWM 0- PWM Match Register 6 - PWMMR0-6 có thể được kích hoạt thông qua PWMMCR để reset PWMTC, dừng cả PWMTC và PWMPC, và / hoặc tạo ra một ngắt khi nó khớp với PWMTC. Ngoài ra, một trận đấu giữa PWMMR0-PWMMR6 và PWMTC đặt tất cả các đầu ra PWM là chế độ cạnh đơn và đặt PWM1 nếu nó ở chế độ hai cạnh. |
PWMMCR | Đăng ký kiểm soát trận đấu PWM - PWMMCR được sử dụng để kiểm soát nếu một ngắt được tạo ra và nếu PWMTC được đặt lại khi khớp xảy ra. |
PWMIR | Đăng ký ngắt PWM - PWMIR có thể được ghi để xóa ngắt. PWMIR có thể được đọc để xác định các nguồn ngắt có thể đang chờ xử lý. |
PWMLER | PWM Latch Enable Register - Cho phép sử dụng các giá trị so khớp PWM mới |
PWMPCR | Thanh ghi điều khiển PWM - Cho phép đầu ra PWM và chọn các loại kênh PWM như một cạnh đơn hoặc cạnh đôi được điều khiển. |
Dưới đây là một phác thảo các bước cần thiết để thiết lập PWM trong LPC2148 ARM7 một đầu ra một giá trị duy nhất:
- Thiết lập Pin Select Register để chọn PWM cho cổng mà chúng ta muốn
- Thiết lập bộ phân chia đồng hồ Đăng ký cho PCLK (VPBDIV)
- Thiết lập đăng ký hẹn giờ PWM
- Thiết lập hướng IO cho pin PWM bạn định sử dụng làm đầu ra
- Bật kênh PWM cụ thể bạn muốn sử dụng trong thanh ghi điều khiển PWM ( PWMCR )
- Đặt số lượng số lượng tối đa trong một chu kỳ. Điều này được thực hiện trong Match Register 0 ( PWMMR0 )
- Đặt giá trị cho chu kỳ nhiệm vụ trong sổ đăng ký đối sánh cụ thể mà bạn muốn sử dụng ( PWMMRx trong đó “ x ” là từ 1 đến 6)
- Thiết lập thanh ghi điều khiển đối sánh PWM để đặt lại bộ đếm khi đăng ký kết quả khớp ( PWMMCR )
- Đặt chốt PWM Bật Đăng ký để cho phép sử dụng giá trị khớp ( PWMLER )
- Đặt lại bộ đếm thời gian bằng cách sử dụng bit trong thanh ghi điều khiển bộ đếm thời gian PWM ( PWMTCR )
- Kích hoạt bộ đếm thời gian và kích hoạt chế độ PWM bằng cách sử dụng thanh ghi điều khiển bộ đếm thời gian PWM ( PWMTCR ).
ĐẦU RA | PWM1 | PWM2 | PWM3 | PWM4 | PWM5 | PWM6 |
TÊN PIN | P0.0 | P0.7 | P0.1 | P0.8 | P0.21 | P0.9 |
DỰ ÁN VÍ DỤ:
Trong dự án này, chúng tôi phải kiểm soát độ sáng của đèn LED được kết nối tại Pin P0.8 của LPC2148. Chúng tôi sẽ sử dụng khoảng thời gian 10ms. Chúng tôi cũng phải kết nối bốn công tắc tại Pin P1.16, P1.17, P1.18 và P1.19 để điều khiển độ rộng xung và do đó khi chúng tôi nhấn bất kỳ công tắc nào trong số này. Chúng tôi sẽ nhận được độ sáng tương đương.
Đối với dự án này, chúng tôi sẽ sửa đổi mã (theo kết nối phần cứng của chúng tôi) được viết bởi ông Umang Gajera. Tôi sẽ đăng một hướng dẫn thêm, nơi chúng tôi sẽ sử dụng PWM cùng với ADC để giới thiệu mờ của LED với LPC2148.
Thiết lập mạch: PWM trong LPC2148 ARM7
Chương trình PWM trong LPC2148 ARM7
Giải thích mã:
Trong đoạn mã này, chúng ta sẽ thảo luận về void initPWM ( void ) routine. Những thứ còn lại đã được đề cập trong các hướng dẫn trước và cũng đã nhận xét tốt về chính mã. Về cơ bản trong chức năng này void initPWM ( void ) chúng ta phải thiết lập và cấu hình kênh PWM của LPC2148.
Để sử dụng kênh PWM4 tại Pin P0.8 của LPC2148. Chúng ta phải thiết lập bit-16 để trở thành '0' & bit-17 để trở thành '1' vào thanh ghi PINSEL0. Điều này cho phép chúng tôi sử dụng PWM4.
Ở đây trong thanh ghi PWMPCR chúng ta phải chọn một đầu ra pwm cạnh đơn hoặc hai cạnh pwm. Theo mặc định nó là cạnh duy nhất để dòng này có thể được gỡ bỏ. Bây giờ ở đây trở thành một phần quan trọng:
Như chúng ta đã PCLK chạy ở 60 MHz, Nếu chúng ta sử dụng Clock Cycle = 60 thì PR = 59 ie (60-1). Vì vậy, chúng tôi nhận được độ phân giải chính xác 1 micro giây.
Đây là cách chúng ta có thể sử dụng PWM trong LPC2148 ARM7 Microcontroller để điều khiển độ sáng của đèn LED. Chúng ta có thể làm nhiều việc bằng cách tạo ra chu kỳ nhiệm vụ khác nhau.
Không có nhận xét nào:
Đăng nhận xét