Đề 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

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.

doc107 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3126 | 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
o 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.80/step. Như vậy, động cơ quay 1 vòng thì cần chỉ kích 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.90. Hình 2.3.1.4 sẽ minh hoạ cho phương pháp half-step. 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’ 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: 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: Rotor có 6 cực Góc giữa 2 cực gần nhau: Vậy động cơ quay 900-600 = 300 mỗi bước. Độ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: Động cơ bước có từ trở biến thiên (động cơ bước biến từ trở). Động cơ biến từ trở hay còn gọi là động cơ phản kháng. Rotor của loại động cơ này không sử dụng nam châm vĩnh cửu, thay vào đó nó sử dụng một bánh răng bằng sắt. Vì không sử dụng nam châm vĩnh cửu-không đòi hỏi rotor phải từ hoá- nên rotor có thể chế tạo với nhiều hình dạng khác nhau. Vì được làm bằng sắt nên mỗi răng rotor sẽ bị hút về phía cực stator được cấp điện gần nhất nhưng với lực hút yếu hơn loại nam châm vĩnh cửu. Điều này làm cho momen xoắn của động cơ biến từ trở nhỏ hơn momen xoắn của động cơ nam châm vĩnh cửu. Động cơ biến từ trở thông thường có 3 hoặc 4 pha. Hình 2.3.2.1 minh hoạ cho loại động cơ biến từ trở 3 pha. Sator của loại động cơ này có 3 mạch từ: và . Mỗi mạch từ gồm 4 cực từ . Như vậy Stator của động cơ như hình 3 có 12 cực từ. Chú ý, rotor có 8 răng trong khi stator có tất cả 12 răng. Đây là cấu tạo đặc biệt của động cơ này. Bởi vậy, răng cuả rotor sẽ không bao giờ thẳng hàng từng đôi 1-1 với răng của sator, điều này đóng vai trò quan trọng trong hoạt động của loại động cơ này. Hoạt động của loại động cơ này như sau: + Khi mạch từ được cung cấp năng lượng, răng A của rotor sẽ di chuyển đến thẳng hàng với cực của . + Kế tiếp, khi được cấp điện, răng B gần nhất sẽ di chuyển về phía nó. + Nếu tiếp tục cấp điện cho , rotor sẽ tiếp tục quay 150 theo hướng ngược chiều kim đồng hồ bằng cách hút răng C thẳng hàng với . Góc bước của động cơ bước biến từ trở là hiệu số giữa góc 2 cực rotor gần nhất và góc 2 cực stator gần nhất. Góc bước của động cơ được minh hoạ như hình 3 được xác định là: Bằng cách sử dụng lối thiết kế này, động cơ bước biến từ trở có thể đạt được những góc bước rất nhỏ, thậm chí nhỏ hơn 10. Góc bước càng nhỏ giúp cho việc điều khiển vị trí càng chính xác hơn. Động cơ bước biến từ trở có sự khác biệt so với động cơ nam châm vĩnh cửu. Vì rotor của động cơ bước biến từ trở không được từ hoá nên lực xoắn của nó yếu hơn lực xoắn của động cơ nam châm vĩnh cửu có cùng góc bước. Mặc dầu vậy, nó sẽ không có lực xoắn hãm (detent torque) khi tắt nguồn như động cơ nam châm vĩnh cửu. Có góc bước nhỏ và không có lực xoắn hãm nên động cơ biến từ trở dễ bị mất bước. Đây là vấn đề cần được xem xét khi động cơ đang vận hành ở chế độ vòng hở. Vì thế, nên dùng các bộ điều khiển vòng kín cho loại động cơ này. Động cơ bước hỗn hợp (động cơ bước dạng ghép). Trong các loại động cơ bước kể trên thì động cơ bước hỗn hợp được sử dụng nhiều hơn cả vì loại động cơ này kết hợp những ưu điểm của loại động cơ bước nam châm vĩnh cửu và động cơ bước biến từ trở. Rotor có các răng cho phép động cơ quay với góc bước nhỏ (có loại quay với góc bước 1.80) và nó có một nam châm vĩnh cửu tạo lực xoắn hãm nhỏ ngay cả khi không cấp điện cho động cơ. Chúng ta thấy rằng việc từ hoá các cực rotor của động cơ bước nam châm vĩnh cửu tương đối khó khăn nên góc bước của loại động cơ này thường bị hạn chế. Nếu như động cơ bước biến từ trở có góc bước nhỏ nhờ rotor được cấu tạo bởi bánh răng bằng sắt thì lực quay và lực xoắn hãm của nó lại yếu hơn động cơ bước nam châm vĩnh cửu. Động cơ bước hỗn hợp từ hoá một cách hợp lý các cực của rotor và như vậy nó sẽ có những ưu điểm của động cơ nam châm vĩnh cửu và biến từ trở. Hình 2.3.3.1 minh hoạ cấu trúc bên trong của động cơ bước hỗn hợp: Động cơ bước hỗn hợp có cấu tạo tương đối phức tạp hơn động cơ nam châm vĩnh cửu. Rotor bao gồm 2 vòng bánh răng và một nam châm vĩnh cửu được đặt ở giữa 2 vòng bánh rănh này-một vòng bánh răng ở cực bắc và vòng còn lại ở cực nam của nam châm vĩnh củu. Với mỗi bước, 2 răng đối nhau trên bánh răng nằm ở cực bắc sẽ bị hút tới 2 cực nam của cuộn dây Stator và 2 răng đối nhau trên bánh răng nằm ở cực nam sẽ bị hút tới 2 cực bắc của cuộn dây Stator. Cấu tạo bên trong tương đối phức tạp song việc điều khiển lại đơn giản hơn động cơ nam châm vĩnh cửu và biến từ trở. Theo lý thuyết hoạt động của động cơ bước hỗn hợp cũng giống như hoạt động của động cơ biến từ trở, rotor và stator có số răng khác nhau, trong mỗi bước khi cực của stator được cấp điện thì răng rotor gần nhất sẽ quay xếp thẳng hàng với cực này. Tuy nhiên, do nguyên lý của lực từ trường mà trong bất kì lúc nào một nửa số cực của stator là cực bắc, nửa số cực còn lại là cực nam. Để cân bằng lực từ, mỗi cực của stator cần có khả năng chuyển được cực tính một cách nhanh chóng và đúng thời điểm. Ảnh hưởng của tải. Vì điều khiển theo kiểu vòng hở nên đòi hỏi mỗi bước phải thật chính xác, nhưng nếu tải quá lớn, động cơ không đủ momen để quay bước. Khi có xung điều khiển đặt vào, rotor chỉ quay nhẹ rồi bị kéo trở lại vị trí gốc, hiện tượng này gọi là ‘bị kẹt’ (stalling). Trong mỗi bước, momen luôn thay đổi bởi vì step motor phụ thuộc vào góc của trục, thật vậy, khi rotor hướng thẳng hàng với cuộn dây được kích từ thì momen bằng 0. Hình 2.3.4.1 minh họa sự thay đổi momen khi cuộn dây bị kích từ. Vấn đề này dẫn đến một trạng thái là rotor có thể bị dừng tại một vị trí nào đó mà tại đó momen quay cân bằng với momen cản. Nếu tải vượt quá momen cực đại của động cơ sẽ làm động cơ bị trượt nhanh. Hình 1.4 cho ta hai vấn đề khi ta cho rotor trễ đi một xung kích hay cho xung kích tới sớm hơn như ở hình 1.4 b. Vấn đề thứ nhất là tại đây có momen rất nhỏ hoặc không có momen sinh ra, vấn đề thứ hai là tại đây rotor sẽ bị cân bằng và ta không biết chắc rằng rotor sẽ quay trái hay quay phải. Do đó bản thân rotor không cho phép trễ quá 1/2 kích thước một bước. Trong thực tế, momen động (dynamic torque : là momen có ích khi động cơ quay) chỉ bằng một nửa momen giữ (holding torque: momen giúp giữ rotor khi dừng). Kết luận: Từ những đặc điểm phân tích ở trên, ta thấy được những ưu điểm lớn của step motor , thứ nhất là điều khiển vòng hở, thứ hai là xác định vị trí theo góc bước một cách chính xác. Vấn đề ở đây là phải tính toán momen quay sao cho phù hợp với tải, để khi điều khiển không xảy ra hiện tượng trượt bước. Công thức tính momen tổng quát: momen=lực*tay đòn. Công thức tính momen xoắn đối vối động cơ bước: T=‐h sin( ((π /2) / S)Θ ). Trong đó: T—momen xoắn. h—momen xoắn giữ S—góc bước (tính bằng radian) Θ—góc trục. Với đề tài này, ta không chọn động cơ DC vì thứ nhất cần phải có hồi tiếp về khi hệ thống hoạt động, khi đó ta phải dùng encorder, do đó sẽ phát sinh chi phí thiết kế, thứ hai là khi dừng, động cơ DC không dừng một cách tức thời như step motor, khi đó đòi hỏi ta phải có một phương pháp điều khiển hợp lí, vì trong đề tài của ta vấn đề vị trí của từng điểm rất quan trọng nên tính chất dừng tức thời của step motor rất phù hợp. Vi điều khiển AT89C51 Giới thiệu. Vi điều khiển viết tắt của từ micro- controller, là mạch tích hợp trên chip có thể lập trình, được dùng để điều khiển một hệ thống hoạt động theo mong muốn của mình. Hệ thống bao gồm cả phần cứng lẫn phần mềm, phần cứng và phần mềm phải có quan hệ với nhau; vi điều khiển có tập lệnh, khi người lập trình nạp vào vi điều khiển, vi điều khiển tiến hành đọc chương trình, lưu trữ chương trình, xử lí chương trình, đo thời gian tiến hành đóng mở một cơ cấu nào đó. Vi điều khiển được sử dụng trong các tivi, máy giặt, lò vi-ba, điện thoại…..trong lĩnh vực tự động hóa thì vi điều khiển cũng được sử dụng khá phổ biến như trong robot, trong các băng chuyền, các bộ điều khiển tự động, và vi điều khiển còn ứng dụng trong nhiều thiết bị khác nữa. Do họ MCS-51TM đã trở thành chuẩn công nghiệp nên có rất nhiều hãng sản xuất ra nó, điển hình là ATMEL Corporation. Hãng này đã kết hợp rất nhiều tính năng dựa trên nền tảng kỹ thuật của mình để tạo ra các vi điều khiển tương thích với MCS-51TM nhưng mạnh mẽ hơn. AT89C51 cung cấp những đặc tính chuẩn như sau: 4 KB bộ nhớ chỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2 TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP. Thêm vào đó, AT89C51 được thiết kế với logic tĩnh cho hoạt động đến mức không tần số và hỗ trợ hai phần mềm có thể lựa chọn những chế độ tiết kiệm công suất, chế độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho phép RAM, timer/counter, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ giảm công suất sẽ lưu nội dung RAM nhưng sẽ treo bộ dao động làm mất khả năng hoạt động của tất cả những chức năng khác cho đến khi Reset hệ thống. Các đặc điểm của 89C51 được tóm tắt như sau: 4 KB bộ nhớ có thể lập trình lại, có khả năng tới 1000 chu kỳ ghi xoá. Tần số hoạt động từ: 0Hz đến 24 MHz. 3 mức khóa bộ nhớ lập trình. 2 bộ Timer/counter 16 Bit. 128 Byte RAM nội. 4 Port xuất /nhập I/O 8 bit. Giao tiếp nối tiếp. 64 KB vùng nhớ dữ liệu ngoại. Xử lý Boolean (hoạt động trên bit đơn). 210 vị trí nhớ có thể định vị bit. Sơ đồ chân và sơ đồ khối của VĐK AT89C51. Chức năng các chân AT89C51. Chân 40: Cung cấp điện áp Vcc. Chân 20: Chân nối đất. Port 0 (32 – 39): Là một port 2 chức năng 8 bit Data Bus & 8 bit thấp Address Bus khi có bộ nhớ mở rộng. Khi port 0 là port xuất nhập dữ liệu phải sử dụng điện trở kéo lên bên ngoài. Port 1 (1 – 8): Là một port I/O-xuất nhập dữ liệu. Sử dụng hoặc không sử dụng bộ nhớ ngoài. Port 2 (21 – 28): Là một port có 2 chúc năng vừa làm port I/O khi không sử dụng bộ nhớ ngoài, vừa là 8 bit cao Address Bus khi sử dụng bộ nhớ ngoài. Port 3 (10 – 17): Là một port có 2 chức năng vừa là port xuất nhập dữ liệu khi không sử dụng bộ nhớ ngoài vừa là các tín hiệu điều khiển khi sử dụng bộ nhớ ngoài hoặc thực hiện những chức năng đặc biệt. Bit Tên Địa chỉ Chức năng P3.0 RxD B0H Thu dữ liệu của port nối tiếp P3.1 TxD B1H Phát dữ liệu của port nối tiếp P3.2 INT0\ B2H Ngõ vào ngắt ngoài 0 P3.3 INT1\ B3H Ngõ vào ngắt ngoài 1 P3.4 T0 B4H Ngõ vào của bộ định thời/đếm 0 P3.5 T1 B5H Ngõ vào của bộ định thời/đếm 1 P3.6 WR\ B6H Điều khiển ghi vào RAM ngoài P3.7 RD\ B7H Điều khiển đọc vào RAM ngoài PSEN (Program Store Enable), (chân 29): Là tín hiệu điều khiển để cho phép bộ nhớ chương trình mở rộng và thường được nối đến chân OE (output enable) của một EPROM để cho phép đọc các byte mã lệnh. PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh. Các mã lệnh của chương trình được đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh bên trong 8951 để giải mã lệnh. Khi 8951 thi hành chương trình trong ROM nội PSEN sẽ ở mức logic 1 . ALE (Address Latch Enable), (chân 30): Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt. Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động. Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống. Chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong 8951. EA (External Access), (chân 31): Tín hiệu vào EA nếu ở mức cao thì thực hiện chương trình từ ROM nội. Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng. RST (reset), (chân 9): 8951 sẽ được reset khi RST ở mức cao. Hoạt động reset: Khi ngõ RST này được đưa lên cao (trong ít nhất hai chu kì máy), các thanh ghi bên trong AT89C51 được tải những giá trị thích hợp để khởi động hệ thống. Các ngõ vào bộ dao động (chân 18, 19): XTAL1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đại dao động nghịch được cấu hình để dùng như một bộ dao động trên chip. Tổ chức bộ nhớ. Gồm có 4Kbyte ROM nội, 128 byte RAM nội và có thể mở rộng tối đa 64Kbyte bộ nhớ chương trình và 64Kbyte bộ nhớ dữ liệu. Theo Hình 2.4.1, RAM bên trong 8951được phân chia giữa các bank thanh ghi (00H–1FH), RAM địa chỉ hóa từng bit (20H–2FH), RAM đa dụng (30H–7FH) và các thanh ghi chức năng đặc biệt (80H–FFH). RAM nội: Bank thanh ghi (00H – 1FH): 8951 hỗ trợ 8 thanh ghi (R0 – R7), các lệnh dùng thanh ghi R0 – R7 thì sẽ ngắn hơn các lệnh tương ứng nhưng dùng địa chỉ trực tiếp. Các giá trị dữ liệu được dùng thường xuyên nên dùng một trong các thanh ghi này. Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bit chọn bank thanh ghi trong PSW. RAM địa chỉ hóa từng bit (20H – 2FH) RAM đa dụng-đa chức năng (30H – 7FH) Các thanh ghi chức năng đặc biệt (80H – FFH) bao gồm: Thanh ghi từ trạng thái chương trình PSW: Thanh ghi Trạng thái Bộ đếm chương trình 0000 H A 00 H B 00 H PSW 00 H SP 07 H DPTR 0000 H Port 0®3 FF H IP XXX00000 B IE 0XX00000 B Các thanh ghi định thời 00 H SCON 00 H SBUF 00 H PCON (HMOS) 0XXXXXX B PCON (CMOS) 0XXX0000 B Cờ nhớ Cờ nhớ (CY) có công dụng kép. Thông thường nó được dùng cho các lệnh toán học : nó sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi phép trừ. Ví dụ, nếu thanh ghi tích lũy chứa 0FFH, thì lệnh ADD A, #1 sẽ trả về thanh ghi tích lũy kết quả 00H và set cờ nhớ trong PSW. Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lý thi hành trên bit. Cờ nhớ phụ Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấp trong khoảng 0AH đến 0FH. Nếu các giá trị được cộng là số BCD, thì sau lệnh cộng cần có DA A (hiệu chỉnh thập phân thanh ghi tích lũy) để mang kết quả lớn hơn 9 vào nibble cao. Cờ 0 Cờ 0 (F0) là 1 bit cờ đa dụng dành cho các ứng dụng của người dùng. Các bit chọn bank thanh ghi Các bit chọn bank thanh ghi (RS0 và RS1) xác định bank thanh ghi được tích cực. Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần. Ví dụ, ba lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh ghi R7 (địa chỉ byte 1FH) đến thanh ghi tích lũy : SETB RS1 SETB RS0 MOV A, R7 Khi chương trình được hợp dịch, các địa chỉ bit đúng được thay thế cho các ký hiệu “RS1” và “RS0”. Vậy, lệnh SETB RS1 sẽ giống như lệnh SETB 0D4H. Cờ tràn Cờ tràn (OV) được set sau một lệnh cộng hoặc trừ nếu có một phép toán bị tràn. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để xác định xem kết quả có nằm trong tầm xác định không. Khi các số không dấu được cộng, bit OV có thể được bỏ qua. Các kết quả lớn hơn +127 hoặc nhỏ hơn -128 sẽ set bit 0V. Thanh ghi B (F0H): được dùng cùng với thanh ghi tích lũy A cho các phép toán nhân, chia. Con trỏ ngăn xếp (SP: 81H): Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H. Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Các lệnh trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp. Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ đọc dữ liệu và giảm SP. Con trỏ dữ liệu (DPTR: 83H – 82H): được dùng để truy xuất bộ nhớ ngoài, là một thanh ghi 16 bit ở địa chỉ 82H (DPL : byte thấp) và 83H (DPH : byte cao). Ba lệnh sau sẽ ghi 55H vào RAM ngoài ở địa chỉ 1000H : MOV A, #55H MOV DPTR, #1000H MOVX @DPTR, A Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy. Lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bit 1000H vào con trỏ dữ liệu. Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữ liệu trong A (55H) đến RAM ngoài ở địa chỉ được chứa trong DPTR (1000H). Các thanh ghi port I/O: port 0, port 1, port 2, port 3 Các thanh ghi Timer: timer 0: 8CH – 8AH ; timer 1: 8DH – 8BH ; TMOD: 89H ; TCON: 88H Các thanh ghi port nối tiếp SBUF: 99H ; SCON: 98H Các thanh ghi ngắt: 8951 có 5 nguồn ngắt được cho phép bằng thanh ghi IE: A8H Thanh ghi điều khiển công suất PCON: 87H. Khi có hoạt động reset, trạng thái của các thanh ghi: Thanh ghi Trạng thái Bộ đếm chương trình 0000 H A 00 H B 00 H PSW 00 H SP 07 H DPTR 0000 H Port 0®3 FF H IP XXX00000 B IE 0XX00000 B Các thanh ghi định thời 00 H SCON 00 H SBUF 00 H PCON (HMOS) 0XXXXXX B PCON (CMOS) 0XXX0000 B Một số chức năng của AT89C51 Bộ định thời Timer 8951 có hai timer 16 bit, mỗi timer có 4 cách làm việc. Người ta sử dụng các timer để: định khoảng thời gian; đếm sự kiện hoặc tạo tốc độ baud cho port nối tiếp trong 8951. Truy xuất các timer của 8951 dùng 6 thanh ghi chức năng đặc biệt cho trong bảng sau: SFR Mục đích Địa chỉ Địa chỉ hóa từng bit TCON Điều khiển Timer 88H Có TMOD Chế độ Timer 89H Không TL0 Byte thấp của Timer 0 8AH Không TL1 Byte thấp của Timer 1 8BH Không TH0 Byte cao của Timer 0 8CH Không TH1 Byte cao của Timer 1 8DH Không Thanh ghi chế độ Timer (TMOD): Bit Tên Timer Mô tả 7 GATE 1 Bit (mở) cổng, khi lên 1, timer chỉ chạy khi INT1 ở mức cao 6 C/T 1 Bit chọn chế độ counter/timer 1 = bộ đếm sự kiện 0 = Bộ định khoảng thời gian 5 M1 1 Bit 1 của chế độ (mode) 4 M0 1 Bit 0 của chế độ: 00=chế độ 0: timer 13 bit 01=chế độ 1: timer 16 bit 10=chế độ 2: tự động nạp lại 8 bit 11=chế độ 3: tách timer 3 GATE 0 Bit (mở) cổng 2 C/T 0 Bit chọn counter/timer 1 M1 0 Bit 1 của chế độ 0 M0 0 Bit 0 của chế độ Thanh ghi điều khiển Timer (TCON). Bit Ký hiệu Địa chỉ Mô tả TCON.7 TF1 8FH Cờ báo tràn Timer 1. Đặt bởi phần cứng khi tràn, được xóa bởi phần mềm hoặc phần cứng khi bộ xử lý chỉ đến chương trình phục vụ ngắt. TCON.6 TR1 8EH Bit điều khiển timer 1 chạy. Đặt/xóa bằng phần mềm để cho timer chạy/ngưng TCON.5 TF0 8DH Cờ báo tràn timer 0 TCON.4 TR0 8CH Bit điều khiển timer 0 chạy TCON.3 IE1 8BH Cờ cạnh ngắt 1 bên ngoài. Đặt bởi phần cứng khi phát hiện một cạnh xuống ở INT1; xóa bằng phần mềm hoặc bằng phần cứng khi CPU chỉ đến chương trình phục vụ ngắt. TCON.2 IT1 8AH Cờ kiểu ngắt 1 bên ngoài. Đặt/xóa bằng phần mềm để ngắt ngoài tích cực cạnh xuống/mức thấp. TCON.1 IE0 89H Cờ cạnh ngắt 0 bên ngoài TCON.0 IT0 88H Cờ kiểu ngắt 0 bên ngoài Serial port (Port nối tiếp) AT89C51 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ trên một dải tần số rộng. Chức năng chủ yếu của port nối tiếp là thực hiện chuyển đổi song song sang nối tiếp đối với dữ liệu xuất, và chuyển đổi nối tiếp sang song song với dữ liệu nhập. Hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến port nối tiếp là: SBUF và SCON. Viết vào SBUF để nạp dữ liệu sẽ được phát, và đọc SBUF để truy xuất dữ liệu thu được. Thanh ghi điều khiển port nối tiếp: Bit Ký hiệu Địa chỉ Mô tả SCON.7 SM0 9FH Bit 0 của chế độ port nối tiếp SCON.6 SM1 9EH Bit 1 của chế độ port nối tiếp SCON.5 SM2 9DH Bit 2 của chế độ port nối tiếp. Cho phép truyền thông đa xử lý trong các chế độ 2 và 3; RI sẽ không bị tác động nếu bit thứ 9 thu được là 0 SCON.4 REN 9CH Cho phép bộ thu phải được đặt lên 1 để thu các ký tự SCON.3 TB8 9BH Bit 8 phát, bit thứ 9 được phát trong các chế độ 2 và 3; được đặt và xóa bằng phần mềm SCON.2 RB8 9AH Bit 8 thu, bit thứ 9 thu được SCON.1 TI 99H Cờ ngắt phát. Đặt lên 1 khi kết thúc phát ký tự; được xóa bằng phần mềm SCON.0 RI 98H Cờ ngắt thu. Đặt lên 1 khi kết thúc thu ký tự; được xóa bằng phần mềm Các chế độ port nối tiếp: SM0 SM1 Chế độ Mô tả Tốc độ baud 0 0 0 Thanh ghi dịch Cố định (FOSC/12) 0 1 1 UART 8 bit Thay đổi (đặt bằng timer) 1 0 2 UART 9 bit Cố định (Fosc chia cho 12 hoặc 64) 1 1 3 UART 9 bit Thay đổi (đặt bằng timer) Ngắt (Interrupt). Một ngắt là sự xảy ra một điều kiện - một sự kiện – mà nó gây ra treo tạm thời chương trình trong khi điều kiện đó được phục vụ bởi một chương trình khác. Chương trình giải quyết ngắt được gọi là chưong trình phục vụ ngắt (ISR: Interrupt Service Routine). Khi ngắt xảy ra, chương trình chính tạm thời bị treo và rẻ nhánh đến ISR: ISR thực thi và kết thúc bằng lệnh trở về từ ngắt, chương trình chính tiếp tục thực thi ở chỗ mà nó tạm dừng. Tổ chức ngắt ở 8951: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port nối tiếp. Tất cả các ngắt đều mặc nhiên bị cấm sau khi reset hệ thống và được cho phép từng cái một bằng phần mềm. Khi có hai hoặc nhiều ngắt đồng thời, hoặc một ngắt xảy ra trong khi một ngắt khác đang được phục vụ, có cả hai sự tuần tự hỏi vòng và sơ đồ ưu tiên hai mức dùng để xác định việc thực hiện các ngắt. Cho phép và cấm các ngắt thông qua thanh ghi chức năng đặt biệt IE (Interrupt Enable). Bit Ký hiệu Địa chỉ bit Mô tả (1=cho phép, 0=cấm) IE.7 EA AFH Cho phép/cấm toàn bộ IE.6 - AEH Không được định nghĩa IE.5 - ADH Không được định nghĩa IE.4 ES ACH Cho phép ngắt từ Port nối tiếp IE.3 ET1 ABH Cho phép ngắt từ Timer 1 IE.2 EX1 AAH Cho phép ngắt ngoài 1 IE.1 ET0 A9H Cho phép ngắt từ Timer 0 IE.0 EX0 A8H Cho phép ngắt ngoài 0 Ưu tiên ngắt: mỗi nguồn ngắt được lập trình riêng vào một trong hai mức ưu tiên qua thanh ghi chức năng đặc biệt IP (Interrupt Priority): Bit Ký hiệu Địa chỉ bit Mô tả (1=mức cao hơn, 0= mức thấp) IP.7 - - Không được định nghĩa IP.6 - - Không được định nghĩa IP.5 - - Không được định nghĩa IP.4 PS BCH Ưu tiên cho ngắt từ port nối tiếp IP.3 PT1 BBH Ưu tiên cho ngắt từ Timer 1 IP.2 PX1 BAH Ưu tiên cho ngắt ngoài 1 IP.1 PT0 B9H Ưu tiên cho ngắt từ Timer 0 IP.0 PX0 B8H Ưu tiên cho ngắt ngoài 0 Hỏi vòng tuần tự: các bit cờ tạo các ngắt được tóm tắt ở bảng sau Ngắt Cờ Thanh ghi SFR và vị trí bit Bên ngoài 0 IE0 TCON.1 Bên ngoài 1 IE1 TCON.3 Timer 1 TF1 TCON.7 Timer 0 TF0 TCON.5 Port nối tiếp TI SCON.1 Port nối tiếp RI RI SCON.0 Xử lý ngắt: Khi ngắt xảy ra và được CPU chấp nhận, chương trình chính bị ngắt quãng. Những hoạt động sau xảy ra: * Lệnh hiện hành hoàn tất việc thực thi. * Cất PC vào ngăn xếp. * Trạng thái ngắt hiện hành được cất bên trong. * Các ngắt bị chặn ở mức ngắt. * Nạp vào PC địa chỉ vetor của ISR. * ISR thực thi. Các vector ngắt: Khi chấp nhận ngắt, giá trị được nạp vào PC được gọi là vector ngắt. Nó là địa chỉ bắt đầu của ISR cho nguồn tạo ngắt. Các vector ngắt được cho ở bảng sau : Ngắt Cờ Địa chỉ vector Reset hệ thống RST 0000H Bên ngoài 0 IE0 0003H Timer 0 TF0 000BH Bên ngoài 1 IE1 0013H Timer 1 TF1 001BH Port nối tiếp (TI hoặc RI) TI hoặc RI 0023H Chương III. THIẾT KẾ PHẦN CỨNG VÀ PHẦN MỀM Thiết kế phần cứng Phân tích sơ đồ khối của hệ thống để tiến hành thực hiện các công việc: KHỐI NGUỒN 5V MẠCH ĐIỀU KHIỂN ĐỘNG CƠ THIẾT BỊ THU ẢNH ĐỘNG CƠ BƯỚC MÔ HÌNH CƠ KHÍ MÁY TINH VI XỬ LÝ NGUỒN ĐỘNG CƠ 12V Mô hình và các thông số tính toán cho phần cơ khí. Các chi tiết cơ khí. Bảng liệt kê các chi tiết cơ khí sử dụng trong mô hình Số thứ tự Các chi tiết cơ khí Thông số Vật liệu Chức năng 1 Thanh trược (mm) Inox Đế trược cho 3 trục X,Y,Z 2 Bánh răng 37 (răng) (mm) Nhựa tổng hợp Truyền chuyển động quay cho thanh xoắn của 3 trục 3 Thanh xoắn (mm) (mm) Inox Chuyển chuyển động quay sang chuyển động ngang 4 Dây đai có răng (mm) Cao su tổng hợp 5 Công tắc hành trình 3 chân Nhựa tổng hợp Reset các trục về vị trí ban đầu Tính toán các thông số. a) Tỷ số truyền: Dựa vào mô hinh cơ khí và các chi tiết cơ khí ta có bảng tỷ số truyền của 3 trục X, Y, Z như sau: Số thứ tư Trục Tỷ số truyền Số bước để di chuyển 1 mm 1 X 352 2 Y 352 3 Z 286 b) Giá trị lấy mẫu để tính toán di chuyển hết kích thước mà webcam có thể. Kích thước của vùng làm việc của Webcam là (mm) tương đương với độ phân giải (pixel). Dựa vào tỷ số truyền đã tính toán được ở trên ta có bảng giá trị sau: Số thứ tự Trục Số bước của động cơ / 1 vòng Kích thước cần di chuyển được (mm) Giá trị lấy mẫu (bước) 1 X 200 0.5 (khoảng cách 1 pixel) 176 2 Y 200 0.5 (khoảng cách 1 pixel) 176 3 Z 200 1 (khoảng cách 1 mm) 286 Thông số động cơ bước sử dụng trong đề tài. Thiết bị thu nhận ảnh trong đề tài. Thiết bị thu nhận ảnh chính trong đề tài này loại Webcam với chuẩn USB của hãng “ColorVis” Thông số kỹ thuật của loại Webcam này như sau: Số thứ tự Thông số Chi tiết 1 Nhà sản xuất ColorVis 2 Mã sản phẩm CVC-1010 3 Bộ phân giải 160x120 4 Loại Sensor Cmod 5 Màu 24Bit-True color 6 Video 30 khung hình / giây 7 Định dạng thu được JPG Mạch điều khiển. Khối vi điều khiển Khối công suất điều khiển động cơ bước. Mạch chi tiết điều khiển 1 pha của động cơ Phân tích mạch. Trong mạch, hai phần tử chính là Opto và Mos-fet. Ở đây ta sử dụng opto như một bộ phận cách li giữa khối vi điều khiển trung tâm với khối động cơ, còn Mos-fet như là một khóa đóng/ ngắt. Thông số của opto PC817. Absolute maximum ratings (Giá trị định mức). Parameter symbol Rating unit Input Forward current IF 50 mA Peak forward current IFM 1 A Reverse voltage VR 6 V Power dissipation P 70 mW Output Collector-emitter voltage VCEO 35 V Emitter-collector voltage VECO 6 V Collector current IC 50 mA Collector power disspation PC 150 mW Total power Dissipation Ptot 200 mW Isolation voltage VISO 5 kVrms Operating temperature Topr -30 to +100 oC Storage temperature Tstg -55 to +125 oC Soldering temperature Tsol 260 oC Electro-optical characteristics (đặc tính quang-điện). Parameter Symbol Condition MIN TYP MAX Unit Input Forward voltage VF IF=20mA - 1.2 1.4 V Peak Forward voltage VFM IFM=0.5A - - 3.0 V Reseverse current IR VR=4V - - 10 µA Terminal capacitance Ct V=0,f=1kHz - 30 250 pF Output Dark current ICEO VCE=20V,IF=0 - - 100 nA Collector-emitter breakdown voltage BVCEO IC=0.1mA, IF=0 35 - - V Emitter-collector breakdown voltage BVECO IE=10 µA IF=0 6 - - V Transfer Charac- teristics Collector current IC IF=5mA, VCE=5V 2.5 - 30 mA Collector-emitter saturation voltage VCE(sat) IF=20mA IC=1mA - 0.1 0.2 V Isolation resistance RISO DC500V 40 to 60%RH 5x1010 1011 - Ω Floating capacitance Cf V=0 f=1MHz - 0.6 1.0 pF Cut-off frequency fC VCE=5V,IC=2mA RL=100Ω,-3dB - 80 - kHz Rise time tr VCE=2V, IC=2mA RL=100Ω - 4 18 µs Fall time tf - 3 18 µs Đây là những thông số của opto PC817 do nhà sản xuất cung cấp, (tham khảo trên datasheet.com). Trong đó: IF (forward current) : gọi là dòng điện thuận. IFM (peak forward current ): gọi là biên độ dòng điện đỉnh. VR (reverses voltage) : gọi là điện áp ngược. P (power dissipation) : gọi là công suất tiêu tán. PC (collector power dissipation ) : là công suất tiêu tán trên cực thu. VISO (isolation voltage) : điện thế cách li. Topr (operating temperature ) : khoảng nhiệt độ hoạt động. Tstg (storage temperature ) : nhiệt độ bảo quản. Tsol (soldering temperature ) : nhiệt độ mối hàn. Ct (terminal capacitance ) : tụ kí sinh tần số cao. ICEO (dark current ) :gọi là dòng tối điện cực, (Dòng điện qua đèn quang điện, điện trở quang hoặc các linh kiện điện quang bán dẫn khác khi ở trong bóng tối hoàn toàn ). BVCEO (collector-emitter breakdown voltage) : điện áp đánh thủng VCEO. VCE(sat) (Collector-emitter saturation voltage ) : gọi là điện áp VCE khi dẫn bão hòa. RISO (isolation resistance ) : điện trở cách li. fC (cut-off frequency) : tần số cắt. tr (rise time) : thời gian thiết lập. tf (fall time ) : thời gian giảm. Nguyên lí hoạt động của opto PC817. Theo cấu trúc bên trong của PC817, gồm có một led và một transitor (không có cực nền), khi led sáng sẽ kích cho transitor dẫn, khi đó sẽ có dòng điện chạy từ cực thu đến cực phát. Từ nguyên lí hoạt động cơ bản này, ta sẽ sử dụng opto như là một bộ phận cách li, vì bản thân của nó là hai khối riêng biệt nhau. Dưới đây là sơ đồ mạch kích opto. Từ sơ đồ ta thấy, khi ngõ vào “input” nhận mức thấp (0V) thì Opto sẽ dẫn , có dòng điện đổ xuống từ nguồn “VCC12”, khi đó tại ngõ ra “output” sẽ có một dòng điện, và ta sẽ dùng dòng điện này điều khiển cho các khối phía sau. Dòng điện này không cố định, nó phụ thuộc vào nguồn cấp là “VCC12”, điện trở, và mối nối p-n của con transitor bên trong Opto, vì thế ta cần tính toán để có dòng điện ở ngõ ra như mong muốn. Còn khi nhận mức cao (5V) thi Opto coi như không hoạt động. Ta cũng có thể kích Opto ở mức cao như sơ đồ mạch bên dưới. Khi đó tín hiệu ngõ vào “input” sẽ được điều khiển ở mức cao từ khối vi điều khiển, nhưng theo kinh nghiệm thì tốt nhất ta nên kích ở mức thấp, vì khi kích ở mức cao thì tín hiện xuất ra từ vi điều khiển không đủ kích cho Opto hoạt động. Chú ý là phải nối chung mass giữa vi điều khiển và nguồn kích. Trên hình 4 và hình 5 ta thấy có 2 con điện trở, con điện trở R26 này dùng để giảm áp đặt vào chân 1 và chân 2 của Opto, để phòng trường hợp con led bên trong Opto bị chết do bị quá áp, giá trị của điện trở này thường từ 100Ω đến 1kΩ, còn con điện trở R31 thì phụ thuộc vào mức dòng điện mà ta muốn lấy ở ngõ ra “output 2) Thông số của mos-fet (IRF540). Đây là những thông số do nhà sản xuất cung cấp, ta có thể tham khảo thêm trên alldatasheet.com. Vì ở đây, ta sử dụng mos-fet như là một val đóng/ ngắt, nên ta cần quan tâm đến là: điện áp cực đại đặt vào cực D (VDD). Khoảng điện áp kích cho fet hoạt động, tức là điện áp đặt vào cực G (VGS), vì fet được kích bằng áp nên ta có thể bỏ qua dòng. Điện áp đánh thủng đặt giữa 2 cực D-S (V(BR)DSS). Thời gian đóng /ngắt (td-on, td-off, tr, tf ). Những thông số đáp ứng của diode kí sinh Từ bảng giá trị do nhà sản xuất cung cấp ta thấy. Điện áp cực đại đặt trên cực D (Drain-source voltage), VDSS= 100V khi ở nhiệt độ từ 25oC đến 175oC Điện áp cực đại đặt trên D-G (Drain-gate voltage) VDGR=100V, với điều kiện nhiệt độ từ 25oC đến 175oC, RGS=20kΩ. Khoảng điện áp để kích FET (Gate-source voltage), VGS= ±20V Điện áp đánh thủng đặt trên D-S (Drain-source breakdown voltage) V(BR)DSS=min(100V), điều kiện VGS = 0 V; ID = 0.25 mA, Thời gian thiết lập kích mở (Turn-on rise time) tr =39 ns, điều kiện VGS = 10 V; RG = 5.6Ω. Thời gian trễ khi kích dẫn (Turn-on delay time) td-on=8 ns, điều kiện VDD = 50 V; RD = 2.2. Thời gian trễ khi off (Turn-off delay time) td-off nó phụ thuộc vào tính chất tải của ta. Thời gian giảm off (Turn-off fall time) tf = 24 ns. Điện áp thuận đặt trên thân diode (Diode forward voltage), VSD = trung bình (0.94V), cực đại (1.5V), điều kiện IF = 28 A; VGS = 0 V. Thời gian phục hồi ngược (Reverse recovery time) trr = 61ns. Ta thấy khả năng đáp ứng của fet rất nhanh, chỉ tính bằng nano giây (ns). Trong ứng dụng này nguồn kích fet khoảng 10V, và nguồn cấp VDSS=12V, vì ở đây tải của ta là động cơ bước 12V, nên không có vấn đề gì. Nguyên lí hoạt động của fet (IRF 540). Nguyên lí cơ bản của fet cho ứng dụng trong đề tài này. Hình 2.6. Mạch kích fet. Khi ta đặt vào “nguồn kích” một mức điện áp đủ kích thì fet sẽ được kích dẫn khi đó ngõ ra “output” như là nối mass. Ngõ ra “output” này ta sẽ nối với một dây tín hiệu điều khiển của step motor, ta có thể hình dung cách điều khiển động cơ cơ bản như sau, vì hai dây nguồn động cơ được nối lên nguồn cấp riêng, nên khi fet được kích thì sẽ có một dòng điện đổ từ nguồn cấp qua cuộn dây động cơ và xuống mass, khi đó động cơ sẽ quay được một góc. Trong hình bên dưới này ta thấy có điện R56, điện trở này sẽ phân cực cho fet, giá trị của nó phụ thuộc vào mức điện áp mà ta muốn đặt vào cực G. Cách tính giá trị cho R56: ta có VGS= [VCC12 /(R31+R56)].R56 Với công thức này ta đã bỏ qua điện áp rơi trên lớp bán dẫn p-n của Opto, thường thì điện áp này khoảng 0.1V đến 0.2V, khi dẫn bảo hòa. Trong mạch thực tế, VCC12=12V, và VGS ta mong muốn khoảng 9V-11V, nên ta tính được R56 khoảng 10KΩ. Trong mạch hoàn chỉnh ta cũng để ý thấy có các diode, những diode này giúp ngăn dòng ngược được sinh ra từ các cuộn dây của động cơ vì cuộn dây của động cơ không phải là hai cuộn dây độc lập mà là một cuộn liền có điểm giữa (center‐tapped ) đơn giản với tap giữa có điện áp cố định. Chúng hoạt động như một bộ tự chuyển đổi. Khi một đầu của cuộn dây bị kéo xuống đầu kia sẽ bị đẩy lên và ngược lại. Khi một công tắc hở, độ tự cảm kickback sẽ làm đầu bên đó của động cơ nối với nguồn dương và bị kẹp bởi các diod. Đầu bên kia bị đẩy lên và nếu nó không đạt được điện áp cung cấp cùng lúc thì sẽ xuống dưới mức 0, đảo chiều điện áp qua công tắc ở đầu đó. Một vài công tắc có thể chịu được sự đảo chiều như vậy nhưng những công tắc khác sẽ bị hư. Kết luận: với tính chất của opto và fet ta có thể thiết kế một mạch điều khiển động cơ bước đơn giản và hiệu quả, còn các chế độ kích khởi động cơ phụ thuộc vào chương trình điều khiển từ vi xử lí do ta tính toán và lập trình. Phần mềm Lưu đồ giải thuật xử lý ảnh. Ta có lưu đồ giải thuật chính cho khối xử lý ảnh của MatLab Kết nối với Camera Xóa tất cả các giá trị mà trước đó đã thực hiện Chụp bức ảnh Ấn nút “Xử Lý Ảnh”? Bắt đầu Lấy tọa độ của hình vẽ thu được lưu vào một mảng dữ liệu Dựa vào cách đi tối ưu để sắp xếp lại các phần tử của mảng này Dựa vào cách di chuyển trục Z; số vòng quay của x,y; chiều quay của x,y mà ta tiếp tục xử lý tọa độ của mảng dữ liệu vừa thu được phía trên để tạo ra thêm 4 mảng dữ liệu điều khiển mới. Kết thúc Đ S Hình 3.2.1 Lưu đồ giải thuật chính của khối xử lý ảnh Giải thuật lấy toạ độ của hình ảnh thu được trên một khung nền cố định: Nền ở đây được chọn là nền trắng, là tập hợp giá trị mức xám cao nhất của 3 màu cơ bản; màu trình bày nội dung là màu xanh dương. Ta có sơ đồ để tách hình vẽ này như sau: Chụp bức ảnh để thu được 3 ma trận màu (RGB) Tách thành 3 ma trận màu riêng biệt Lấy ma trận mức xám màu xanh lá (Green) Chuyển bức ảnh mức xám này sang ảnh đen trắng Lưu tất cả các toạ độ có màu đen vào một mảng dữ liệu Bắt đầu Kết thúc Hình 3.2.1.1.a Lưu đồ giải thuật của khối lấy tọa độ của bức ảnh Giải thuật để lưu toạ độ những điểm ảnh màu đen : Quét tọa độ theo hàng và cột Tọa độ cuối? Bắt đầu Điểm ảnh màu đen tại tọa độ quét? Lưu vào 1 mảng dữ liệu mới Kết thúc Đ S Đ S Hình 3.2.1.1.b Lưu đồ giải thuật của khối lấy tọa độ của bức ảnh màu đen Giả sử A là tên của ma trận 2 chiều của bức ảnh đen trắng; i là biến quét cột; j là biến quét hàng; mảng lưu toạ độ mới theo hàng và cột lần lượt là X và Y ;n là số phần tử của mảng X,Y. Ta có sơ đồ giải thuật chi tiết như sau Khai báo biến i=1, j=1, n=0 i <= số cột A(i,j) = 1 j <= số hàng j = j+1 n = n+1; X(n)=i; Y(n)=j S Đ S Đ i = i+1; j = 1 Bắt Đầu Kết Thúc S Đ Hình 3.2.1.1.c Lưu đồ giải thuật chi tiết của khối lấy tọa độ màu đen của bức ảnh Giải thuật đường đi tối ưu: Dựa vào cách đi như sau: sau khi di chuyển đến một toạ độ nhất định, chúng ta sẽ tiếp tục di chuyển đến toạ độ mà tại đó khoảng cách đến điểm hiện tại là ngắn nhất. Đồng thời ta sẽ loại bỏ toạ độ hiện tại ra khỏi lộ trình di chuyển. Với cách di chuyển như trên sẽ có được một lộ trình với thời gian là ngắn nhất. Từ điểm hiện tại ta sẽ di chuyển đến điểm gần nhất tiếp theo như hình sau. Điểm hiện tại Các điểm sẽ thực hiện tiếp theo Hình 3.2.1.2.a Cách di chuyển tối ưu đến tọa độ tiếp theo Quét tất cả các phần tử của mảng Bắt đầu Tính khoảng cách tất cả điểm so với điểm thứ nhất Lấy tọa ở khoảng cách ngắn nhất lưu vào 1 mảng dữ liệu Phần tử =0? Kết thúc Xóa phần tử của mảng tại vị trí có khoảng cách ngắn nhất Tìm khoảng cách ngắn nhất Đ S Hình 3.2.1.2.b Sơ đồ giải của khối xử lý tọa độ di chuyển tối ưu Như vậy với cách di chuyển trên ta sẽ tạo ra 2 mảng dữ liệu mới X2, Y2; i là biến quét chiều dài mảng; n là số phần tử của X2, Y2 để thực hiện di chuyển tối ưu.Vậy ta sẽ có sơ đồ giải thuật chi tiết như sau: Chiều dài mảng >= 2 i <= chiều dài mảng Tính khoảng cách d từ tọa độ X(i);Y(i) đến X(1);Y(1) i = 2 Min = d Min = d; Vitri = i; i = i+1 d <= Min n = n+1; X1(n)=X(vitri); Y1(n)=Y(vitri); Thay phần tử X(1)=X(vitri); Y(1)=Y(vitri) Xóa phần tử X(vitri); Y(vitri) của X,Y Bắt đầu Khai báo n = 0; i = 2 X=X_data; Y=Y_data A Đ S S Đ Đ S S Đ A X2(1)=X_data(1); Y2(1)=Y_data(1); i=1 i <=chiều dài mảng X Kết thúc X2(i+1)=X1(i); Y2(i+1)=Y1(i); i=i+1 Đ S Hình 3.2.1.2.c Sơ đồ giải thuật di chuyển tối ưu đến tọa độ tiếp theo Như vậy ta sẽ có được 2 mảng X2, Y2 lưu trữ dữ liệu tọa độ của một hành di chuyển tối ưu. Giải thuật di chuyển đầu vẽ tối ưu: Khi vẽ 2 điểm liền kề nhau ta sẽ giữ nguyên đầu viết phía dưới để khi hai trục X,Y quay tới tọa độ mới sẽ tạo nên một đường thẳng liên tục. Điểm hiện tại Các điểm sẽ thực hiện tiếp theo Vẽ liên tục Vẽ không liên tục Hình 3.2.1.3.a Cách di chuyển đầu vẽ tối ưu đến tọa độ tiếp theo Điều kiện để vẽ liên tục là chỉ khi nào tọa độ tiếp theo là 8 lân cận của tọa độ hiện hành. Điều này tương đương với khoảng cách D<2. Ta sẽ tạo ra một mảng dữ liệu lientuc_z để thực hiện nhiệm vụ này. Ta có giải thuật như sau: Tính khoảng cách giữa 2 phần tử liên tiếp của mảng dữ liệu đi tối ưu Khoảng cách < 2 Vẽ không liên tục Lientuc_z=1 Vẽ liên tục Lientuc_z=0 Phần tử cuối? Kết thúc Bắt đầu Phần tử tiếp theo Đ SS Đ SS Hình 3.2.1.3.b Sơ đồ giải thuật của khối xử lý tọa độ di chuyển tối ưu trục Z Bắt dầu i = 1 i<=[(chiều dài mảng X2)-1] Tính khoảng cách D từ tọa độ X2(i+1);Y2(i+1) đến X2(i);Y2(i) D<2 Lientuc(i)=0; (Vẽ liên tục) Lientuc(i)=1; (Vẽ không liên tục) i=i+1 Lientuc_z(1)=2 i=1; i<=[(chiều dài mảng lientuc) -1] Lientuc_z(i+1)=lientuc(i); i=i+1 Lientuc_z[((chiều dài mảng lientuc))+1]=3 Kết thúc SS ĐS ĐS SS ĐS SS Hình 3.2.1.3.c Sơ đồ giải thuật chi tiết của khối xử lý tọa độ tối ưu trục Z Giải thuật để tạo mảng chứa dữ liệu chiều quay và số bước quay của motor mỗi trục X, Y: Ta có sơ đồ giải thuật chung để tìm các giá trị như sau: Lấy hiệu đại số giá tọa độ của 2 phần tử liên tiếp nhau của 2 mảng X, Y Bắt đầu Phần tử cuối? Kết quả=0 Đứng yên; Chiều quay=0 Số vòng = 0 Kết quả>0 Quay trái; Chiều quay=1 Số vòng = kết quả Quay phải; Chiều quay=2 Số vòng = -(kết quả) Phần tử tiếp theo Kết thúc Đ S Đ S Đ S Hình 3.2.1.4.a Sơ đồ giải thuật chung để tìm giá trị của 4 mảng dữ liệu điều khiển Đối với dữ liệu trục X KetquaX=X2(1) – 0; n=0; KetquaX=0 KetquaX<0 ChieuquayX=0 ChieuquayX=2; KetquaX=-(KetquaX) ChieuquayX=1 n=n+1; i=1; cqx(n)=ChieuquayX; svx(n)=KetquaX; i <= [(chiều dài mảng X2)-1] KetquaX=X2(i+1) – X2(i); KetquaX =0 Kết thúc ChieuquayX=0 B C D Bắt đầu S Đ Đ S S Đ Đ S ChieuquayX=1 KetquaX<0 n=n+1; i=i+1; cqx(n)=chieuquay; svx(n)=KetquaX; ChieuquayX=2; KetquaX=-(KetquaX) B C D Đ S Hình 3.2.1.4.b Sơ đồ giải thuật chi tiết tạo ra mảng chiều quay và số vòng của trục X Như vậy ta sẽ có 2 mảng dữ liệu: cqx là mảng lưu trữ dữ liệu chiều quay của motor trục X; svx là mảng lưu trữ dữ liệu số bước quay của motor trục X Đối với dữ liệu trục Y Với cách làm tương tư cũng sẽ được: cqy là mảng lưu trữ dữ liệu chiều quay của motor trục Y; svy là mảng lưu trữ dữ liệu số bước quay của motor trục Y KetquaY=Y2(1) – 0; n=0; KetquaY=0 KetquaY<0 ChieuquayY=0 ChieuquayY=2; KetquaY=-(KetquaY) ChieuquayY=1 n=n+1; i=1; cqy(n)=ChieuquayY; svy(n)=KetquaY; i <= [(chiều dài mảng Y2)-1] KetquaX=Y2(i+1) – Y2(i); KetquaY =0 Kết thúc ChieuquayY=0 F G E Bắt đầu Đ Đ S S S Đ Đ S ChieuquayY=1 KetquaY<0 n=n+1; i=i+1; cqy(n)=chieuquay; svy(n)=KetquaY; ChieuquayY=2; KetquaY=-(KetquaY) F G E S Đ Hình 3.2.1.4.c Sơ đồ giải thuật chi tiết tạo ra mảng chiều quay và số vòng của trục Y Ta đã tạo ra 7 mảng dữ liệu khác nhau như sau: X2,Y2: là tọa độ di chuyển tối ưu lần lượt theo 2 trục X, Y Lientuc_z: cách di chuyển tối ưu của đầu vẽ (1:liên tục, 0:không liên tục) Cqx: Chiều quay motor trục X (0:đứng yên, 1:quay trái, 2:quay phải) Cqy: Chiều quay motor trục Y (0:đứng yên, 1:quay trái, 2:quay phải) Svx: Giá trị quay của trục X (0 -> 160) Svy: Giá trị quay của trục Y (0 -> 160) Như vậy ta đã đi được 50% quãng đường. Công việc còn lại là ta chỉ cần kết nối với vi điều khiển và truyền qua các dữ liệu này thì mô hình cơ khí của chúng ta sẽ vẽ lại được các bức ảnh thu được. Bây giờ ta tiếp tục tìm ra giải thuật để vi xử lý thực hiện công việc còn lại này. Lưu đồ giải thuật vi điều khiển. Để dễ dàng hiểu lưu đồ giải thuật của chương trình, chúng ta cần tìm hiểu bảng ĐỊNH NGHĨA CÁC THÔNG SỐ sau: Vi điều khiển sẽ nhận 5 byte dữ liệu từ bộ đệm nhận của port nối tiếp. Khi nhận đủ 5 byte dữ liệu, vi điều khiển sẽ tiến hành xử lý các dữ liệu này. Các dữ liệu này sẽ được gán một cách tuần tự vào các địa chỉ đã được định nghĩa, bao gồm: Byte thứ nhất CHIEU_QUAY_X Quy định chiều quay của Motor X. Byte thứ hai SO_VONG_XX Quy định số vòng quay của Motor X. Byte thứ ba CHIEU_QUAY_Y Quy định chiều quay của Motor Y. Byte thứ tư SO_VONG_YY Quy định số vòng quay của Motor Y. Byte thứ năm Z_LIENTUC Quy định điểm cần vẽ là gián đoạn hay liên tục so với điểm đã vẽ trước đó. Các giá trị có thể nhận của địa chỉ CHIEU_QUAY_X, CHIEU_QUAY_Y, Z_LIENTUC được cho bởi bảng sau: CHIEU_QUAY_X Giá trị có thể nhận được Quy định 00H Không quay Motor X 01H Quay trái Motor X 02H Quay phải Motor X CHIEU_QUAY_Y 00H Không quay Motor Y 01H Quay trái Motor Y 02H Quay phải Motor Y Z_LIENTUC 00H Điểm vẽ liên tục 01H Điểm vẽ gián đoạn 02H Điểm vẽ đầu tiên 03H Điểm vẽ cuối cùng Lưu đồ giải thuật của chương trình chính. Mục tiêu: sau khi Reset các trục toạ độ X, Y, Z về toạ độ ban đầu, chờ dữ liệu được gửi từ Matlab vào vi điều khiển. Khi đã nhận đủ dữ liệu (5 byte dữ liệu), tiến hành xử lý dữ liệu nhận được. Đầu tiên, xét giá trị của Z_LIENTUC. Giả sử nếu điểm cần vẽ là điểm vẽ đầu tiên thì Z_LIENTUC có giá trị là 02H (Xem bảng giá trị của Z_LIENTUC), khi đó tiến hành quay trục X, Y đến toạ độ của điểm đầu tiên cần vẽ (gọi chương trình con QUAY_X_VA_Y-chương trình này sẽ được trình bày bên dưới), hạ trục Z từ vị trí Reset ban đầu xuống (gọi chương trình con MOTOR_Z) thực hiện vẽ điểm đầu tiên. Lưu ý, lúc này trục Z vẫn nằm ở vị trí vẽ điểm đầu tiên (không nâng trục Z lên). Bốn dữ liệu còn lại CHIEU_QUAY_X, SO_VONG_XX, CHIEU_QUAY_Y, SO_VONG_YY sẽ được xử lý ở chương trình con QUAY_X_VA_Y, vấn đề này sẽ trình bày ở phần Lưu đồ giải thuật của các chương trình con. Như vậy, sau khi vẽ điểm đầu tiên, tiến hành gửi thông báo đã vẽ xong và tiếp tục chờ dữ liệu kế tiếp. Nếu điểm cần vẽ là điểm vẽ liên tục so với điểm vẽ trước đó ( khoảng cách giữa 2 điểm này rất nhỏ) thì Z_LIENTUC có giá trị là 00H, trục Z vẫn nằm ở toạ độ của điểm vẽ trước đó (không nâng trục Z). Thực hiện vẽ điểm bằng cách quay trục X, Y đến toạ độ của điểm cần vẽ. Sau đó gửi thông báo đã vẽ xong và tiếp tục chờ dữ liệu kế tiếp. Nếu điểm cần vẽ là điểm vẽ gián đoạn so với điểm vẽ trước đó ( khoảng cách giữa 2 điểm này lớn) thì Z_LIENTUC có giá trị là 01H, trục Z vẫn nằm ở toạ độ của điểm vẽ trước đó.Thực hiện nâng trục Z lên 5mm (gọi CTC MOTOR_1Z_UP), quay trục X, Y đến toạ độ của điểm cần vẽ. Tiến hành vẽ điểm bằng cách hạ trục Z xuống 5mm (gọi CTC MOTOR_DOWN). Sau đó gửi thông báo đã vẽ xong và tiếp tục chờ dữ liệu kế tiếp. Nếu điểm cần vẽ là điểm vẽ cuối cùng kết thúc quá trình thực hiện thì Z_LIENTUC có giá trị là 03H, trục Z vẫn nằm ở toạ độ của điểm vẽ trước đó.Thực hiện nâng trục Z lên 5mm (gọi CTC MOTOR_1Z_UP), quay trục X, Y đến toạ độ của điểm cần vẽ. Tiến hành vẽ điểm bằng cách hạ trục Z xuống 5mm (gọi CTC MOTOR_DOWN). Sau đó tiến hành reset các trục toạ độ X, Y, Z để sẵn sàng vẽ hình tiếp theo (nếu có) và gửi thông báo đã hoàn thành quá trình vẽ hình. Lưu đồ của chương trình chính được trình bày như sau: Lưu đồ giải thuật của các chương trình con. Chương trình con reset các trục toạ độ X, Y, Z Chương trình con quay đồng thời trục toạ độ X và Y Chương trình con hạ-nâng trục Z lên 5mm để vẽ điểm gián đoạn hay liên tục. Chương trình con hạ trục Z xuống vẽ điểm từ vị trí reset ban đầu. Chương trình con gửi thông báo vẽ xong điểm cần vẽ. Chương trình con tạo trễ 2ms Chương trình ngắt port nối tiếp. Lưu đồ giải thuật của giao tiếp matlab với vi điều khiển thông qua chuẩn RS232 Lưu đồ giải thuật hàm truyền dữ liệu từ matlab Các Khai báo: BytesAvailableFcnCount; BytesAvailableFcnMode; BytesAvailableFcn; Bắt đầu Xử lý dữ liệu truyền Mở cổng và truyền dữ liệu đã xử lý Kết thúc Hình 3.3.1 Lưu đồ giải thuật của hàm truyền dữ liệu Luu đồ giải thuật hàm nhận dữ liệu từ matlab Đọc dữ liệu từ port nối tiếp và lưu vào biến Data_in Bắt đầu Lưu lại dữ liệu Data_in này Thực hiện công việc khi điều kiện đúng Kết thúc Xét điều kiện Data_in Thực hiện công việc khi điều kiện sai Đóng cổng Hình 3.3.2 Lưu đồ giải thuật của hàm truyền dữ liệu Hình ảnh mô hình phần cứng sau khi thi công. Chương IV. TỔNG KẾT Kết quả đạt được sau khi thực hiện. Sau khi chụp bức ảnh thu được mô hình cơ khí vẽ lại bức ảnh khá giống như bức ảnh mẫu. Tuy nhiên do cơ khí không thật hoàn hảo nên hình ảnh vẽ ra không được như mong đợi, nhưng kết quả này có thể chấp nhận được. Kết này có được là do mạch điều khiển và mạch công suất của Motor bước hoạt động rất ổn định. Cách di chuyển của trục Z và 2 trục X,Y rất hợp lý để vẽ những ảnh, cách di chuyển tối ưu đến tọa độ tiếp theo cũng tiết kiệm khá nhiều thời gian. Hạn chế của đề tài. Tốc độ động cơ bước hơi chậm, do vậy thời gian hoàn thành công việc vẽ khá dài, tùy thuộc vào số lượng điểm ảnh thu được trên bức ảnh; thời gian để vẽ 2 điểm liên tiếp nhau còn hơi lâu. Hình vẽ được không trơn tru như hình mẫu, vẫn còn có những chỗ bỏ mất điểm ảnh và có những nơi không có điểm ảnh mà vẫn vẽ. Nguyên nhân Giải thích nguyên nhân là do đáp ứng tốc độ của động cơ bước không được cao làm cho việc di chuyển từ điểm này điến điểm khác khá dài. Ánh sáng không tốt làm cho bức ảnh được chụp để xử lý không còn giống như bức ảnh ban đầu nên sau khi thực hiện sẽ không còn đúng như bức ảnh mẫu, điều này giải thích nguyên nhân gây ra hiện tượng có thêm những điểm ảnh không mong muốn. Còn về phần hình vẽ không giống như ban đầu, nguyên nhân là do mô hình cơ khí chuyển đổi chuyển động tròn của motor ra các chuyển động thẳng của thanh trượt còn chưa tốt. Do đó trên hình vẽ thu được vẫn còn có những chỗ đứt gẫy. Hướng khắc phục Do đáp ứng của motor bước khá chậm nên phần tăng tốc độ vẽ của mô hình dường như không thể thực hiện. Điều này chỉ có thể thay động cơ bước này bằng động cơ bước khác có đáp ứng nhanh hơn. Còn để hình vẽ tốt hơn ta nên cần đưa đủ ảnh sáng ở vị trí Webcam để bức ảnh thu được được tốt Thay chuyển động cơ khí thành các thanh Vitme bi để có một chuyển động thẳng tốt hơn. Hướng phát triển của đề tài. Theo hướng sắp tới là thay đầu vẽ bằng đầu cắt laser để thực hiện việc khắc các chi tiết hoa văn phức tập hơn trên các tấm kim loại, hay các ứng dụng cắt phôi theo những hình dạng được vẽ trực tiếp lên chúng…

Các file đính kèm theo tài liệu này:

  • doc82398297-Bao-Cao.doc