1. Trang chủ
  2. » Công Nghệ Thông Tin

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

21 6K 20

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 516,79 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ VIỄN THÔNG

Giáo Viên hướng dẫn :

Sinh viên thực hiện MSSV Lớp

Hà Nội 12/2013

Trang 2

MỤC LỤC

Trang 3

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

Trang 4

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

Trang 5

Hình ảnh của kit launchpad MSP430

Trang 6

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ụ

Trang 7

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

Trang 8

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()

Trang 9

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

ĐỘNG CƠ

I.Sơ đồ mạch

1.Sơ đồ khối

Khối bàn phím

Khối công suất

Khối hiển

thị

Khối vi sử lý

Trang 10

2.Sơ đồ nguyên lý

Trang 11

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

Trang 12

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

Trang 13

-Sau khi nạp chương trình xong ta lấy chip ra và gắn vào mạch mà ta đã làm.

Sơ đồ chân của msp430g2553

Hình ảnh của chip

Trang 14

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

1.Hình ảnh mạch in

Trang 15

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

Trang 16

#define RW P2_out->_bit.b5

#define RS P1_out->_bit.b7

#define EN P2_out->_bit.b4

#define DATA_4 P2_out->_bit.b3

#define DATA_5 P2_out->_bit.b2

#define DATA_6 P2_out->_bit.b1

#define DATA_7 P2_out->_bit.b0

Trang 17

void set_data_lsb( unsigned char data){ char convert=0;

convert=data&0x01;

if(convert==0x01)DATA_4=1;

else DATA_4=0;convert=data&0x02;if(convert==0x02)DATA_5=1;

else DATA_5=0;convert=data&0x04;if(convert==0x04)DATA_6=1;

else DATA_6=0;convert=data&0x08;if(convert==0x08)DATA_7=1;

else DATA_5=0;convert=data&0x40;if(convert==0x40)DATA_6=1;

else DATA_6=0;convert=data&0x80;if(convert==0x80)DATA_7=1;

Trang 18

void lcd_putchar( char data)

Trang 19

if((P1IN & BIT1) == 0){

TA0CCTL1 = OUTMOD_7 + CCIE;

P1DIR |= BIT6 +BIT7 ;

P1DIR |= BIT4+ BIT5 ;

Trang 20

P1DIR &= ~(BIT3 + BIT2 +BIT1) ; P1REN |= (BIT3 +BIT2 +BIT1 ); P1SEL |= (BIT6) ;

Trang 21

TÀI LIỆU THAM KHẢO

www.diendanti.com

www.alldatasheet.com

www.diedandientuvietanam.net

google.com.vn

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

HÌNH ẢNH LIÊN QUAN

Hình ảnh của kit launchpad MSP430 - ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ ENCODER
nh ảnh của kit launchpad MSP430 (Trang 5)
Hình ảnh trên thực tế của L298 - ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ ENCODER
nh ảnh trên thực tế của L298 (Trang 12)
Hình ảnh của chip - ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ ENCODER
nh ảnh của chip (Trang 13)

TỪ KHÓA LIÊN QUAN

w