Tải bản đầy đủ (.pdf) (196 trang)

Biên soạn các bài học cho môn thực tập lập trình điều khiển ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.01 MB, 196 trang )

TĨM TẮT
Đồ án “Biên soạn các bài học cho mơn thực tập lập trình đồ án” này được thực
hiện với mong muốn cung cấp những kiến thức cơ bản nhất về cách hoạt động của các hệ
thống xử lý, cảm biến, thiết bị trên ô tô và giúp cho các bạn có khả năng lập trình mơ phỏng
được các hệ thống đơn giản.
Ngoài hệ thống các bài học, đồ án cũng thực hiện nghiên cứu, phát triển thêm các
thư viện, chương trình, mơ hình để hỗ trợ cho q trình giảng dạy, học tập, tạo cảm hứng
cho người học, giúp cho quá trình truyền tải kiến thức dễ dàng hơn. Bên cạnh đó, các
chương trình mẫu, mơ hình nhóm xây dựng cũng hướng tới việc dễ dàng tái sử dụng và
phát triển cho các dự án khác.
Sau quá trình thực hiện, các kết quả đã đạt được trong đồ án này bao gồm:
• Hệ thống các bài học cho mơn Thực tập lập trình điều khiển ơ tơ.
• Tạo sẵn các thư viện, chương trình mẫu hỗ trợ học tập.
• Hai mơ hình Web Server để hỗ trợ hiển thị dữ liệu phục vụ quá trình dạy học,
thực hành và sử dụng trên các mơ hình bao gồm:
o Mơ hình Web Socket sử dụng mạng cục bộ hoặc internet.
o Mô hình Web Server chạy trên mạch NodeMCU (ESP8266).

iii


MỤC LỤC
Lời cảm ơn ................................................................................................................ i
Tóm tắt ................................................................................................................... iii
Mục lục.................................................................................................................... iv
Danh mục các chữ viết tắt và ký hiệu .................................................................. vi
Danh mục các hình ............................................................................................. viii
Danh mục các bảng ...............................................................................................xii
Chương 1. TỔNG QUAN .................................................................................... 1
Đặt vấn đề .................................................................................................... 1
Lý do chọn đề tài ......................................................................................... 1


Mục tiêu đề tài ............................................................................................. 2
Phương pháp nghiên cứu ............................................................................. 2
Ý nghĩa thực hiện ......................................................................................... 2
Giới hạn đề tài .............................................................................................. 3
Chương 2. CƠ SỞ LÝ THUYẾT ........................................................................ 4
Giới thiệu vi điều khiển ATmega328 .......................................................... 4
Bộ nhớ AVR ................................................................................................ 7
Bộ nhớ chương trình ..............................................................................7
Bộ nhớ dữ liệu .......................................................................................8
Ngắt / ngắt ngoài .......................................................................................... 9
Ngắt .......................................................................................................9
Ngắt ngoài............................................................................................10
Cổng vào/ra (I/O-Ports) ............................................................................. 17
Giới thiệu .............................................................................................17
Cấu hình chân ......................................................................................18
Bộ định thời của ATmega328P.................................................................. 20
Timer/Counter0 (T/C) - 8bit ................................................................20
Timer/Counter1 (T/C1) - 16 bit ...........................................................21
Timer/Counter2 (T/C2): 8 bit ..............................................................23
Bộ biến đổi ADC (Analog to Digital Converter)....................................... 25
Chương 3. BIÊN SOẠN BÀI HỌC VÀ CÁC THƯ VIỆN HỖ TRỢ ............ 26
Tổng quan về nội dung các bài học ........................................................... 26
Lựa chọn môi trường, thiết bị học tập ....................................................... 27
iv


Lựa chọn phần cứng ............................................................................29
Lựa chọn phần mềm – Arduino IDE ...................................................32
Biên soạn bài học ....................................................................................... 35
Bài bắt đầu ...........................................................................................35

Digital Output ......................................................................................36
Digital Input .........................................................................................39
Analog to Digital Converter (ADC) ....................................................42
Pulse Width Modulation (PWM) .........................................................44
Xung Input ...........................................................................................45
Serial và các chuẩn giao tiếp ...............................................................46
Encoder – Đọc tốc độ động cơ GA25-370 ..........................................47
PID – Điều khiển tốc độ, vị trí động cơ GA25-370 ............................52
Các file và tài liệu hỗ trợ học tập: .............................................................. 53
Chương 4. THIẾT KẾ WEBSERVER HIỂN THỊ DỮ LIỆU ....................... 54
Tổng quan về web server và lựa chọn phần cứng...................................... 54
Giới thiệu về web server ......................................................................55
Lựa chọn phần cứng ............................................................................55
Mơ hình kết nối websocket ........................................................................ 60
Socket server và xây dựng giao diện web. ..........................................61
Socket client - ESP8266 ......................................................................70
Chương trình mẫu Arduino .................................................................74
WebServer NodeMCU ............................................................................... 74
Mơ hình kết nối....................................................................................75
Web server – Nạp chương trình cho NodeMCU .................................75
Các giao diện web................................................................................77
Chương trình mẫu Arduino .................................................................80
Chương 5. KẾT QUẢ ĐẠT ĐƯỢC SAU KHI THỰC HIỆN ĐỒ ÁN .......... 81
Các kết quả và sản phẩm thu được sau khi thực hiện đồ án ...................... 81
Đánh giá các kết quả và sản phẩm thu được. ............................................. 81
Chương 6. KẾT LUẬN VÀ ĐỀ NGHỊ ............................................................. 83
Kết luận ...................................................................................................... 83
Đề nghị ....................................................................................................... 83
Danh mục tài liệu tham khảo ............................................................................... 84


