Tải bản đầy đủ (.doc) (92 trang)

Báo cáo tốt nghiệp đề tài thực hiện việc vẽ lại bức ảnh chụp được từ webcam thông qua giao diện matlab và vi điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.88 MB, 92 trang )

Chương I. TỔNG QUAN VỀ ĐỀ TÀI
1.1 Tầm quan trọng của đề tài.
Động cơ bước và các ứng dụng liên quan đến động cơ bước ngày nay trở nên
quá quen thuộc đối với các sinh viên khối kỹ thuật, nhất là đối với những người đam
mê chế tạo máy móc, Robot…. Nguyên nhân là việc điều khiển chúng khá đơn giản tuy
nhiên mang lại một sự chính xác cao, vì vậy nên việc lựa chọn động cơ bước cho các
ứng dụng trở nên phổ biến. Nhất là các ứng dụng có liên quan tới điều khiển vị trí. Đối
với các máy móc phức tạp đòi hỏi sự chính xác của cả cơ khí và điện tử, mà cụ thể hơn
là các ứng dụng có liên quan đến động cơ, thì việc lựa chọn động cơ bước là một nhu
cầu thiết yếu. Bên cạnh đó thì còn có động cơ Servo DC, tuy nhiên khuyết điểm lớn
nhất của loại động cơ này là về khó điều khiển chính xác về mặt vị trí nhưng về mặt tốc
độ và công suất thì hơn hẳn động cơ bước.
Nhằm mục đích tìm hiểu và cũng giúp các bạn hiểu nhiều hơn về động cơ bước
và cách điều khiển chúng thông qua việc nhúng chúng vào một ứng dụng cụ thể có liên
quan tới vị trí. Chẳng hạn như sử dụng chúng trong máy in, máy photocopy, máy
CNC… và một ứng dụng thực tế nữa là “vẽ ảnh”, vì vậy chúng tôi đã lựu chọn đề tài
thực hiện việc vẽ lại bức ảnh chụp được từ Webcam thông qua giao diện matlab và vi
điều khiển. Thực hiện ứng dụng nhúng này, chúng ta có thể biết nhiều hơn về Matlab
và xử lý ảnh, vi xử lý, truyền thông giữa vi xử lý và Matlab, về động cơ bước, xây dựng
mô hình cơ khí…Tóm lại ứng dụng điều khiển động cơ bước thông qua một giao diện
điều khiển từ máy tính vào các ứng dụng đòi hỏi độ chính xác cao của động cơ là một
đề tài cần phải được phát triển trong tương lai.
1.2 Cơ sở lý luận.
1.2.1 Đối tượng nghiên cứu.
- Mạch điều khiển động cớ bước.
- Truyền dữ liệu thông qua RS232 giữa vi xử lý và Matlab.
- Các thuật toán xử lý ảnh trong matlab.
1.2.2 Dàn ý nghiên cứu.
- Lý thuyết về ảnh và xử lý ảnh trong Matlab.
- Lý thuyết về động cơ bước.
- Sơ lược về vi xử lý (P89V51Rx2).


- Tóm tắt sơ lựơc về nguyên lý hoạt động của từng khối (nêu ra các khối, chức
năng của từng khối ).
- Cơ sở tính toán thiết kế.
- Sơ đồ khối, nguyên lý hoạt động của các mạch.
- Tính toán, thiết kế, thi công.
1.3 Phương pháp, phương tiện nghiên cứu
1.3.1 Phương pháp.
Tìm hiểu về động cơ bước và cách điều khiển chúng, từ đó thiết kế sơ đồ khối .Sau
đó thiết kế từng khối thành sơ đồ mạch điện, cuối cùng ghép chúng lại thành sơ đồ
mạch điện cụ thể. Khâu cuối cùng vẽ mạch in và thi công mạch.
Đồng thời tìm hiểu xử lý ảnh trong matlab và phương pháp truyền dữ liệu qua lại
giữa matlab và vi xử lý để có thể lập trình điều khiển.
Ngoài ra còn phải lập trình vi xử lý để có các tín hiệu điều khiển các bộ phận chấp
hành một cách chính xác và ổn định.
1.3.2 Phương tiện.
Thông qua các tài liệu nói về động cơ bước, các sách viết về truyền động điện, tự
động khống chế truyền động điện, điện tử công suất, kỹ thuật xung, kỹ thuật số, lập
trình vi điều khiển 8051, lập trình matlab và quan trọng nhất là tài liệu về xử lý ảnh
trong matlab.
Chương II. CƠ SỞ LÝ THUYẾT
2.1 Ảnh và xử lý ảnh trong Matlab
2.1.1 Ảnh và thu nhận ảnh:
Thông qua các thiết bị ngoại vi thu nhận ảnh như Camera, Webcam…mà
hình ảnh bên ngoài được số hoá, lưu trữ và hiển thị trên màn hình. Một bức ảnh
thu vào là tập hợp của 3 ma trận màu cơ bản (RGB) R:red; G:Green; B:Blue. Mức
xám của mỗi màu tại một toạ độ của mỗi ma trận là khác nhau tạo nên những màu
khác nhau.
Giá trị của mức xám của từng màu có thể thay đổi từ 0 đến 255 (ảnh 8 bit).
Vì vậy mà chúng ta có thể biểu diễn tất cả các màu chỉ thông qua 3 ma trận này.
Ảnh đen trắng là một ma trận ảnh 2 chiều, giá trị tại mỗi tọa độ chỉ có 2 mức 0 và

1 với 0:màu đen ; 1: màu trắng. Nếu như giá trị mức xám 0 -> 255 thì đây không
còn được gọi là ảnh trắng đen nữa mà được gọi là ảnh xám. Mỗi toạ độ của ma
trận này được gọi là 1 điểm ảnh (pixel).
Kích thước bức ảnh thu được được gọi là độ phân giải, độ phân giải này
càng lớn nghĩa là kích thước bức ảnh càng lớn.
Ví dụ: Một bức ảnh với độ phân giải 240x320 nghĩa là bức ảnh này có kích thước 240
điểm ảnh theo chiều dọc và 320 điểm ảnh theo chiều ngang.
Chất lượng bức ảnh thu được tùy thuộc nhiều vào các thiết bị thu ảnh, giải thích hiện
tượng ảnh bị mờ, ảnh có độ phân giải thấp, hay là các vết nhiễu trong bức ảnh….nguyên
nhân là do Camera không đảm bảo chất lượng, ống kính bị bụi. Điều này làm cho việc xử
lý bức ảnh thu được gặp khó khăn, kết quả sau khi xử lý thường không chính xác hoặc có
sai lệch lớn. Vì vậy lựa chọn sử dụng một thiết bị thu nhận ảnh có chất lượng ổn định là
một trong những bước quan trọng trong việc xử lý ảnh.
2.1.2 Xử lý ảnh thu được qua Matlab:
2.1.2.1 MatLab.
Ngôn ngữ lập trình Matlab ngày càng trở nên phổ biến đối với tất cả dân kỹ
thuật. Đây dường như là một ngôn ngữ hỗ trợ hầu hết các công cụ phục vụ cho
nhiều ngành khác nhau, từ kinh tế cho đến kỹ thuật. Đặc biệt Matlab mạnh về
công cụ xử lý ảnh hơn bất kỳ ngôn ngữ lập trình nào khác, lệnh Matlab được hình
thành chủ yếu dựa vào tổng hợp các tập lệnh của các ngôn ngữ khác như C,C+
+,VB Cấu trúc các hàm và tập lệnh khá đơn giản, dể hiểu, đặc biệt Matlab hổ trợ
mạnh công cụ Help, các ví dụ minh họa trực quan giúp người dùng có thể dể dàng
đọc và thực hiện.
2.1.2.2 Xử lý ảnh bằng matlab.
Ảnh sau khi thu được là một bức ảnh ở dạng thô cần phải được xử lý thông
qua một vài bộ lọc, nghĩa là dựa vào các thuật toán để biến đổi bức ảnh này sang
bức ảnh mong muốn khác. Bước thực hiện này là một trong những bước quan
trọng trong kỹ thuật xử lý ảnh, nó quyết định đến mức độ thành công của dự án.
Xử lý bức ảnh thu được phải thông qua các công việc sau:
Một vài hàm cơ bản trong công cụ xử lý ảnh của Matlab để thực hiện các

công việc trên:
Số thứ tự Tên hàm Chức năng
1 videoinput Kết nối với Camera
2 preview Xem hình ảnh đang thu được từ Camera
3 getsnapshot Chụp hình ảnh từ Camera
8 imshow Hiển thị bức ảnh trên màn hình
4 imrezise Thay đổi độ phân giải của hình ảnh
5 im2bw Chuyển ảnh mức xám sang ảnh đen trắng
6 imcomplement Hoán đổi bức ảnh trắng đen
7 bwmorph Làm mảnh biên của bức ảnh
Lấy dữ liệu
bức ảnh thu
được từ
Camera
Các thuật
toán để
nâng cao
chất lượng
ảnh
Đưa ra
bức ảnh
sau khi
xử lý
Kết nối
Camera
Như vậy ta đã có được một bức ảnh như mong muốn, công việc còn lại là
xử lý tọa độ của bức ảnh để tạo ra các dữ liệu điều khiển cho thiết bị ngoại vi, các
dữ liệu này sẽ được gởi qua thiết bị thông qua chuẩn giao tiếp RS232.
Tóm lại nhóm đã chọn Matlab để thực hiện đồ án có liên quan tới xử lý
ảnh. Việc thu nhận và xử lý ảnh được diễn tả qua sơ đồ khối sau:

Hình 2.1.2.2 Sơ đồ thực hiện xử lý ảnh thu được
2.2 Matlab và truyền thông nối tiếp RS232
2.2.1GIỚI THIỆU PHƯƠNG THỨC TRUYỀN DỮ LIỆU NỐI TIẾP.
Trong truyền dữ liệu nối tiếp, nơi gửi sẽ gửi từng bit dữ liệu nối tiếp nhau trên
một đường truyền. Một liên kết nối tiếp chỉ có hai thiết bị thì phải có đường dẫn
dành cho mỗi chiều truyền hoặc là nó chỉ có một đường dẫn được chia sẻ bởi cả
hai thiết bị với thoả thuận của hai thiết bị này. Khi mà có nhiều hơn hai thiết bị, tất
cả các thiết bị này thường dùng chung một đường dẫn, thì giao thức mạng quyết
định xem thiết bị nào có quyền truyền nhận dữ liệu.
Việc truyền nhận dữ liệu được điều khiển bởi tín hiệu xung clock. Nơi truyền
và nơi nhận dùng xung clock để quyết định khi nào gửi và khi nào nhận dữ liệu.
Có hai dạng truyền dữ liệu: truyền đồng bộ và truyền bất đồng bộ, và mỗi phương
thức truyền sử dụng các xung clock khác nhau.
2.2.1.1 Truyền đồng bộ nối tiếp.
Trong truyền đồng bộ nối tiếp, sự đồng bộ được thực hiện bởi một xung clock
được phát ra bởi một thiết bị hoặc từ một nguồn xung ngoài. Xung clock có thể có
một tần số cố định hoặc có thể chốt tại những khoảng thời gian không đều. Các bit
truyền đi được đồng bộ với xung clock. Nói cách khác, mỗi bit được truyền đi là
Thu nhận ảnh tĩnh thông qua
Webcam
Tiền xử lý ảnh bức ảnh thu được
(lộc nhiễu, làm trơn ảnh…)
Xử lý toạ độ bức ảnh để đưa ra các dữ
liệu điều khiển cho thiết bị chấp hành
(động cơ của mô hình)
dựa vào sự chuyển đổi của xung( như tăng hoặc giảm của sường xung). Nơi nhận
dùng sự chuyển đổi xung để quyết định khi nào đọc các bit truyền tới.
Trong quá trình truyền chỉ truyền data, không cần thêm tín hiệu đồng bộ vào
chuỗi data nên tốc độ truyền nhanh. Nhưng phải thêm kênh thứ hai để truyền tín
hiệu clock song song với kênh truyền data. Tốc độ 2400, 4800, 9600bit/s.

