1. Trang chủ
  2. » Luận Văn - Báo Cáo

Điều khiển tốc độ động cơ DC sử dụng vi điều khiển avr

45 2,9K 7

Đ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 45
Dung lượng 1,72 MB

Nội dung

Điều khiển tốc độ động cơ DC sử dụng vi điều khiển avr

Trang 1

MỤC LỤC

Trang 2

LỜI MỞ ĐẦU

Từ khi công nghệ chế tạo loại vi mạch lập trình ra đời đã đem đến các kỹ thuật điềukhiển hiện đại có nhiều ưu điểm hơn so với việc sử dụng các mạch điều khiển lắp rápbằng các linh kiện rời như kích thước nhỏ, giá thành rẻ, khả năng làm việc tin cậy, côngsuất tiêu thụ nhỏ Hàng loạt nhà sản xuất MCU ra đời như Atmel, Philip, Motorola vớihàng loạt chip với nhiều tính năng vô cùng phong phú và đa dạng Ngày nay, lĩnh vựcđiều khiển đã được ứng dụng rộng rãi trong các thiết bị, sản phẩm phục vụ cho nhu cầusinh hoạt hàng ngày của con người như máy giặt, đồng hồ báo giờ… đã giúp cho đờisống của chúng ta ngày càng hiện đại và tiện nghi hơn Bên cạnh đó, động cơ servo vớinhiều kiểu dáng và kích thước cũng ngày càng được ứng dụng trong những thiết bị yêucầu có độ chính xác cao về tốc độ và số vòng quay, hoạt động linh hoạt với nhiều chứcnăng khác nhau như trong những cánh tay rôbốt trong công nghiệp, rôbốt dò phá bommìn trong quân đội, các động cơ trong mô hình xe hơi, máy bay, máy CNC …

Trong số những nhà sản xuất MCU 8 bit thì Atmel đã trở nên quá quen thuộc vớigiới sinh viên, kỹ thuật Việt Nam Nhóm chúng em tìm hiểu đề tài về MCU AVR – mộttrong những MCU được sử dụng rất rộng rãi trong kỹ thuật điều khiển vì vậy nhóm em

xin chọn đề tài: “ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ DC SỬ DỤNG VI ĐIỀU

KHIỂN AVR” Vì thời gian và kiến thức có hạn nên trong nội dung đề tài chúng em chỉ

dừng lại đến việc điều khiển tốc độ động cơ ở chế độ không tải bằng cách tăng giảm thời gian T ON của xung PWM, đảo chiều quay, hãm động cơ và hiển thị các thông số này trên LCD

Trang 3

LỜI CẢM ƠN

Trong quá trình thực hiện đồ án chúng em đã nhận được sự hướng dẫn và giúp đỡ

tận tình của thầy HOÀNG ĐÌNH KHÔI Chúng em xin chân thành cảm ơn thầy cùng

toàn thể thầy cô trong Khoa Điện

Đồng thời tôi cũng xin chân thành cảm ơn các bạn trong lớp ĐHĐI5B đã đóng góp ýkiến và cung cấp một số tài liệu giúp đỡ chúng em

Dù đã cố gắng rất nhiều, nhưng do đây là lần đầu tiên làm Đồ Án vì vậy trong quátrình làm còn có những thiếu sót Nên nhóm chúng em rất mong nhận được sự góp ý củaquý thầy cô và toàn thể các bạn

Trang 4

Nhận xét

(Của giáo viên hướng dẫn)

TPHCM, ngày … tháng … năm 2014

Giáo viên hướng dẫn

Nhận xét

(Của giáo viên phản biện)

Trang 5

TPHCM, ngày … tháng … năm 2014

Giáo viên phản biện

Trang 6

PHẦN 1 VI ĐIỀU KHIỂN AVR

I GIỚI THIỆU AVR MCU ATMEL

1 Giới thiệu:

AVR là một họ vi điều khiển do hãng Atmel sản xuất Atmel cung cấp các vi điều khiển phổ biến như 8051, AT91, ARM7, Atmel AVR 8-bit RISC, và mới đây là DSP dual- CPU AT57 Atmel AVR32 là một vi điều khiển lai DSP với 7 tầng pipeline và khả năng thực thi song song AVR là chip vi điều khiển 8 bits với cấu trúc tập lệnh đơn giản hóa – RISC (Reduced Instruction Set Computer), một kiểu cấu trúc đang thể hiện ưu thế trong các bộ xử lí.

Atmel ATMEGA16

Kết nối phần cứng cho AVR đơn giản với những linh kiện thông dụng như điện

trở, tụ điện, thạch anh Dòng ra điều khiển Port lớn và không cần dùng điện trở kéo.

Thiết kế mạch nạp cho AVR khá đơn giản giao tiếp qua cổng LPT, COM, USB Hỗ trợ ISP lập trình trực tiếp trên mạch Hỗ trợ lập trình trên nền ngôn ngữ ASM, C với nhiều công cụ hỗ trợ như CodeVision, AVR Studio.

Hầu hết các chip AVR có những tính năng sau:

- Xung External OSC lên đến 16Mhz và Internal OSC 8Mhz.

- Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần và dung lượng lớn

có thể ghi và xóa trên 1000 lần Bên cạnh đó bộ nhớ EEPROM có thể lập trình được.

- 32 Port xuất nhập.

- 8 bits, 16 bits timer/counter tích hợp PWM.

- Các bộ chuyển đối Analog – Digital phân giải 10 bits

Trang 7

- Analog comparator.

- Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232).

- Giao diện nối tiếp Two -Wire -Serial (tương thích chuẩn I2C) Master và Slaver.

- Giao diện nối tiếp Serial Peripheral Interface (SPI).

3 Một số dòng AVR phổ biến

- AT90S1200; AT90S2313

- AT90S2323; AT90S2343; AT90S2333; AT90S4433

- AT90S4414; AT90S8515; AT90S4434; AT90S8535

- ATtiny10; ATtiny11; ATtiny12; ATtiny15; ATtiny22; ATtiny26

- ATmega8/8515/8535; ATmega16; ATmega161; ATmega162; ATmega163; ATmega169; ATmega32; ATmega323; ATmega103; ATmega64/128/2560/2561

II ATMEGA16 – KIẾN TRÚC TỔNG QUAN

1 Ưu điểm:

- Tốc độ xử lý cao, tiêu thụ điện năng thấp

- Kiến trúc 131 tập lệnh thưc thi hầu hết trong mỗi chu kỳ xung clock

- 32x8 thanh ghi đa dụng

- Đạt tốc độ tối đa 16MIPS ở 16Mhz xung clock

- Dung lượng bộ nhớ: 16Kb Flash, 512 EEPROM, 1kb Internal SRAm

- Khả năng ghi và xóa có thể đạt đến 10000 lần, lưu trữ trong thời gian dài trên

20 năm/85 o C-100 năm 25 o C.

- Giao tiếp chuẩn JTAG hỗ trợ debug, Lock, Fuse bit

- 2 bộ Timer 16 bit, 1 bộ timer 16 bit, 4 kênh PWM

- 8 kênh ADC 10 bit, 32 port xuất nhập

- Hỗ trợ gioa tiếp I2C, USART, SPI

- Hoạt động tốt ở hiệu điện thế 4.5V - 5.5 V

Trang 8

2 Cấu trúc Atmega16

2.1 Sơ đồ chân

Trang 9

tương tự số PORT A thiết kế

PORT B: Là

thường 8 bit PORT C: Là PORT

Trang 10

3 Các khối chính:

Trang 11

AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (data memory bus) và đường truyền cho bộ nhớ chương trình (program memory bus) được tách riêng Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị ngoại

vi, với register file Trong khi đó program memory bus có độ rộng 16 bits và chỉ phục

vụ cho instruction registers.

3.2 ALU

ALU làm việc trực tiếp với các thanh ghi chức năng chung Các phép toán được thực hiện trong một chu kỳ xung clock Hoạt động của ALU được chia làm 3 loại: đại số, logic và theo bit.

3.3 Thanh ghi trạng thái SREG

Đây là thanh ghi 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và logic.

- C: Carry Flag cờ nhớ

- Z: Zero Flag Cờ zero

- N: Negative Flag kết quả phép toán âm

- V: Two’s complement overflow cờ bù 2

- S: Sign bit (S=N XOR V) kiểm tra 2 cờ N và V

- H: Half Carry Flag được sử dụng trong BCD cho một số toán hạng

- T: Transfer bit used by BLD and BST instructions được sử dụng làm nơi trunggian trong các lệnh BLD, BST

- I: Global Interrupt Enable/Disable Flag đây là bit cho phép toàn cục ngắt Nếu bitnày ở trạng thái logic 0 thì không có một ngắt nào được phục vụ

Trang 12

3.4 Thanh ghi chức năng chung

- Liên quan trực tiếp đến hoạt động thực hiện lệnh của CPU

- Được đặt ở 32 vị trí đầu tiên trong bộ nhớ dữ liệu từ địa chỉ 00H đến 31H và khôngnằm trong vùng địa chỉ dành cho bộ nhớ SRAM

- Các thanh ghi R26 đến R31 ngoài chức năng thông thường còn có thêm chức năngdùng làm con trỏ 16 bít trong chế độ truy cập địa chỉ gián tiếp vào bộ nhớ dữ liệu

3.5 Con trỏ ngăn xếp Stack Pointer:

Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit dùng để lưu trữ biến trong quá trình tính toán Stack được hiểu

Trang 13

như là 1 “tháp” dữ liệu, dữ liệu được chứa vào stack ở đỉnh “tháp” và dữ liệu cũng được lấy ra từ đỉnh Kiểu truy cập dữ liệu của stack gọi là LIFO.

Khai báo SP tại một vùng nhớ trong SRAM với địa chỉ của SP thiết lập >$60 Con trỏ giảm địa chỉ xuống 1 khi dữ liệu được đưa vào Stack với lệnh PUSH và hai khi có Subroutine hoặc Interrupt được gọi Con trỏ tăng địa chỉ lên 1 khi có lệnh POP dữ liệu thực hiện và lên hai khi trả dữ liệu về cho chương trình con.

4 Bộ nhớ - Memory:

4.1 Bộ nhớ chương trình Flash

Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình với độ rộng 16 bit Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu 8K x 16.

Bộ nhớ chương trình chỉ gồm 1 phần là Application Flash Section nhưng trong các chip AVR mới chúng ta có thêm phần Boot Flash section Thực chất, application section bao gồm 2 phần: phần chứa các instruction và phần chứa interrupt vectors.

Trang 14

Các vector ngắt nằm ở phần đầu của application section từ địa chỉ 0x0000 và dài đến bao nhiêu tùy thuộc vào loại chip và phần chứa instruction nằm liền sau đó Các chương trình được viết sau địa chỉ đó.

4.2 Bộ nhớ dữ liệu SRAM:

Đây là phần chứa các thanh ghi quan trọng nhất của chip, việc lập trình cho chip phần lớn là truy cập bộ nhớ này và bộ nhớ này gồm các phần sau:

Phần 1: là phần đầu tiên trong bộ nhớ dữ liệu bao gồm 32 thanh General

Purpose Rgegister – GPR Tất cả các thanh ghi này đều là các thanh ghi 8 bits Tất cả các chip trong họ AVR đều bao gồm 32 thanh ghi Register File có địa chỉ tuyệt đối từ 0x0000 đến 0x001F Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến 255 hoặc các giá trị có dấu từ -128 đến 127 hoặc mã ASCII của một ký tự nào đó…Các thanh ghi này được đặt tên theo thứ tự là R0 đến R31 Chúng được chia thành 2 phần, phần 1 bao gồm các thanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16 đến R31.

Trang 15

Phần 2: là phần nằm ngay sau SFR bao gồm 64 thanh ghi I/O hay còn gọi là

vùng nhớ I/O Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi Vùng nhớ I/O có thể được truy cập như SRAM hay như các thanh ghi I/O Nếu sử dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của chúng được tính

từ 0x0020 đến 0x005F Nhưng nếu truy xuất như các thanh ghi I/O thì địa chỉ của chúng đựơc tính từ 0x0000 đến 0x003F.

Phần 3: Internal SRAM là vùng không gian cho chứa các biến trong lúc thực thi

Trang 16

III CÁC MODULE ĐIỀU KHIỂN TRONG ATMEGA 16

