1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế hệ thống điều khiển động cơ một chiều theo kĩ thuật PWM có phản hồi dòng điện trên nền vi điều khiển ATmega16

83 862 15

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 83
Dung lượng 6,78 MB

Nội dung

Thiết kế hệ thống điều khiển động cơ một chiều theo kĩ thuật PWM có phản hồi dòng điện trên nền vi điều khiển ATmega16

Trang 1

MỤC LỤC

Trang

Lời mở đầu 4

Chương 1 Đặt vấn đề 6

1.1 Bài toán điều khiển động cơ một chiều 6

1.1.1 Động cơ điện một chiều kích từ bằng nam châm vĩnh cửu 6

1.1.2 Mô hình hóa động cơ một chiều 7

1.1.3 Cấu trúc điều khiển phản hồi dòng điện 8

1.1.4 Giải pháp thiết kế bộ điều khiển số 10

1.2 Kĩ thuật điều chế độ rộng xung PWM và mạch cầu H 11

1.2.1 Kĩ thuật điều chế độ rộng xung PWM 11

1.2.2 Mạch cầu H 12

1.3 Đề xuất các thành phần của hệ thống điều khiển động cơ một chiều 13

Chương 2 Giới thiệu chung về các thành phần của hệ thống 15

2.1 Nguồn adapter 15

2.2 Động cơ có gắn encoder 15

2.2.1 Động cơ thực nghiệm 15

2.2.2 Encoder 16

2.3 Driver L298 17

2.4 Điện trở shunt 19

2.5 Opamp LM324 20

2.6 Các thiết bị nhập/xuất dữ liệu 21

2.6.1 Màn hình LCD 16x2 21

2.6.2 Bàn phím nút nhấn 23

2.6.3 Cổng truyền thông RS232 25

2.6.4 Chuẩn giao tiếp SPI và mạch nạp ISP 28

2.7 Vi điều khiển ATmega16 30

2.7.1 Giới thiệu họ vi điều khiển AVR 30

2.7.2 Kiến trúc của AVR 31

2.7.3 ATmega16 35

Chương 3 Thiết kế mạch phần cứng 39

3.1 Các cổng vào/ra của mạch phần cứng 39

3.2 Mạch driver L298 39

3.3 Đo tốc độ động cơ 40

Trang 2

3.4 Mạch đo dòng phản hồi 41

3.5 Mạch bảo vệ quá dòng 42

3.6 Khối nút nhấn và hiển thị 43

3.7 Mạch tạo dao động bằng thạch anh 44

3.8 Sơ đồ nguyên lý tổng hợp 44

Chương 4 Thiết kế phần mềm 45

4.1 Tìm hiểu các module của ATmega16 được sử dụng 45

4.1.1 Các ngắt trong ATmega16 45

4.1.2 Điều chế độ rộng xung (PWM) với Timer/Counter1 (T/C1) 47

4.1.3 Tạo chu kỳ trích mẫu với Timer 2 và đếm xung với Counter0 53

4.1.4 Bộ chuyển đổi tương tự - số (ADC) 56

4.1.5 Đo tần số tín hiệu dạng xung với Input Capture 61

4.1.6 Giao tiếp truyền thông SPI và UART 63

4.2 Xây dựng giao diện đồ họa người dùng trên MATLAB 68

4.3 Cài đặt phần mềm cho vi điều khiển 72

4.3.1 Thuật toán điều chế điện áp 72

4.3.2 Lưu đồ thuật toán điều khiển 72

4.3.3 Lập trình C cho AVR với phần mềm CodeVision AVR 73

Chương 5 Kết quả đạt được 75

5.1 Thực nghiệm 75

5.1.1 Phương án thực nghiệm 75

5.1.2 Thí nghiệm 1 - Kiểm tra phép đo dòng 76

5.1.3 Thí nghiệm 2 - Nhận dạng hàm truyền đối tượng vòng trong 76

5.1.4 Thí nghiệm 3 - Nhận dạng hàm truyền đối tượng vòng ngoài 77

5.1.5 Kết quả thực nghiệm 78

5.2 Đánh giá và bàn luận 79

5.2.1 Các kết quả đạt được 79

5.2.2 Hạn chế 79

5.3 Tổng kết đồ án 80

Tài liệu tham khảo 81

PHỤ LỤC 82

Sản phẩm mạch phần cứng 82

Trang 3

Lời mở đầu

Ngày nay, dòng điện xoay chiều được sử dụng rộng rãi, cùng với đó là sự xuất hiện ngày càng phổ biến của các loại máy điện xoay chiều 3 pha trong nền sản xuất hiện đại Mặc dù vậy, động cơ điện một chiều (ĐCMC) vẫn đóng vai trò quan trọng nhờ những ưu điểm nổi bật về đặc tính làm việc, khả năng điều chỉnh tốc độ bằng phẳng trong phạm vi rộng, khả năng mở máy lớn và đặc biệt là khả năng quá tải Trên góc độ nghiên cứu, phương pháp điều khiển truyền động các loại máy điện xoay chiều được sử dụng chủ yếu vẫn là điều khiển vector theo nguyên lý tựa từ thông rotor, dựa trên cơ sở nguyên lý điều khiển ĐCMC Chính vì vậy, điều khiển ĐCMC vẫn là bài toán cơ bản và quan trọng nhất,

là bước đệm để các nhà nghiên cứu cũng như ứng dụng tiếp cận với những bài toán điều khiển các hệ thống truyền động phức tạp

Nguyên tắc điều chỉnh động cơ cơ bản vẫn là điều chỉnh điện áp đặt lên 2 đầu mạch phần ứng (tạo dòng điện sinh mômen) Với sự phát triển nhanh chóng của công nghệ bán dẫn, phương pháp điều chỉnh điện áp trên 2 đầu tải được sử dụng phổ biến nhất là kĩ thuật điều chế độ rộng xung (PWM) nhằm tận dụng các khả năng ưu việt của hệ thống điều khiển số hiện đại so với những cơ cấu điều áp cổ điển Nhiệm vụ cơ bản của người kĩ sư chỉ còn là thiết kế giải thuật để bộ điều khiển tính toán ra giá trị điện áp cần điều chế Với bài toán điều khiển ĐCMC, nhiều luật điều khiển đã được nghiên cứu áp dụng, dù vậy PID vẫn là phương pháp được ưa chuộng vì tính đơn giản và hiệu quả của nó

Chính vì những lí do trên, là những sinh viên ngành điều khiển tự động xác định được hướng nghiên cứu trong năm học cuối là tập trung vào lĩnh vực điều khiển các loại

máy điện, chúng em đã quyết định thực hiện Đồ án 3 với đề tài “Thiết kế hệ thống điều

khiển động cơ một chiều theo kĩ thuật PWM có phản hồi dòng điện trên nền vi điều khiển ATmega16” với mong muốn có được những kiến thức và kĩ năng thực tế phục vụ cho quá

trình học tập và nghiên cứu ứng dụng, có thể vận dụng tổng hợp các lý thuyết đã học để tạo

ra một sản phẩm hoàn chỉnh, đáp ứng được các yêu cầu kĩ thuật với chi phí thấp Quyển đồ

án này là sự tổng hợp các nội dung cần thiết đóng vai trò quan trọng trong việc định hướng thiết kế, tổng hợp quá trình tìm hiểu, trao đổi, phân tích và giải quyết vấn đề của 3 thành viên trong nhóm, là sự ghi nhận đóng góp của từng cá nhân vào công việc chung

Quyển báo cáo đồ án được chia thành 5 chương:

- Chương 1 Đặt vấn đề

Chương này đề cập đến các trọng tâm trong bài toán điều khiển động cơ, trả lời câu hỏi vì sao phải phản hồi dòng điện, và vì sao phải điều chế độ rộng xung, các lý thuyết nào sẽ được áp dụng với bài toán điều khiển mômen và tốc độ quay, từ đó đề xuất cấu hình cơ bản của hệ thống cần thiết kế

- Chương 2 Giới thiệu chung về các thành phần của hệ thống

Trên cơ sở cấu hình đã được đề xuất, tìm hiểu về các đặc tính kĩ thuật và giải pháp sử dụng chúng trong bản thiết kế

- Chương 3 Thiết kế mạch phần cứng

Trang 4

Với những tìm hiểu đã được trình bày trong Chương 2, các thiết bị sẽ được kết nối với nhau vào trong một mạch phần cứng tổng hợp mà kết quả cuối cùng được thể hiện trong sơ

đồ nguyên lý trước khi chuyển sang thiết kế mạch in

- Chương 4 Thiết kế phần mềm

Nhiệm vụ cơ bản của chương này là lập trình, cài đặt được thuật toán điều khiển động cơ vào trong vi điều khiển ATmega16, với các tính năng hỗ trợ như giao diện đồ họa người dùng, nạp qua ISP và truyền tin qua cổng UART

- Chương 5 Kết quả đạt được

Nội dung chương trình bày về tiến trình thực nghiệm và các kết quả, từ đó đưa ra những đánh giá và bàn luận, cũng như chỉ ra một số hạn chế của đồ án

Để có thực hiện thành công đồ án, chúng em xin gửi lời cảm ơn chân thành đến

TS Vũ Vân Hà, người đã có những hướng dẫn, giúp đỡ tận tình cho chúng em cả về

những hiểu biết thực tế cũng như những hỗ trợ trong quá trình làm mạch phần cứng Mặc

dù cả nhóm đã nỗ lực thực hiện đồ án với thái độ nghiêm túc để có thể tạo ra những kết quả tốt nhất, nhưng chắc rằng mạch thành phẩm cũng như quyển báo cáo đồ án khó tránh khỏi những thiết sót, hạn chế Chúng em rất mong nhận được thêm những góp ý, chỉ bảo quý báu từ các thầy cô để có thể làm tốt hơn với những sản phẩm sau này

Chúng em xin chân thành cảm ơn!

Nhóm sinh viên thực hiện,

Đặng Đức Công, Đinh Văn Hòa, Trần Vũ Trung,

KSTN ĐKTĐ K55

Trang 5

Chương 1 Đặt vấn đề

1.1 Bài toán điều khiển động cơ một chiều

1.1.1 Động cơ điện một chiều kích từ bằng nam châm vĩnh cửu

Động cơ điện một chiều (ĐCMC) kích từ bằng nam châm vĩnh cửu là loại động cơ một chiều kích từ độc lập mà phần cảm stator là nam châm vĩnh cửu Phần ứng rotor có các cuộn dây quấn xung quanh một lõi thép và được nối với nguồn điện một chiều Một phần quan trọng khác của ĐCMC là bộ phận chỉnh lưu, nó có nhiệm vụ đổi chiều dòng điện giúp cho chuyển động quay của rotor là liên tục, thông thường bộ phận này gồm có một bộ

cổ góp và một bộ chổi than tiếp xúc với cổ góp Cấu tạo và nguyên tắc hoạt động của ĐCMC được minh họa bởi Hình 1

Pha 1:

Dòng điện chạy trong mạch

phần ứng sinh ra từ trường

của rotor, từ trường này

tương tác với từ trường của

nam châm sinh ra một

mômen làm rotor quay

Pha 2:

Khi mặt của cuộn dây song song với các đường sức từ, mômen bằng 0, rotor tiếp tục quay theo quán tính

Pha 3:

Sau mỗi vị trí mà tại đó mômen bằng 0, bộ phận chỉnh lưu sẽ đảo chiều dòng điện trong dây quấn để mômen quay liên tục và đúng chiều

Hình 1 Cấu tạo và chu trình các pha làm việc của ĐCMC

Tốc độ quay là mục tiêu điều khiển cơ bản của bài toán điều khiển động cơ Các kĩ thuật điều khiển tốc độ quay của ĐCMC thường tập trung vào việc tác động đến điện áp đặt trên

2 đầu hoặc điện trở của mạch phần ứng Trong đó, kĩ thuật điều chế độ rộng xung điện áp

sử dụng các bộ biến đổi điện tử công suất là phổ biến hơn cả nhờ khả năng tác động nhanh

và đặc biệt là điều khiển mềm bằng vi xử lý (điều khiển số)

Trang 6

1.1.2 Mô hình hóa động cơ một chiều

Theo [1] các phương trình toán học mô tả ĐCMC được cho bởi công thức:

L T R

Biến đổi Laplace các phương trình trên, ta thu được mô hình dạng sơ đồ khối mô tả ĐCMC như sau:

Hình 2 Mô hình toán học của động cơ một chiều

Hàm truyền đối tượng tốc độ động cơ:

Trong thực tế, các động cơ một chiều được bán trên thị trường hiện nay rất ít khi kèm theo một bảng thông số chi tiết, nếu có cũng rất sơ sài Do vậy việc xác định đầy đủ tất cả các tham số mô hình là một việc làm khó Ta thường chỉ dễ dàng đo được các giá trị điện trở, điện cảm phần ứng, việc nhận dạng mô hình đầy đủ phục vụ cho công việc tổng hợp bộ

Trang 7

điều khiển sẽ được tiến hành bằng phương pháp khảo sát đáp ứng xung thực nghiệm, với

sự hỗ trợ của công cụ System Identification Toolbox trong Matlab Khi đó, cần thiết phải

có thêm một cổng truyền thông để hệ thống giao tiếp với máy tính

1.1.3 Cấu trúc điều khiển phản hồi dòng điện

Phương trình chuyển động (3) cho thấy quan hệ trực tiếp giữa mômen quay và tốc độ Phương trình (2) cho thấy mối quan hệ tỉ lệ giữa mômen quay m và dòng điện phần ứng M

A

i ở ĐCMC kích thích bằng nam cham vĩnh cửu với từ thông kích từ ψ là hằng số Như vậy bằng việc điều khiển i cho phép ta áp đặt ngay tức thời mômen quay A m qua đó đáp M

ứng tốc độ n là rất nhanh Đây cũng chính là ý tưởng trong cấu trúc điều khiển tầng

(cascade control) kinh điển của các hệ truyền động: gồm hai vòng phân cấp với khâu điều

chỉnh tốc độ quay ở vòng ngoài và khâu điều chỉnh dòng ở phần trong (Hình 3)

Hình 3 Sơ đồ cấu trúc điều khiển động cơ một chiều

Cả 2 khâu điều chỉnh trong Hình 3 đều được thiết kế theo cấu trúc PI để đảm bảo đáp ứng nhanh và triệt tiêu sai lệch tĩnh Các thiết kế bộ điều khiển cho ĐCMC thường dựa vào 2

phương pháp (tiêu chuẩn tối ưu) cơ bản là tối ưu module và tối ưu đối xứng Trong khi mục

tiêu của phương pháp tối ưu module là giá trị thực (đo được) bám theo giá trị đặt chính xác nhất (trong một dải tần rộng nhất) có thể, thì phương pháp tối ưu đối xứng mong muốn đưa giá trị thực trở lại với giá trị đặt nhanh nhất có thể sau khi nó bị đánh bật ra khỏi vị trí cân bằng (nâng cao độ trữ ổn định cho hệ kín) Vòng điều chỉnh bên trong, đối tượng phần điện

có động học biến đổi nhanh, bộ điều khiển của vòng này thường được thiết kế theo phương pháp tối ưu module Vòng điều chỉnh bên ngoài, đối tượng phần cơ có động học biến đổi chậm hơn, lại thường chịu ảnh hưởng bởi sự thay đổi đột ngột của nhiễu tải, do vậy ta sử dụng phương pháp tối ưu đối xứng cho bộ điều khiển tốc độ quay Lưu ý rằng, các tham số của các bộ điều khiển được tính toán theo hai phương pháp này dựa trên mô hình thu được

từ các dữ liệu đo đạc và phép ước lượng, bên cạnh đó các đặc tính cơ-điện của hệ thống không hoàn hảo như trong lý thuyết và có những sai khác tùy vào ứng dụng cụ thể Do đó, các thông số bộ điều khiển thu được cũng chỉ là một giá trị đáng tin cậy trong cài đặt ban đầu, những giá trị này có thể sẽ cần được chỉnh định thêm trong quá trình thực nghiệm

Để thiết kế bộ điều khiển dòng, sức điện động cảm ứng e A thường được bỏ qua, và khi đó,

từ (1) và Hình 3, hàm truyền mạch điện phần ứng là một khâu quán tính bậc hai:

Trang 8

1+sT t là hàm truyền của bộ biến đổi Đối với bộ biến đổi sử dụng các van tần

số đóng cắt cao, động học của khâu này là rất nhanh và có thể bỏ qua, tức là coi T t ≈ , 0

K R

A scl i

k

π ψ

= là hằng số thời gian phần cơ, và T σ=2T A là hằng số thời gian thay thế của vòng trong

Áp dụng phương pháp tối ưu đối xứng, ta thu được tham số của bộ điều khiển tốc độ:

( )

4

2

11

In

M Pn

Trang 9

1.1.4 Giải pháp thiết kế bộ điều khiển số

1.1.4.1 Thuật toán PID số

PID vẫn luôn được coi là bộ điều khiển chuẩn công nghiệp vì tính đơn giản và hiệu quả làm việc của nó Luật PID trên miền thời gian (liên tục) được mô tả bởi công thức dạng chuẩn tắc:

vi phân (D) Các thuật toán PID sử dụng trong điều khiển số chỉ khác nhau bởi nỗ lực thực hiện phép xấp xỉ 2 thành phần này, tức là khác nhau ở độ chính xác

Thuật toán PID số đơn giản nhất sử dụng công thức sai phân sau [2]:

T

T

= , với T là chu kỳ trích mẫu tín hiệu

Công thức cho một số trường hợp riêng:

1.1.4.2 Giải pháp điều khiển khi hằng số thời gian mạch điện phần ứng quá nhỏ

