Tải bản đầy đủ (.docx) (24 trang)

Ứng dụng vi điều khiển ATmega16 mô phỏng cảm biến vị trí bướm ga

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 (447.29 KB, 24 trang )

Mục lục
MỞ ĐẦU...............................................................................................................2
Chương 1. Tổng quan về mạch điều khiển bướm ga điện tử của động cơ đốt
trong......................................................................................................................3
1.1.

Cảm biến vị trí bướm ga........................................................................3

1.1.1.

Chức năng và nhiệm vụ của cảm biến vị trí bướm ga.....................3

1.1.2.

Cấu tạo của cảm biến vị trí bướm ga...............................................3

1.1.3.

Nguyên lí hoạt động của cảm biến vị trí bướm ga..........................3

1.1.4.

Thơng số kỹ thuật của cảm biến vị trí bướm ga..............................4

1.1.5.

Sơ đồ mạch điện của cảm biến vị trí bướm ga................................4

1.2.

Cảm biến vị trí bàn đàn ga.....................................................................5



1.2.1.

Chức năng và nhiệm vụ của cảm biến bàn đạp ga..........................5

1.2.2.

Cấu tạo của cảm biến bàn đạp ga....................................................6

1.2.3.

Nguyên lí hoạt động của cảm biến vị trí bàn đạp ga.......................7

1.2.4.

Thơng số kĩ thuật của cảm biến bàn đạp ga....................................8

1.2.5.

Sơ đồ mạch điện của cảm biến bàn đạp ga......................................8

Chương 2.

Mô phỏng mạch điều khiển.............................................................8

2.1.

Vi điều khiển Atmega 16.......................................................................8

2.1.1.


Đặc tính...........................................................................................8

2.1.2.

Sơ đồ chân và chức năng các chân................................................10

2.2.

Màn hình LCD (Liquid Crystal Display).............................................11

2.2.1.

Mơ tả chung...................................................................................11

2.2.2.

Tính năng.......................................................................................12

2.2.3.

Sơ đồ chân.....................................................................................12

2.3.

Mơ phỏng mạch điều khiển bướm ga trên proteus..............................14

2.4.

Lập trình trên codevision.....................................................................15


1


MỞ ĐẦU
Trong q trình vận hành của ơ tơ sẽ sản sinh ra những chất thải vào mơi
trường vì vậy bài toán nhiên liệu ngày càng trở lên thiết thực. Một trong những
phương án được chú trọng quan tâm hiện nay là điều khiển độ mở bướm ga để
tối ưu hơn về tiết kiệm năng lượng, tối ưu hóa hiệu suất và tăng hiệu quả làm
việc của các hệ thống tùy thuộc vào các trường hợp khác nhau. Vì vậy, trong học
phần “Hệ thống điện điện tử ơ tơ” nhóm chúng em quyết định lựa chọn đề tài :
Ứng dụng vi điều khiển Atmega16 mô phỏng mạch điều khiển bướm ga điện tử
của động cơ đốt trong trên các ô tơ đời mới.
Mục đích của đề tài :
- Phân tích và lý giải được hệ thống vi điều khiển Atmega16 mô phỏng
mạch điều khiển bướm ga điện tử.
- Áp dụng tiếng Anh vào trong các hoạt động chuyên môn thuộc lĩnh vực
điện điện tử ô tô cũng như lập kế hoạch và tổ chức các hoạt động nhóm.
- Phân tích chức năng, nguyên lý và cấu trúc của các hệ thống vi điều khiển
Atmega16 mô phỏng mạch điều khiển bướm ga điện tử.
Thông qua việc làm đề tài này đã góp phần cho sinh viên củng cố lại các kiến
thức đã được học và tập cho sinh viên cách nghiên cứu làm việc độc lập, tạo
điều kiện thuận lợi cho công việc sau này của người kỹ sư tương lai.

2


Chương 1.Tổng quan về mạch điều khiển bướm ga điện tử của
động cơ đốt trong
1.1.


Cảm biến vị trí bướm ga
1.1.1. Chức năng và nhiệm vụ của cảm biến vị trí bướm ga

Cảm biến vị trí bướm ga được sử dụng để đo độ mở vị trí của cánh bướm
ga để báo về hộp ECU. Từ đó, ECU sẽ sử dụng thơng tin tín hiệu mà cảm biến
vị trí bướm ga gửi về để tính tốn mức độ tải của động cơ nhằm hiệu chỉnh thời
gian phun nhiên liệu, cắt nhiên liệu, điều khiển góc đánh lửa sớm, điều chỉnh bù
ga cầm chừng và điều khiển chuyển số.
Khi đạp gấp ga ở trong chế độ toàn tải, ECM sẽ tự động ngắt A/C, ECU chuyển
về chế độ “Open loop” để điều khiển phun nhiên liệu, bỏ qua tín hiệu từ cảm
biến ô-xy.
1.1.2. Cấu tạo của cảm biến vị trí bướm ga
Cấu tạo của cảm biến vị trí bướm ga khá đơn giản, chúng ta có thể phân
biệt chúng theo từng đời xe theo các dấu hiệu sau đây:
– Loại cảm biến bướm ga động cơ đời thấp sử dụng 2 tiếp điểm IDL và PSW.
– Loại thế hệ cao hơn 1 chút sử dụng một mạch tuyến tính ( bằng trở than) và
vẫn có tiếp điểm IDL.
– Loại sau này chỉ cịn dùng 1 mạch tuyến tính, khơng sử dụng tiếp điểm IDL
nữa, với loại khơng có cơng tắc thì ECM sẽ tự động chuyển chế độ không tải khi
điện áp tín hiệu báo về ECM xuống thấp.
– Các thế hệ động cơ đời mới sử dụng bướm ga điện tử sẽ có 2 tín hiệu cảm biến
bướm ga để tăng độ tin cậy, và cb bướm ga cũng không sử dụng loại mạch tuyến
tính trở than nữa mà sử dụng loại hiệu ứng Hall để tăng độ bền.
1.1.3. Nguyên lí hoạt động của cảm biến vị trí bướm ga

3


– Hoạt động của cảm biến vị trí bướm ga đời thấp loại tiếp điểm: cảm biến có 2

tiếp điểm IDL và PSW, Khi bướm ga ở vị trí khơng đạp ga, chân IDL được nối
với chân E2 báo về hộp ECU, ECU sẽ nhận biết là đang ở chế độ không tải để
bù ga và điều khiển lượng phun nhiên liệu ở chế độ không tải, khi ga lớn trên
50% cực PSW sẽ nối với cực E2 và ECU nhận biết được là đang mở ga lớn
(chạy ở chế độ toàn tải), ECU sẽ hiệu chỉnh lượng nhiên liệu đậm lên để tăng
cơng suất động cơ.
– Loại tuyến tính + tiếp điểm(cịn ít): Bao gồm 4 chân (+, -, signal, IDLE).
– Loại tuyến tính (giống 1 biến trở): Cảm biến được cấp nguồn Vc (5V) và
mát , cấu tạo gồm 1 mạch trở than và 1 lưỡi quét trên mạch trở than đó, khi trục
của cánh bướm xoay (đóng mở bướm ga) thì sẽ làm cho lưỡi quét thay đổi vị trí
trên mạch trở than làm thay đổi điện áp đầu ra (chân signal).
– Loại hall (đời mới): cb bướm ga có 2 tín hiệu, điện áp của cảm biến cũng thay
đổi theo độ mở của bướm ga nhưng dựa trên nguyên lý hiệu ứng Hall (có 2
loại):
* Loại thuận: 2 tín hiệu cùng tăng cùng giảm.
* Loại nghịch: 1 tín hiệu tăng 1 tín hiệu giảm.
1.1.4. Thơng số kỹ thuật của cảm biến vị trí bướm ga
Tín hiệu truyền về ECM của cảm biến vị trí bướm ga ở dạng điện áp, điện áp
này sẽ thay đổi theo độ mở của bướm ga. Tùy theo thiết kế mà TPS có một hoặc
hai tín hiệu gửi về ECM và có hoặc khơng có cơng tắc báo chế độ khơng tải.
– Điện áp chân tín hiệu ở khơng tải là 0,5-0,8V, khi đạp ga điện áp sẽ tăng dần
lên tới 4.5V
1.1.5. Sơ đồ mạch điện của cảm biến vị trí bướm ga
Trên cảm biến vị trí bướm ga điện tử thường có thêm motor điều khiển bướm ga
(2 dây)
4


Hình 1.1. Sơ đồ mạch cảm biến vị trí bướm ga
1.2.


Cảm biến vị trí bàn đàn ga
1.2.1. Chức năng và nhiệm vụ của cảm biến bàn đạp ga

Cảm biến bàn đạp chân ga được sử dụng để đo độ mở của bàn đạp chân ga khi
người lái xe nhấn vào bàn đạp. Lúc này, tín hiệu từ cảm biến bàn đạp ga sẽ được
gửi về ECU và ECU sẽ sử dụng các dữ liệu này để điều khiển mô tơ bướm ga
mở bướm ga cho động cơ tăng tốc theo độ mở của bàn đạp chân ga và theo chế
độ lái hiện thời hợp lý nhất.
Với động cơ phun dầu điện tử Common Rail thì tín hiệu từ cảm biến bàn đạp ga
truyền về ECU và ECU sử dụng nó để điều khiển lượng phun nhiên liệu để tăng
tốc động cơ.
5


Hộp ECU điều khiển hộp số tự động cũng sử dụng tín hiệu cảm biến chân ga để
điều khiển thời điểm chuyển số trong hộp số tự động, nếu người tài xế đạp ga
gấp ECU hộp số sẽ điều khiển Kick Down (về số thấp) để tăng tốc chiếc xe.
1.2.2. Cấu tạo của cảm biến bàn đạp ga
Cảm biến bàn đạp ga có cấu tạo khá giống với cảm biến bướm ga, nhưng do yêu
cầu về sự an toàn cũng như độ tin cậy về thông tin nên hầu hết các dịng xe ơ tơ
đều sử dụng 2 tín hiệu cảm biến bàn đạp ga để báo về ECU. Một số xe tải sử
dụng 1 tín hiệu cảm biến và 1 công tắc IDL ở cảm biến bàn đạp chân ga.
Cảm biến bàn đạp ga có 2 loại chính đó là: Loại tuyến tính và loại phần tử hall.
Cấu tạo của cảm biến bàn đạp ga loại tuyến tính

Hình 1.2. Cảm biến bàn đạp ga loại tuyến tính

6



Cấu tạo của cảm biến bướm ga loại phần tử Hall

Hình 1.3. Cảm biến bàn đạp ga loại phần tử Hall

1.2.3. Nguyên lí hoạt động của cảm biến vị trí bàn đạp ga
Do có cấu tạo giống như cảm biến bướm ga, nên cảm biến vị trí bàn đạp ga cũng
có ngun lý hoạt động như sau:
Loại tuyến tính (giống như biến trở): Cảm biến được cấp nguồn Vc (5V) và mát
, cấu tạo gồm 1 mạch trở than và 1 lưỡi quét trên mạch trở than đó, khi trục của
bàn đạp ga xoay thì sẽ làm cho lưỡi quét thay đổi vị trí trên mạch trở than làm
thay đổi điện áp đầu ra (chân signal), Lưu ý là trong cảm biến có cấu tạo như là
2 biến trở nên nó có 2 tín hiệu ( Chân Signal) báo về ECU để tăng độ tin cậy của
cảm biến.
Loại hall (đời mới): cảm biến bàn đạp ga cũng được cấp nguồn VC (5V), và
Mass, có 2 dây tín hiệu, điện áp của 2 chân tín hiệu (Signal) cảm biến cũng thay
đổi theo độ mở của bướm ga nhưng dựa trên nguyên lý hiệu ứng Hall (có 2
loại):
* Loại thuận: 2 tín hiệu cùng tăng cùng giảm.
7


* Loại nghịch: 1 tín hiệu tăng 1 tín hiệu giảm.
1.2.4. Thông số kĩ thuật của cảm biến bàn đạp ga
Tín hiệu truyền về ECM của cảm biến bàn đạp chân ga ở dạng điện áp, điện áp
này sẽ thay đổi theo độ mở của bàn đạp ga ga. Tùy theo thiết kế mà APS có một
hoặc hai tín hiệu gửi về ECM và có hoặc khơng có cơng tắc báo chế độ không
tải (Một số xe tải sử dụng 1 tín hiệu Signal và 1 tín hiệu cơng tắc IDL).
Điện áp chân tín hiệu ở khơng tải là 0,5-0,8V, khi đạp ga điện áp sẽ tăng dần lên
tới 4.5V