v


DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU
Ký hiệu chữ viết tắt

Chữ viết đầy đủ

1

VKĐ

Vi điều khiển

2

Input (I)

Đầu vào

3

Output (O)

Đầu ra

4

Digital


Tín hiệu số, tín hiệu rời rạc

5

Analog

Tín hiệu tương tự, tín hiệu liên tục

6

ISR

Interrupt Service Routine

7

UART

8

SPI

Serial Peripheral Interface

9

I2C

Inter-Integrated Circuit


10

CAN

Controller Area network

11

PWM

Pulse Width Modulation

12

PPM

Pulse Position Modulation

13

PID

Proportional Integral Derivative

14

ADC

Analog to Digital Converter


15

T/C

Timer/Counter

16

VS

Visual Studio

17

IDE

Integrated Development Environment

18

RISC

Reduced Instruction Set Computer

19

EEAR

The EEPROM Address Register


20

EEDR

The EEPROM Data Register

21

EECR

The EEPROM Control Register

22

MCUCR

MCU Control Register

23

EICRA

External Interrupt Control Register A

24

EIMSK

External Interrupt Mask Register


25

EIFR

External Interrupt Flag Register

26

PCICR

Pin Change Interrupt Control Register

27

PCIFR

Pin Change Interrupt Flag Register

STT

Universal Asynchronous Receiver /
Transmitter

vi


28

PCMSK2


Pin Change Mask Register 2

29

PCMSK1

Pin Change Mask Register 1

30

PCMSK0

Pin Change Mask Register 0

31

DDRx

The Port x Data Direction Register

32

PORTx

The Port x Data Register

33

PINx


The Port x Input Pins Address

34

TCNT0

Timer/Counter Register

35

TCCR0B

Timer/Counter Control Register B

36

TIMSK0

Timer/Counter Interrupt Mask Register

37

TCNT1

Timer/Counter1 Register

38

TCCR1B


Timer/Counter1 Control Register B

39

TIMSK1

Timer/Counter1 Interrupt Mask Register

40

T/C2

Timer/Counter2

41

T/C1

Timer/Counter1

42

T/C0

Timer/Counter0

43

TCNT2


Timer/Counter 2 Register

44

TCCR2A

Timer/Counter 2 Control Register A

45

TCCR2B

Timer/Counter 2 Control Register B

46

TIMSK2

Timer/Counter2 Interrupt Mask Register

47

OCR2A

Output Compare Register channel A

48

OCR2B


Output Compare Register channel B

49

IOT

Internet Of Things

50

LIN

Local Interconnect Network

vii


DANH MỤC CÁC HÌNH
Hình 2.1. Cấu trúc của vi điều khiển AVR ............................................................... 5
Hình 2.2. Sơ đồ chân ATmega328 (TQFP Top View and 32 MLF Top View) .......6
Hình 2.3. Bộ nhớ chương trình ATmega328P ..........................................................7
Hình 2.4. Bản đồ bộ nhớ dữ liệu ...............................................................................8
Hình 2.5. Minh họa cách tổ chức ngắt thơng thường trong các chip AVR ..............9
Hình 2.6. Thời gian ngắt thay đổi mức logic .......................................................... 11
Hình 2.7. Thanh ghi EICRA (External Interrupt Control Register A) ...................11
Hình 2.8. Thanh ghi EIMSK (External Interrupt Mask Register) .......................... 12
Hình 2.9. Thanh ghi EIFR (External Interrupt Flag Register)................................ 13
Hình 2.10. Thanh ghi PCICR (Pin Change Interrupt Control Register).................14
Hình 2.11. Thanh ghi PCIFR (Pin Change Interrupt Flag Register) ......................14
Hình 2.12. Thanh ghi PCMSK2 (Pin Change Mask Register 2) ............................ 15

Hình 2.13. Thanh ghi PCMSK1 (Pin Change Mask Register 1) ............................ 15
Hình 2.14. Thanh ghi PCMSK0 (Pin Change Mask Register 0) ............................ 17
Hình 2.15. Thanh ghi MCUCR (MCU Control Register) ......................................18
Hình 2.16. Thanh ghi DDRx (The Port x Data Direction Register) .......................18
Hình 2.17. Thanh ghi PORTx (The Port x Data Register) .....................................19
Hình 2.18. Thanh ghi PINx (The Port x Input Pins Address) ................................ 19
Hình 2.19. Thanh ghi TCNT0 (Timer/Counter Register) .......................................20
Hình 2.20. Thanh ghi TCCR0B (Timer/Counter Control Register B) ...................20
Hình 2.21. Thanh ghi TIMSK0 (Timer/Counter Interrupt Mask Register) ............21
Hình 2.22. Thanh ghi TCCR1B (T/C1 Control Register B) ...................................21
Hình 2.23. Mơ tả Clock Select Bit trên thanh ghi TCCR1B ..................................22
Hình 2.24. Thanh ghi TIMSK1 (Timer/Counter1 Interrupt Mask Register) ..........22
Hình 2.25. Thanh ghi TCCR2A và TCCR2B .........................................................23
Hình 2.26. Thanh ghi TIMSK2 (Timer/Counter2 Interrupt Mask Register) ..........24
Hình 2.27. Thanh ghi OCR2A (Output Compare Register channel A) ..................24
Hình 2.28. Thanh ghi OCR2B (Output Compare Register channel B) ..................24
Hình 3.1. Arduino nano .......................................................................................... 30
Hình 3.2 Mạch Arduino nano tích hợp các thiết bị ................................................31
viii


