ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ ENCODER

21 6K 20
ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ ENCODER

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

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

Thông tin tài liệu

Động cơ encoder được ứng dụng vào nhiều lĩnh vực trong cuộc sống (trong công nghệ chế tạo robot…).mach điều khiển động cơ có ý nghĩa rất quan trọng trong việc điều khiển động cơ theo mục đích của người sử dụng.đặc điểm của mạch điều khiển là động cơ có thể quay thuận hoặc quay nghịch ,tốc độ của động cơ có thể tăng hoặc giảm tùy theo ý thích .mạch sử dụng chíp vi điều khiển của hãng TI .

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG ====o0o==== ĐỒ ÁN II Đề Tài : ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ ENCODER Giáo Viên hướng dẫn : Sinh viên thực hiện MSSV Lớp Hà Nội 12/2013 1 | P a g e MỤC LỤC 2 | P a g e LỜI NÓI ĐẦU Động cơ encoder được ứng dụng vào nhiều lĩnh vực trong cuộc sống (trong công nghệ chế tạo robot…).mach điều khiển động cơ có ý nghĩa rất quan trọng trong việc điều khiển động cơ theo mục đích của người sử dụng.đặc điểm của mạch điều khiển là động cơ có thể quay thuận hoặc quay nghịch ,tốc độ của động cơ có thể tăng hoặc giảm tùy theo ý thích .mạch sử dụng chíp vi điều khiển của hãng TI . Đồ án II chúng em làm lần này giúp chúng em rèn lyện thêm các kỹ năng lập trình cho kit launchpad MSP430, kỹ năng làm mạch in trên orcard hoặc altium. vận dụng những kiến thức đã học trên giảng đường vào thực tế và đồng thời rèn luyện được kỹ năng làm việc nhóm 3 | P a g e CHƯƠNG 1: CƠ SỞ LÝ THUYẾT I.Tìm hiểu chung về kít launchpad MSP430. 1.Giới thiệu chung -MSP430 là họ vi điều khiển cấu trúc RISC 16-bit được sản xuất bởi công ty Texas Instruments. -MSP là chữ viết tắt của “MIXED SIGNAL MICROCONTROLLER” là dòng vi điều khiển siêu tiết kiệm năng lượng, sử dụng nguồn thấp, khoảng điện áp nguồn cấp từ 1.8V – 3.6V. MSP430 kết hợp các đặc tính của một CPU hiện đại và tích hợp sẵn các module ngoại vi. -MSP430 Tích hợp phần mô phỏng trên kit Nghĩa là bạn có thể nạp chương trình và gỡ lỗi project của bạn mà không cần thêm công cụ nào khác. Đặc biệt hơn là bạn có thể dùng Kit để nạp và debug cho tất cả các chip MSP430 nằm trên một mạch khác -MSP430 Tương thích với các module hỗ trợ Các chân của MSP430G2 được thiết kế rất thoáng. Các chân này giúp cho việc cắm các module hỗ trợ khác rất dễ dàng, để thêm các tính năng như wireless, capacitive touch… -Hỗ trợ các vi điều khiển MSP430G2xx Kit MSP430 hỗ trợ các vi điều hiển dòng MSP430G2xx. Đây là các vi điều khiển tần số dao động có thể lên đến 16MHZ, bộ nhớ lên đên 16KB Flash, 512B RAM, có tích hợp ADC, timer và các module giao tiếp 4 | P a g e Hình ảnh của kit launchpad MSP430 2.Các ứng dụng của kít launchpad MSP430 Kit MSP430 LaunchPad có thể được sử dụng trong rất nhiều các ứng dụng như: - Làm máy nghe nhạc - Điều khiển động cơ bước - Hiển thị Graphic LCD - Robot dò đường - Xe tự cân bằng - Robot - Ứng dụng trong đo lường - Led cube … 5 | P a g e II.Tìm hiểu về giao tiếp LCD -MSP430 là loại vi điều khiển tiết kiệm năng lượng dùng nguồn 3V3 trong khi màn hình LCD1602 thông dụng lại dùng 5V. Thật ra trong lúc giao tiếp nếu chỉ gửi lệnh mà không cần đọc thì thiết lập phần cứng cũng không quá khó khăn, tuy nhiên trong giao tiếp có cả việc đọc cờ báo bận, nên dĩ nhiên việc giao tiếp trên trở nên không ổn định về lâu dài, nhất là cho MSP430. Thật may mắn cho mình là chip HD44780 (chip điều khiển màn hình LCD, mình giao tiếp với chip này) có hỗ trợ cả nguồn 3V3, và khi tra thêm trong datasheet có nói về một vấn đề là với nguồn 3V3 thì độ tương phản sẽ không được cao (cụ thể hơn là mức áp phân cực cho chân V0). Như vậy cần có một mức áp cao hơn vào chân này. Việc tạo mức áp cao này bạn có thể dùng một mạch boost, rồi so sánh với GND cũng được, riêng cá nhân mình dùng IC7660 tạo mức áp âm khoảng -3V so sánh với 3V3 (rất dễ dùng và cũng rẻ, chỉ cần lắp thêm 2 tụ ngoài) -LCD có 3 chân điều khiển là RS, R/W, E. Và 8 chân dữ liệu từ D0-D7. tóm tắt bảng đó theo dạng tính năng từng chân như sau: Chân RS: Chọn thanh ghi. Có 2 thanh ghi trong chip LCD. Một thanh ghi lệnh (IR) và một thanh ghi dữ liệu (DR). Như vậy khi cần ghi lệnh điều khiển hoạt động LCD thì RS=0. Khi cần ghi dữ liệu thì RS=1 Chân R/W: Gửi hay đọc dữ liệu. Khi đọc dữ liệu từ chip LCD gửi về thì R/W=1, khi không ghi dữ liệu thì R/W=0 Chân E (không có trong bảng): đây là chân enable của chip LCD. Do giao tiếp dữ liệu của LCD khá giống giao tiếp song song nên mục đích chân này là: khi ghi dữ liệu, sau khi tín hiệu ngõ ra của các chân dữ liệu đã đúng thì phát một xung tích cực mức cao sẽ làm chip LCD đọc tín hiệu ở các chân dữ liệu; còn khi đọc dữ liệu, phát xung này sẽ làm chip LCD xuất giá trị dữ liệu cần đọc ra chân dữ liệu. Dựa trên bảng này mình đã define một số lệnh cũng như chi tiết các bit để dễ nhớ hơn. Cách sử dụng mình đã có kèm một file main.c để ví dụ 6 | P a g e Vấn đề tiếp theo khi giao tiếp mà mình nghĩ :chip này hỗ trợ tần số giao tiếp là bao nhiêu? Chân E phát xung như thế nào? Xuất dữ liệu trên các chân tín hiệu ra sao? Điều đầu tiên như mình đã nói, chip HD44780 có hỗ trợ giao tiếp dữ liệu với vi điều khiển chỉ cần dùng 4 dây thay vì 8 dây (như vậy rõ ràng là khi truyền dữ liệu cũng phải truyền 2 lần thay vì 1 lần cho 1 byte như chế độ 8 dây). Và vì lý do kinh tế cũng như sự gọn gàng khi đi dây bus, mình chỉ viết thư viện cho chế độ 4 dây (4bit), các bạn nếu cần có thể viết lại để hỗ trợ chế độ 8bit. Ngoài ra trong thư viện của mình cũng mặc định là bạn dùng 2 dòng của LCD, và khi ghi không dịch màn hình Và cũng như 1 quy ước để khỏi nhầm lẫn, mình sẽ chọn BIT4 – BIT7 cho chân D4 – D7, các chân này được define trong file .h. Các bạn vào define các chân cho các dây dữ liệu và điều khiển. Kế đến là vấn đề chuyển dữ liệu ra sao. Về vấn đề này, bạn có thể tham khảo trang 200 của datasheet. Từ trang này mình đã viết hàm lcd_check_busy(), lcd_send_data() và lcd_send_instruction(). Mình chỉ làm khác thư viện của C18 một điểm ở chỗ chân E. Thư việc C18 sẽ xuất tín hiệu ở chân dữ liệu D4-D7 trước, sau đó mới phát một xung cao ở chân E. Mình thì Kéo chân E lên mức cao rồi mới xuất dữ liệu ở chân ra, sau đó kéo chân E về lại mức 0. Kết quả đều như nhau, bạn có thể thử và xem kết quả. Trong quá trình viết code, chỉ có hàm khởi tạo lcd_init() là hơi đặc biệt vì theo như trong datasheet, trong mạch của chip LCD có phần khởi tạo, tuy nhiên không phải lúc nào cũng thành công. Ngoài việc đợi 10ms (code của mình đợi 15ms) cho mức áp LCD đạt mức cần thiết thì để phần khởi tạo thành công 100%. Hàm lcd_init()cần phải định nghĩa 3 khoảng thời gian (trong file .h) là 15ms, 5ms và 500us dựa trên MCLK của MSP430 mà các bạn đang dùng (mặc định là 1,1MHZ). Các thông số đưa vào hàm lcd_init() có 3 phần tương ứng 3 thanh ghi: Function, Display, Entry. Thông số đầu tiên đưa vào là kiểu font, kế đến là cách hiển thị và thứ ba là chế độ tự động dịch chuyển. Kế đến là các địa chỉ trên màn hình. Module LCD có 3 loại bộ nhớ, CGROM, CGRAM và DDRAM. CGROM là bộ nhớ ROM (nên bạn không tác động đến 7 | P a g e nó được) chứa các mảng ký tự theo địa chỉ trên bảng code ASCII. Còn DDRAM dữ liệu trên màn hình LCD. Như vậy khi bạn gửi dữ liệu cần hiển thị lên DDRAM thì địa chỉ DDRAM tại đó sẽ tự động hiển thị dữ liệu tại địa chỉ CGROM tương ứng. Nói tóm lại là dữ liệu hiển thị trên DDRAM và CGROM là giống nhau. Còn về bộ nhớ khá đặc biệt CGRAM mình sẽ bàn sau. dùng hàm lcd_set_ddram_add() để chọn ô hiển thị trên LCD. Như mình đã nói mỗi hàng trên LCD có 40 ký tự nhưng do giới hạn kích thước màn hình nên bạn chỉ có thể thấy 16 ký tự. Nếu muốn thấy những ký tự kia thì cần phải dịch màn hình sang phải hay trái bằng hàm lcd_shift_display(). Khi bạn ghi dữ liệu vào một ô địa chỉ DDRAM thì con trỏ tự động chuyển sang địa chỉ kế tiếp, do đó bạn có thể ghi liên tục mà không cần phải chọn lại địa chỉ nếu như địa chỉ là liên tục với nhau. Điều đặc biệt bạn có thể thấy là DDRAM có 128 địa chỉ (7bit) nhưng mỗi hàng chỉ có 40 địa chỉ, nếu ghi vào những địa chỉ còn lại thì sao? Mình đã thử và thấy rằng những ô địa chỉ đó bị chồng lấn lên những ô khác nên tốt nhất bạn nên dùng đúng như khuyến cáo của datasheet: hàng trên từ 0 - 39 ; hàng dưới từ 64 - 103. Như vậy với các dòng lệnh trên bạn đã có thể hiển thị theo ý mình muốn, sau khi dùng lcd_init() để khởi tạo, bạn có thể dùng lệnh lcd_clear_all() để xóa hết màn hình và reset địa chỉ DDRAM thành 0. Sau đó nếu muốn ghi một ký tự bạn dùng hàm lcd_send_data(), nếu muốn ghi một đoạn chữ bạn dùng hàm lcd_send_string(). 8 | P a g e CHƯƠNG 2: TÌM HIỂU VỀ MACH ĐIỀU KHIỂN ĐỘNG CƠ I.Sơ đồ mạch 1.Sơ đồ khối 9 | P a g e Khối bàn phím Khối công suất Khối hiển thị Khối vi sử lý 2.Sơ đồ nguyên lý 10 | P a g e [...]...II.Tìm hiểu từng linh kiện 1.Màn hình LCD 1602 -LCD có chức năng hiển thị tốc độ của động cơ LCD 1602 datasheet Tên các các chân 1->16 11 | P a g e 2.IC L298 -Chức năng chính của L298 là dùng để khuếch đại công suất của động cơ L298 datasheet Hình ảnh trên thực tế của L298 12 | P a g e 3.Chíp MSP430 G2553 -chíp này được gắn trên kit launchpad MSP430

Ngày đăng: 01/12/2014, 00:00

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

    • I.Tìm hiểu chung về kít launchpad MSP430.

      • 1.Giới thiệu chung

      • 2.Các ứng dụng của kít launchpad MSP430

      • II.Tìm hiểu về giao tiếp LCD

      • CHƯƠNG 2: TÌM HIỂU VỀ MACH ĐIỀU KHIỂN ĐỘNG CƠ

        • I.Sơ đồ mạch

          • 1.Sơ đồ khối

          • 2.Sơ đồ nguyên lý

          • II.Tìm hiểu từng linh kiện

            • 1.Màn hình LCD 1602

            • 2.IC L298

            • 3.Chíp MSP430 G2553

            • III.Hình ảnh liên quan đến mạch

              • 1.Hình ảnh mạch in

              • 2.Hình ảnh của mạch sau khi hoàn thành

              • IV.MÃ NGUỒN

              • TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan