Đề tài Vẽ lại bức ảnh chụp được từ Webcam thông qua giao diện matlab và vi điều khiển

Độ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.

doc107 trang | Chia sẻ: ngtr9097 | Lượt xem: 2981 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Vẽ lại bức ảnh chụp được từ Webcam thông qua giao diện matlab và vi điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương I. TỔNG QUAN VỀ ĐỀ TÀI 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. Cơ sở lý luận. Đố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. 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. Phương pháp, phương tiện nghiên cứu 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. 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 Ảnh và xử lý ảnh trong Matlab Ả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. Xử lý ảnh thu được qua Matlab: 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. 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: 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 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 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: 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) Hình 2.1.2.2 Sơ đồ thực hiện xử lý ảnh thu được Matlab và truyền thông nối tiếp RS232 GIỚ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. 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à 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. 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. GIAO TIẾP VỚI MÁY TÍNH BẰNG CỔNG NỐI TIẾP. 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 Chuẩn giao tiếp RS232. 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. Đặ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). 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 GIAO TIẾP VI ĐIỀU KHIỂN VỚI MÁY TÍNH BẰNG MATLAB 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. 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