Hình 2.2.1.1- Sơ đồ truyền đồng bộ nối tiếp.
2.2.1.2 Truyền bất đồng bộ nối tiếp.
Trong truyền bất đồng bộ nối, dữ liệu không bao gồm đường xung clock, bởi
vì mỗi điểm đầu cuối của liên kết đã có xung clock cho riêng từng thiết bị. Mỗi
thiết bị truyền nhận sẽ cần phải có cùng một tần số xung clock hoặc chỉ khác nhau
một vài % nhỏ. Mỗi byte dữ liệu truyền đi bao gồm một bit Start để đồng bộ xung
clock và một hoặc hai bit Stop là tín hiệu báo kết thúc việc truyền dữ liệu. (Trong
trường hợp nếu nơi nhận đòi hỏi phải có một thời gian kiểm tra dữ liệu nhận đuợc,
nơi truyền sẽ kéo dài độ rộng của bít Stop ra nhiều bit, có thể là 1,5 hoặc 2).
Việc truyền dữ liệu bất đồng bộ cho phép truyền ngẫu nhiên không cần truyền
liên tục. Phải thêm vào trước mỗi kí tự một bit START và phía sau 1 hoặc 2 bit
STOP nên tốc độ truyền chậm nhưng đơn giản và kinh tế hơn. Tốc độ 75,110, 300,
1200bit/s
Hình 2.2.1.2 Sơ đồ truyền bất đồng bộ nối tiếp.
2.2.2. GIAO TIẾP VỚI MÁY TÍNH BẰNG CỔNG NỐI TIẾP.
2.2.2.1 Giới thiệu cổng COM.
Cổng nối tiếp có đặc tính hoạt động song công ( thu và phát đồng thời), và bộ
đệm nhận ( thu ) cho phép một kí tự được nhận và giữ trong bộ đệm trong khi đó
kí tự thứ hai được thu. Nếu CPU đọc kí tự thứ nhất trước khi kí tự thứ hai được
nhận đầy đủ thì dữ liệu vẫn không bị mất.
Việc truyền dữ liệu qua cổng COM được tiến hành theo cách nối tiếp, nghĩa là
các bit dữ liệu được truyền đi nối tiếp nhau trên một đường dẫn. Phương thức
truyền dữ liệu này có khả năng dùng cho những ứng dụng có yêu cầu truyền dữ
liệu trên khoảng cách lớn bởi vì các khả năng gây nhiễu là nhỏ hơn nhiều so với
việc truyền dữ liệu qua cổng song song.
Cổng COM không phải là một hệ thống bus cho phép dễ dàng tạo ra liên kết
dưới hình thức điểm với điểm giữa hai thiết bị cần trao đổi thông tin với nhau, một
thành viên thứ ba không thể tham gia vào việc trao đổi thông tin này.
Trên thực tế có hai loại cổng COM ( phân loại theo số chân) loại 9 chân(DB9)
và loại 25 chân(DB25), cả hai loại này đều có chung một đặc điểm .

 Các chân và đường dẫn được mô tả như sau:
Hình 2.2.2.1.a – Sơ đồ chân và chức năng từng chan của cổng COM
Việc truyền dữ liệu xảy ra trên hai đường dẫn. Qua chân cắm TXD từ máy tính
gửi dữ liệu đến Kit Vi điều khiển(VĐK) ( Các thiết bị nhận), trong khi đó các dữ
liệu mà máy tính nhận được lại được gửi trên chân RXD các tín hiệu khác đóng
vai trò như là tín hiệu hỗ trợ khi trao đổi thông tin vì thế không phải trong mọi
trường hợp ta đều sử dụng hết các chân của nó.
Trong thực tế người ta thường sử dụng cổng COM1 (DB9) cho việc truyền dữ
liệu nối tiếp, các cổng COM khác được dùng vào những ứng dụng khác nhau.
 Quá trình truyền nhận dữ liệu được thực hiện như sau:
 Đầu dữ liệu sẵn sàng DTR: khi thiết bị đầu cuối (máy tính
và VĐK) được bật thì sau khi tự kiểm tra nó gửi một tín hiệu DTR báo rằng nó
sẵn sàng cho truyền thông. Nếu có trục trặc với cổng COM thì tín hiệu này không
được kích hoạt. Đây là tín hiệu tích cực mức thấp và có thể được dùng để báo cho
Kit VĐK (modem) biết rằng máy tính đang hoạt động và đang sẵn sàng truyền
thông.
 Đầu dữ liệu sẵn sàng DSR: khi DCE( data communication equipment) được