1 Input & Output

1.1 Giới thiệu

Vi điều khiển ATmega16 có 32 đường vào ra chia làm bốn PORT: PORTA – PORTB – PORTC – PORTD mỗi PORT 8bit có thể tương tác điều khiển từng bit một Các cổng ra có điện trở nội kéo lên nên khi dùng chức năng Input ta không cần dùng điện trở kéo lên ở bên ngoài Các PORT được điều khiển bởi các bộ thanh ghi sau: thanh ghi

dữ liệu cổng PORT, thanh ghi dữ liệu điều khiển cổng DDR và cuối cùng là địa chỉ chân vào của cổng PIN.

1.2 Thanh ghi DDR

Đây là thanh ghi 8 bit (ta có thể đọc và ghi các bit ở thanh ghi này) và có tác dụng điều khiển hướng cổng PORT (tức là cổng ra hay cổng vào) Nếu như một bit trong thanh ghi này được set thì bit tương ứng đó trên PORT được định nghĩa như một cổng ra Ngược lại nếu như bit đó không được set thì bit tương ứng trên PORT được định nghĩa là cổng vào.

1.3 Thanh ghi PORT

Đây cũng là thanh ghi 8 bit (các bit có thể đọc và ghi được) nó là thanh ghi dữ liệu của cổng PORT và trong trường hợp nếu cổng được định nghĩa là cổng ra thì khi

ta ghi một bit lên thanh ghi này thì chân tương ứng trên PORT đó cũng có cùng mức logic Trong trường hợp mà cổng được định nghĩa là cổng vào thì thanh ghi này lại mang dữ liệu điều khiển cổng Cụ thể nếu bit nào đó của thanh ghi này được set (đưa lên mức 1) thì điện trở kéo lên (pull-up) của chân tương ứng của port đó sẽ được kích hoạt Ngược lại nó sẽ ở trạng thái hi-Z Thanh ghi này sau khi khởi động Vi điều khiển

sẽ có giá trị là 000.

1.4 Thanh ghi PIN

Đây là thanh ghi 8 bit chứa dữ liệu vào của PORT (trong trường hợp PORT được thiết lập là cổng vào) và nó chỉ có thể đọc mà không thể ghi vào được.

Trang 17

2 Cấu tạo chân

Cấu trúc chân của AVR có thể phân biệt rõ chức năng (vào ra) trạng thái (0 1) từ

đó ta có 4 kiểu vào ra cho một chân của AVR Khác với 89 là chỉ có 2 trạng thái duy nhất (0 1) Đặc biệt nguồn từ chân của AVR đủ khoẻ để điều khiển Led trực tiếp (mA) còn 89 chỉ là vài μA

Bảng trạng thái truy xuất I/O:

- Kích hoạt điện trở pull-up bằng cách set thanh ghi PORTx (bit).

- Cuối cùng đọc dữ liệu từ địa chỉ PINxn (trong đó x: là cổng và n là bit).

3.2 Write

Trang 18

- Đưa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hoặc bit n trongport) đó là đầu ra (xóa thanh ghi DDRx hoặc bit).

- Xuất giá trị ra Port

Atmega 16 có các ngắt sau:

Trang 19

4.2 Ngắt ngoài – External Interrupts

Atmega16 có 3 ngắt ngoài INT0 (PORTD.2), INT1 (PORTD.3) và INT2 (PORTB.2) Khi xảy ra một trong các sự kiện đối với các chân này:

- Low level - Điện áp ở chân ngắt xuống mức logic 0 V

- Any change - Bất kì sự thay đổi điện áp từ chân ngắt

- Falling Edge - Khi có 1 sườn điện áp xuống (5V → 0V)

- Rising Edge - Khi có 1 sườn điện áp lên (0V → 5V)

Sau đó 1 cờ ngắt sẽ được đưa lên 1 và báo cho biết có ngắt, nhảy đến chương trình con thực hiện ngắt.

4.3 Các thanh ghi phục vụ ngắt

4.3.1 MCUCR – MCU Control Register.