1.2.5. Sơ đồ mạch điện của cảm biến bàn đạp ga

Hình 1.4.Sơ đồ mạch điện của cảm biến bàn đạp ga

Chương 2.Mô phỏng mạch điều khiển
2.1.

Vi điều khiển Atmega 16
2.1.1. Đặc tính

Các tính năng của Atmega16 :
8


 Hiệu xuất cao ( high performance ), là loại vi điều khiển AVR 8 bit công
suất thấp
 Cấu trúc lệnh đơn giản, thời gian thực thi lệnh như nhau ( thật ra là
Advanced RISC Architecture ) :

130 lệnh thực thi trong vịng 1 chu kì chip

32 x 8 thanh ghi cơng dụng chung

Đầy đủ các sử lí tĩnh

Hỗ trợ 16 MIPS khi hoạt động ở tần số 16 MHz

Tích hợp bộ nhân 2 thực hiện trong 2 chu kì chip
 Bộ nhớ chương trình và dữ liệu khơng bay hơi ( nonvolatile )


16k byte trong hệ thống flash khả trình có thể nạp và xóa
1,000 lần

Tùy chọn khởi động phần mã với các bit nhìn độc lập trong
hệ thống bằng cách vào chương trình khởi động chip

512 byte EEPROM có thể ghi và xóa 100,000 lần

1k byte ram nhớ tĩnh trong ( internal SRAM )

Lập trình khóa cho phần mềm bảo mập
 Tính năng ngoại vi:
 2 bộ định thời/bộ đếm ( timers/counters ) 8 bit với các chế độ đếm
riêng rẽ và kiểu so sánh
 1 bộ định thời/bộ đếm ( timer/counter ) 16 bit với các chế độ đếm
riêng rẽ, kiểu so sánh và kiểu bắt sự kiện
 Bộ đếm thời gian thực với máy giao động riêng rẽ
 4 kênh băm xung PWM
 8 kênh ADC 10 bit
 Byte định hướng 2 đường giao tiếp nối tiếp
 Giao tiếp USART nối tiếp khả trình
 Giao tiếp SPI nối tiếp chủ/tớ ( master/slave )
 Bộ định thời khả trình giám sát xung nhịp của chip 1 cách riêng rẽ
 Tích hợp bộ so sánh tín hiệu tương tự
 Giao tiếp JTAG
 Các tính năng đặt biệt của vi điều khiển
 Chế độ bật nguồn reset và phát hiện Brown-out khả trình
 Tích hợp mạch dao động RC bên trong
 Các ngắt trong và ngoài
 6 chế độ nghỉ : rảnh rỗi,giảm nhiễu ADC, Tiết kiệm năng lượng,

nguồn thấp, Standby và Extended Standby
 Vào/ra và các gói dữ liệu
 32 chân vào ra khả trình
 40-pin PDIP and 44-lead TQFP
 Điện áp sử dụng
9








2.7 – 5.5V dùng với atmega16L
4.5 – 5.5V dùng với atmega16
Tốc độ xung nhịp dùng cho chip
0 – 8 MHz cho atmega16L
0 – 16 MHz cho atmega16
2.1.2. Sơ đồ chân và chức năng các chân

- Sơ đồ chân & kích thước

Hình 2.5. Vi xử lý Atemega 16
- Chức năng các chân
Atmega16 gồm có 40 chân:
Chân 1 đến 8 : Cổng nhập xuất dữ liệu song song B ( PORTB ) nó có
thể đc sử dụng các chức năng đặc biệt thay vì nhập xuất dữ liệu
-


Chân 9 : RESET để đưa chip về trạng thái ban đầu

-

Chân 10 : VCC cấp nguồn nuôi cho vi điều khiển

-

Chân 11,31 : GND 2 chân này đc nối với nhau và nối đất

Chân 12,13 : 2 chân XTAL2 và XTAL1 dùng để đưa xung nhịp từ bên
ngoài vào chip
10


Chân 14 đến 21 : Cổng nhập xuất dữ liệu song song D ( PORTD ) nó có
thể đc sử dụng các chức năng đặc biệt thay vì nhập xuất dữ liệu
Chân 22 đến 29 : Cổng nhập xuất dữ liệu song song C ( PORTC ) nó có
thể đc sử dụng các chức năng đặc biệt thay vì nhập xuất dữ liệu
-