Bộ điều khiển trong thực tế luôn mất một khoảng thời gian để xử lí tín hiệu và tính toán trước khi đưa ra tín hiệu điều khiển, tức là tác động điều khiển chậm hơn so với thời điểm bắt đầu trích mẫu Nếu khoảng thời gian trễ điều khiển này nhỏ hơn 1/10 hằng số thời gian bé nhất của đối tượng điều khiển, ta có thể bỏ qua nó và thuật toán điều khiển số đảm bảo cho chất lượng mong muốn Nhưng nếu đối tượng có thành phần động học biến đổi

Trang 10

quá nhanh so với khả năng tính toán của vi điều khiển, các hằng số thời gian quá nhỏ tương ứng sẽ được bỏ qua khi thiết kế bộ điều khiển, và ta không có khả năng tổng hợp được một vòng điều chỉnh kín mà động học của nó lại có thể nhanh hơn được cả một chu

kỳ lấy mẫu

Trong nhiều ứng dụng điều khiển động cơ, mạch phần ứng có điện cảm rất nhỏ so với điện trở, dẫn đến hằng số thời gian điện nhỏ chỉ cỡ vài trăm μs, trong khi thời gian để

thực thi các lệnh tính toán trước khi đưa được ra tín hiệu điều khiển (cụ thể là duty cycle

trong PWM) đã lớn hơn đáng kể (cỡ vài ms) Khi đó, cấu trúc bộ điều khiển dòng được lựa chọn vẫn là một khâu tích phân (I), nhưng công thức (9) không còn được sử dụng để tính

hệ số K i nữa, mà thay vào đó, hàm truyền đạt vòng điều chỉnh dòng sẽ trở thành một khâu quán tính bậc nhất với hằng số thời gian tỉ lệ nghịch với K i, nghĩa là K i càng lớn thì dòng điện bám tín hiệu đặt càng nhanh Tuy nhiên, K i lớn sẽ dẫn đến nguy cơ đưa điện áp điều khiển nhanh chóng vào vũng bão hòa (giá trị giới hạn điện áp), tức là vùng mà đối tượng điều khiển đã không còn tuyến tính nữa, tính ổn định của hệ kín vì thế không còn được đảm bảo Do đó, K i nên được chọn vừa phải nếu không yêu cầu đáp ứng điều khiển mômen quá nhanh Hàm truyền đạt tổng hợp của đối tượng vòng ngoài vẫn là một khâu quán tính – tích phân bậc nhất, bộ điều khiển tốc độ vẫn được lựa chọn theo cấu trúc PI và thiết kế theo nguyên lý tối ưu đối xứng như công thức (12)

1.2 Kĩ thuật điều chế độ rộng xung PWM và mạch cầu H

1.2.1 Kĩ thuật điều chế độ rộng xung PWM

Một trong những phương pháp đơn giản mà hiệu quả để thay đổi điện áp đặt lên phần ứng

động cơ là sử dụng kĩ thuật điều chế độ rộng xung (PWM – Pulse Width Modulation)

Hình 4 Nguyên lí điều chế độ rộng xung PWM

Nhận thấy ở Hình 4, giá trị trung bình điện áp trên tải:

Trang 11

Ta thấy giá trị điện áp trên tải phụ thuộc vào tỉ số γ =Duty cycle period/ Do đó, ứng với

mỗi tần số xung period , ta có thể điều chỉnh Duty cycle để điều chỉnh điện áp đặt lên

phần ứng động cơ

Chú ý: Khi lựa chọn tần số của xung PWM, ta cần lựa chọn sao cho đáp ứng cơ học của

động cơ đủ mịn để không có cảm giác bị vấp do điện áp thay đổi Đồng thời chu kỳ xung điều chế phải nhỏ hơn hằng số thời gian mạch điện phần ứng để điện cảm trong mạch thực

sự có tác dụng làm cho dòng điện không bị gián đoạn

1.2.2 Mạch cầu H

Tín hiệu PWM xuất từ vi xử lí không đủ dòng để cấp trực tiếp cho động cơ được, vì vậy ta cần sử dụng một mạch trung gian để có thể cung cấp đủ áp và dòng cho động cơ Mặt khác chiều quay của ĐCMC phụ thuộc vào cực âm và dương của nguồn được nối vào phía nào trên phần ứng của động cơ, do đó muốn đổi chiều quay của động cơ ta cần đổi cực nối vào phần ứng Mạch cầu H được xây dựng như là một giải pháp hiệu quả cho cả 2 vấn đề này

Hình 5 Sơ đồ nguyên lí của mạch cầu H

Mạch cầu H là tổ hợp 4 khóa điện tử công suất, được mắc như sơ đồ Hình 5, nguyên lý hoạt động của mạch này như sau:

- Cùng với mức điện áp V thì khi công tắc L1 và R2 đóng sẽ cho đối tượng động cơ chạy ngược chiều so với khi công tắc L2 và R1 cùng đóng Tuy nhiên, việc đóng cắt này tuyệt đối không để L1 và L2, hoặc R1 và R2 cùng đóng vì sẽ xảy ra ngắn mạch nguy hiểm cho nguồn Chính vì vậy, đi kèm với mạch cầu H sẽ có những bộ điều khiển sao cho những cặp công tắc này không thể cùng đóng

- Giả thiết rằng, động cơ chạy với vận tốc định mức khi được cung cấp nguồn định mức với L1, R2 đóng và L2, R1 mở Rõ ràng, khi R2 được cố định đóng nguyên và

L1 được cho đóng cắt với với thời gian Duty cycle trong chu kì period , như vậy

điện áp trung bình được đặt lên đầu động cơ sẽ là: U t V*Duty cycle

period

Các khóa L1, L2, R1, R2 phải chịu tần số đóng cắt PWM lên tới hàng KHz nên chúng thường là các van bán dẫn có điều khiển loại FET, MOSFET, IGBT, BJT công suất

Trang 12

1.3 Đề xuất các thành phần của hệ thống điều khiển động cơ một chiều

+ Tốc độ quay được đo bằng encoder có sẵn gắn với vỏ động cơ

+ Dòng điện một chiều được đo bằng điện trở shunt, khuếch đại tín hiệu từ shunt bằng LM324, là loại OPAMP giá rẻ và chỉ đòi hỏi nguồn đơn

+ Bên cạnh các chức năng cơ bản cần có kể trên, các yếu tố về tốc độ tính toán, mức

độ thông dụng, giá thành cũng được xét đến

AVR Atmega 16 là vi điều khiển được nhóm lựa chọn, đáp ứng đầy đủ các tiêu chí trên

- Thiết bị nhập/xuất dữ liệu:

+ Khối nút nhấn: gồm 4 nút Start/Stop, Up, Down, Reverse

+ Màn hình hiển thị LCD 16x2

+ Cổng truyền thông RS232

Bảng 1 Các thiết bị nhập/xuất dữ liệu và chức năng

Nút Start/Stop Khởi động và dừng động cơ

Nút Up Tăng giá trị Setpoint

Nút Down Giảm giá trị Setpoint

Nút Reverse Đảo chiều động cơ

LCD 16x2 Hiển thị tốc độ, dòng, tín hiệu điều khiển, cũng như sai lệch

Cổng RS232 Truyền tín hiệu lên máy tính để nhận dạng và đánh giá chất lượng

Trang 13

Hình 6 Sơ đồ cấu trúc đề xuất của hệ thống điều khiển ĐCMC

Trang 14

Thông số của nguồn được sử dụng:

- Điện áp đầu vào: 220VAC

- Điện áp đầu ra: 12VDC, 5VDC, 3.3VDC

- Dòng đầu ra: 1A

2.2 Động cơ có gắn encoder

2.2.1 Động cơ thực nghiệm

Động cơ một chiều được sử dụng trong đồ án là Servo Motor C6680 – 60025 có trong

máy in HP Scanjet 8250 do hãng HP chế tạo, với các thông số cơ bản như sau:

- Điện áp làm việc: 3 – 24V DC Định mức 12V DC

- Dòng điện không tải định mức: 80mA

- Tốc độ không tải định mức: 4000 vòng/phút

- Incremental Encoder: 888 xung/vòng

Động cơ được cấp điện và điều khiển thông qua 6 dây nối với header 2.0mm – 6P của board mạch động cơ, bao gồm 4 dây tín hiệu mạch điều khiển và 2 dây mạch động lực được phân biệt bởi các màu sắc khác nhau theo thứ tự sau:

Dây mạch điều khiển:

Trang 15

Hình 7 Hình ảnh thực tế của động cơ Servo sử dụng trong đồ án

2.2.2 Encoder

Encoder là thiết bị để xác định tốc độ quay của động cơ sử dụng phương pháp số (digital) Ngoài ra, còn có phương pháp tương tự (analog) như sử dụng tachometer Ở đây, việc sử dụng encoder tiện dụng hơn cả với lý do hệ thống điều khiển là số, đồng thời ta có thể vừa xác định tốc độ quay, góc quay và cả chiều quay Vì vậy, hầu hết các loại động cơ bán sẵn trên thị trường đều được tích hợp một encoder 3 đầu ra

Hình 8 Cấu tạo của encoder Hình 9 Encoder với 2 kênh A, B