bật lên và đã chạy xong chương trình tự kiểm tra thì nó đòi hỏi DSR để báo rằng
đã sẵn sàng cho truyền thông. Do vậy, nó là đầu ra của DCE và là đầu vào của
DTE. Đây là tín hiệu tích cực mức thấp.
 Yêu cầu gửi RTS: DTE sẽ gửi tín hiệu RTS đến DCE khi nó có một byte dữ
liệu cần gửi. RTS là đầu ra tích cực mức thấp.
 Tín hiệu xóa để gửi CTS: DCE sẽ gửi tín hiệu này đến DTE để báo rằng nó
có thể nhận dữ liệu. Tín hiệu đầu vào này tới DTE dùng để khởi động việc truyền
dữ liệu.
 Phát hiện tín hiệu mang dữ liệu DCD: Modem yêu cầu tín hiệu DCD báo
cho DTE biết rằng đã phát hiện tín hiệu mang dữ liệu hợp lệ và rằng kết nối giữa
nó có thể nhận dữ liệu.
 Tốc độ truyền: còn gọi là tốc độ Bau-rate, được xác định như tổng
số lần thay đổi tín hiệu trong một giây . Nếu tín hiệu truyền đi là nhị phân thì tốc

độ truyền tương ứng với số Bit truyền trong một giây. Các kênh thông tin được
đánh giá bằng tốc độ truyền. Nếu tín hiệu truyền đi ngoài khả năng của kênh
truyền sẽ xảy ra lỗi, bên thu sẽ nhận không đúng thông tin mà bên truyền gửi.
 Thiết bị được sử dụng trong truyền thông nối
tiếp:UART(Universal Asynchronous Receiver Transmitter )
UART là một phần không thể thiếu trong việc điều khiển truyền thông nối tiếp.
Nó có thể chuyển đổi giữa dữ liệu nối tiếp và song song.
- Một chiều, UART chuyển đổi dữ liệu song song bus hệ thống ra dữ liệu
nối tiếp để truyền đi.
- Một chiều khác, UART chuyển đổi dữ liệu nhận được dạng dữ liệu nối
tiếp thành dạng dữ liệu song song cho CPU có thể đọc vào bus hệ thống
Hình 2.2.2.1.b – Sơ đồ khối của UART
Nhìn vào sơ đồ khối ta có thể thấy UART gồm có 4 bộ chính :
• Bộ Interrupt : điều khiển việc interrupt, lưu trữ status và khi nào có
interrupt sẽ đưa dữ liệu ra chân UnINTR
• Bộ điều khiển Clock UnBRG điều khiển việc sinh ra CLK từ hai dữ liệu
vào là UnDLL và UnDLM
• Bộ truyền dữ liệu : UnTX có hai thanh ghi : thanh ghi chứa dữ liệu và
thanh ghi truyền serial ra ngoài thông qua chân TXD
• Bộ nhận dữ liệu : UnRX gồm có hai thanh ghi là thanh ghi chứa dữ liệu
và thanh ghi truyền serial. Dữ liệu nhận vào ở chân RXD sẽ đẩy vào thanh ghi
truyền serial rồi đưa vào thanh ghi nhận dữ liệu.
Trong PC, hệ điều hành và ngôn ngữ lập trình hỗ trợ cho lập trình liên kết nối
tiếp mà không cần phải hiểu rõ chi tiết cấu trúc UART. Để mở liên kết, ứng dụng
lựa chọn một tần số dữ liệu hoặc là thiết lập khác hoặc cho phép truyền thông tại
các cổng. Để gửi 1 byte, ứng dụng ghi byte này vào bộ đệm truyền của cổng được
lựa chọn, và UART gửi dữ liệu này, từng bit một, trong định dạng yêu cầu, thêm
bit Start, bit Stop, bit chẵn lẻ khi cần. Trong một cách đơn giản, byte nhận được tự
động được lưu trữ trong bộ đệm. UART có thể dùng nhanh một ngắt để báo cho
CPU và các ứng dụng biết dữ liệu đang nhận được và các sự kiện khác .

 Giới thiệu INT 14h của Bios
Các nhà thiết kế máy tính đã dành riêng Int 14h của Bios để phục vụ cho cổng
nối tiếp. Ngắt này phục vụ khá đầy đủ các yêu cầu về xuất, nhập và kiểm tra trạng
thái đường truyền. Việc sử dụng các ngắt này làm cho chương trình trở nên ngắn
gọn, dễ dàng.
Các hàm của INT 14H:
Hàm Chức năng
00h Khởi tạo khối ghép nối tiếp
01h Gửi một kí tự
02h Nhận một kí tự
03h Đọc trạng thái của khối ghép nối tiếp
04h Khởi tạo cổng nối tiếp mở rộng
05h Điều khiển truyền thong của cổng nối tiếp mở rộng
Bios có thể điều hành tối đa bốn khối ghép nối tiếp có tên từ COM1 đến
COM4 với các địa chỉ:
Khối ghép nối Địa chỉ cơ sở Ngắt cứng IRQ
COM1 3F8h IRQ4
COM2 2F8h IRQ3
COM3 3E8h IRQ4
COM4 2E8h IRQ3
2.2.2.1 Chuẩn giao tiếp RS232.
2.2.2.1.a Lịch sử RS232.
Để thuận lợi cho việc giao tiếp giữa các thiết bị truyền thông với máy tính qua
cổng nối tiếp, vào năm 1960 Hiệp hội công nghiệp điện tử (electronics industries
asociation) đã đưa ra chuẩn giao tiếp RS232 (RS = Recommended Standard); đây
là chuẩn giao tiếp được sử dụng rỗng rãi trong truyền thông nối tiếp.
Có hai phiên bản RS232 được lưu hành trong thời gian tương đối dài là
RS232B và RS232C. Cho đến nay, RS232B là phiên bản đã cũ, nay đã ít được sử
dụng. Còn RS232C hiện vẫn còn tồn tại và thường được gọi là chuẩn RS232.
2.2.2.1.b Đặc điểm chuẩn RS232.