Thanh ghi MCUCR chứa các bit cho phép chúng ta chọn 1 trong 4 MODE trên cho các ngắt ngoài MCUCR là một thanh ghi 8 bit nhưng đối với hoạt động ngắt ngoài, chúng ta chỉ quan tâm đến 4 bit thấp của nó (4 bit cao dùng cho Power manager và Sleep Mode) Bốn bit thấp là các bit Interrupt Sense Control (ISC) trong đó 2 bit ISC11: ISC10 dùng cho INT1 và 2 bit ISC01: ISC00 dùng cho INT0 Bảng chân trị cho các bit ISC01, ISC00 hoàn toàn tương tự

Trang 20

4.3.2 MCUCSR – MCU Control and Status Register

Bit 6 – ISC2: Interrupt Sense Control 2: là bit quan trọng nhất trong thanh ghi này dùng ghi và xóa cờ ngắt INT2

4.3.3 GICR – General Interrup Control Register

GICR cũng là 1 thanh ghi 8 bit nhưng chỉ có 3 bit cao (bit 5, 6 và bit 7) là được sử dụng cho điều khiển ngắt Bit 7 – INT1 gọi là bit cho phép ngắt (Interrupt Enable), set bit này bằng 1 nghĩa bạn cho phép ngắt INT1 hoạt động, tương tự, bit INT0 và INT2 điều khiển ngắt INT0 và INT2

4.3.4 GIFR – General Interrupt Flag Register

Thanh ghi cờ ngắt chung – GIFR (General Interrupt Flag Register) có 2 bit INTF1 và INTF0 là các bit trạng thái (hay bit cờ - Flag) của 2 ngắt INT và INT0 Nếu có

1 sự kiện ngắt phù hợp xảy ra trên chân INT1, bit INTF1 được tự động set bằng 1 (tương tự cho trường hợp của INTF0), chúng ta có thể sử dụng các bit này để nhận ra các ngắt, tuy nhiên điều này là không cần thiết nếu chúng ta cho phép ngắt tự động, vì vậy thanh ghi này thường không được quan tâm khi lập trình ngắt ngoài

5 TIMER – COUNTER

Timer – Counter (T/C) là các module độc lập với CPU Chức năng chính của các

bộ T/C, như tên gọi của chúng, là định thì (tạo ra một khoảng thời gian, đếm thời gian…)

và đếm sự kiện Trên các chip AVR, các bộ T/C còn có thêm chức năng tạo ra các xung

Trang 21

điều rộng PWM (Pulse Width Modulation), ở một số dòng AVR, một số T/C còn đượcdùng như các bộ canh chỉnh thời gian (calibration) trong các ứng dụng thời gian thực

Cụ thể trên chip Atmega16 có 2 bộ Timer 8 bit (T/C0 và T/C2) và 1 bộ 16 bit

- BOTTOM: là giá trị thấp nhất mà một T/C có thể đạt được, giá trị này luôn là 0.

- MAX: là giá trị lớn nhất mà một T/C có thể đạt được, giá trị này được quy định

bởi bởi giá trị lớn nhất mà thanh ghi đếm của T/C có thể chứa được Ví dụ với một bộT/C 8 bit thì giá trị MAX luôn là 0xFF (255), với bộ T/C 16 bit thì MAX bằng 0xFFFF(65535) Như thế MAX là giá trị không đổi trong mỗi T/C

- TOP: là giá trị mà khi T/C đạt đến nó sẽ thay đổi trạng thái, giá trị này không

nhất thiết là số lớn nhất 8 bit hay 16 bit như MAX, giá trị của TOP có thể thay đổi bằngcách điều khiển các bit điều khiển tương ứng hoặc có thể nhập trừ tiếp thông qua một sốthanh ghi

Trang 22

5.1 Timer – Counter 0

5.1.1 Sơ đồ khối

5.1.2 Các thanh ghi của Timer – Counter 0 TCNT0 (Timer/Counter Register): Là 1 thanh ghi 8 bit chứa giá trị vận hành của

T/C0 Thanh ghi này cho phép đọc và ghi giá trị một cách trực tiếp

TCCR0 (Timer/Counter Control Register): Là thanh ghi 8 bit điều khiển hoạt động

của Timer – Counter 0

Ngày đăng: 09/11/2015, 14:45

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w