Jamiel

New Member

Download miễn phí Thiết kế một hệ thống đo lường cơ bản gồm đo nhiệt độ sử dụng cảm biến nhiệt Ds18b20 và đo tốc độ động cơ sử dụng Motor – Encoder





Encoder thường có 3 kênh (3 ngõ ra) bao gồm kênh A, kênh B và kênh I (Index). Trong hình 2 bạn thấy hãy chú ý một lỗ nhỏ bên phía trong của đĩa quay và một cặp phat-thu dành riêng cho lỗ nhỏ này. Đó là kênh I của encoder. Cữ mỗi lần motor quay được một vòng, lỗ nhỏ xuất hiện tại vị trí của cặp phát-thu, hồng ngoại từ nguồn phát sẽ xuyên qua lỗ nhỏ đến cảm biến quang, một tín hiệu xuất hiện trên cảm biến. Như thế kênh I xuất hiện một “xung” mỗi vòng quay của motor. Bên ngoài đĩa quay được chia thành các rãnh nhỏ và một cặp thu-phát khác dành cho các rãnh này. Đây là kênh A của encoder, hoạt động của kênh A cũng tương tự kênh I, điểm khác nhau là trong 1 vòng quay của motor, có N “xung” xuất hiện trên kênh A. N là số



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

hức theo kiểu 8K x 16. Nhằm đảm bảo phần mềm được an toàn, bộ nhớ chương trình Flash được chia thành 2 phần: phần chương trình Boot (Boot Program Sector) và phần chương trình ứng dụng (Application Program Sector).
Bộ nhớ Flash có thể ghi xóa được đến 1.000 lần. Bộ đếm chương trình của ATmega16 có kích thước 13bit để ghi địa chỉ cho bộ nhớ chương trình 8K.
Bảng phân chia 2 phần của bộ nhớ:
Hình 2.3 – Sơ đồ phân chia bộ nhớ
2.4.2. Bộ nhớ dữ liệu SRAM:
Hình 2.4 – Sơ đồ địa chỉ bộ nhớ
Hình trên là địa chỉ của bộ nhớ dữ liệu của các thanh ghi R0 – R31, bộ nhớ IO và bộ nhớ SRAM. 63 địa chỉ đầu là của các thanh ghi R và IO, còn bộ nhớ SRAM chiếm 1024 địa chỉ còn lại.
2.4.3.Bộ nhớ dữ liệu EEPROM:
Vi điều khiển ATmega16 có bộ nhớ EEPROM với kích thước 512 byte. Nó được phân chia thành một khu vực riêng và có thể truy cập đến từng byte. Bộ nhớ EEPROM có thể ghi xóa đến 100.000 lần.
2.5. Xung nhịp của hệ thống và việc lựa chọn xung nhịp:
Vi điều khiển ATmega16 có nhiều lựa chọn trong việc thiết lập xung nhịp cho hệ thống. Xung nhịp có thể do mạch tạo dao động bên trong vi điều khiển, cũng có thể do mạch dao động bên ngoài.
Hình 2.5 – Sơ đồ khối hệ thống xung nhịp
Việc lựa chọn nguồn xung nhịp được thực hiện thông qua quá trình thiết lập các bit CKSEL3…0 (lựa chọn nguồn xung cũng như cả tần số của nguồn xung).
Các nguồn xung
CKSEL3…0
Extenal Crystal / Ceramic Resonator
1111 – 1010
External Low-frequency Crystal
1001
External RC Oscillator
1000 – 0101
Calibrated Internal RC Oscillator
0100 – 0001
External Clock
0000
Sau đây là một số cách kết nối với nguồn xung nhịp bên ngoài:
Kết nối với thạch anh
Nguồn RC bên ngoài
Nguồn xung clock bên ngoài
Bảng 2.1 – Kết nối với nguồn xung bên ngoài
2.6. Giới thiệu về Timer/Counter của ATmega16:
2.6.1. Timer/Counter0:
Các chức năng chính:
Kênh đếm so sánh đơn.
Xóa giá trị timer khi đạt tới giá trị so sánh (Auto Reload).
Chế độ PWM.
Đếm sự kiện bên ngoài.
Bộ chia tần số 10bit.
Ngắt khi tràn hay tại giá trị so sánh.
Hình 2.6 – Sơ đồ khối của Timer/Counter0
Các chế độ hoạt động của Timer/Counter0:
Chế độ bình thường.
Chế độ xóa giá trị Timer khi đạt tới giá trị so sánh.
Chế độ Fast PWM.
Chế độ PWM.
Trong đề tài này, Timer/Counter0 được dùng để tạo xung PWM. Vì thế, phần này chỉ đề cập đến chế độ hiệu chỉnh PWM của Timer/Counter0.
Chế độ hiệu chỉnh xung PWM giúp tạo ra dạng xung PWM với độ phân giải cao. Chế độ này dựa trên hoạt động dual-slope (dạng hai sườn lên xuống theo giá trị thanh ghi). Bộ đếm đếm liên tục từ giá trị BOTTOM đến MAX rồi đếm từ MAX xuống BOTTOM. Nếu chọn ngõ ra dạng không đảo (non-inverting), chân OC0 ở mức 0 tại giá trị so sánh giữa OCR0 với TCNT0 khi đếm lên, và ở mức 1 tại giá trị so sánh khi đếm xuống. Nếu chọn ngõ ra dạng đảo (inverting), chân OC0 sẽ hoạt động ngược lại. Chế độ hoạt động dual-slope có tần số thấp hơn so với chế độ single-slope. Tuy nhiên, do đặc tính đối xứng nên kiểu dual-slope thích hợp hơn cho các ứng dụng điều khiển động cơ.
Độ phân giải của chế độ PWM này là 8bit. Bộ đếm sẽ tăng dần đến giá trị MAX. Khi đạt tới MAX, bộ đếm sẽ đảo chiều và đếm xuống tới BOTTOM. Như vậy, một chu kỳ của timer bằng thời gian giữa hai lần giá trị TCNT0 đạt MAX.
Hình 2.7 - Giản đồ thời gian của chế độ PWM
Cờ tràn TOV0 được set mỗi lần bộ đếm đạt tới giá trị BOTTOM. Khi timer đạt tới giá trị này, ta có thể sử dụng để kích hoạt chương trình ngắt qua cờ báo ngắt.
Xung PWM được đưa ra trên chân OC0. Việc thiết lập ngõ ra dạng đảo (inverting) hay không đảo (non-inverting) được thực hiện qua hai bit COM01 và COM00. Giá trị thực sự của OC0 chỉ có thể thấy được khi ta đặt OC0 là ngõ ra.
Tần số của xung PWM được tính toán dựa vào công thức sau:
Trong đó, N là giá trị của bộ chia tần số (1, 8, 64, 256,1024).
Thanh ghi OCR0 sẽ đạt tới cực trị (cực đại hay cực tiểu) thay cho các trường hợp đặc biệt khi phát ra dạng xung PWM. Trong chế độ không đảo, nếu OCR0 được đặt giá trị BOTTOM, ngõ ra luôn ở mức thấp và nếu OCR0 được đặt giá trị MAX thì ngõ ra luôn ở mức cao. Đối với chế độ đảo thì hoạt động ngược lại.
2.6.2. Timer/Counter1:
Các chức năng chính:
Thiết kế 16bit thực sự (cho phép tạo ra xung PWM 16bit).
2 bộ so sánh ngõ ra độc lập.
1 bộ bắt mẫu từ ngõ vào.
1 bộ giảm nhiễu ngõ vào.
Chế độ xóa timer khi đạt tới giá trị so sánh.
Tạo tần số.
Tạo xung PWM có thể thay đổi giá trị.
Đếm sự kiện ngoài.
4 nguồn ngắt độc lập (TOV1, OCF1A, OCF1B và ICF1).
Hình 2.8 - Sơ đồ khối của timer/counter1
Các chế độ hoạt động:
Chế độ bình thường.
Chế độ xóa timer khi đạt tới giá trị so sánh.
Chế độ Fast PWM.
Chế độ PWM (Phase Correct PWM).
Chế độ Phase and Frequency Correct PWM.
Giới thiệu về chế độ đếm sự kiện ngoài:
Chân ngõ vào T1: tác động cạnh lên hay xuống (tùy lựa chọn).
Trong chế độ này, bộ đếm luôn đếm lên, khi đạt tới giá trị MAX (0xFFFF) thì tự động reset về BOTTOM (0x0000).
2.6.3. Giới thiệu timer/counter2:
Các chức năng chính:
Kênh đếm so sánh đơn.
Xóa timer khi đạt tới giá trị so sánh (Auto Reload).
Chế độ PWM.
Đếm sự kiện bên ngoài.
Bộ chia tần số 10bit.
Ngắt khi tràn hay tại giá trị so sánh.
Hình 2.9 - Sơ đồ khối của timer/counter2
Các chế độ hoạt động của Timer/Counter2:
Chế độ bình thường.
Chế độ xóa timer khi đạt tới giá trị so sánh.
Chế độ Fast PWM.
Chế độ PWM.
Giới thiệu chế độ xóa giá trị Timer khi đạt tới giá trị so sánh (CTC):
Trong chế độ này, thanh ghi OCR2 được dùng để thiết lập độ phân giải cho bộ đếm. Khi TCNT đạt tới giá trị bằng với OCR2, bộ đếm được xóa về 0. Thanh ghi OCR2 xác định giá trị lớn nhất và cũng là độ phân giải của Timer2.
Hình 2.10 - Giản đồ thời gian của chế độ CTC
Khi bộ đếm đạt tới giá trị TOP, cờ OCF2 kích hoạt chương trình ngắt. Khi đã được kích hoạt, chương trình ngắt có thể được sử dụng để cập nhật giá trị TOP.
Chu kỳ của Timer trong chế độ CTC có thể tính như sau:
Với công thức trên, ta có thể tính thời gian lấy mẫu như sau: Timer 8bit, giá trị MaxVal đặt trong OCR = 155, nguồn xung clock 16MHz, chia tần số 1024 thì thời gian lấy mẫu là 10ms.
2.7. Bộ truyền nhận dữ liệu USART:
USART (The Universal Synchronous and Asynchronous serial Receiver and Transmitter – Bộ truyền nhận nối tiếp tổng hợp đồng bộ và bất đồng bộ)
Đặc điểm:
Hoạt động song công.
Cho phép làm việc ở các chế độ : đồng bộ hay bất đồng bộ.
Bộ phát tốc độ baud (BAUD RATE) với độ phân giải cao.
Hỗ trợ Format khung truyền nối tiếp : 5,6,7,8, hay 9 Data Bits và 1 hay 2 bit Stop.
Hỗ trợ kiểm tra bit chẵn , lẻ bằng phần cứng.
Có thể phát hiện Data bị tràn , khung truyền bị lỗi.
Có 3 cờ báo ngắt : TX complete, TX Data Register Empty và RX complete.
Có chế độ truyền thông đa xử lý.
Double speed (chỉ áp dụng cho chế độ truyền thông bất đồng bộ).
Hình 2.11 - Sơ đồ khối USART
Trong sơ đồ trên, có ba khối nằm trong phần khung vuông là ba phần chính của USART: bộ phát xung, bộ truyền và bộ nhận. Thanh ghi điều khiển được sử dụng chung cho các thành phần. Bộ phát xun...
 

Các chủ đề có liên quan khác

Top