Cấu tạo của encoder được chỉ ra ở Hình 8 bao gồm một nguồn phát quang (thường sử dụng nguồn hồng ngoại), một cảm biến quang nhận tín hiệu và một đĩa có chia rãnh để ngăn cách Đĩa chia rãnh càng nhiều đồng nghĩa tín hiệu xung phát về càng nhiều trong 1 vòng quay, tức là độ phân giải của góc quay và độ chính xác của tốc độ quay càng cao Tuy nhiên, điều này đồng nghĩa với việc tốc độ xử lý của trung tâm điều khiển phải nhanh một cách tương ứng nào đó, vì ngoài công việc này, trung tâm xử lý phải điều khiển những tác động khác

Trang 16

Ngoài ra, encoder thường được tạo ra với 3 kênh tín hiệu gồm: kênh A, B và I, với các đặc thù riêng Kênh I là tín hiệu được tạo ra bởi 1 vòng quay của trục động cơ, cứ mỗi vòng sẽ

có 1 xung ra ở kênh I (Hình 8) Trong khi đó, kênh A và B tương tự kênh I nhưng số xung xuất hiện trên 2 kênh sau mỗi vòng quay của động cơ là N xung (phụ thuộc vào nhà sản xuất) – cũng là số rãnh - được gọi là độ phân giải của encoder Kênh A được đặt lệch so với kênh B một số nguyên lần rãnh cộng với nửa rãnh Điều này khiến cho tín hiệu từ kênh

B có cùng tần số của kênh A nhưng lệch pha 90o(Hình 9) Đây chính là cơ sở để xét xem động cơ đang chạy thuận hay chạy ngược

Hình 9 thể hiện vị trí hai cảm biến kênh A và B lệch pha nhau và cho tín hiệu xung như hình vẽ Nhận thấy:

- Khi động cơ quay theo chiều kim đồng hồ, tại tín hiệu sườn xuống của kênh A cho

ta giá trị bằng 0 của kênh B

- Ngược lại, khi động cơ quay ngược chiều kim đồng hồ, tín hiệu sườn xuống của kênh A cho giá trị 1 của kênh B

Như vậy, khi kết hợp việc đếm số xung tạo ra bởi kênh A trong khoảng thời gian cố định đồng thời xác định tín hiệu của kênh B sẽ cho ta biết đồng thời tốc độ, cũng như chiều quay của động cơ

2.3 Driver L298

L298 là vi mạch tích hợp 2 mạch cầu H trong cùng một vỏ, thích hợp với mức logic TTL tiêu chuẩn, dùng để lái các tải cảm như cuộn rơ-le, động cơ một chiều, động cơ bước

Hình 10 Sơ đồ kết nối chân của L298

L298 sẽ cần 2 nguồn cấp: 1 nguồn Vss cấp cho các mạch logic đưa ra tín hiệu đóng/mở van, 1 nguồn Vs cấp cho mạch lực được kết nối với các chân Ouputs đầu ra

Cấu trúc của một IC L298N được thể hiện trong Hình 11 Mỗi mạch cầu trong L298 có 1 đầu vào Enable để cho phép kích hoạt mạch cầu đó hoạt động, khi đó van nào dẫn van nào khóa sẽ tùy thuộc vào 2 tín hiệu đầu vào Inputs Cực E của các van nhánh dưới được nối với nhau và đầu cực tương ứng với điểm nối chung này có thể được nối với một điện trở

Trang 17

shunt ở ngoài để đo dòng, điện trở này (cùng với 2 tụ 100nF chống nhiễu nguồn) được khuyến nghị đặt gần với chân GND của IC Trong những ứng dụng không cần đến phản hồi dòng, các chân cực emitter nối chung sẽ được nối trực tiếp với GND

Trong ứng dụng cho điều khiển ĐCMC (Hình 12), với mục tiêu bảo vệ động cơ quá áp và điều khiển động cơ chạy theo cả 2 chiều thuận nghịch và có hãm, ta sử dụng thêm một mạch cầu diode bảo vệ, yêu cầu là loại diode phục hồi nhanh (trr ≤ 200ns) và chịu được dòng 1A Khi cần dòng tải lên tới trên 2A, có thể sử dụng cấu hình song song (Hình 13) để tăng dòng cho động cơ

Hình 11 Sơ đồ cấu trúc của L298

Hình 12 Ứng dụng L298 trong điều khiển ĐCMC

Trang 18

Hình 13 Cấu hình kết nối song song để tăng dòng của L298

2.4 Điện trở shunt

Điện trở shunt là loại điện trở đặc biệt được dùng rộng rãi trong các ứng dụng đo dòng điện một chiều, thường được chế tạo bằng manganin là vật liệu ít thay đổi giá trị điện trở theo nhiệt độ để hạn chế sai số trong quá trình đo Shunt được mắc nối tiếp với tải để dòng cần

đo chảy qua nó, sự sụt áp trên shunt tỉ lệ với dòng điện và do trị số điện trở đã biết, phép

đo điện áp rơi trên shunt sẽ cho biết giá trị dòng tải

Hình 14 Hình dáng của các loại điện trở miliohm làm shunt thông dụng

Trang 19

Để không ảnh hưởng đáng kể đến mạch điện, điện trở shunt thường có trị số rất nhỏ, vào

cỡ vài mΩ (miliohm resistors) Khi chọn điện trở shunt, bên cạnh về trị số Ohm của điện

trở, người ta còn quan tâm đến dòng định mức qua điện trở (dòng tối đa đo được) và độ chính xác của điện trở đó Hình dáng và đặc điểm của các loại điện trở miliohm thông dụng trên thị trường được thể hiện trong Hình 14 và Bảng 2

Bảng 2 Thông số của các điện trở miliohm làm shunt thông dụng

Φd (mm) Max Current Rating (A) Resistance Range (mΩ)

Trang 20

Thông thường một bộ khuếch đại thuật toán (Op-Amp) thì cần phải có nguồn đôi, tức là phải có nguồn dương (+Vcc), đất (GND) và nguồn âm (-Vcc), chẳng hạn như Opamp 741 Tuy nhiên các Opamp trong LM324 được thiết kế đặc biệt để sử dụng với nguồn đơn, tức chỉ cần Vcc và GND là đủ

LM324 có thể được dùng rộng rãi trong hầu hết các ứng dụng mạch khuếch đại thuật toán cơ bản, bao gồm cả mạch so sánh Tuy nhiên cần lưu ý rằng khi được cấp nguồn đơn, các opamp sẽ không thể hoạt động ở chế độ khuếch đại đảo, và ở chế độ so sánh, điện

áp đầu ra sẽ thấp hơn Vcc do sự sụt áp trên các bóng transistor (Hình 16)

Hình 16 Sơ đồ cấu trúc của LM324

2.6 Các thiết bị nhập/xuất dữ liệu

2.6.1 Màn hình LCD 16x2

LCD (Liquid Crystal Display) - màn hình tinh thể lỏng - là loại thiết bị hiển thị cấu tạo bởi các tế bào (các điểm ảnh) chứa tinh thể lỏng có khả năng thay đổi tính phân cực của ánh sáng và do đó thay đổi cường độ ánh sáng truyền qua khi kết hợp với các kính lọc phân cực Chúng có ưu điểm là phẳng, cho hình ảnh sáng, chân thật và tiết kiệm điện Ngày nay, thiết bị hiển thị LCD được sử dụng trong rất nhiều các ứng dụng của VĐK LCD có rất nhiều ưu điểm so với các dạng hiển thị khác: khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ

Có nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, nhưng khá thông dụng là LCD 16x2 Với 2 hàng, mỗi hàng 16 ký tự Khi sản xuất LCD, nhà sản xuất đã tích

Trang 21

hợp chíp điều khiển bên trong lớp vỏ và chỉ đưa ra các chân giao tiếp cần thiết Các chân này được đánh số thứ tự và đặt tên như Hình 18

Hình 17 Hình ảnh thực tế của LCD 16x2

Hình 18 Sơ đồ chân LCD

Bảng 3 Ý nghĩa các chân của LCD

1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với

GND của mạch điều khiển

2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với

VCC = 5V của mạch điều khiển

3 VEE Điều chỉnh độ tương phản của LCD

4 RS Chân chọn thanh ghi (Register select) Nối chân RS với logic “0”

(GND) hoặc logic “1” (VCC) để chọn thanh ghi

+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)

+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD

5 R/W Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic

“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc

Trang 22

6 E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus

DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E

+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E

+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ

ở bus đến khi nào chân E xuống mức thấp

7 - 14 DB0 -

DB7

Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU

Có 2 chế độ sử dụng 8 đường bus này : + Chế độ 8-bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB

là hình thức ra lệnh phổ biến nhất trên thế giới, xuất hiện trong hầu hết mọi thiết bị, vật dụng như thang máy, máy tính cầm tay, điện thoại, bàn phím, chuông, và trong rất nhiều thiết bị gia đình hay công nghiệp

Hình 19 Một số loại nút nhấn, công tắc thường được sử dụng