Chuẩn RS232 quy định mức logic 1 ứng với điện áp từ -3V đến -25V (mark),
mức logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng cung cấp dòng
từ 10 mA đến 20 mA.
Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch.
Chuẩn RS232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu
cáp truyền đủ ngắn có thể lên đến 115.200 bps.
Chuẩn RS 232 sử dụng phương thức truyền thông không đối xứng, tức là sử
dụng tín hiệu điện áp chênh lệch giữa một dây dẫn và đất. Các cổng của RS 232 có
ngưỡng điện áp qui ước là -15V tới -3V, và 3V tới 15V (hoặc -5V, +5V, sự khác
biệt giữa hai giá trị 3V, và 5V này được gọi là noise magin ( biên độ dao động của
nhiễu).
• Tín hiệu có áp lớn +3V được coi là mức logic 0 hoặc có giá trị cao (H).
• Tín hiệu có áp nhỏ hơn –3V được coi là mức logic 1 hoặc giá trị thấp (L).
• Điện áp từ -3V tới +3V là mức điện áp không có ý nghĩa.
Chính vì từ – 3V tới 3V là phạm vi 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 kBd (chiều dài cho phép 30 – 50 m).
2.2.2.1.c Vi mạch Max232.
Chuẩn RS232 xuất hiện trước khi chuẩn TTL ra đời, do đó các mức điện áp
của nó không tương thích với họ TTL ( họ TTL ra đời năm 1968 ).
Vì chuẩn RS232 không tương thích với họ TTL, nên để kết nối bất kì thiết bị
có giao tiếp RS232 với hệ vi xử lý / vi điều khiển thì ta cần phải sử dụng các bộ
phận chuyển đổi điện áp để chuyển các mức logic TTL sang RS232 và ngược lạ.
Các mạch có tính năng như vậy gọi là mạch lái đường dây, Các IC có tính năng
này MAX232, MC1488, MC1489, DS275.
Vi mạch Max232 của hãng MAXIM là vi mạch chuyên dùng trong giao tiếp
nối tiếp với máy tính. Nó có nhiệm vụ chuyển đối qua lại giữa các mức tính hiệu

TLT và RS232.
 Chuẩn RS232.
Mức thấp (logic 0) có trị số từ +3v đến +25v
Mức cao (logic 1) có trị số từ -3v đến -25v
Miền giữa -3v đến +3 v không không có ý nghĩa
Hình 2.2.2.1.a- Sơ đồ mức logic chuẩn RS232.
 Chuẩn TLT.
Ngõ vào:
Mức thấp (logic 0) là 0v đến +0.8v
Mức cao (logic 1) là +2v đến +5v
Miền giữa 0.8v đến +2 v không hợp lệ
Ngõ ra:
Mức thấp (logic 0) là 0v đến 2.5v
Mức cao (logic 1) là +2.7v đến +5v
Hình 2.2.2.1.b- Dạng dóng gói của MAX232
2.2.3GIAO TIẾP VI ĐIỀU KHIỂN VỚI MÁY TÍNH BẰNG MATLAB
2.2.3.1 Matlab trong truyền thông nối tiếp.
Cũng như các phần mềm của Microsoft (Visuall basic , C ,C++)… thì Matlab
cũng là một trong những phần mềm hỗ trợ đầy đủ các tính năng truyền thông qua
cổng nối tiếp. Với Matlab ta có thể thiết kế giao diện điều khiển dễ dàng, thiết lập
các thuộc tính cho cổng nối tiếp tương đối đơn giản.
2.2.3.2 Các hàm cơ bản của Matlab trong truyền thông nối tiếp.
Sau đây là một số hàm cơ bản của Matlab trong truyền thông nối tiếp.
 obj = serial('port') tạo một cổng nối tiếp mới, nếu cổng không được mở
hay nó đang được sử dụng thì chúng ta không thể kết nối nó tới thiết bị truyền
thông.
Ví dụ:
>> s1 = serial ('COM1') //tạo cổng COM1
Serial Port Object : Serial-COM1
Communication Settings

Port: COM1
BaudRate: 9600
Terminator: 'LF'
Communication State
Status: closed
RecordStatus: off
 obj = serial('port','PropertyName',PropertyValue, ) tạo ra một cổng
nối tiếp mới với tên cổng, thuộc tính và giá trị thuộc tính được chỉ rõ. Nếu tên
hay một trong những thuộc tính của nó bị sai thì cổng nối tiếp không được mở.
Ví dụ:
s2 = serial ('COM2', 'Baudrate', 9600, 'DataBits',8, 'StopBits',1)
 fopen(serial) mở cổng nối tiếp để kết nối tới thiết bị truyền thông.
Ví dụ:
s1= serial('COM1');
fopen(s1)
 fclose(serial) đóng cổng nối tiếp để kết nối tới thiết bị truyền thông.
Ví dụ:
s1= serial('COM1');
fopen(s1);
fclose(s1);
Truyền dữ liệu ( kết nối các đối tượng ) qua cổng nối tiếp.
Sau khi đã mở cổng nối tiếp, ta tiếp hành kết nối máy tính với thiết bị truyền
thông, thực hiện quá trình trao đổi thông tin.
 fwrite (serial) truyền các giá trị binary tới các thiết bị truyền thông.
Cú pháp:
fwrite(obj,A)
fwrite(obj,A,'precision')
fwrite(obj,A,'mode')
fwrite(obj,A,'precision','mode')
Obj Tên đối tượng (tên cổng)

A Dữ liệu dạng Decimal tự động đổi sang Binary khi truyền
Precision Số Bit được gởi thông
Mode Mở rộng chức năng gởi đồng bộ hay bất đồng bộ
Ví dụ :
fwrite(s1,254) // truyền giá trị nhị phân của số 254 qua cổng s1.
 fprintf (serial) truyền các giá trị dạng ASCII tới các thiết bị truyền
thông
Đọc dữ liệu ( truy vấn các thiết bị ) qua cổng nối tiếp.
Các hàm hay dùng trong giao tiếp nối tiếp:
+fread(serial): đọc dữ liệu dạng Binary, hiển thị dạng số Decimal từ port nối tiếp
Ví dụ:
Data=fread(s1);
Dữ liệu đọc vào và lưu vào biến Data giá trị từ port nối tiếp.
+fscanf(serial): đọc dữ liệu dạng ASCII từ port nối tiếp.
+ BytesToOutput: số byte hiện thời trong bộ đệm phát dữ liệu của máy tính.
+ BytesAvailable : số byte hiện có trong bộ đệm nhận dữ liệu.
+OutputB ufferSize : Dung lượng của bộ đệm phát, mặc định là 512 byte.
+InputBufferSize: Dung lượng của bộ đệm nhận, mặc định là 512 byte.
+Timeout :thời gian chờ để đọc hay gởi dữ liệu ra port nối tiếp, mặc định là
10(giây). Hết thời gian timeout mà không có dữ liệu truyền, nhận thì Matlab sẽ
báo lỗi.
+ValuesSent: Tổng số byte đã gởi qua cổng nối tiếp.
+ValuesReceived: Tổng số byte đã nhận qua cổng nối tiếp.
Một số hàm quan trọng trong giao tiếp:
+BytesAvailableFcn Count : So sánh số byte trong bộ đệm nhận nếu giá trị này giá trị
được thiết lập trong hàm thì sẽ tạo ra một sự kiện trong port nối tiếp. Dựa vào sự
kiên này ta sẽ thực hiện một vài chức năng mong muốn.
+BytesAvai lableFcnMode : Dạng dữ liệu trong bộ đệm nhận để tạo ra sự kiện. Dạng
dữ liệu thường được chọn là ‘Byte’.
+BytesAvailableFcn: Đây là một Hàm đáp ứng sự kiện ở port nối tiếp. Hàm này sẽ

được gọi khi có sự kiện xảy ra ở port nối tiếp. Nghĩa là có dữ liệu được truyền tới
máy tính.
Ví dụ: Viết chương trình gởi xuống một dữ liệu dang Binary sau đó dữ liệu này
được gởi lên lại cũng ở dạng Binary.
Code:
fopen(s);
fwrite(s,10);
s.BytesAvailableFcnCount = 1;
s.BytesAvailableFcnMode = 'byte';
s.BytesAvailableFcn = {@data_Callback,handles};
function data_Callback(hObject, eventdata, handles)
global s
data_in=fread(hObject);
save data;
if data_in==10;
set(handles.edit1,'String',’Da nhan du lieu’);
else
set(handles.edit1,'String','Chưa co du lieu');
end;
fclose(s);
delete(s);
Như vậy có 2 cách để thực hiện đọc một dữ liệu từ port nối tiếp
Cách 1:
Đọc dữ liệu dựa vào timeout, nghĩa là Matlab sẽ chờ trong một khoảng thời
gian cố định để đọc hay truyền dữ liệu. Cách này không được khả dụng cho
những ứng dụng mang tính tức thời.
Cách 2:
Đọc dữ liệu dựa vào sự kiện của port nối tiếp, nghĩa là hàm đáp ứng sự kiện
của port. Cách hay được dùng vì rất thích hợp cho những ứng dụng phức tạp đòi
hỏi tốc độ đồng bộ nhanh giữa 2 thiết bị.

Tới đây là công việc điều khiển cơ bản đã hoàn thành, vấn đề còn lại ta sẽ
thi công các phần tử chấp hành các tín hiệu điều khiển này. Cụ thể ở đây là Motor
bước trong mô hình cơ khí, do vậy chúng ta bắt đầu tìm hiểu đến động cơ bước và
mạch điều khiển chúng.
2.3 Động cơ bước
- Động cơ bước là một loại động cơ DC, động cơ này quay theo từng bước
cố định theo một góc nào đó.
Góc bước giới hạn trong phạm vi từ 0.9
0
đến
90
0
.
Trên thực tế, động cơ bước là thiết bị cơ khí dùng để chuyển đổi các
xung điện thành
chuyển đ
ộng cơ học tương
ứng.
- Trục quay của động cơ xoay tròn tăng dần số bước khi các xung điều
khiển
cấp
vào mạch theo thứ tự hợp
lí.
- Động cơ bước đặc biệt sử dụng trong các ứng dụng điều khiển vì ta có thể
biết chính xác vị trí của trục động cơ (motor shaft) mà không cần sử dụng
các thiết bị cảm ứng. Chúng cho phép điều khiển bất kỳ sự chuyển động
nào với sự chính xác cao bằng việc đếm số bước của động cơ. Góc bước
được xác định bởi số cực rotor và stator.
- Động cơ bước thường được chia thành 3 loại: động cơ bước nam châm vĩnh
cửu, động cơ bước biến từ trở và động cơ bước hỗn hợp.

2.3.1 Động cơ bước nam châm vĩnh cửu.
- Động cơ nam châm vĩnh cửu hay còn gọi là động cơ bước kiểu tác dụng sử
dụng nam châm vĩnh cửu làm Roto. Hình 2.3.1.1 minh hoạ động cơ bước
nam châm vĩnh cửu đơn giản:
- Hoạt động của loại động cơ này như sau: giả thuyết rằng rotor đang nằm ở
vị trí với cực nam của nam châm quay lên trên. Khi cuộn dây Stator 1 được
cấp điện, cực nam của Rotor bị hút về phía nó. Sau đó, ngắt điện cuộn 1 và
tiếp tục cung cấp điện vào cuộn Stator 2, do lực hút giữa từ trường của nam
châm và từ trường của cuộn dây Stator, Rotor lại thẳng hàng với cuộn
Stator 2. Như vậy, Rotor sẽ quay 90
0
mỗi bước cho mỗi lần kích liên tiếp
theo trình tự của các cực Stator. Ta có thể đảo chiều động cơ nếu thay đổi
trình tự kích các cực Stator.
- Một đặc tính của loại động cơ này là Rotor luôn có khuynh hướng thẳng
hàng với Stator ngay cả khi không cấp điện cho Stator. Ta có thể cảm nhận
được lực kéo của từ trường khi xoay nhẹ Rotor bằng tay, nó gọi là lực hãm.
Một ưu điểm của động cơ bước là nó có thể sử dụng trong điều khiển vòng
hở mà vẫn biết vị trí chính xác của trục động cơ bằng cách đếm số bước.
2.3.1.a Động cơ bước nam châm vĩnh cửu 2 pha lưỡng cực.
- Động cơ bước 2 pha lưỡng cực có 2 cuộn dây nhưng có 4 cực từ.
- Động cơ bước nam châm vĩnh cửu 2 pha lưỡng cực được sử dụng trong
thực tế có sơ đồ như Hình 2.3.1.2. Trong Hình 2.3.1.2, cuộn dây 1 gồm 2
cực 1a và 1b nằm đối diện nhau để khi cấp điện qua cuộn 1 với cực tính
+1a -1b, cực 1a và 1b lần lượt đóng vai trò là từ trường bắc và từ trường
nam, tạo lực hút và đẩy rotor sắp thằng hàng (vị trí 1). Cách đơn giản nhất
để điều khiển động cơ loại này là cấp điện vào lần lượt hoặc cuộn 1 hoặc
cuộn 2 của stator. Nếu muốn động cơ quay ngược chiều kim đồng hồ
(CCW) từ vị trí 1, tiếp tục cấp điện cho cuộn 2 với cực tính +2a -2b, lúc này
lực từ trường sẽ tạo lực hút rotor quay đến vị trí 2. Kế tiếp, ta tiếp tục cấp

điện vào cuộn 1 nhưng lần này đảo cực tính của 2 cực 1a và 1b: -1a +1b, từ
trường làm rotor quay đến vị trí 3. Thuật ngữ lưỡng cực được sử dụng vì có
sự đảo cực tính 2 cực của mỗi cuộn (dòng điện lần lượt chảy theo 2 chiều
trên mỗi cuộn). Chuỗi điện áp cung cấp để quay động cơ được minh hoạ
như bảng sau:
Cấp điện Vị trí
1a+ 1b- 1
2a+ 2b- 2
1a- 1b+ 3
2a- 2b+ 4
- Nếu đọc bảng trên theo trình tự từ trên xuống, chuỗi điện áp lần lượt cung
cấp vào các cuộn dây sẽ làm cho động cơ quay ngược chiều kim đồng hồ
(CCW). Ngược lại, nếu đọc từ dưới lên trên, chuỗi điện áp lần lượt cung
cấp vào các cuộn dây sẽ làm cho động cơ quay theo chiều kim đồng hồ
(CW).
- Phương pháp này gọi là phương pháp điều khiển theo kiểu 1 bước (wave
dirve). Ngoài ra để điều khiển động cơ 2 pha lưỡng cực, ta có thể kích vào
2 cuộn dây cùng một lúc. Trong chế độ này, rotor được hút tới giũa 2 cực
kế bên gần nhất. Phương pháp này gọi là phương pháp điều khiển theo kiểu
bước đủ (full drive). Bảng sau và Hình 2.3.1.3 sẽ minh hoạ cho chuỗi điện
áp kích theo phương pháp này:
Cấp điện Vị trí
1a+ 1b- và 2a+ 2b- 1’
1a- 1b+ và 2a+ 2b- 2’
1a- 1b+ và 2a- 2b+ 3’
1a+ 1b- và 2a- 2b+ 4’
- Trong kiểu điều khiển này, 2 cuộn dây được kích cùng lúc. Điều này sẽ tạo
nhiều momen xoắn hơn kiểu điều khiển một bước. Tuy nhiên, dòng cung
cấp cho động cơ sẽ tăng gấp 2 lần và việc điều khiển khó khăn hơn so với
phương pháp điều khiển một bước.

- Cả hai phương pháp trình bày ở trên gồm 4 bước điều khiển (quay 4 bước
trên 1 vòng). Bằng cách kết hợp 2 phương pháp trên, động cơ quay lần lượt
đến các vị trí 1, 1’, 2, 2’, 3, 3’, 4, 4’, 1, 1’,2…đây gọi là phương pháp điều
khiển theo kiểu nửa bước (hafl step). Khi điều khiển theo phương pháp này,
động cơ chạy 8 bước trên một vòng. Phương pháp điều khiển theo kiểu nửa
bước được ứng dụng nhiều vì nó cho phép động cơ tăng 2 lần số bước.
Ví dụ: động cơ bước 1.8
0
/step. Như vậy, động cơ quay 1 vòng thì cần chỉ
kích
200
8.1
360
0
0
=
bước ở chế độ wave drive. Khi điều khiển bằng phương
pháp half-step (nửa bước), ta cần phải kích 400 bước với góc quay 0.9
0
.
Hình 2.3.1.4 sẽ minh hoạ cho phương pháp half-step.
- Các động cơ nam châm vĩnh cửu
thường có góc bước nhỏ. Việc giảm góc bước của động cơ được thực hiện
bằng cách tăng số cực của rotor như Hình 2.3.1.5 sau:
Cấp điện Vị trí
1a+ 1b- và 2a- 2b- 1
1a+ 1b- và 2a+ 2b- 1’
1a- 1b- và 2a+ 2b- 2
1a- 1b+ và 2a+ 2b- 2’
1a- 1b+ và 2a- 2b- 3

1a- 1b+ và 2a- 2b+ 3’
1a- 1b- và 2a- 2b+ 4
1a+ 1b- và 2a- 2b+ 4’
Góc bước của động cơ này được tính như sau:
Stator có 4 cực

Góc giữa 2 cực gần nhau:
0
0
90
4
360
=
Rotor có 6 cực

Góc giữa 2 cực gần nhau:
0
0
60
6
360
=
Vậy động cơ quay 90
0
-60
0
= 30
0
mỗi bước.
2.3.1.b Động cơ bước nam châm vĩnh cửu 4 pha đơn cực.

- Bốn pha
đơn cực
là loại
động cơ
bước
được sử dụng phổ biến nhất.
- Động cơ bước nam châm vĩnh cửu đơn cực có 5 hay 6 đầu dây thường dùng
sơ đồ như Hình 2.3.1.7 có kết nối giữa cho mỗi dây. Khi sử dụng các kết
nối giữa của cuộn dây thường được cấp vào nguồn dương và hai đầu của
mỗi cuộn dây được nối xuống đất, tuỳ thuộc vào đầu vào nối đất ta sẽ xác
định chiều quay rotor. Gọi là động cơ 4 pha vì động cơ có 4 cuộn dây được
cung cấp điện một cách độc lập và thuật ngữ đơn cực được sử dụng vì dòng
điện luôn chạy qua cuộn Stator theo chiều nhất định.
- Cách đơn giản để điều khiển động cơ bước 4 pha đơn cực là cung cấp điện
cho một pha tại một thời điểm theo trình tự nhất định (phương pháp wave
drive).
- Bảng điều khiển sau sẽ minh hoạ cho quá trình điều khiển kiểu một bước:
Step 1a 2a 1b 2b
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
.
- Việc điều khiển động cơ bước 4 pha đơn cực thì đơn giản hơn động cơ
bước 2 pha lưỡng cực. Mạch driver cho động cơ bước 4 pha đơn cực đơn
giản là đóng và ngắt các cực của Stator một cách tuần tự, nó không phải
đảo cực tính của cuộn dây Stator. Tuy nhiên, động cơ bước 2 pha lưỡng cực
tạo nhiều momen xoắn hơn do có lực đẩy và kéo ở cùng một lúc.
- Lực xoắn của động cơ bước 4 pha đơn cực có thể được tăng lên nếu 2 cuộn
dây kề nhau được cung cấp năng lượng cùng một lúc, tạo momen làm cho

rotor quay đến nằm giữa 2 cực của 2 cuộn dây. Tuy nhiên, cách này sẽ tiêu
hao dòng điện gấp 2 lần so với động cơ bước 2 pha lưỡng cực nhưng cũng
chỉ làm momen xoắn tăng khoảng 40%. Bảng sau sẽ minh hoạ cho phương
pháp điều khiển bước đủ này:
Step 1a 2a 1b 2b
1 1 1 0 0
2 0 1 1 0
3 0 0 1 1
4 1 0 0 1
- Bằng cách xen kẽ các bước trong 2 chế độ điều khiển một bước và bước đủ,
ta có thể điều khiển động cơ quay với góc bước nhỏ hơn 2 lần góc bước
danh định của nó. Bảng sau sẽ minh hoạ cho kiểu điều khiển half-step này:
Step 1a 2a 1b 2b
1 1 0 0 0
2 1 1 0 0
3 0 1 0 0
4 0 1 1 0
5 0 0 1 0
6 0 0 1 1
7 0 0 0 1
8 1 0 0 1
- Dựa vào cấu tạo của động cơ bước 2 pha lưỡng cực và 4 pha đơn cực, ta
thấy rằng có thể chuyển chế độ dùng động cơ 4 pha đơn cực thành 2 pha
lưỡng cực và ngược lại bằng cách :
+ Nếu muốn chuyển thành động cơ 4 pha từ động cơ 2 pha, ta có thể lấy
ra ở mỗi cuộn 1 đầu dây chung (common), đầu dây chung này được nối
vào điểm giữa 2 cực của mỗi cuộn dây. Hai đầu dây common (2 và 5)
được kết nối như Hình 2.3.1.10:
+ Nếu muốn sử dụng ở chế độ 2 pha lưỡng cực thì 2 đầu dây common (2
và 5) không dùng.

- Ngày nay, hầu hết các động cơ bước nam châm vĩnh cửu có góc bước rất
nhỏ. Những loại động cơ có góc bước nhỏ này được làm bằng cách ghép
chồng hai rotor đa cực như Hình 2.3.1.11:
2.3.2 Động cơ bước có từ trở biến thiên (động cơ bước biến từ trở).

×