Hình 3.3. Visual Studio với Visual Micro .............................................................. 32
Hình 3.4. Arduino IDE ........................................................................................... 33
Hình 3.5. Serial Monitor .........................................................................................34
Hình 3.6. Serial Plotter ........................................................................................... 34
Hình 3.7. Tín hiệu digital ........................................................................................36
Hình 3.8 Thiết bị digital.......................................................................................... 36
Hình 3.9. Sơ đồ kết nối led .....................................................................................37
Hình 3.10. Led 7 đoạn ............................................................................................ 37
Hình 3.11. Sơ đồ kết nối led 7 đoạn (LED1) .......................................................... 38

Hình 3.12. Nút nhấn ................................................................................................ 39
Hình 3.13. Pullup và Pulldown ...............................................................................40
Hình 3.14. Rung dội nút nhấn .................................................................................40
Hình 3.15. Debounce bằng tụ điện .........................................................................41
Hình 3.16. Tín hiệu digital ......................................................................................41
Hình 3.17. Tín hiệu analog .....................................................................................42
Hình 3.18. Sơ đồ mơ phỏng tín hiệu analog input (0~5V) .....................................43
Hình 3.19. Tín hiệu analog khơng ổn định ............................................................. 43
Hình 3.20. Cruise control main switch ...................................................................44
Hình 3.21. Kỹ thuật PWM ......................................................................................44
Hình 3.22. Kết nối ngắt INT0 (Chân số 2............................................................... 45
Hình 3.23. Mơ hình kết nối chuẩn giao tiếp SPI ....................................................46
Hình 3.24. Mơ hình kết nối nhiều slave giao tiếp SPI ............................................46
Hình 3.25. Mơ hình chuẩn giao tiếp I2C ................................................................ 46
Hình 3.26. Mạng CAN ............................................................................................ 47
Hình 3.27. Encoder và động cơ có encoder ............................................................ 47
Hình 3.28. Encoder tuyệt đối và tương đối............................................................. 48
Hình 3.29. Thiết bị encoder ....................................................................................48
Hình 3.30. Cơng tắc xoay encoder ..........................................................................48
Hình 3.31. Động cơ giảm tốc GA25-370 130RPM ................................................49
Hình 3.32. Mạch L298N .........................................................................................49
Hình 3.33 Mạch Arduino nano tích hợp các thiết bị ..............................................49
ix


Hình 3.34. Sơ đồ kết nối Arduino nano, L298n, GA25-370 ..................................50
Hình 3.35. Đĩa xung răng khuyết............................................................................51
Hình 3.36. Sơ đồ khối của bộ điều khiển PID ........................................................52
Hình 3.37. Sơ đồ kết nối Arduino nano, L298n, GA25-370 ..................................53
Hình 4.1. Mạch WeMos D1 và Arduino Ethernet Shield W5100 .......................... 56

Hình 4.2. Mạch NodeMCU và NodeMCU D1 Mini ..............................................56
Hình 4.3. Cài đặt Arduino IDE lập trình với esp8266 ............................................58
Hình 4.4. Cài đặt Arduino IDE lập trình với esp8266 ............................................58
Hình 4.5. Cài đặt thơng số board mạch để nạp chương trình .................................59
Hình 4.6. Mơ hình web socket ................................................................................60
Hình 4.7. Kiểm tra phiên bản và kết quả cài đặt nodeJS và npm ........................... 61
Hình 4.8. Thư mục “01. socket_server_nodejs” .....................................................62
Hình 4.9. Cửa sổ lệnh Windows PowerShell để khởi chạy server .........................62
Hình 4.10. Khởi chạy server ...................................................................................63
Hình 4.11. http://localhost:3000/ ............................................................................63
Hình 4.12. Xác định địa chỉ IP máy tính chạy server .............................................64
Hình 4.13. Thay đổi địa chỉ IP ................................................................................65
Hình 4.14. Hiển thị tín hiệu digital (WEB) ............................................................ 65
Hình 4.15. Biểu đồ cột và đường (WEB) ............................................................... 66
Hình 4.16. Bảng dữ liệu (WEB) .............................................................................66
Hình 4.17. Giao diện web trên máy tính .................................................................67
Hình 4.18. Giao diện web trên điện thoại ............................................................... 67
Hình 4.19. Biểu đồ radar và Biểu đồ Doughnut-Pie ...............................................68
Hình 4.20. Một số loại biểu đồ khác .......................................................................69
Hình 4.21. Cổng kết nối HC05 ...............................................................................70
Hình 4.22. Kết nối UART.......................................................................................70
Hình 4.23. Kết nối NodeMCU D1 mini và Arduino nano .....................................71
Hình 4.24. Cài đặt chương trình socket client esp8266 ..........................................72
Hình 4.25. Kiểm thử chương trình socket client trên NodeMCU D1 mini ............73
Hình 4.26. Mơ hình web server sử dụng esp8266 ..................................................75
Hình 4.27. Thư mục “01. Firmware_ NodeMCU” .................................................76
x


Hình 4.28. tab Config (NodeMCU flasher) ............................................................ 76

Hình 4.29. tab Advanced (NodeMCU flasher) .......................................................76
Hình 4.30. tab Operation (NodeMCU flasher) .......................................................77
Hình 4.31. Kiểm thử web Serial .............................................................................78
Hình 4.32. Giao diện web data trên điện thoại và máy tính ...................................79
Hình 4.33. Kết quả chương trình mẫu Arduino (webserver NodeMCU) ...............80

xi


DANH MỤC CÁC BẢNG
Bảng 2.1. Các vector ngắt và Reset trên ATmega328P ..........................................10
Bảng 2.2. Interrupt 1 Sense Control .......................................................................12
Bảng 2.3. Interrupt 0 Sense Control .......................................................................12
Bảng 2.4. Waveform Generation Mode Bit (Timer/Counter1) ..............................22
Bảng 2.5. Mô tả Clock Select Bit trên thanh ghi TCCR2B ....................................23
Bảng 3.1. So sánh các dòng vi điều khiển ..............................................................28
Bảng 3.2. Bảng thông số Arduino nano ..................................................................29
Bảng 3.3. Bảng kết nối Arduino, L298N và GA25-370 .........................................50
Bảng 4.1. Thông số kỹ thuật NodeMCU D1 Mini .................................................57
Bảng 4.2. Bảng đối chiếu các chân NodeMCU và ESP8266 .................................57

xii


Chương 1.

TỔNG QUAN

Đặt vấn đề
Theo xu hướng của hầu hết các nước trên thế giới, Việt Nam và nhiều nước khác

đang đứng trước giai đoạn “motorization” (ơ tơ hóa) khi trung bình có trên 50 ơ tơ/1.000
dân. Có thể hiểu đây là q trình ơ tơ trở nên phổ biến và trở thành phương tiện thiết yếu
của người dân. Và theo dự báo giai đoạn này chắc chắn sẽ xảy ra tại Việt Nam trong giai
đoạn từ năm 2020 đến năm 2025 khi trung bình sẽ có 50 xe/1000 dân và khi thu nhập bình
quân đầu người đạt trên 3000 USD.[1] Để giữ được lợi thế cạnh tranh khi xe hơi ngày càng
trở nên phổ biến, các nhà sản xuất xe luôn cố gắng mang những thành tựu công nghệ,
nghiên cứu mới nhất lên những chiếc xe của mình có thể về cơ khí, điện tử, phần mềm,
nhiên liệu hay vật liệu...
Cùng với sự phát triển của cuộc cách mạng 4.0, đặc biệt với sự phát triển của các
công nghệ điện tử và phần mềm đã góp phần lớn vào việc cải thiện về tính năng, hiệu suất,
tiện nghi và an toàn của xe. Sự phát triển của các hệ thống điều khiển, của phần mềm trên
ô tô đang được dự báo sẽ trở thành một hướng phát triển lấn át sự phát triển đổi thay của
cơ khí truyền thống. Ngay ở thời điểm hiện tại các hệ thống nhúng (bao gồm điện tử và
phần mềm) đã trở thành một phần không thể thiếu trên ô tô và chiếm một phần lớn cấu
thành nên giá bán của một chiếc xe. Trang bị kiến thức về cách hoạt động của các hệ thống
nhúng trên ô tô sẽ là một lợi thế rất lớn cho những kỹ sư cơ khí trong việc vận hành, kiểm
tra, sửa chữa hoặc sẽ là nền tảng để có thể phát triển trở thành kỹ sư phần mềm ô tô.
Lý do chọn đề tài
Yêu cầu đặt ra đối với các trường, các cơ sở đào tạo ngành cơng nghệ kỹ thuật ơ tơ
đó chính là trang bị cho người học những kiến thức cần thiết về ô tô cũng như kịp thời cập
nhật các nội dung kiến thức mới của các hướng phát triển trên ô tô trong tương lai.
Từ vấn đề đã nêu với mong muốn trang bị những kiến thức cơ bản về cách hoạt
động của các hệ thống trên ô tô, hỗ trợ cho việc giảng dạy và học tập ở bộ môn thực tập
lập trình điều khiển ơ tơ, nhóm chúng em đã lựa chọn đề tài “Biên soạn các bài học cho
môn Thực tập lập trình điều khiển ơ tơ”.

1


Mục tiêu đề tài

Mục tiêu của đề tài là biên soạn ra hệ thống các bài học phục vụ cho q trình giảng
dạy, học tập và thực hành mơn Thực tập lập trình điều khiển ơ tơ, các bài học sẽ cung cấp
những kiến thức cơ bản nhất về cách hoạt động của các hệ thống xử lý, cảm biến, thiết bị
trên ơ tơ và giúp cho các bạn có khả năng lập trình mơ phỏng được các hệ thống đơn giản.
Ngồi ra, nhóm sẽ tạo ra các chương trình, thư viện để hỗ trợ cho quá trình giảng
dạy, học tập và có khả năng tái sử dụng để phát triển các dự án.
Phương pháp nghiên cứu
Để hoàn thành được đồ án này, nhóm đã áp dụng rất nhiều phương pháp nghiên cứu
như:
• Phương pháp phân tích lý thuyết bao gồm phân tích nguồn tài liệu (tạp chí
và báo cáo khoa học, diễn đàn, tài liệu lưu trữ thông tin đại chúng), phân tích
tác giả và phân tích nội dung.
• Phương pháp tổng hợp lý thuyết bao gồm bổ sung tài liệu, sau khi phân tích
phát hiện thiếu hoặc sai lệch, lựa chọn tài liệu chỉ chọn những thứ cần, đủ để
xây dựng luận cứ…
• Phương pháp phân loại và hệ thống hóa lý thuyết
• Phương pháp mơ hình hóa: nghiên cứu các đối tượng, các quá trình … bằng
cách xây dựng các mơ hình của chúng (các mơ hình này bảo tồn các tính
chất cơ bản được trích ra của đối tượng đang nghiên cứu) và dựa trên mơ
hình đó để nghiên cứu trở lại đối tượng thực.
• Phương pháp thu thập số liệu, phương pháp thực nghiệm…
Ý nghĩa thực hiện
Đề tài này sau khi hoàn thành sẽ mang lại những lợi ích sau:
• Hệ thống các bài học sẽ là tài liệu cho việc giảng dạy, học tập. Hiểu biết về
lập trình điều khiển hệ thống sẽ giúp nâng cao kiến thức trong việc vận hành,
kiểm tra, sửa chữa và phát triển.
• Nội dung mơn học hướng đến lập trình ơ tơ do đó sẽ đề cập đến các vấn đề
thường xảy ra trên ô tô và cung cấp các giải pháp xử lý.
• Cung cấp các gợi ý thiết lập phần cứng, kỹ thuật lập trình thường dùng để có
thể lập trình mơ phỏng các hệ thống.

2


• Cung cấp những hướng dẫn, chương trình mẫu, thư viện viết sẵn nhóm tạo
ra để sử dụng phát triển các dự án.
• Các chương trình phát triển thêm trong đồ án sẽ tạo cảm hứng cho người học,
giúp quá trình truyền đạt kiến thức dễ dàng hơn.
Giới hạn đề tài
Vì hạn chế về thời gian thực hiện, hệ thống các bài học chưa thực hiện được nội
dung hướng dẫn thực hành, bài tập tự kiểm, các bài học về lập trình một vài thiết bị khác
như động cơ bước, các loại màn hình lcd, tft…
Bên cạnh đó, đồ án được thực hiện trong giai đoạn khó khăn do việc giãn cách xã
hội, tiếp cận các thiết bị, mơ hình nên nhóm chưa thể hồn thiện trọn vẹn các nội dung lập
trình thực tế, chưa thể tạo một mơ hình mẫu tổng hợp các thiết bị được sử dụng… Tuy khó
khăn nhưng nhóm cũng đã tận dụng thời gian này với những khả năng có thể để phát triển
thêm các nội dung khác hỗ trợ cho đề tài.

3


Chương 2.

CƠ SỞ LÝ THUYẾT

Giới thiệu vi điều khiển ATmega328
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í.
❖ Đặc điểm ATmega328:
• Hiệu suất cao
• Tổng số chân I/O kỹ thuật số là 14.

• Thơng lượng lên đến 16 MIPS ở tần số 16 MHz.
• Bộ nhớ flash: 32 Kb.
• EEPROM: 1 Kb.
• SRAM: 2 Kb.
• Có 3 bộ Timer/Counter, hai bộ 8bit và một bộ 16bit.
• Khóa chức năng chương trình để bảo mật mã lập trình.
• ADC 8 kênh 10bit trong gói TQFP và QFN / MLF.
• Bộ đếm thời gian thực với bộ dao động riêng biệt.
• Sáu kênh PWM.
• Nhiệt độ tối thiểu và tối đa -40oC đến 105oC.
• USART nối tiếp có thể lập trình.
• Giao tiếp SPI chính / phụ.
• Ngắt ngồi và ngắt bên trong.
• Điện áp hoạt động: 2,7V đến 5,5V.
• Tiêu thụ điện năng thấp.
• Chế độ hoạt động: 1,5mA ở 3V - 4MHz.
• Chế độ ngắt nguồn: 1àA 3V.
ã Sỏu ch tit kim nng lng: Chờ, giảm nhiễu ADC, tiết kiệm năng
lượng, tắt nguồn, chờ, và chế độ chờ kéo dài.
• Bộ đếm thời gian có thể lập trình với bộ dao động trên chip riêng biệt.
• Bộ so sánh tương tự trên chip

4


❖ Cấu trúc VĐK

Hình 2.1. Cấu trúc của vi điều khiển AVR

5



❖ Sơ đồ các chân ATmega328

Hình 2.2. Sơ đồ chân ATmega328 (TQFP Top View and 32 MLF Top View)
• VCC: cấp điện áp
• GND: cấp mass
• Cổng B (PB7: 0) XTAL1 / XTAL2 / TOSC1 / TOSC2 và Cổng D (PD7: 0): là
cổng I/O hai chiều 8bit với các điện trở kéo lên bên trong (được chọn cho mỗi
bit).
• Cổng C (PC5: 0): là cổng I / O hai chiều 7bit với các điện trở kéo lên bên trong
(được chọn cho mỗi bit).

6


• PC6 / đặt lại: Nếu cầu chì RSTDISBL được lập trình, PC6 được sử dụng làm
chân đầu vào. Nếu cầu chì RSTDISBL khơng được lập trình, PC6 được sử dụng
làm một đầu vào đặt lại.
• AVCC: là chân điện áp cung cấp cho bộ chuyển đổi A/D, PC3: 0 và ADC7: 6. Nó
phải được kết nối bên ngồi với VCC, ngay cả khi ADC khơng được sử dụng.
• AREF: là chân tham chiếu tương tự cho bộ chuyển đổi A/D.
• ADC7: Trong TQFP và QFN/MLF thì ADC7: 6 đóng vai trò là đầu vào tương tự
cho bộ chuyển đổi A/D. Các chân này được cấp nguồn từ analog và phục vụ như
các kênh ADC 10-bit.
Bộ nhớ AVR
Cấu trúc AVR có hai khơng gian bộ nhớ chính: bộ nhớ chương trình (program
memory) và bộ nhớ dữ liệu (Data memory).
Bộ nhớ chương trình


Hình 2.3. Bộ nhớ chương trình ATmega328P
Bộ nhớ chương trình của AVR là bộ nhớ Flash có dung lượng 32 Kb. Vì tất cả AVR
có độ rộng 16 hoặc 32 bit, nên Flash được tổ chức là 16Kx16.
Để bảo mật phần mềm, khơng gian bộ nhớ chương trình flash được chia thành hai
phần, phần bộ nạp khởi động và phần chương trình ứng dụng trong ATmega328P.
Bộ nhớ flash có độ bền ít nhất 10.000 chu kỳ ghi / xóa.

7


Bộ nhớ dữ liệu
Bộ nhớ dữ liệu AVR được chia làm hai phần: bộ nhớ SRAM và bộ nhớ EEPROM.
2.2.2.1. Bộ nhớ SRAM
ATmega328P là một bộ vi điều khiển phức tạp với nhiều thiết bị ngoại vi được hỗ
trợ trong 64 thanh ghi dành riêng cho I/O.
Phần đầu là 32 thanh ghi chức năng chung (General Purpose Register) R0 đến R31
có địa chỉ từ 0x0000 đến 0x001F. Phần thứ 2 là không gian nhớ I/O với 64 thanh ghi vào
ra (I/O Register) có địa chỉ từ 0x0020 đến 0x005F. Phần thứ 3 dùng cho vùng nhớ với 160
thanh ghi vào ra mở rộng (Extended I/O Registers) có địa chi từ 0x0060 đến 0x00FF. Phần
thứ 4 là vùng SRAM nội với 2048byte có địa chỉ từ 0x0100 đến 0x08FF. Các thanh ghi
R26 đến R31 có tính năng định địa chỉ gián tiếp thanh ghi con trỏ.

Hình 2.4. Bản đồ bộ nhớ dữ liệu
2.2.2.2. Bộ nhớ EEPROM
Đây là bộ nhớ dữ liệu có thể ghi xóa ngay trong lúc vi điều khiển hoạt động và
không bị mất dữ liệu khi nguồn điện cung cấp bị ngắt. Với vi điều khiển ATmega328P, bộ
nhớ EEPROM có kích thước là 1Kb và có độ bền ít nhất 100000 chu kỳ ghi/xóa. EEPROM
được xem như là một bộ nhớ vào ra được đánh địa chỉ độc lập với SRAM, điều này có
nghĩa là ta cần sử dụng lệnh đọc, ghi khi muốn truy xuất với EEPROM. Để điều khiển vào
ra dữ liệu với EEPROM ta sử dụng 3 thanh ghi sau: EEAR, EEDR và EECR.


8


Ngắt / ngắt ngoài
Ngắt
Interrupts, thường được gọi là ngắt, là một “tín hiệu khẩn cấp” gởi đến bộ xử lí, yêu
cầu bộ xử lí tạm ngừng tức khắc các hoạt động hiện tại để “nhảy” đến một nơi khác thực
hiện một nhiệm vụ khẩn cấp nào đó, nhiệm vụ này gọi là trình phục vụ ngắt – isr (interrupt
service routine). Sau khi kết thúc nhiệm vụ trong isr, bộ xử lý sẽ quay về thực hiện tiếp
các nhiệm vụ còn gian dở.

Hình 2.5. Minh họa cách tổ chức ngắt thơng thường trong các chip AVR
Số lượng ngắt trên mỗi dòng chip là khác nhau, ứng với mỗi ngắt sẽ có vector ngắt,
vector ngắt là các thanh ghi có địa chỉ cố định được định nghĩa trước nằm trong phần đầu
của bộ nhớ chương trình.

9


Bảng 2.1. Các vector ngắt và Reset trên ATmega328P

Ngắt ngoài
Ngắt ngoài là loại ngắt duy nhất độc lập với các thiết bị của chip, các ngắt khác
thường gắn với hoạt động của 1 thiết bị nào đó như Timer/Counter, giao tiếp nối tiếp
USART, chuyển đổi ADC, …
Ngắt ngoài là cách rất hiệu quả để thực hiện giao tiếp giữa người dùng và chip. Trên
ATmega328P các ngắt ngồi được kích hoạt bới các chân INT0 và INT1 hoặc bất kỳ chân
nào trong số các chân PCINT23..0 (PCINT23 đến PCINT0 ). Nếu được bật, ngắt sẽ kích
hoạt các chân ngay cả khi các chân INT0 và INT1 hoặc PCINT23..0 làm đầu ra. Khi ngắt

INT0 hoặc INT1 được bật và được cấu hình như mức được kích hoạt, các ngắt sẽ kích hoạt
miễn là chân được giữ ở mức thấp.

10


2.3.2.1. Thời gian ngắt thay đổi mức logic

Hình 2.6. Thời gian ngắt thay đổi mức logic
❖ Thanh ghi EICRA (External Interrupt Control Register A)
Thanh ghi điều khiển ngắt bên ngoài A chứa các bit lựa chọn các chế độ ngắt.

Hình 2.7. Thanh ghi EICRA (External Interrupt Control Register A)
• Bit 7..4 – Res: Reserved Bits: Các bit này là các bit không được sử dụng
trong ATmega328P và sẽ luôn được đọc là 0.
• Bit 3, 2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 and Bit 0
Ngắt ngoài 1 được kích hoạt bởi chân bên ngồi INT1 nếu cờ ngắt tương ứng được
thiết lập. Nếu lựa chọn ngắt cạnh hay chuyển đổi, các xung kéo dài hơn một chu kỳ đồng
hồ sẽ tạo ra một ngắt. Các xung ngắn hơn không đảm bảo để tạo ra một ngắt. Nếu ngắt mức
thấp được chọn, mức thấp phải được giữ cho đến khi hoàn thành lệnh đang thực thi để tạo
ra một ngắt.
11


Bảng 2.2. Interrupt 1 Sense Control
ISC11

ISC10

Description


0

0

The low level of INT1 generates an interrupt request.

0

1

Any logical change on INT1 generates an interrupt request.

1

0

The falling edge of INT1 generates an interrupt request.

1

1

The rising edge of INT1 generates an interrupt request.

• Bit 1, 0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0
Ngắt ngồi 0 được kích hoạt bởi chân ngoài INT0 nếu cờ ngắt tương ứng được thiết
lập.
Bảng 2.3. Interrupt 0 Sense Control
ISC01


ISC00

Description

0

0

The low level of INT0 generates an interrupt request.

0

1

Any logical change on INT0 generates an interrupt request.

1

0

The falling edge of INT0 generates an interrupt request.

1

1

The rising edge of INT0 generates an interrupt request.

❖ Thanh ghi EIMSK (External Interrupt Mask Register)


Hình 2.8. Thanh ghi EIMSK (External Interrupt Mask Register)
• Bit 7..2 – Res: Reserved Bits: Các bit này là các bit không được sử dụng
trong ATmega328P và sẽ ln được đọc là 0.
• Bit 1 – INT1: External Interrupt Request 1 Enable
Khi bit INT1 được set là 1 và bit 1 trong thanh ghi trạng thái (SREG) được set là 1,
chân ngắt bên ngồi được kích hoạt. Các bit ISC11 và ISC10 trong thanh ghi điều khiển
ngắt bên ngồi A (EICRA) xác định xem ngắt ngồi được kích hoạt trên cạnh lên và/hoặc
cạnh xuống của chân INT1 hoặc ngắt liên tục ở mức logic đã đặt. Hoạt động trên Pin sẽ

12


gây ra yêu cầu ngắt ngay cả khi INT1 được cấu hình như một đầu ra. Ngắt tương ứng của
yêu cầu ngắt ngoài 1 là được thực thi từ vectơ ngắt INT1.
• Bit 0 – INT0: External Interrupt Request 0 Enable
Khi bit INT0 được set là 1 và bit I trong thanh ghi trạng thái (SREG) được set là 1,
chân ngắt bên ngồi được kích hoạt. Các bit ISC01 và ISC00 trong thanh ghi điều khiển
ngắt ngoài A (EICRA) xác định xem ngắt ngồi được kích hoạt trên cạnh tăng và/hoặc
cạnh xuống của chân INT0 hoặc ngắt liên tục ở mức logic đã đặt. Hoạt động trên Pin sẽ
gây ra yêu cầu ngắt ngay cả khi INT0 được cấu hình như một đầu ra. Ngắt tương ứng của
yêu cầu ngắt bên ngoài 0 là được thực thi từ vectơ ngắt INT0.
❖ Thanh ghi EIFR (External Interrupt Flag Register)

Hình 2.9. Thanh ghi EIFR (External Interrupt Flag Register)
• Bit 7..2 – Res: Reserved Bits: Các bit này là các bit không được sử dụng
trong ATmega328P và sẽ ln được đọc là 0.
• Bit 1 – INTF1: External Interrupt Flag 1.
Khi một cạnh hoặc thay đổi logic trên chân INT1 kích hoạt một yêu cầu ngắt, INTF1
sẽ set là 1. Nếu bit SREG và bit INT1 trong EIMSK được set là 1, MCU sẽ nhảy đến vector

ngắt tương ứng. Flag bị xóa khi quy trình ngắt được thực hiện. Ngồi ra, Flag có thể được
xóa bằng cách viết một lơgic vào nó. Flag này ln bị xóa khi INT1 được cấu hình như
một mức ngắt.
• Bit 0 – INTF0: External Interrupt Flag 0
Khi một cạnh hoặc thay đổi logic trên chân INT0 kích hoạt một yêu cầu ngắt, INTF0
sẽ set là 1. Nếu bit SREG và bit INT0 trong EIMSK được set là 1, MCU sẽ nhảy đến véc
tơ ngắt tương ứng. Flag bị xóa khi quy trình ngắt được thực thi. Ngồi ra, Flag có thể được
xóa bằng cách viết một lơgic vào nó. Flag này ln bị xóa khi INT0 được cấu hình như
một mức ngắt.

13


❖ Thanh ghi PCICR (Pin Change Interrupt Control Register)

Hình 2.10. Thanh ghi PCICR (Pin Change Interrupt Control Register)
• Bit 7..3 - Res: Reserved Bits: Các bit này là các bit không được sử dụng trong
ATmega328P và sẽ luôn được đọc là 0.
• Bit 2 - PCIE2: Pin Change Interrupt Enable 2
Khi bit PCIE2 được set là 1 và bit I trong thanh ghi trạng thái (SREG) được set à 1,
ngắt thay đổi mức logic chân 2 được bật. Bất kỳ thay đổi nào bất kỳ chân PCINT23..16
nào được kích hoạt sẽ gây ra ngắt. Các chân PCINT23..16 được bật riêng lẻ bởi thanh ghi
PCMSK2.
• Bit 1 - PCIE1: Pin Change Interrupt Enable 1
Khi bit PCIE1 được set là 1 và bit I trong thanh ghi trạng thái (SREG) được set là
1, ngắt thay đổi mức logic chân 1 được bật. Bất kỳ thay đổi trên bất kỳ chân PCINT14..8
nào được kích hoạt sẽ gây ra ngắt. Các chân PCINT14..8 được bật riêng lẻ bởi thanh ghi
PCMSK1.
• Bit 0 - PCIE0: Pin Change Interrupt Enable 0
Khi bit PCIE0 được set là 1 và bit I trong thanh ghi trạng thái (SREG) được set là

1, ngắt thay đổi mức logic chân 0 được bật. Bất kỳ thay đổi trên bất kỳ chân PCINT7..0
nào được kích hoạt sẽ gây ra ngắt. Các chân PCINT7..0 được kích hoạt riêng lẻ bởi thanh
ghi PCMSK0.
❖ Thanh ghi PCIFR (Pin Change Interrupt Flag Register)

Hình 2.11. Thanh ghi PCIFR (Pin Change Interrupt Flag Register)
• Bit 7..3 - Res: Reserved Bits: Các bit này là các bit không được sử dụng trong
ATmega328P và sẽ ln được đọc là 0.
• Bit 2 - PCIF2: Pin Change Interrupt Flag 2

14


Khi một thay đổi logic trên bất kỳ chân PCINT23..16 nào kích hoạt một yêu cầu
ngắt, PCIF1 sẽ được set là 1. Nếu bit I trong SREG và bit PCIE1 trong PCICR được set là
1, MCU sẽ nhảy đến vectơ ngắt tương ứng. Flag bị xóa khi quy trình ngắt được thực hiện.
• Bit 1 - PCIF1: Pin Change Interrupt Flag 1
Khi một thay đổi logic trên bất kỳ chân PCINT14..8 nào kích hoạt một yêu cầu ngắt,
PCIF2 sẽ được set là 1. Nếu bit I trong SREG và bit PCIE2 trong PCICR được set là 1,
MCU sẽ nhảy đến vectơ ngắt tương ứng. Flag bị xóa khi quy trình ngắt được thực hiện.
• Bit 0 - PCIF0: Pin Change Interrupt Flag 0
Khi một thay đổi logic trên bất kỳ chân PCINT7..0 nào kích hoạt một yêu cầu ngắt,
PCIF0 sẽ được set là 1. Nếu bit I trong SREG và bit PCIE0 trong PCICR được set là 1,
MCU sẽ nhảy đến vectơ ngắt tương ứng. Flag bị xóa khi quy trình ngắt được thực hiện.
❖ Thanh ghi PCMSK2 (Pin Change Mask Register 2)

Hình 2.12. Thanh ghi PCMSK2 (Pin Change Mask Register 2)


Bit 7..0 – PCINT23..16: Pin Change Enable Mask 23..16


Mỗi bit trong các chân PCINT23..16 chọn xem có bật ngắt thay đổi thay đổi mức
logic trên chân I/O tương ứng hay không. Nếu PCINT23..16 được đặt và bit PCIE2 trong
PCICR được thiết lập, ngắt thay đổi mức logic được bật trên chân I/O tương ứng. Nếu
PCINT23..16 bị xóa, ngắt thay đổi mức logic trên chân I/O tương ứng bị vô hiệu hóa.
❖ Thanh ghi PCMSK1 (Pin Change Mask Register 1)

Hình 2.13. Thanh ghi PCMSK1 (Pin Change Mask Register 1)
• Bit 7 – Res: Reserved Bit: Các bit này là các bit không được sử dụng trong
ATmega328P và sẽ luôn được đọc là 0.
• Bit 6..0 – PCINT14..8: Pin Change Enable Mask 14..8
Mỗi bit trong các chân PCINT14..8 chọn xem có bật ngắt thay đổi mức logic trên
chân I/O tương ứng hay không. Nếu PCINT14..8 được đặt và bit PCIE1 trong PCICR được
15


×