Trang 23

Có nhiều loại nút nhấn với nhiều chủng loại, kích thước (Hình 19) và nguyên lý hoạt động khác nhau tùy thuộc vào mục đích sử dụng Hình 20 đưa ra một cách kết nối nút nhấn với các module khác, đặc biệt là kết nối với đầu vào tích cực thấp của các vi điều khiển, sử dụng một điện trở treo R Theo lý thuyết, đầu ra OUT sẽ mang giá trị điện áp 0V khi nút được nhấn, và 5V khi nhả ra

Hình 20 Sơ đồ nguyên lý kết nối phím bấm thông thường

Do bản chất là sự tiếp xúc cơ khí do đàn hồi nên khi các tiếp điểm tiếp xúc với nhau, xảy

ra hiện tượng các tiếp điểm dao động trước khi ổn định Tên khoa học của hiện tượng này

là “Switch bounce” (Rung phím) Hiện tượng này làm cho nút nhấn bị on – off liên tục thêm vài lần nữa mặc dù người sử dụng chỉ nhấn – thả có đúng một lần, và vấn đề này sẽ gây ra sai lệch giá trị logic như trên Hình 21

Hình 21 Đáp ứng đầu ra hiện tượng rung phím (Switch bounce)

“Debounce” là tên gọi của cách giải quyết hiện tượng rung phím này Có hai cách để Debounce:

- Cách thứ nhất (Debouncing in Software): lập trình để xác nhận sự kiện nhấn nút, trễ một khoảng thời gian thích hợp để đảm bảo tín hiệu logic thu được là chính xác

- Cách thứ hai (Debouncing in Hardware): sử dụng phần cứng là các linh kiện analog hoặc IC số để loại bỏ hiện tượng dao động của tín hiệu ra

Trang 24

2.6.3 Cổng truyền thông RS232

Với mục đích phục vụ cho việc nhận dạng mô hình để tổng hợp bộ điều khiển, hệ thống nhất thiết phải có thêm một cổng truyền thông để có thể truyền số liệu lên máy tính Chuẩn giao tiếp được coi là đơn giản và dễ dùng đó là RS232 Hầu hết các hệ thống, thiết

bị đều được giao tiếp với máy tính thông qua chuẩn này

Quá trình dữ liệu của chuẩn RS232:

Hình 22 Quá trình truyền kí tự ‘A’

Quá trình truyền và nhận dữ liệu qua cổng nối tiếp RS232 được thực hiện không đồng bộ, chỉ cần một đường truyền cho một quá trình và dữ liệu được truyền theo khung

dữ liệu đã được chuẩn hóa bởi các thiết bị nên không cần đường xung nhịp báo trước dữ liệu đến Bộ truyền gửi một bit bắt đầu (Start bit) để thông báo cho bộ nhận biết một kí tự

sẽ được gửi đến trong lần truyền bit tiếp theo Start bit luôn bắt đầu bằng mức 0 Tiếp theo

là các bit dữ liệu (data bits) được gửi dưới dạng mã ASCII (7 hay 8-bit dữ liệu) Sau đó có thể là một Parity bit (bit kiểm tra chẵn, lẻ) Và cuối cùng là bit dừng (Stop bit có thể là 1, 1.5 hay 2 bit dừng) Quá trình truyền ký tự ‘A’ được minh họa ở Hình 22

Tốc độ bit được định nghĩa là số bit truyền được trong thời gian 1 giây Tham số

này phải được thiết lập ở bên phát và bên nhận là như nhau (giữa vi điều khiển và máy tính phải chung nhau 1 tốc độ truyền bit) Ngoài tốc độ bit còn một tham số để mô tả tốc độ truyền là tốc độ Baud Tốc độ Baud liên quan đến tốc độ mà phần tử mã hóa dữ liệu được

sử dụng để diễn tả bit được truyền còn tốc độ bit thì phản ánh tốc độ thực tế mà các bit được truyền Vì một phần tử báo hiệu sự mã hóa một bit nên khi đó hai tốc độ bit và tốc độ baud là phải đồng nhất Một số tốc độ Baud thường dùng: 50, 75, 110, 150, 300, 600,

1200, 2400, 4800, 9600, 19200, 28800, 38400, 56000, 115200bps Khi sử dụng chuẩn nối tiếp RS232 thì yêu cầu thời gian chuyển mức logic không vượt quá 4% thời gian truyền 1 bit Do vậy, nếu tốc độ bit càng cao thì thời gian truyền 1 bit càng nhỏ, thời gian chuyển mức logic cũng phải nhỏ Điều này làm giới hạn tốc độ Baud và khoảng cách truyền

Parity bit dùng để kiểm tra lỗi trên đường truyền Một bit được bổ sung vào dữ liệu

được truyền để cho thấy số lượng các bit "1" được gửi trong một khung truyền là chẵn hay

lẻ Nếu số bit “1” là lẻ, Parity bit là 1 Ngược lại, số bit “1” là chẵn, Parity bit là 0 Bằng phương thức này chỉ có thể tìm ra một số lẻ bit bị lỗi, nếu như số bit chẵn được mắc lỗi thì

Trang 25

Parity bit sẽ trùng giá trị với trường hợp không mắc lỗi vì thế không phát hiện ra lỗi Do

đó, trong kỹ thuật mã hóa lỗi này không được sử dụng trong trường hợp có khả năng một vài bit bị mắc lỗi

Các đặc tính vật lý và kĩ thuật của chuẩn RS232:

RS 232 sử dụng phương thức truyền thông không đối xứng, sử dụng tín hiệu điện

áp chênh lệch giữa một dây dẫn và đất Do đó, ngay từ đầu tiên ra đời nó đã mang vẻ lỗi thời của chuẩn TTL Mức điện áp logic của chuẩn RS232:

• Mức logic 0 : +3V -> +12V

• Mức logic 1 : -12V -> -3V

Các mức điện áp trong phạm vi từ -3V đến 3V là trạng thái chuyển tuyến, không được định nghĩa Trong trường hợp thay đổi giá trị logic từ thấp lên cao hoặc từ cao xuống thấp, một tín hiệu phải vượt qua quãng quá độ trong một thời gian ngắn hợp lý Điều này dẫn đến việc phải hạn chế về điện dung của các thiết bị tham gia và của cả đường truyền Tốc độ truyền dẫn tối đa phụ thuộc vào chiều dài của dây dẫn Đa số các hệ thống hiện nay chỉ hỗ trợ với tốc độ 19.2 kbps Các đặc tính điện học khác:

• Chiều dài cực đại: 15m (không dùng Model)

• Tốc độ dữ liệu cực đại: 100kbps

• Các giá trị tốc độ truyền dữ liệu chuẩn: 50, 75, 110, 750, 300, 600, 1200, 2400,

4800, 9600, 19200, 28800, 38400, 56600,115200bps

• Trở kháng tải: 3k-7k

• Điện dung lối vào: <2500pF

Giao diện cơ học:

Hầu hết các máy tính cá nhân hiện nay đều được trang bị ít nhất là 1 cổng Com hay cổng nối tiếp RS232 Chuẩn RS-232 qui định ba loại giắc cắm RS-232 là DB-9, DB-25 và ALT-A, trong đó DB-9 là loại được sử dụng rộng rãi hơn Ta xét sơ đồ chân cổng DB-9:

Hình 23 Sơ đồ chân cổng DB-9

Chức năng của các chân như sau:

• Chân 1: DCD (Data Carrier Detect) Tín hiệu này tích cực khi Modem nhận được tín hiệu từ trạm từ xa và nó duy trì trong suốt quá trình liên kết

• Chân 2: RXD (receive Data) Đường nhận dữ liệu

Trang 26

• Chân 3: TXD (Transmit Data): Đường gửi dữ liệu

• Chân 4: DTR (Data Terminal Ready): Báo DTE sẵn sàng Chân DTR thường ở trạng thái ON khi thiết bị đầu cuối sẵn sàng thiết lập kênh truyền thông (tự động quay số hay tự động trả lời) DTR ở trạng thái OFF chỉ khi thiết bị đầu cuối không muốn DCE của nó chấp nhận lời gọi từ xa

• Chân 5: GND (Ground): Đất của tín hiệu

• Chân 6: DSR (Data Set Ready): Báo DCE sẵn sàng, ở chế độ trả lời, 1 tone trả lời

và DSR ON sau 2 giây khi Modem nhấc máy

• Chân 7: RTS (Request To Send): Đường RTS kiểm soát chiều truyền dữ liệu Khi một trạm cần gửi dữ liệu, nó đóng mạch RTS sang ON để báo hiệu với Modem của

• Chân 8: CTS (Clear To Send): Khi CTS chuyển sang ON, Modem xác nhận là DTE

có thể truyền số liệu Quá trình ngược lại nếu đổi chiều truyền số liệu

• Chân 9: RI (Ring Indicator): Khi Modem nhận được tín hiệu chuông, RI chuyển ON/OFF một cách tuần tự với chuông điện thoại để báo hiệu cho trạm đầu cuối Tín hiệu này chỉ thị rằng một Modem xa yêu cầu thiết lập liên kết dial-up