Chân 30 : AVCC cấp điện áp so sánh cho bộ ADC

-

Chân 32 : AREF điện áp so sánh tín hiệu vào ADC

Chân 33 đến 40 : Cổng vào ra dữ liệu song song A ( PORTA ) ngồi ra nó
cịn đc tích hợp bộ chuyển đổi tín hiệu tương tự sang tín hiệu số ADC ( analog
to digital converter)

b, Đặc tính điện
- Điện áp nguồn cấp: 2.7V - 5.5V (max 6V)
- Dòng vào/ra mỗi port: cỡ 15mA
- Tần số thạch anh hoạt động: Thạch anh nội 4MHz, thạch anh ngoại 8MHz
2.2.

Màn hình LCD (Liquid Crystal Display).

Có rất nhiều loại màn hình LCD có thể hiển thị các số lượng ký tự khác
nhau, nhưng tất cả đều có chung cách thiết lập và sử dụng. Có hai loại LCD
thông dụng: Loại hiển thị ký tự gọi là Text LCD và loại hiển thị điểm ảnh gọi là
Graphic LCD.
Trong đề tài này, em chọn loại Text LCD có khả năng hiển thị 2 dòng, mỗi
dòng 16 ký tự theo bảng mã ASCII.
2.2.1. Mô tả chung
Text LCD là các loại màn hình tinh thể lỏng nhỏ dùng để hiển thị các dịng
chữ hoặc số trong bảng mã ASCII. Khơng giống các loại LCD lớn, Text LCD
được chia sẵn thành từng ô và ứng với mỗi ô chỉ có thể hiển thị một ký tự
ASCII. Mỗi ô của Text LCD bao gồm các “chấm” tinh thể lỏng, việc kết hợp
“ẩn” và “hiện” các chấm này sẽ tạo thành một ký tự cần hiển thị. Trong các Text
LCD, các mẫu ký tự được định nghĩa sẵn vì thế việc điều khiển Text LCD sẽ
tương đối dễ dàng hơn các graphic LCD. Kích thước của Text LCD được định
nghĩa bằng số ký tự có thể hiển thị trên 1 dịng và tổng số dịng mà LCD có. Ví
dụ LCD 16x2 là loại có 2 dịng và mỗi dịng có thể hiển thị tối đa 16 ký tự. Một
số kích thước Text LCD thơng thường gồm 16x1, 16x2, 16x4, 20x2, 20x4…

11


Hình 2.6. Màn hình LCD

Text LCD có 2 cách giao tiếp cơ bản là nối tiếp (như I2C) và song song,
được điều khiển bởi chip HD44780U của hãng Hitachi. HD44780U thường
được coi là chuẩn chung cho các loại Text LCD, vì thế khi giao tiếp các LCD có
kích thước hiển thị khác, chỉ cần quan tâm đến toạ độ theo dòng và cột theo
datasheet cung cấp bởi nhà sản xuất.
HD44780U là bộ điều khiển cho các Text LCD dạng ma trận điểm (dotmatrix), chip này có thể được dùng cho các LCD có 1, 2 hoặc 4 dịng hiển thị.
HD44780U có 2 chế độ giao tiếp là 4 bit và 8 bit. Nó chứa sẵn 208 ký tự mẫu
kích thước font 5x8 và 32 ký tự mẫu font 5x10 (tổng cộng là 240 ký tự mẫu
khác nhau). Tuy nhiên, một số ký tự theo bảng chữ cái tiếng Nhật.
2.2.2. Tính năng







Định dạng hiển thị: 16 ký tự x 2 dòng.
Ký tự trắng trên nền xanh dương.
Hoạt động ở nhiệt độ -10oC ~ +60oC.
Điện áp vận hành 4.5V ~ 5.5V.
Dòng cung cấp 1.3mA.
Dòng cung cấp nếu dùng đèn nền 18mA.
2.2.3. Sơ đồ chân

12


Các Text LCD theo chuẩn HD44780U thường có 16 chân trong đó 14 chân
kết nối với bộ điều khiển và 2 chân nguồn cho LED nền. Thứ tự các chân

thường được sắp xếp như sau:

Chức năng
Ground
Nguồn
Tương phản
Điều khiển

Dữ liệu / lệnh

Chân
1
2
3
4

Tên
Vss
Vdd
Vcc
RS

5

R/W

6

E


7
8
9
10
11
12
13
14

D0
D1
D2
D3
D4
D5
D6
D7

Logic
0
1
0
1
0
1
Từ 1 xuống 0
0/1
0/1
0/1
0/1

0/1
0/1
0/1
0/1

Mô tả
0
+5V
0 - Vdd
D0 - D7: Lệnh
D0 – D7: Dữ liệu
Ghi: Từ AVR vào LCD
Đọc: Từ LCD vào AVR
Vơ hiệu hóa LCD
LCD hoạt động
Bắt đầu ghi/đọc LCD
Bit 0 LSB
Bit 1
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7 MSB

Hình 2.7. Sơ đồ chân màn hình LCD

13



2.3.

Mơ phỏng mạch điều khiển bướm ga trên proteus

Hình 2.8. Mạch điều khiển bướm ga trên proteus
Trên proteus ta sử dụng 2 biến trở để mô phỏng cảm biến bàn đạp ga và cảm
biến độ mở bướm ga
Nguyên lý hoạt động :
Khi ta thay đổi giá trị của biến trở thì tương ứng việc độ mở của bướm ga và bàn
đạp ga thay đổi trong các chế độ làm việc của động cơ . Vi xử lý atemega 16 sẽ
tiếp nhận những thông tin này và điều chỉnh độ mở của bướm ga cho hợp lý với
chế độ làm việc. Góc mở được hiển thì trên màn hình LCD dưới dạng tỉ lệ phần
trăm.

14


Hình 2.9.Mạch điều khiển bướm ga khi hoạt động
2.4.

Lập trình trên codevision

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

Project :
Version :

Date

: 01/23/2019

Author : NeVaDa
Company :
Comments:
Chip type

: ATmega16
15


Program type

: Application

AVR Core Clock frequency: 16.000000 MHz
Memory model

: Small

External RAM size

:0

Data Stack size

: 256


*****************************************************/
#include <mega16.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 1
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20
// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
16


// Start the AD conversion
ADCSRA|=0x40;
}
void lcd_putnum (unsigned int z)

{ unsigned int a,b,c,d;
a=z/1000;
b=(z%1000)/100;
c=(z%100)/10;
d=z%10;
lcd_putchar (a+48);
lcd_putchar (b+48);
lcd_putchar (c+48);
lcd_putsf(".");
lcd_putchar (d+48);
lcd_putsf("%");
}
void adc(void)
{
unsigned char x;
x=adc_data[0];
lcd_gotoxy(0,0);
lcd_putsf("BANDAPGA:");
lcd_gotoxy(10,0);
lcd_putnum(x*3.9215);
}
void adc2(void)
{
unsigned char x;
17


x=adc_data[1];
lcd_gotoxy(0,1);
lcd_putsf("BUOMGA:");

lcd_gotoxy(10,1);
lcd_putnum(x*3.9215);
}
// Declare your global variables here

void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
18


// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out
Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
19



// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
20



// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: Free Running
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
ADCSRA=0xEC;
SFIOR&=0x1F;

// SPI initialization
21



// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
adc ();
adc2();

// Place your code here

}
}

22


Danh mục bảng biểu và hình vẽ
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình
Hình

1.1. Sơ đồ mạch cảm biến vị trí bướm ga....................................................5
1.2. Cảm biến bàn đạp ga loại tuyến tính....................................................6
1.3. Cảm biến bàn đạp ga loại phần tử Hall................................................7
1.4.Sơ đồ mạch điện của cảm biến bàn đạp ga............................................8
2.1. Vi xử lý Atemega 16...........................................................................10
2.2. Màn hình LCD....................................................................................12
2.3. Sơ đồ chân màn hình LCD.................................................................13
2.4. Mạch điều khiển bướm ga trên proteus.............................................14
2.5.Mạch điều khiển bướm ga khi hoạt động............................................15

23


Tài liệu tham khảo
[1]. />[2].Nguyễn Thành Bắc - Giáo trình hệ thống điện điện tử ô tô- Nhà xuất bản
khoa học và kĩ thuật.


24



×