Sơ đồ ghép nối RS232 dùng IC max232

Khi thực hiện giao tiếp với vi điều khiển, ta phải dùng thêm mạch chuyển mức logic từ TTL sang RS232 và ngược lại Vi mạch thường sử dụng là MAX232 của Maxim, đây là IC chạy ổn định và được sử dụng phổ biến trong các mạch giao tiếp chuẩn RS232 Tích hợp trong đó hai kênh truyền cho chuẩn RS232 nhưng giá thành của Max232 tương đối phù hợp Mỗi đầu truyền ra và cổng nhận tín hiệu đều được bảo vệ chống lại sự phóng tĩnh điện Ngoài ra Max232 còn được thiết kế với nguồn cung cấp là +5VDC nên có thể thiết kế trên cùng 1 mạch với các linh kiện CMOS khác

Mạch giao tiếp như sau:

Hình 24 Sơ đồ ghép nối RS232 dùng IC max232

Trang 27

2.6.4 Chuẩn giao tiếp SPI và mạch nạp ISP

Serial Peripheral Interface (hay SPI bus) là một chuẩn truyền thông nối tiếp tốc độ cao do hãng Motorola đề xuất Đây là kiểu truyền thông Master – Slave, trong đó có một chip Master điều phối quá trình truyền thông và các chip Slaves được điều khiển bởi Master, vì thế truyền thông chỉ xảy ra giữa Master và Slave SPI là một cách truyền song công (full duplex) nghĩa là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời SPI đôi khi được gọi là chuẩn truyền thông “4 dây” vì có 4 đường giao tiếp trong chuẩn này đó là SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Ouput Slave Input) và SS (Slave Select) Hình 1 thể hiện một kết SPI giữa một chip Master và 3 chip Slave thông qua 4 đường

SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên cần 1

đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi Đây là điểm khác biệt với truyền thông không đồng bộ mà chúng ta đã biết trong chuẩn UART Sự tồn tại của chân SCK giúp quá trình tuyền ít bị lỗi và vì thế tốc độ truyền của SPI có thể đạt rất cao Xung nhịp chỉ được tạo ra bởi chip Master

MISO– Master Input / Slave Output: nếu là chip Master thì đây là đường Input còn

nếu là chip Slave thì MISO lại là Output MISO của Master và các Slaves được nối trực tiếp với nhau

MOSI – Master Output / Slave Input: nếu là chip Master thì đây là đường Output

còn nếu là chip Slave thì MOSI là Input MOSI của Master và các Slaves được nối trực tiếp với nhau

SS – Slave Select: SS là đường chọn Slave cần giap tiếp, trên các chip Slave đường

SS sẽ ở mức cao khi không làm việc Nếu chip Master kéo đường SS của một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó Chỉ có 1 đường SS trên mỗi Slave nhưng có thể có nhiều đường điều khiển SS trên Master, tùy thuộc vào thiết

kế của người dùng

Hình 25 Giao diện SPI

Trang 28

In – System Programming (ISP) là khả năng của một số thiết bị logic khả trình, vi điều khiển hay một số thiết bị nhúng có thể được lập trình khi đã cài đặt trong một hệ thống hoàn chỉnh thay vì phải lập trình trước khi cài đặt nó vào hệ thống ISP cho phép lập trình (nạp) hoặc lập trình lại cho hầu hết các loại vi điều khiển AVR, sử dụng giao tiếp chuẩn 3 dây SPI, giúp tiết kiệm thời gian, tiền bạc trong cả thiết kế lẫn lập trình

Hình 26 Sơ đồ chân nạp ISP sử dụng Header 2x5

Mạch nạp ISP hỗ trợ hầu hết các vi điều khiển thuộc họ AVR và một số chip thuộc họ 89S Khi nạp thì vi điều khiển trong mạch nạp luôn đóng vai trò như Master, và vi điều khiển cần nạp đóng vai trò như Slave Chip Master sử dụng clock cho kết nối từ chân SCK Tại mỗi xung clock, 1 bit được truyền từ mạch nạp (Master) tới vi điều khiển đích (Slave) thông qua chân Master Out – Slave In (MOSI) Đồng thời, cũng tại mỗi xung clock, 1 bit được truyền từ Slave sang Master thông qua chân Master In – Slave Out (MISO) Chân Reset (RST) được sử dụng để tiến hành xóa bộ nhớ chip Slave (Chip Erase)

Trang 29

2.7 Vi điều khiển ATmega16

2.7.1 Giới thiệu họ vi điều khiển AVR

AVR là họ vi điều khiển được dùng khá phổ biến hiện nay, với những đặc điểm chính nổi bật như sau:

+ Phương pháp thiết kế RISC (Reduced Instruction Set Computer) với hầu hết các lệnh có chiều dài cố định, truy nhập bộ nhớ nạp-lưu trữ, và 32 thanh ghi đa năng + Kiến trúc đường ống lệnh kiểu 2 tầng (two-stage instruction pipeline) cho phép làm tăng tốc độ thực thi lệnh

+ Có chứa nhiều bộ phận ngoại vi ngay trên chip, bao gồm cổng I/O số, bộ biến đổi ADC, bộ nhớ EEPROM, bộ định thời UART, bộ định thời RTC, bộ điều chế độ rộng xung (PMW)

+ Hầu hết các lệnh, trừ lệnh nhảy và nạp/lưu trữ đều được thực thi trong 1 chu kỳ xung nhịp

+ Hoạt động với tốc độ đồng hồ đến 12MHz Xung nhịp do bộ dao động tạo ra cũng chính là xung nhịp của hệ thống, không hề phải cho qua bộ chia tần Kết hợp với khả năng thực hiện lệnh trong 1 chu kỳ xung nhịp, vi điều khiển AVR có thể đạt tới tốc độ xử lý 12MPIS

+ Bộ nhớ chương trình và dữ liệu được tích hợp ngay trên chip Trên chip AVR có tới 3 công nghệ bộ nhớ chip khác nhau: EPROM, EEPROM hay PROM, RAM tĩnh (SRAM)

+ Khả năng lập trình được Ngoài tập lệnh của AVR lên đến 133 lệnh thì AVR còn được hỗ trợ ngôn ngữ lập trình bậc cao, chẳng hạn ngôn ngữ C

+ Được đóng vỏ với từ 8 đến 64 chân để thích hợp với nhiều ứng dụng khác nhau + Tốc độ xử lý lớn hơn đến 12 lần so với các họ vi điều khiển CISC (Complex Instruction Set Computer) thông thường

+ Làm việc với dải rộng điện áp nguồn cấp, từ 2,7V đến 6V

Vi điều khiển AVR do hãng Atmel (Hoa Kỳ) sản xuất, được giới thiệu lần đầu năm 1966 Một số chip AVR thông dụng:

Atmega86RF410

Trang 30

Hình 27 Hình ảnh một số vi điều khiển AVR thông dụng

2.7.2 Kiến trúc của AVR

AVR sử dụng kiến trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và dữ liệu

Hình 28 Sơ đồ kiến trúc tổng quan của AVR

a) ALU (khối số học logic)

Làm việc trực tiếp với các thanh ghi chức năng chung Các phép toán được thực hiện chỉ trong một chu kỳ xung clock Hoạt động của ALU được chia làm 3 loại: Số học (arithmetic), Lô-gíc (logical) và các hàm Bit (bit-functions)

Trang 31

b) Thanh ghi lệnh:

Thanh ghi lệnh nối với tệp thanh ghi bằng cách lựa chọn xem thanh ghi nào sẽ được ALU

sử dụng để thực thi lệnh Lối ra của thanh ghi lệnh được giải mã bằng bộ giải mã lệnh để quyết định chọn tín hiệu điều khiển nào sẽ được kích hoạt để hoàn thành lệnh hiện tại

c) Bộ nhớ chương trình:

Bộ nhớ chương trình là loại bộ nhớ flash Dung lượng chính xác của bộ nhớ này thay đổi khác nhau giữa các bộ xử lý trong cùng họ Bộ nhớ chương trình bên cạnh các lệnh lưu trữ, cũng chứa các vector ngắt bắt đầu ở địa chỉ $0000

Bộ nhớ chương trình được chia thành 5 phần khác nhau:

• Tệp thanh ghi:

Một tệp thanh ghi với 32 thanh ghi có độ rộng 8-bit Tất cả các bộ điều khiển họ AVR đều

có tệp thanh ghi này Các thanh ghi được đặt tên từ R0 đến R31 Tệp thanh ghi được chia thành 2 phần mỗi phần có 16 thanh ghi đánh số từ R0 tới R15 và từ R16 đến R31 Tất cả các lệnh thao tác trên các thanh ghi đều có thể truy nhập trực tiếp và truy nhập trong chu trình đơn đến tất cả các thanh ghi Nhưng có ngoại lệ là các lệnh BSCI, SUBI, CPI, ORI cũng như lệnh WI, các lệnh này chỉ tác động đến các thanh ghi từ R16 đến R31

Thanh ghi R0 đến R31 có các chức năng bổ sung Thanh ghi R0 được dùng trong các lệnh nạp bộ nhớ chương trình LPM (Load Program Memory), trong khi các thanh ghi từ R26 đến R31 được sử dụng làm các thanh ghi con trỏ Các thanh ghi con trỏ này được sử dụng trong nhiều lệnh gián tiếp dùng cho thanh ghi

Hình 29 Tệp thanh ghi của AVR

Trang 32

• 64 thanh ghi vào/ra (I/O), mỗi thanh 8-bit:

Tất cả các bộ xử lý không phải đều có đúng 64 thanh ghi Một số trong đó có nhiều hơn số còn lại tùy thuộc vào số các bộ phận ngoại vi có trên chip đó Các thanh ghi vào/ra này thực chất là một phần của bộ nhớ SRAM trên chíp và có thể được truy nhập hoặc có thể như bộ nhớ SRAM với các địa chỉ giữa $20 và $5F hoặc như các thanh ghi I/O với cá địa chỉ giữa $00 và $3F Tuy nhiên hầu hết các thanh ghi này thường được trao đổi như các thanh ghi I/O chứ không phải như bộ nhớ SRAM

• Bộ nhớ SRAM bên trong:

Bộ nhớ này có trên hầu hết các bộ xử lý AVR, chỉ trừ các bộ xử lý loại cơ sở (baseline) Dung lượng bộ nhớ này thay đổi từ 128 byte đến 4 kbyte Bộ nhớ SRAM được sử dụng cho ngăn xếp cũng như để lưu trữ các biến Trong thời gian có ngắt và gọi đoạn chương trình, giá trị hiện tại của bộ đếm chương trình được lưu trong ngăn xếp Kích thước của ngăn xếp bị giới hạn bởi bộ nhớ SRAM có trên mặt chip Vị trí của ngăn xếp được chỉ thị bởi con trỏ ngăn xếp

• Bộ nhớ SRAM bên ngoài:

Đặc tính này chỉ có ở các bộ xử lý cỡ lớn trong họ vi điều khiển AVR Các bộ xử lý này có các cổng để truy nhập bộ nhớ và dữ liệu bên ngoài có thể sử dụng bất kỳ bộ hớ SRAM ngoài nào mà người dùng có thể tùy ý quyết định khi thiết kế

Hình 30 Bản đồ bộ nhớ của vi điều khiển AVR

• EEPROM

Bộ nhớ EEPROM có sẵn trên hầu hết các bộ điều khiển AVR và được truy nhập theo một bản đồ bộ nhớ tách biệt Địa chỉ bắt đầu của bộ nhớ EEPROM luôn là $0000 Các bộ xử lý khác nhau có từ 64 byte đến 4kbyte bộ nhớ EEPROM Bộ nhớ EEPROM có thể được đọc

và ghi bởi bất kỳ chương trình nào Việc đọc bộ nhớ EEPROM diễn ra nhanh hơn việc ghi vào bộ nhớ EEPROM Bộ nhớ EEPROM có thể ghi được khoảng 100000 lần

Trang 33

d) Thanh ghi trạng thái (SREG):

Thanh ghi trạng thái chứa 8-bit cờ, đóng vai trò báo hiệu trạng thái của bộ xử lý Tất cả các bit đó được xóa khi reset và có thể được đọc hoặc ghi vào bộ nhớ chương trình

+ Bit 0 – C (Carry Flag): là bit nhớ trong các phép đại số hoặc logic,

+ Bit 1 – Z (Zero Flag): cờ này được set nếu kết quả phép toán đại số hay phép Logic bằng 0

+ Bit 2 – N (Negative Flag): cờ này được set nếu kết quả phép toán đại số hay phép Logic là số âm

+ Bit 3 – V (Two’s complement Overflow Flag): hoạt động của cờ này liên quan đến kiến thức số nhị phân (phần bù)

+ Bit 4 – S (Sign Bit): Bit S là kết quả phép XOR giữa 1 cờ N và V, S=N xor V + Bit 5 – H (Half Carry Flag): cờ H là cờ nhớ trong 1 vài phép toán đại số và phép Logic, cờ này hiệu quả đối với các phép toán với số BCD

+ Bit 6 – T (Bit Copy Storage): được sử dụng trong 2 Instruction BLD (Bit LoaD) và BST (Bit STorage)

+ Bit 7 – I (Global Interrupt Enable): bit này phải được set lên 1 nếu trong chương trình có sử dụng ngắt

Thanh ghi trạng thái không được lưu trữ vào máy trong thời gian diễn ra một thao tác ngắt Lệnh trong một đoạn chương trình ngắt có thể sửa đổi bít trạng thái và vì thế chương trình của người dùng phải lưu trữ và khôi phục thanh ghi trạng thái trong thời gian có một ngắt

Trang 34

chương trình con được gọi hoặc các ngắt được cho phép phục vụ Và giá trị ngăn xếp cũng phải lớn hơn hoặc bằng $60H (0x60) vì $5FH trở lại là vùng các thanh ghi

vụ ngắt nó đang làm Trong trường hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo đó lại và lần lượt thực hiện các ngắt theo mức ưu tiên Trong trường hợp đang phục vụ ngắt mà có ngắt mới xuất hiện thì nó sẽ kiểm tra, nếu ngắt mới có ưu tiên hơn thì nó sẽ phục vụ ngắt đó, còn nếu không thì nó sẽ bỏ qua

g) Các cổng vào ra

Tất cả các bộ điều khiển AVR đều có một lượng lớn các cổng vào/ra, độ rộng nằm trong khoảng từ 3 bit cho tới 48-bit Các cổng ra của AVR có thể chịu dòng điện lên tới 20mA, rất thích hợp cho việc điều khiển trực tiếp các LED mà không cần đến mạch đệm bổ sung Các cổng được đánh số là DDRx, PORTx, PINx cho một cổng x cho trước cổng DDRx là thanh ghi hướng dữ liệu Khi ghi một mức “1” vào một bit ở DDR làm cho bit tương ứng thành bit lối ra trong PORT Sau đó, để xuất ra một giá trị “1” trên bit cổng bit tương ứng

có thể được đặt hoặc reset bằng cách sử dụng lệnh CBI hoặc SBI hoặc một lệnh OUT Tương tự để đọc dữ liệu vào một cổng ta sử dụng thanh thi PINx

h) Bộ định thời watchdog:

Bộ định thời watchdog là một bộ định thời điều khiển được và được sử dụng làm thiết bị đánh thức trong trường hợp phần mềm bị rơi vào một hoặc một số vòng lặp vô tận, hoặc trong trường hợp việc thực thi chương trình bị mắc lỗi bộ định thời watchdog có môt lối

ra, có khar năng đặt lại bộ điều khiển

Mạch định thời watchdog timer được giữ nhịp từ một bộ dao động RC riêng biệt trên chip Khoảng thời gian reset mạch watchdog được điều chỉnh thông qua điều khiển mạch chia tần số watchdog timer

Trang 35

- 16KB bộ nhớ Flash với khả năng đọc trong khi ghi, lập trình ngay được trên hệ thống

- 512 byte bộ nhớ EEPROM Cho phép 10,000 lần ghi/xóa

- 1KB bộ nhớ SRAM

- 32 thanh ghi chức năng

- 32 đường vào ra chung

- 2 bộ Timer/Couter 8-bit và 1 bộ Timer/Couter 16-bit với các chế độ làm việc: so sánh, chia tần tách biệt và bắt mẫu

- 8 kênh ADC 10 bit

- 4 kênh điều chế độ rộng xung PWM

- Atmega 16 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như: trình dịch C, macro assemblers, chương trình mô phỏng/sửa lỗi, kit thử nghiệm,…

- AVR sử dụng kiến trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và dữ liệu Các lệnh được thực hiện chỉ trong một chu kỳ xung clock Bộ nhớ chương trình được lưu trong bộ nhớ Flash

- Hỗ trợ bộ truyền nhận UART lập trình được

- Hỗ trợ giao diện truyền thông SPI chủ/tớ (master/slave)

AVR Atmega16 có 32 thanh ghi làm việc đa năng Toàn bộ 32 thanh ghi này đều được nối trực tiếp với bộ xử lý số học logic ALU Cho phép truy nhập vào 2 thanh ghi độc lập trong 1 chu kỳ xung nhịp Kiến trúc đạt được có tốc độ xử lý nhanh gấp 10 lần vi điều khiển dạng CISC thông thường

Các chân tín hiệu của bộ vi xử lý dùng để đưa tín hiệu vào hay xuất tín hiệu ra Nó bao gồm 3 BUS chính: Bus địa chỉ, Bus dữ liệu, Bus điều khiển nhưng thông thường được phân thành các nhóm cụ thể sau:

- Nhóm các chân cấp nguồn nuôi cho bộ vi xử lý

- Nhóm chân dữ liệu, địa chỉ (trạng thái): các tín hiệu này thường là 3 trạng thái, trong đó địa chỉ là tín hiệu ra, còn dữ liện thì cả 2 chiều Một số bộ vi xử lý dựng một số chân để truyền cả tín hiệu địa chỉ và dữ kiện AVR Atmega16 có 28 đường tín hiệu 3 trạng thái, được chia làm 4 port:

+ Port A (PA7 ÷ PA0): gồm các chân từ 33 đến 40

Trang 36

source Khi các chân tín hiệu của các port này được sử dụng làm đầu vào và mức tích cực đặt vào chân là thấp thì chúng sẽ cấp dòng khi điện trở treo bên trong hoạt động Khi có một trạng thái reset được kích hoạt, các chân tín hiệu này sẽ là 3 trạng thái ngay

cả khi bộ phát xung clock không chạy

Đặc biệt, port A có thể được dùng làm các đầu vào tương tự cho bộ biến đổi ADC, hoặc vẫn làm một cổng vào/ra 2 chiều 8-bit khi bộ biến đổi ADC không được sử dụng

- Chân reset (chân 9): reset đầu vào Một mức tích cực thấp đặt lên chân reset dài hơn chiều dài xung nhỏ nhất sẽ kích hoạt một trạng thái reset, ngay cả khi bộ phát xung clock không chạy Những xung ngắn hơn không đảm bảo cho việc kích hoạt một trạng thái reset

- Chân XTAL1 (chân 13): là đầu vào của bộ khuếch đại phát xung ngược và là đầu vào của mạch điều khiển bộ phát xung bên trong

- Chân XTAL2 (chân 12): là đầu ra của bộ khuếch đại phát xung ngược

- Chân AREF (chân 32): là chân cấp điện áp tham chiếu tương tự (từ bên ngoài) cho bộ biến đổi ADC

Hình 31 Cấu hình chân của ATmega16

Trang 37

Hình 32 Sơ đồ khối của Atmega16

Trang 38

Chương 3 Thiết kế mạch phần cứng

3.1 Các cổng vào/ra của mạch phần cứng

Dựa trên sơ đồ các khối chức năng đã được đề xuất ở mục 1.3 và các tìm hiểu về thiết bị ở Chương 2, trước khi bắt tay vào thiết kế phần cứng, ta cần xác định được các cổng vào/ra của mạch và có sự lựa chọn linh kiện thực tế phù hợp

Bảng 4 Các cổng vào/ra mạch phần cứng và chức năng

1 Connector 4P Kết nối với các nguồn DC +5V, +12V cấp cho mạch

2 Connector 6P Kết nối với các động cơ thực nghiệm

3 IDE Connector 10P (2x5) Giao tiếp SPI với máy tính thông qua mạch nạp ISP

Có thể thấy có 2 nguồn +5V ta có thể lấy: từ mạch adapter và từ mạch nạp ISP (máy tính),

do đó ta sử dụng thêm 1 công tắc để chuyển đổi linh hoạt giữa 2 nguồn này Bên cạnh đó, các đèn LED chỉ thị được sử dụng để báo có điện vào mạch và một số tụ được sử dụng để lọc nguồn

Hình 33 Các cổng vào/ra mạch phần cứng

3.2 Mạch driver L298

Về cơ bản, mạch driver L298 đã được trình bày khá chi tiết trong datasheet của thiết bị cũng như nội dung đã được đề cập trong mục 2.3

Trang 39

Hình 34 Mach driver L298

Trong bài toán điều khiển động cơ, điện áp phần ứng mong muốn sẽ được tạo ra

dựa trên cơ sở của 3 đường điều khiển đó là PWM dùng để điều khiển độ lớn điện áp, DIR dùng điều hướng (dấu của điện áp) và En cho phép mạch hoạt động Chip L298 đã có sẵn

đường En nhưng 2 đường điều khiển In1 và In2 không thực sự đồng nhất với các đường PWM và DIR theo chức năng như chúng ta mong muốn Trong một số thiết kế mạch driver cho động cơ, người ta sẽ sử dụng thêm một mạch logic phụ với 2 ngõ vào là PWM và DIR trong khi 2 ngõ ra là 2 đường điều khiển In1 và In2, cách làm này đơn giản về mặt tư duy nhưng đòi hỏi thêm phần cứng hỗ trợ Trong đồ án này, nhóm sẽ sử dụng cách kết nối phần cứng trực tiếp các đường En, In1, In2 của L298 với 3 chân OCR của VĐK, mối liên hệ giữa In1, In2 với PWM, DIR sẽ được giải quyết bằng phần mềm (mục 4.3.1)

3.3 Đo tốc độ động cơ

Để xác định được giá trị tốc độ (hoặc vị trí) thực tế cũng như chiều quay hiện tại của động cơ, ta cần xử lí các tín hiệu dạng xung từ 2 kênh Encoder Tùy theo đại lượng điều khiển (vị trí hay vận tốc) và đặc điểm encoder (độ phân giải) người ta thường sử dụng các giải pháp sau để đọc encoder bằng AVR

- Dùng chức năng counter: Đặt các kênh của encoder vào các chân Counter (T0, T1…)

của các bộ Timer để đếm số lượng xung trên các kênh này Đây là phương pháp sử dụng ít tài nguyên nhất (ít tốn thời gian CPU đọc encoder) Nhược điểm lớn nhất của phương pháp này là không xác định được chiều quay, mặc khác phương pháp này không ổn định khi vận tốc động cơ có sự thay đổi lớn

- Dùng input capture: Một số bộ timer-counter trên AVR có chức năng Input capture Cứ

mỗi lần có một tín hiệu (cạnh lên hoăc cạnh xuống) trên chân ICP (Input Capture Pin), giá trị thời gian của timer được tự động gán cho thanh ghi ICR (Input capture Register) So sánh giá trị thanh ghi ICR trong 2 lần liên tiếp sẽ đọc được chu kỳ của tín hiệu kích chân ICP Từ đó suy ra tần số tín hiệu Nếu một kênh của encoder được nối với chân ICP thì ta

Trang 40

có thể đo được tần số tín hiệu của kênh này, từ đó tính được vận tốc của động cơ Chúng ta

có thể dùng ngắt Input Capture và khi ngắt xảy ra, có thể đếm số xung tăng thêm để biết được góc quay motor, cũng có thể xác định được chiều quay thông qua mức kênh B trong trình phục vụ ngắt Input Capture Đây là một phương pháp hay, nhưng có nhược điểm là khá phức tạp khi sử dụng chức năng input capture của AVR Mặc khác trên các chip AVR

từ ATmega32 trở xuống, Input Capture chỉ có ở Timer 1, trong khi Timer này thường được dùng để tạo PWM điều khiển động cơ

- Sử dụng ngắt ngoài: Kênh A của encoder được nối với 1 ngắt ngoài (nên chọn INT2 là

ngắt có mức ưu tiên thấp nhất) và kênh B được nối với một chân nào đó bất kỳ (không phải chân ngắt) Cứ mỗi lần ngắt ngoài xảy ra, tức có 1 xung xuất hiện ở kênh A thì trình phục

vụ ngắt ngoài tự động được gọi Trong trình phục vụ ngắt này, ta kiểm tra mức logic của kênh B, tùy theo kênh B đang ở mức thấp hay cao mà biến đếm xung sẽ được tăng thêm hay giảm đi Phương pháp này đơn giản, hiệu quả và được sử dụng khá phổ biến trong bài toán đọc encoder đo tốc độ Tuy nhiên, cần phải lưu ý đến khoảng thời gian giữa 2 lần ngắt này xảy ra Trong đồ án này, động cơ được chọn có độ phân giải của encoder là 888 xung trên mỗi vòng quay, có vận tốc không tải tối đa vào khoảng 3000 vòng/phút = 50 vòng/s nên tần số xung lớn nhất từ encoder là 888 x 50 = 44.4 KHz, tức là cứ khoảng 20us lại xảy

ra một ngắt Tần số ngắt như thế là tương đối cao so với tần số 8MHz của CPU

Với mong muốn kiểm nghiệm cả 3 phương pháp đo tốc độ trên, về mặt phần cứng, nhóm đã nối Kênh A của encoder được nối với chân 3 (dùng ngắt INT2) và chân 20 (dùng ngắt ICP1) của vi điều khiển Atmega16, Kênh B nối với chân 1 (dùng Counter 0), không

U =RI = , do đó để thu được tín hiệu điện áp tương tự có trị

số Volt gần với trị số Ampere của dòng điện chảy qua động cơ, ta sử dụng 2 tầng khuếch đại không đảo, mỗi tầng 11 lần, để nâng tín hiệu thu được từ shunt lên 121 lần

Do ảnh hưởng của việc điều chế độ rộng xung với tần số cao, tín hiệu thu được từ shunt có nguy cơ chứa các thành phần cao tần ảnh hưởng đến tính chính xác của phép đo và gây ra hiện tượng trùng phổ khi trích mẫu tín hiệu Vì vậy, ta lắp thêm một mạch lọc thông thấp

RC ở đầu vào mạch đo

Ngày đăng: 06/06/2016, 21:18

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w