3.2 LỰA CHỌN THIẾT BỊ: Với mục đích điều khiển ứng dụng vừa và nhỏ trong đề tài luận văn tốt nghiệp này thì việc sử dụng sử dụng vi điều khiển AVR ATMEGA16L là một lựa trọn tối ưu bởi
Trang 1LỜI CẢM ƠN
Luận văn tốt nghiệp là một bước ngoặt đánh dấu sự chuyển tiếp từ sinh viên trở thành kỹ sư Quá trình làm luận văn là quá trình học tập, tích lũy và kiểm tra lại kiến thức đã học áp dụng vào thực tế Trong quá trình thực hiện luận văn, tôi đã nhận được
sự hỗ trợ và động viên rất nhiều từ gia đình, sự hướng dẫn, chỉ bảo tận tình của thầy hướng dẫn Ths THIỀU QUANG TRÍ và các thầy cô khác trong khoa cùng các bạn Nay những khó khăn đã qua, luận văn đã được hoàn thành Tôi xin chân thành gởi lời cám ơn đến quý thầy cô trong khoa Điện-Điện Tử, chuyên ngành Tự Động Điều Khiển, trường Đại Học TÔN ĐỨC THẮNG với tất cả sự kính trọng biết ơn sâu sắc, vì sự tận tình giúp đỡ, dạy bảo trong suốt thời gian tôi theo học tại trường
Xin chân thành cảm ơn thầy THIỀU QUANG TRÍ, người hướng dẫn trực tiếp đề tài luận văn của tôi Trong quá trình làm luận văn, thầy đã tận tình hướng dẫn, định hướng
và hỗ trợ tôi thực hiện đề tài, giúp giải quyết khó khăn trong đề tài luận văn này Để có thể hoàn thành đề tài đúng thời gian, đúng yêu cầu Một lần nữa xin chân thành cảm ơn thầy Chúc tất cả thầy cô và các bạn thật nhiều sức khỏe và thành đạt Xin cám ơn
Trang 2MỤC LỤC
Lời cảm ơn 1
Danh mục các từ viết tắt 5
Danh mục hình vẽ 7
Danh mục bảng biểu 9
CHƯƠNG 1: TỔNG QUAN 1.1 Lời mở đầu 10
1.2 Nguồn gốc và quá trình phát triển của Robot 10
CHƯƠNG 2: GIỚI THIỆU ĐỀ TÀI, THÀNH PHẦN VÀ CẤU TẠO CHUNG CỦA ĐỀ TÀI 2.1 Giới thiệu đề tài 12
2.2 Thành phần cấu tạo chung 12
2.2.1 Cấu tạo phần cứng của xe 12
2.2.2 Cấu tạo phần điều khiển của xe 12
2.2.3 Cấu tạo phần điều khiển tay cầm của xe 13
CHƯƠNG 3: PHƯƠNG ÁN THIẾT KẾ VÀ LỰA CHỌN THIẾT BỊ 3.1 Phương án thiết kế 14
3.1.1 Phần điều khiển xe 14
3.1.2 Phần điều khiển tay cầm 14
3.2 Lựa chọn thiết bị 15
CHƯƠNG 4: GIỚI THIỆU CÁC LINH KIỆN SỬ DỤNG TRONG ĐỀ TÀI 4.1 Vi điều khiển AVR ATmega 16L 16
4.1.1 Kiến trúc vi điều khiển AVR 16
4.1.2 Giới thiệu vi điều khiển AVR ATmega 16l 16
4.1.3 Đặc điểm vi điều khiển AVR ATmega 16l 17
4.1.4 Cấu trúc bộ nhớ 19
4.1.5 Cổng I/O vào ra 21
4.1.6 Timer/Counter 22
4.1.7 ADC 27
4.1.8 Ngắt ngoài 32
4.2 Cảm biến gia tốc góc nghiêng MMA7260Q 33
4.2.1 Tìm hiểu chung về cảm biến gia tốc 33
4.2.2 Giới thiệu cảm biến gia tốc MMA7260Q của Freescale 34
4.2.3 Cách xác định góc nghiêng với cảm biến MMA7260Q 40
Trang 34.3 Cặp module thu phát RF 41
4.3.1 Module phát RF 42
4.3.2 Module thu RF 43
4.4 Cặp IC giải mã 43
4.4.1 PT2262 43
4.4.2 PT2272 45
4.5 Opamp so sánh LM324 47
4.6 LED thường, LED thu phát hồng ngoại 48
4.7 Quang trở 49
4.8 Cặp transitor IR9540 và IR540 49
4.9 IC 74LS139 51
CHƯƠNG 5: GIẢI THUẬT XỬ LÝ VÀ THIẾT KẾ MẠCH NGUYÊN LÝ 5.1 Phần bám vạch 53
5.1.1 Giải thuật dò đường 53
5.1.2 Nguyên lý hoạt động 54
5.1.3 Xử lý tín hiệu cảm biến 54
5.1.4 Mạch nguyên lý 55
5.2 Phần tránh vật 56
5.2.1 Giải thuật tránh vật 56
5.2.2 Nguyên lý hoạt động 56
5.2.3 Mạch nguyên lý 58
5.3 Phần xử lý trung tâm 58
5.3.1 Giải thuật xử lý 58
5.3.2 Mạch nguyên lý 60
5.4 Phần điều khiển động cơ 60
5.4.1 Giải thuật điều khiển động cơ 60
5.4.2 Nguyên lý hoạt động 63
5.4.3 Mạch nguyên lý 65
5.5 Phần điều khiển thu phát RF 65
5.5.1 Giải thuật thu phát không dây 65
5.5.2 Nguyên lý hoạt động 68
5.5.3 Mạch nguyên lý 71
5.6 Phần điều khiển tay cầm 72
CHƯƠNG 6: GIẢI THUẬT 6.1 Giải thuật bám vạch và né vật 75
6.2 Giải thuật điều khiển dùng tay cầm 77
6.2.1 Giải thuật điều khiển của xe 77
Trang 46.2.2 Giải thuật điều khiển của tay cầm 78
6.2.3 Giải thuật phát tín hiệu 78
6.2.4 Giải thuật thu tín hiệu 79
CHƯƠNG 7: TỔNG KẾT 7.1 Những kết quả đạt được 80
7.2 Những kết quả chưa đạt được 80
7.3 Hướng phát triển 80
Tài liệu tham khảo 81
Trang 5DANH MỤC CÁC TỪ VIẾT TẮT
IC Intergrated circuit
EEPROM electrically erasable programm
ADC Analog-to digital Converter
SCK Serial Clock
MISO Master Input/Slave Output
MOSI Master Output/Slave Input
SDA Serial Data
JTAG Joint Test Action Group
PWM Pulse Width Modulation
MCU Micro Control Unit
UDR USART Data Register
FIFO First In Fist Out
UDRE USART Data Register Empty
UBRR USART Baud Rate Register
RAM Random Access Memory
RTC Reak Time Clock
BCD Binary Code Decimal
SRAM Static Random Access Memory
LSB Least Significant Bit
MSB Most Significant Bit
Trang 6CRC Cyclic Redundancy Check
BJT Bipolar Junction Transistor
MOSFET Metal Oxide Semiconductor Field-Effect Transistor
Trang 7DANH MỤC HÌNH VẼ
Hình 3.1 Sơ đồ khối điều khiển xe .14
Hình 3.2 Sơ đồ khối điều khiển tay cầm .14
Hình 4.1 Sơ đồ chân AVR ATmega 16L .17
Hình 4.2 Cấu trúc cơ bản của AVR ATmega 16L .19
Hình 4.3 Cấu trúc bộ nhớ AVR ATmega 16L 20
Hình 4.4 Cấu trúc thanh ghi TCCR0 23
Hình 4.5 Cấu trúc thanh ghi TIMSK .23
Hình 4.6 Cấu trúc thanh ghi TCNT1H và TCNT1L 24
Hình 4.7 Cấu trúc thanh ghi TCCR1A và TCCR1B .24
Hình 4.8 Cấu trúc thanh ghi OCR1AH, OCR1AL VÀ OCR1BH, OCR1BL .25
Hình 4.9 Cấu trúc thanh ghi TIMSK .26
Hình 4.10 Cấu trúc thanh ghi TIFR .26
Hình 4.11 Cấu trúc thanh ghi ADMUX 28
Hình 4.12 Cấu trúc thanh ghi ADCSRA .29
Hình 4.13 Cấu trúc thanh ghi ADCH và ADCL khi ADLAR=0 .31
Hình 4.14 Cấu trúc thanh ghi ADCH và ADCL khi ADLAR=1 .31
Hình 4.15 Cấu trúc thanh ghi SFIOR .31
Hình 4.16 Cấu trúc thanh ghi MCUCR .32
Hình 4.17 Cấu trúc thanh ghi GICR 32
Hình 4.18 Cấu trúc thanh ghi GICR .32
Hình 4.19 Sơ đồ thiết lập ngắt ngoài .33
Hình 4.20 Sơ đồ chân cảm biến MMA7260Q .34
Hình 4.21 Sơ đồ khối cảm biến gia tốc MMA7260Q 35
Hình 4.22 Sơ đồ kết nối cảm biến .37
Hình 4.23 Mạch nguyên lý kết nối của module cảm biến .38
Hình 4.24 Sơ đồ kết nối cảm biến với vi điều khiển .38
Hình 4.25 Sơ đồ các trục của cảm biến .39
Hình 4.26 Phương pháp chọn góc trong thực tế .40
Hình 4.27 Cấu tạo module phát RF .42
Hình 4.28 Cấu tạo module thu RF .43
Hình 4.29 Sơ đồ chân IC PT2262 44
Hình 4.30 Sơ đồ đấu nối với module phát RF .45
Hình 4.31 Sơ đồ chân IC PT2272 46
Hình 4.32 Sơ đồ kết nối với module thu RF 46
Hình 4.33 Cấu tạo chân IC LM324 .47
Hình 4.34 Cấu tạo LED hồng ngoại .48
Hình 4.35 Cấu tạo quang trở 49
Trang 8Hình 4.36 Cấu tạo chân MOSFET ngược kênh N 50
Hình 4.37 Cấu tạo MOSFET IR9540 .51
Hình 4.38 Cấu tạo MOSFET IR540 .51
Hình 4.39 Cấu tạo chân và bảng giá trị hoạt động của IC 74LS139 .51
Hình 5.1 Mô phỏng hoạt động của mạch LED dò đường .53
Hình 5.2 Nguyên lý hoạt động của quang trở 54
Hình 5.3 Sơ đồ nguyên lý mạch cảm biến dò đường .55
Hình 5.4 Mô phỏng hoạt động của mạch phát hiện vật cản .56
Hình 5.5 Sơ đồ nguyên lý mạch phát hiện vật cản .58
Hình 5.6 Cấu tạo chân vđk AVR ATmega 16L .59
Hình 5.7 Sơ đồ nguyên lý mạch điều khiển trung tâm .60
Hình 5.8 Mô hình mô phỏng cầu H .61
Hình 5.9 Các trường hợp hoạt động của cầu H .61
Hình 5.10 Nguyên lý hoạt động của cặp MOSFET kênh N và P .63
Hình 5.11 Sơ đồ nguyên lý của mạch cầu H .65
Hình 5.12 Cặp module thu phát RF .66
Hình 5.13 Phương pháp mã hóa Manchester 67
Hình 5.14 Cặp IC PT2262 và PT2272 68
Hình 5.15 Cấu trúc các bit mã hóa của PT2262 .68
Hình 5.16 Cấu trúc bit đồng bộ của PT2262 .69
Hình 5.17 Cấu trúc Code Word của PT2262 69
Hình 5.18 Cấu trúc một Fram truyền của PT2262 .69
Hình 5.19 Chu kì của các bit mã hóa trong PT2262 69
Hình 5.20 Cấu trúc của các bit mã hóa trong PT2272 70
Hình 5.21 Chu kì hoạt động của các bit 0, 1 .71
Hình 5.22 Sơ đồ nguyên lý mạch thu kết hợp IC PT2272 72
Hình 5.23 Sơ đồ nguyên lý mạch phát kết hợp IC PT2262 72
Hình 5.24 Module cảm biến gia tốc MMA7260Q 73
Hình 5.25 Sơ đồ nguyên lý mạch điều khiển tay cầm .75
Hình 6.1 Sơ đồ khối giải thuật bám vạch và né vật 76
Hình 6.2 Sơ đồ khối giải thuật điều khiển xe .77
Hình 6.3 Sơ đồ khối giải thuật tay cầm điều khiển .78
Hình 6.4 Sơ đồ khối giải thuật phát tín hiệu 78
Hình 6.5 Sơ đồ khối giải thuật thu tín hiệu 79
Trang 9DANH MỤC BẢNG BIỂU
Bảng 4.1 Bảng giá trị các cổng I/O 22
Bảng 4.2 Bảng chức năng các bit CS0X 23
Bảng 4.3 Bảng chức năng các bit CS12, CS11 và CS10 25
Bảng 4.4 Bảng các bit WGM và các chế độ hoạt động của T/C1 27
Bảng 4.5 Bảng giá trị điện áp tham chiếu .28
Bảng 4.6 Bảng chọn chế độ chuyển đổi 29
Bảng 4.7 Bảng hệ số chia xung nhịp cho ADC 30
Bảng 4.8 Bảng nguồn kích ADC trong chế độ Auto Trigger 31
Bảng 4.9 Bảng chức năng các bit ISC .32
Bảng 4.10 Bảng giá trị hoạt động của cảm biến gia tốc MMA7260Q .35
Bảng 4.11 Bảng chức năng từng chân của cảm biến .36
Bảng 4.12 Bảng giá trị độ nhạy của cảm biến gia tốc .36
Bảng 4.13 Bảng giá trị của lực hấp dẫn tác dụng cảm biến gia tốc 39
Bảng 4.14 Bảng giá trị ngõ ra của cảm biến 40
Bảng 4.15 Bảng thông số hoạt động của module phát RF .42
Bảng 4.16 Bảng thông số hoạt động của module thu RF .43
Bảng 4.17 Bảng giá trị hoạt động của IC 74LS139 52
Bảng 5.1 Bảng giá trị hoạt động của cầu H 65
Bảng 5.2 Bảng giá trị thời gian các bit giải mã .71
Bảng 5.3 Bảng giá trị các bit giải mã nhị phân 71
Trang 10Nhằm tìm hiểu thêm về lĩnh vực này, đồng thời là lựa chọn đề tài cho luận văn tốt nghiệp, tôi đã nghiên cứu và thiết kế thi công hoàn chỉnh mô hình Robot tự động được
sử dụng khá phổ biến ngày nay, đó là đề tài “THIẾT KẾ XE ROBOT HAI CHỨC NĂNG” Mô hình đã hoàn thành, đáp ứng được phần lớn những điều kiện đề ra
Trong quá trình làm luận văn, đã tích lũy và học hỏi thêm được rất nhiều kiến thức quan trọng
1.2 NGUỒN GỐC VÀ QUÁ TRÌNH PHÁT TRIỂN CỦA ROBOT
Ban đầu thuật ngữ Robot được hiểu đơn giản là cỗ máy có thể chuyển động được Năm 1400 trước Công Nguyên, Người Babilon đã phát minh ra một chiếc đồng hồ đo thời gian sử dụng dòng chảy của nước Đây được coi là cỗ máy “Robot” đầu tiên trong lịch sử Và nhiều phát minh có hình dáng có thể chuyển động được do các kỹ sư Hy Lạp cổ đại chế tạo ra
Năm 1495, Leona Da Vinci chế tạo ra một con Robot có hình dạng giống như con người nhằm chứng tỏ cơ thể người hoàn toàn có thể mô phỏng lại được Đáng chú ý là Robot này có một cơ cấu hàm rất giống với con người về mặt giải phẫu học Mô hình thiết kế này của Da Vinci là cơ cở, là nguồn cảm hứng cho cơ quan hàng không vũ trụ quốc tế NASA phát triển một loại Robot AnthRobot thay con người trên các trạm vũ trụ quốc tế và trợ giúp con người chinh phục sao hỏa
Trải qua nhiều thời kì phát triển không ngừng cả về chất lượng và số lượng hình dạng cấu trúc… Đến năm 1961, thời đại phát triển của ngành Robot công nghiệp, cỗ máy Robot công nghiệp đầu tiên có tên là Unimate, được chế tạo tại phân xưởng nhà máy General Motor ở NewJersey Trên thực tế hầu hết các Robot Unimate bán ra là để làm công việc lấy khuân ra khỏi các máy dập khuân và để hàn điểm trên ôtô
Năm 1969, Victor Scheinman, một sinh viên chế tạo máy làm việc tại phòng thí nghiệm trí thông minh nhân tạo Stanford đã chế tạo ra cánh tay Stanford
Thiết kế này đã trở thành chuẩn mực và vẫn đang ảnh hưởng nhiều đến những thiết
kế của những cánh tay Robot ngày nay Đây là cánh tay Robot đầu tiên chạy bằng điện
và điều khiển bằng máy tính thành công
Trang 11Từ năm 1966 cho đến năm 1972, trung tâm trí tuệ nhân tạo của SRI (nay là viện nghiên cứu Stanford, Menlo Park, California) đã chế tao thành công Robot Shakey, là Robot di động đầu tiên có thể suy luận hoạt động của nó, là nền tảng và có ảnh hưởng
to lớn đến trí thông minh nhân tạo và khoa học Robot ngày nay
Từ năm 1979, phòng thí nghiệp Stanford tiếp tục đưa ra thiết kế mới, xe tự định vị Standford, đây là cột mốc đánh dấu thành quả mới cho những cỗ xe tự động
Kể từ thập niên 80 cho đến nay ngành công nghiệp Robot bắt đầu phát triển mạnh
mẽ với những Robot mới xuất hiện liên tục
Năm 1992 Robot tám chân Dante thực hiện thám hiểm núi lửa Erebus ở AntarctICa
Nó được điều khiển từ Mỹ Và đã đặt ra cột mốc cho một kỷ nguyên mới: Robot thám hiểm những khu vực nguy hiểm thay cho con người
Năm 2000, sau 14 năm dài nghiên cứu và thử nghiệm, Honda đã cho ra đời Asimo người máy thông minh và giống người thật nhất thế giới ASIMO là viết tắt của Advanced Step in Innovative Mobility, có nghĩa là "Bước đột phá về khả năng di chuyển sáng tạo"
Và cho đến ngày nay, với những cải tiến đổi mới không ngừng, các Robot thông minh liên tục ra đời với những khả năng không ngờ Đánh dấu những tiến bộ vượt bật
về khả năng sáng tạo của con người
Trang 12CHƯƠNG 2
GIỚI THIỆU ĐỀ TÀI, THÀNH PHẦN VÀ CẤU TẠO CHUNG
CỦA ĐỀ TÀI
2.1 GIỚI THIỆU ĐỀ TÀI:
Đề tài luận văn:“ THIẾT KẾ XE ROBOT 2 CHỨC NĂNG ”
Sản phẩm sau khi hoàn thành là 1 chiếc xe tự động với 2 chức năng:
+ Chức năng 1: có khả năng di chuyển theo 1 line dò đường hình dạng tùy ý
+ Chức năng 2: xe được điều khiển bằng 1 tay cầm không dây, điều khiển xe ở khoảng cách khá xa, tay cầm sử dụng cảm biến gia tốc góc nghiêng MMA7260Q, điều khiển hướng chạy, tốc độ nhanh chậm của xe bằng góc nghiêng của tay cầm
2.2 THÀNH PHẦN CẤU TẠO CHUNG:
2.2.1 Cấu tạo phần cứng của xe:
Xe được thiết kế dựa trên khung nhôm mỏng, có kết cấu vững chắc có khả năng chịu
lực tốt và trọng lượng nhẹ
Hai bánh xe sau (bánh xe đẩy) sử dụng bánh xe bằng nhôm có lớp bọc cao su giúp
bám đường tốt hơn
Hai bánh xe trước (bánh xe mồi) sử dụng bánh xe mồi bằng nhựa có lớp bọc cao su,
kích thước nhỏ hơn, nhẹ hơn giúp bám đường tốt và bẻ lái linh hoạt hơn
Sử dụng cặp động cơ 12Vdc, tốc độ 6400rpm, có bộ nhông truyền động giảm tốc tỉ lệ khá cao giúp xe có moment tải cao, có khả năng chở nặng
2.2.2 Cấu tạo phần điều khiển của xe:
+ Sử dụng AVR ATMEGA16L làm trung tâm điều khiển của xe
+ Dùng 8 cặp LED thuờng kết hợp quang trở làm mạch dò đường (bám line dò đường)
và LM324 làm mạch so sánh tín hiệu cảm biến thu được để đưa về xử lý
+ Dùng 10 cặp LED thu phát hồng ngoại làm mạch phát hiện vật cản (gắn phía trước và hai bên đầu xe) và LM324 làm mạch so sánh tín hiệu cảm biến thu được để đưa về xử
+ Module điều khiển 8 relay dùng để điều khiển các thiết bị trên xe
+ Nguồn sử dụng là bình acquy xe máy 12v-7a
Trang 132.2.3 Cấu tạo phần điều khiển tay cầm của xe:
+ Sử dụng AVR ATMEGA 16L làm trung tâm xử lý
+ Dùng cảm biến gia tốc góc nghiêng MMA7260Q làm cảm biến chính đo góc nghiêng của tay cầm theo 3 trục x, y, z Rồi đưa ra giá trị tương ứng để xử lý
+ Sử dụng module phát RF không dây kết hợp IC giải mã địa chỉ PT2262 (chống nhiễu)
để kết nối với module thu RF trên xe
ƯU ĐIỂM CỦA XE:
+ Gọn nhẹ, linh hoạt, di chuyển với tốc độ ổn định
+ Hướng phát triển rộng, ứng dụng phổ biến trong nhiều lĩnh vực nghiên cứu, chế tạo hiện đại hơn
+ Xe đạt được yêu cầu đề ra bám vạch tương đối, báo động và tránh tránh vật, điều khiển bằng góc nghiêng của tay cầm
Trang 14CHƯƠNG 3
PHƯƠNG ÁN THIẾT KẾ VÀ LỰA CHỌN THIẾT BỊ
3.1 PHƯƠNG ÁN THIẾT KẾ:
3.1.1 Phần điều khiển xe:
3.1.2 Phần điều khiền tay cầm:
KHỐI XỬ LÝ : Giữ chức năng thu nhận tín hiệu từ các khối cảm biến, xử lý và xuất tín hiệu điều khiển đến các khối chức năng
KHỐI CÔNG SUẤT: Có chức năng đảm bảo đủ dòng cung cấp cho hoạt động của toàn
KHỐI CẢM BIẾN VẬT CẢN
KHỐI ĐIỀU KHIỂN THIẾT BỊ
Hình 3.1 Sơ đồ khối điều khiển xe
KHỐI THU PHÁT RF
Trang 15KHỐI THU PHÁT RF: Giữ chức năng kết nối không dây giữa tay cầm và xe
KHỐI CẢM BIẾN: Dùng để đo các giá trị thực tế rồi chuyển thành các đại lượng thích hợp để truyền về xử lý
KHỐI ĐỘNG LỰC: Tạo ra các chuyển động nhanh chậm, hướng di chuyển
KHỐI ĐIỀU KHIỂN THIẾT BỊ: dùng để điều khiển các thiết bị ngoại vi
KHỐI ĐIỀU KHIỂN BẰNG NÚT NHẤN (KEY BOARD): thực hiện cài đặt điều khiển xe bằng nút nhấn
3.2 LỰA CHỌN THIẾT BỊ:
Với mục đích điều khiển ứng dụng vừa và nhỏ trong đề tài luận văn tốt nghiệp này thì việc sử dụng sử dụng vi điều khiển AVR ATMEGA16L là một lựa trọn tối ưu bởi sự đơn giản lập trình, tốc độ xử lý cao, giá thành thấp, nhiều tính năng, dễ tìm kiếm, khả năng giao tiếp với các thiếp bị khác rộng
Do AVR 16L đã có tích hợp ADC sẵn bên trong, nên chúng ta không cần sử dụng
IC ADC 0809 Đây là một thuận lợi của các vi điều khiển hiện đại hiện nay, nó giúp chúng ta làm đơn giản mạch điện
Phần cảm biến bám vạch, 8 cặp LED thường được sử dụng kết hợp quang trở, dựa
vào đặc tính của quang trở để thiết kế ra mạch phát hiện sáng tối
Phần cảm biến phát hiện vật cản, sử dụng 10 cặp LED thu phát hồng ngoại, với khả
năng phát ra ánh sáng gần vùng hồng ngoại (bước sóng 880nm), đây là cảm biến được
sử dụng rộng rãi vì tính năng đơn giản, giá thành thấp, mà cho hiệu quả cao
Sử dụng IC LM324 để khuyếch đại tín hiệu cảm biến thu được, rồi sau đó đưa về
xử lý
Phần cảm biến gia tốc góc nghiêng ở tay cầm ta sử dụng IC MMA7260Q có chức
năng chuyển đổi từ góc nghiêng trong không gian thành giá trị điện áp (sẽ trình bày rõ hơn ở phần CHƯƠNG 4)
Phần thu phát không dây sử dụng cặp thu phát RF với tần số 315Mhz, kết hợp thêm
cặp IC giải mã địa chỉ PT2262, PT2272 giúp chống nhiễu tốt
Phần công suất điểu khiển động cơ, sử dụng cặp transitor trường kênh P là IR9540
và kênh N là IR540 thiết lập thành mạch cầu H, để điều khiển chiều và tốc độ động cơ Kết hợp sử dụng IC 74LS139 giúp bảo vệ chống ngắn mạch
Sử dụng cặp động cơ 24Vdc, có bộ truyền nhông giảm tốc giúp có moment tải tốt
Tất cả các linh kiện sẽ được trình bày chi tiết ở chương 4
Trang 16CHƯƠNG 4
GIỚI THIỆU CÁC LINH KIỆN SỬ DỤNG TRONG ĐỀ TÀI
4.1 VI ĐIỀU KHIỂN AVR ATMEGA 16L:
4.1.1 Kiến trúc vi điều khiển AVR:
AVR là họ vi điều khiển 8 bit theo công nghệ mới, với những tính năng rất mạnh và được tích hợp trong chip của hãng Atmel theo công nghệ RISC, nó mạnh ngang hàng với các họ vi điều khiển 8 bit khác như PIC, Pisoc
Do ra đời muộn hơn nên họ vi điều khiển AVR có nhiều tính năng mới đáp ứng tối
đa nhu cầu của người sử dụng, so với họ 8051 89xx sẽ có độ ổn định, khả năng tích hợp, sự mềm dẻo trong việc lập trình và rất tiện lợi
* Tính năng mới của họ AVR:
Giao diện SPI đồng bộ
Các đường dẫn vào/ra (I/O) lập trình được
Giao tiếp I2C
Bộ biến đổi ADC 10 bit
Các kênh băm xung PWM
Các chế độ tiết kiệm năng lượng như sleep, stand by vv
4.1.2 Giới thiệu vi điều khiển AVR ATmega 16L:
ATmega16L có đầy đủ tính năng của họ AVR, về giá thành so với các loại khác thì giá thành là vừa phải khi nghiên cứu và làm các công việc ứng dụng tới vi điều khiển ATmega16L gồm 40 chân, chia làm nhiều Port xuất nhập (mỗi Port điều có điện trở nội kéo lên nguồn) như hình bên dưới
+ PortA: PA0-PA7 (chân40-33)
+ PortB: PB0-PB7 ( chân1-8)
+ PortC: PC0-PC7 (chân22-29)
+ PortD: PD0-PD7 (chân4l-20)
Trang 17Hình 4.1 Sơ đồ chân AVR ATmega 16L
Chân RESET (chân 9) được nối với trở 4k7 kéo lên nguồn
Chân VCC, GND (chân 10, 11) được nối tới nguồn 5V
Chân XTAL1, XTAL2 (chân 13,12) là 2 chân dao động ngoài, nối với thạch anh 12Mhz
và 2 tụ gốm 33pF kéo xuống GND
Các chân MOSI, MISO, SCK, RESET, GND được nối đến một đế cắm 5 chân để nạp chương trình cho AVR
Chân SDA, SCL dùng cho giao tiếp I2C
Chân RXD, TXD dùng để truyền nhận dữ liệu USART
4.1.3 Đặc điểm vi điều khiển AVR ATmega 16L:
Hiệu năng cao, tiêu thụ năng lượng ít
Kiến trúc RISC – Reduce Instruction Set Computer
Có 131 lệnh mạnh, hầu hết các lệnh thực hiện trong một chu kỳ
Có 32 Thanh chi 8-bit đa năng
Tốc độc thực hiện lên tới 12 triệu lệnh trong 1 giây với tần số 12Mhz
Có 2 bộ nhân, mỗi bộ thực hiện trong thời gian 2 chu kỳ
Các bộ nhớ chương trình và dữ liệu cố định
16 Kb bộ nhớ flash có khả năng tự lập trình trong hệ thống
Trang 18Có thể thực hiện được 10.000 lần ghi/xoá
Vùng mã Boot tuỳ chọn với những bit khoá độc lập
Lập trình trên trong hệ thống bởi chương trình on-chip Boot
Thao tác đọc trong khi ghi thực sự
512 byte EEPROM
Có thể thực hiện 100.000 lần ghi /xoá
1Kb SRAM bên trong
Lập trình Khoá an ninh phần mềm
Giao diện nối tiếp đồng bộ (chuẩn IEEE.std 1149.1) khi thực hiện trao đổi dữ liệu với các thiết bị tương thích thì khung dữ liệu 8 bit giữa hai thiết bị được truyền đồng bộ (cùng xung nhịp đồng hồ)
Lập trình bộ nhớ Flash, EEPROM, ngắt, khoá Bit thông qua giao diện JTAG
2 bộ định thời/ bộ đếm 8 bit với các chế độ tỷ lệ định trước và chế độ so sánh
1 bộ định thời/ bộ đếm 16 bit với các chế độ tỷ lệ định trước riêng biệt, chế độ so sánh
và chế độ bắt giữ
Bộ thời gian thực với bộ tạo dao động riêng biệt
4 kênh PWM
8 kênh, ADC 10 bit
Giao điện nối tiếp 2 dây hướng tới byte
Bộ truyền tin nối tiếp USART khả trình
Giao diện SPI chủ / tớ
Watchdog Timer khả trình với bộ tạo dao động bên trong riêng biệt
Máy so mẫu tương tự bên trong
Power-on Reset và dò Brown-out khả trình
Bộ tạo dao động được định cỡ bên trong
Các nguồn ngắt bên trong và bên ngoài
6 chế độ ngủ: Nhàn rỗi, giảm ồn ADC, tiết kiệm năng lượng, giảm năng lượng tiêu thụ, chờ, đóng băng trạng thái
32 đường I/O khả trình
Điện áp hoạt động :2,7 – 5.5V
Nhiệt độ hoạt động: -40 độ C đến 85 độ C
Các tốc độ: 0-8 Mhz khi điện áp 2.7 – 5.5V, 0 – 16Mhz khi điện áp 4.5 – 5V
Tiêu thụ năng lượng tại 1 Mhz, 3V, 25 độ C đối với ATmega16L
Hoạt động tích cực: 1.1mA
Chế độ ngủ 0.35mA
Chế độ năng lượng thấp: <1 μA khi điện áp 2.7V
Trang 19*Cấu trúc cơ bản của vi điều khiển AVR ATmega 16L:
Hình 4.2 Cấu trúc cơ bản của AVR ATmega 16L
4.1.4 Cấu trúc bộ nhớ:
Bộ nhớ vi điều khiển AVR có cấu trúc Harvard là cấu trúc có đường Bus riêng cho
bộ nhớ chương trình và bộ nhớ dữ liệu
Bộ nhớ AVR được chia làm 2 phần chính: Bộ nhớ chương trình (program memory)
và bộ nhớ dữ liệu (Data memory)
Bộ nhớ chương trình có độ rộng bus là 16 bit Những địa chỉ đầu tiên của bộ nhớ chương trình được dùng cho bảng véc tơ ngắt
Ở AVR ATmega bộ nhớ chương trình còn có thể được chia làm 2 phần : phần boot loader (Boot loader program section) và phần ứng dụng (ApplICation program section)
Trang 20Phần boot loader chứa chương trình boot loader Chương trình Boot loader là một phần mềm nhỏ nạp trong vi điều khiển và được chạy lúc khởi động.Phần mềm này có thể tải vào trong vi điều khiển chương trình của người sử dụng và sau đó thực thi chương trình này Mỗi khi reset vi điều khiển CPU sẽ nhảy tới thực thi chương trình boot loader trước, chương trình boot loader sẽ dò xem chương trình nào cần nạp vào vi điều khiển hay không, nếu có chương trình cần nạp, boot loader nạp chương trình vào vùng nhớ ứng dụng (ApplICation program section), rồi thực thi chương trình này Ngược lại, boot loader sẽ chuyển tới chương trình ứng dụng có sẵn trong vùng nhớ ứng dụng để thực thi chương trình này
Hình 4.3 Cấu trúc bộ nhớ AVR ATmega 16L
Phần ứng dụng (Application program section) là vùng nhớ chứa chương trình ứng dụng của người dùng Kích thước của phần boot loader và phần ứng dụng có thể tùy chọn
Trang 21Bộ nhớ dữ liệu: Bộ nhớ dữ liệu của AVR chia làm 2 phần chính là bộ nhớ SRAM
và bộ nhớ EEPROM Tuy cùng là bộ nhớ dữ liệu nhưng hai bộ nhớ này lại tách biệt nhau và được đánh địa chỉ riêng
Bộ nhớ SRAM có dung lượng 4K byte, Bộ nhớ SRAM có hai chế độ hoạt động là chế độ thông thường và chế độ tương thích với ATmega103, muốn thiết lập bộ nhớ SRAM hoạt động theo chế độ nào ta sử dụng bit cầu chì M103C
Bộ nhớ EEPROM : Đây là bộ nhớ dữ liệu có thể ghi xóa ngay trong lúc vi điều khiển đang hoạt động và không bị mất dữ liệu khi nguồn điện cung cấp bị cắt Có thể ví
bộ nhớ dữ liệu EEPROM giống như là ổ cứng Hard disk của máy vi tính
Với vi điều khiển ATmega16, bộ nhớ EEPROM có kích thước là 512Byte EEPROM được xtôinhư 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 các lệnh in, out Khi muốn truy xuất tới EEPROM
4.1.5 Cổng I/O vào ra:
Khi khảo sát các cổng như là các cổng vào ra số thông thường thì tính chất của các cổng (PortA, PortB,…PortG) là tương tự nhau, nên ta chỉ cần khảo sát một cổng nào đó của vi điều khiển là đủ
Mỗi một cổng vào ra của vi điều khiển được liên kết với 3 thanh ghi PORTx, DDRx, PINx (ở đây x là để thay thế cho A, B,…G) Ba thanh ghi này sẽ được phối hợp với nhau để điều khiển hoạt động của cổng, chẳng hạn thiết lập cổng thành lối vào có
sử dụng điện trở pull-up
Các bit DDxn để truy cập cho địa chỉ xuất nhập DDRx Bit DDxn trong thanh ghi DDRx dùng để điều khiển hướng dữ liệu của các chân của cổng này Khi ghi giá trị logic ‘0’ vào bấtkì bit nào của thanh ghi này thì nó sẽ trở thành lối vào, còn ghi ‘1’ vào bit đó thì nó trở thành lối ra
Các bit PORTxn để truy cập tại địa chỉ xuất nhập PORTx Khi PORTx được ghi giá trị 1 khi các chân có cấu tạo như cổng ra thì điện trở kéo là chủ động (được nối với cổng) Ngắt điện trở kéo ra, PORTx được ghi giá trị 0 hoặc các chân có dạng như cổng
ra Các chân của cổng là 3 trạng thái khi 1 điều kiện reset là tích cực thậm chí xung đồng hồ không hoạt động
Các bit PINxn để truy cập tại địa chỉ xuất nhập PINx PINx là các cổng chỉ để đọc, các cổng này có thể đọc trạng thái logic của PORTx PINx không phải là thanh ghi, việc đọc PINx cho phép ta đọc giá trị logic trên các chân của PORTx Chú ý PINx không phải là thanh ghi, việc đọc PINx cho phép ta đọc giá trị logic trên các chân của PORTx Nếu PORTxn được ghi giá trị logic ‘1’ khi các chân của cổng có dạng như chân ra, các chân có giá trị ‘1’ Nếu PORTxn ghi giá trị ‘0’ khi các chân của cổng có dạng như chân ra thì các chân đó có giá trị ‘0’ Các cổng của AVR đều có thể đọc, ghi
Để thiết lập 1 cổng là cổng vào, ra thì ta tác động tới các bit DDxn, PORTxn, PINxn Ta có thể thiết lập để từng bit làm cổng vào, ra chứ không chỉ với cổng, như vậy
ta có thể xử lí tới từng bit, đây chính là điểm mạnh của các dòng vi điều khiển 8 bit
Trang 22Bảng 4.1 Bảng giá trị các cổng I/O
4.1.6 Timer/Counter :
Timer/Counter là các module độc lập với CPU Chức năng chính của các bộ - Timer/ Counter, 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ộ Timer/Counter còn có thêm chức năng tạo ra các xung điều rộng PWM (Pulse Width Modulation), ở một số dòng AVR, một số Timer/Counter còn được dùng như các bộ canh chỉnh thời gian (calibration) trong các ứng dụng thời gian thực
Các bộ Timer/Counter được chia theo độ rộng thanh ghi chứa giá trị định thời hay giá trị đếm của chúng, cụ thể trên chip Atmega 16 có 2 bộ Timer 8 bit (Timer/Counter0
và Timer/ Counter2) và 1 bộ 16 bit (Timer/Counter1)
Chế độ hoạt động và phương pháp điều khiển của từng Timer/Counter cũng không hoàn toàn giống nhau
+ 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 giá trị lớn nhất mà thanh ghi đếm của T/C có thể chứa đượ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ằng cách điều khiển các bit điều khiển tương ứng hoặc có thể nhập trực tiếp thông qua một số thanh ghi
Trang 23Hình 4.4 Cấu trúc thanh ghi TCCR0
Các bit CS00, CS01 và CS02 gọi là các chip chọn nguồn xung nhịp cho T/C0 (Clock Select)
Bảng 4.2 Bảng chức năng các bit CS0X
TIMSK (Timer/Counter InterruPT Mask Register): là thanh ghi mặt nạ cho ngắt của tất cả các T/C trong ATmega 16, trong đó chỉ có bit TOIE0 tức bit số 0 (bit đầu tiên) trong thanh ghi này là liên quan đến T/C0, bit này có tên là bit cho phép ngắt khi có tràn
ở T/C0 Tràn (OveRFlow) là hiện tượng xảy ra khi bộ giá trị trong thanh ghi TCNT0 đã đạt đến MAX (255) và lại đếm thêm 1 lần nữa
Hình 4.5 Cấu trúc thanh ghi TIMSK
Khi bit TOIE0=1, và bit 1 trong thanh ghi trạng thái được set, nếu một “tràn” xảy ra
sẽ dẫn đến ngắt tràn
TIFR (Timer/Counter InterruPT Flag Register): là thanh ghi cờ nhớ cho tất cả các bộ T/C Trong thanh ghi này bit số 0, TOV0 là cờ chỉ thị ngắt tràn của T/C0 Khi có ngắt tràn xảy ra, bit này tự động được set lên 1
Thông thường trong điều khiển các T/C vai trò của thanh ghi TIFR không quá quan
Trang 24trọng
*Timer/Counter 1:
Timer/Counter1 là bộ T/C 16 bit, đa chức năng Đây là bộ T/C rất lý tưởng cho lập trình đo lường và điều khiển vì có độ phân giải cao (16 bit) và có khả năng tạo xung điều rộng PWM (Pulse Width Modulation, dùng để điều khiển động cơ)
Thanh ghi: có khá nhiều thanh ghi liên quan đến T/C1 Vì là T/C 16 bit trong khi độ rộng bộ nhớ dữ liệu của AVR là 8 bit nên đôi khi cần dùng những cặp thanh ghi 8 bit tạo thành 1 thanh ghi 16 bit, 2 thanh ghi 8 bit sẽ có tên kết thúc bằng các ký tự L và H trong
đó L là thanh ghi chứa 8 bit thấp (LOW) và H là thanh ghi chứa 8 bit cao (High) của giá trị
16 bit mà chúng tạo thành
TCNT1H và TCNT1L (Timer/Counter Register): là 2 thanh ghi 8 bit tạo thành thanh ghi 16 bit (TCNT1) chứa giá trị vận hành của T/C1 Cả 2 thanh ghi này cho phép bạn đọc
và ghi giá trị một cách trực tiếp Hai thanh ghi được kết hợp như sau:
Hình 4.6 Cấu trúc thanh ghi TCNT1H và TCNT1L
TCCR1A và TCCR1B (Timer/Counter Control Register): là 2 thanh ghi điều khiển hoạt động của T/C1 Tất cả các mode hoạt động của T/C1 đều được xác định thông qua các bit trong hai thanh ghi này
Tuy nhiên, đây không phải là 2 byte cao và thấp của một thanh ghi mà là 2 thanh ghi hoàn toàn độc lập Các bit trong 2 thanh ghi này bao gồm các bit chọn mode hay chọn dạng sóng (Waveform Generating Mode - WGM), các bit quy định dạng ngõ ra (Compare Output Match - COM), các bit chọn giá trị chia prescaler cho xung nhịp (Clock Select - CS)…Cấu trúc của 2 thanh ghi được trình bày như bên dưới:
Hình 4.7 Cấu trúc thanh ghi TCCR1A và TCCR1B
Trang 25Để biết hết cách phối hợp các bit trong 2 thanh ghi TCCR1A và TCCR1B là tương đối phức tạp vì T/C1 có rất nhiều mode hoạt động, chúng ta sẽ khảo sát chúng trong phần các chế độ hoạt động của T/C1 bên dưới Ở đây, trong thanh ghi TCCR1B có 3 bit khá
quen thuộc là CS10, CS11 và CS12 Đây là các bit chọn xung nhịp cho T/C1 như T/C0
“Match” xảy ra, khi đó một ngắt hoặc 1 sự thay đổi trên chân OC1A (hoặc/và chân OC1B) xảy ra (đây là cách tạo PWM bởi T/C1) Tại sao lại có A và B? Đó là vì người thiết kế AVR muốn mở rộng khả năng ứng dụng T/C1 cho bạn A và B đại diện cho 2 kênh A và B Cũng vì điều này mà chúng ta có thể tạo 2 kênh PWM bằng T/C1
Cơ bản hai thanh ghi này chứa các giá trị để so sánh chức năng và các chế độ hoạt động cụ thể
Hình 4.8 Cấu trúc thanh ghi OCR1AH, OCR1AL VÀ OCR1BH, OCR1BL
Trang 26ICR1 (InputCaPTure Register 1): khái niệm mới thứ 2 của T/C1 là Input CaPTure Khi
có 1 sự kiện trên chân ICP1 (chân 14 trên ATmega 16), thanh ghi ICR1 sẽ ghi giá trị của thanh ghi đếm TCNT1 Một ngắt có thể xảy ra trong trường hợp này, vì thế Input CaPTure có thể được dùng để cập nhật giá trị “TOP” của T/C1
TIMSK (Timer/Counter InterruPT Mask Register): các bộ T/C trên AVR dùng chung thanh ghi mặt nạ ngắt, vì thế TIMSK cũng được dùng để quy định ngắt cho T/C1 Có điều lúc này chúng ta chỉ quan tâm đến các bit từ 2 đến 5 của TIMSK Có tất cả 4 loại ngắt trên T/C1 (nhớ lại T/C0 chỉ có 1 loại ngắt tràn)
Hình 4.9 Cấu trúc thanh ghi TIMSK
Bit 2 trong TIMSK là TOIE1, bit quy định ngắt tràn cho thanh T/C1 (tương tự trường hợp của T/C0)
Bit 3, OCIE1B là bit cho phép ngắt khi có 1 “Match” xảy ra trong việc so sánh TCNT1 với OCR1B
Bit 4, OCIE1A là bit cho phép ngắt khi có 1 “Match” xảy ra trong việc so sánh TCNT1 với OCR1A
Bit 5, TICIE1 là bit cho phép ngắt trong trường hợp Input CaPTure được dùng Cùng với việc set các bit trên, bit I trong thanh ghi trạng thái phải được set nếu muốn sử dụng ngắt
TIFR (Timer/Counter InterruPT Flag Register): là thanh ghi cờ nhớ cho tất cả các bộ T/C
Các bit từ 2 đến 5 trong thanh ghi này là các cờ trạng thái của T/C1
Hình 4.10 Cấu trúc thanh ghi TIFR
Các mode hoạt động: có tất cả 5 chế độ hoạt động chính trên T/C1
Các chế độ hoạt động cơ bản được quy định bởi 4 bit Waveform Generation Mode(WGM13, WGM12, WGM11 WGM10) và một số bit phụ khác Bốn bit Waveform Generation Mode lại được bố trí nằm trong 2 thanh ghi TCCR1A và TCCR1B (WGM13
là bit 4, WGM12 là bit 3 trong TCCR1B trong khi WGM11 là bit 1 và WGM10 là bit 0 trong thanh ghi TCCR1A) vì thế cần phối hợp 2 thanh ghi TCCR1 trong lúc điều khiển T/C1
Trang 27Bảng 4.4 Bảng các bit WGM và các chế độ hoạt động của T/C1
Normal mode (Chế độ thường)
Đây là chế độ hoạt động đơn giản nhất của T/C1
Trong chế độ này, thanh ghi đếm TCNT1 được tăng giá trị từ 0 (BOTTOM) tăng cho đến 65535 hay 0xFFFF (TOP) và bắt đầu quay trở ngước về 0 như ban đầu Chế độ này hoàn toàn giống cách mà Timer0 hoạt động chỉ có khác là giá trị đếm cao nhất là 65535 thay vì 255 như trong timer0 Nhìn vào bảng 3, để set T/C1 ở Normal mode chúng ta cần set 4 bit WGM về 0, vì 0 là giá trị mặc định của các thanh ghi nên thực tế chúng ta không cần tác động đến các bit WGM Duy nhất một việc quan trọng cần làm là set các bit Clock Select (CS12, SC11, CS10) trong thanh ghi TCCR1B
4.1.7 ADC :
Chip AVR ATmega16 của Atmel có tích hợp sẵn các bộ chuyển đổi ADC với độ phân giải 10 bit Có tất cả 8 kênh đơn (các chân ADC0 đến ADC7), 16 tổ hợp chuyển đổi dạng so sánh, trong đó có 2 kênh so sánh có thể khuyếch đại Bộ chuyển đổi ADC trên AVR không hoạt động theo nguyên lý flash ADC đã đề cập ở phần trên, ADC trong AVR là loại chuyển đổi xấp xỉ lần lượt (successive approximation ADC)
Có 4 thanh ghi trong bộ ADC trên AVR trong đó có 2 thanh ghi data chứa dữ liệu sau khi chuyển đổi, 2 thanh ghi điều khiển và chứa trạng thái của ADC
+ ADMUX (ADC Multiplexer Selection Register): là 1 thanh ghi 8 bit điều khiển
việc chọn điện áp tham chiếu, kênh và chế độ hoạt động của ADC
Trang 28Hình 4.11 Cấu trúc thanh ghi ADMUX
Bit 7, 6: REFS1:0 (Reference Selection Bit): là các bit chọn điện áp tham chiếu cho ADC, 1 trong 3 nguồn điện áp tham chiếu có thể được chọn là: điện áp ngoài từ chân VREF, điện áp tham chiếu nội 2.56V hoặc điện áp AVCC
Bảng 4.5 Bảng giá trị điện áp tham chiếu
Bit 5: ADLAR (ADC Left Adjust Result): là bit cho phép hiệu chỉnh trái kết quả chuyểnđổi Sở dĩ có bit này là vì ADC trên AVR có độ phân giải 10 bit, nghĩa là kết quả thu được sau chuyển đổi là 1 số có độ dài 10 bit (tối đa 1023), AVR bố trí 2 thanh ghi data
8 bit để chứa giá trị sau chuyển đổi Như thế giá trị chuyển đổi sẽ không lấp đầy 2 thanh ghi data, trong một số trường hợp người dùng muốn 10 bit kết quả nằm lệch về phía trái trong khi cũng có trường hợp người dùng muốn kết quả nằm về phía phải Bit ADLAR sẽ quyết định vị trí của 10 bit kết quả trong 16 bit của 2 thanh ghi data Nếu ADLAR=0 kết quả sẽ được hiệu chỉnh về phía phải (thanh ghi ADCL chứa trọn 8 bit thấp và thanh ghi ADCH chứa 2 bit cao trong 10 bit kết quả), và nếu ADLAR=1 thì kết quả được hiệu chỉnh trái (thanh ghi ADCH chứa trọn 8 bit cao nhất, các bit từ 9 đến 2, và thanh ADCL chứa 2 bit thấp nhất trong 10 bit kết quả (bạn xtôihình cách bố trí 2 thanh ghi ADCL và ADCH bên dưới để hiểu rõ hơn)
Bit 4: MUX4:0 (Analog Channel and Gain Selection Bit) là 5 bit cho phép chọn kênh, chế độ và cả hệ số khuyếch đại cho ADC Do bộ ADC trên AVR có nhiều kênh và cho phép thực hiện chuyển đổi ADC kiểu so sánh (so sánh điện áp giữa 2 chân analog) nên trước khi thực hiện chuyển đổi, chúng ta cần set các bit MUX để chọn kênh và chế độ cần
sử dụng
Trang 29Bảng 4.6 Bảng chọn chế độ chuyển đổi
Trang 30+ ADCSRA (ADC Control and Status RegisterA): là thanh ghi chính điều
khiển hoạt động và chứa trạng thái của module ADC
Hình 4.12 Cấu trúc thanh ghi ADCSRA
Bit 7: ADEN (ADC Enable) viết giá trị 1 vào bit này tức bạn đã cho phép module ADC được sử dụng Tuy nhiên khi ADEN=1 không có nghĩa là ADC đã hoạt động ngay, bạn cần set một bit khác lên 1 để bắt đầu quá trình chuyển đổi, đó là bit ADSC
Bit 6: ADSC (ADC Start Conversion) set bit này lên 1 là bắt đầu khởi động quá trình chuyển đổi Trong suốt quá trình chuyển đổi, bit ADSC sẽ được giữ nguyên giá trị 1, khi quá trình chuyển đổi kết thúc (tự động), bit này sẽ được trả về 0 Vì vậy bạn không cần và cũng không nên viết giá trị 0 vào bit này ở bất kỳ tình huống nào Để thực hiện một chuyển đổi, thông thường chúng ta sẽ set bit ADEN=1 trước và sau đó set ADSC=1
Bit 4: ADIF (ADC InterruPT Flag) cờ báo ngắt Khi một chuyển đổi kết thúc, bit này
tự động được set lên 1, vì thế người dùng cần kiểm tra giá trị bit này trước khi thực hiện đọc giá trị chuyển đổi để đảm bảo quá trình chuyển đổi đã thực sự hoàn tất
Bit 3: ADIE (ADC InterruPT Enable) bit cho phép ngắt, nếu bit này được set bằng 1
và bit cho phép ngắt toàn cục (bit 1 trong thanh ghi trạng thái của chip) được set, một ngắt sẽ xảy ra khi một quá trình chuyển đổi ADC kết thúc và các giá trị chuyển đổi đã được cập nhật (các giá trị chuyển đổi chứa trong 2 thanh ghi ADCL và ADCH)
Bit 2: ADPS2-0 (ADC Prescaler Select Bit) các bit chọn hệ số chia xung nhịp cho ADC ADC, cũng như tất cả các module khác trên AVR, cần được giữ nhịp bằng một nguồn xung clock Xung nhịp này được lấy từ nguồn xung chính của chip thông qua một
hệ số chia Các bit ADPS cho phép người dùng chọn hệ số chia từ nguồn clock chính đến ADC
Bảng 4.7 Bảng hệ số chia xung nhịp cho ADC + ADCL và ADCH (ADC Data Register): 2 thanh ghi chứa giá trị của quá trình
chuyển đổi Do module ADC trên AVR có độ phân giải tối đa 10 bit nên cần 2 thanh ghi để chứa giá trị chuyển đổi
Trang 31Tuy nhiên tổng số bít của 2 thanh ghi 8 bit là 16, con số này nhiều hơn 10 bit của kết quả chuyển đổi, vì thế chúng ta được phép chọn cách ghi 10 bit kết quả vào 2 thanh ghi này
Bit ADLAR trong thanh ghi ADMUX quy định cách mà kết quả được ghi vào
ADLAR = 0:
Hình 4.13 Cấu trúc thanh ghi ADCH và ADCL khi ADLAR=0
ADLAR = 1:
Hình 4.14 Cấu trúc thanh ghi ADCH và ADCL khi ADLAR=1
Thông thường, 2 thanh ghi data được sắp xếp theo định dạng ADLAR=0, ADCL chứa
8 bit thấp và 2 bit thấp của ADCH chứa 2 bit cao nhất của giá trị thu được
Chú ý thứ tự đọc giá trị từ 2 thanh ghi này, để tránh đọc sai kết quả, bạn cần đọc thanh ghi ADCL trước và ADCH sau, vì sau khi ADCH được đọc, các thanh ghi data có thể được cập nhật giá trị tiếp theo
+ SFIOR (Special FunctionIO Register C): thanh ghi chức năng đặc biệt, 3 bit cao
trong thanh ghi này quy định nguồn kích ADC nếu chế độ Auto Trigger được sử dụng
Đó là các bit ADTS2:0 (Auto Trigger Source 2:0)
Hình 4.15 Cấu trúc thanh ghi SFIOR
Bảng 4.8 Bảng nguồn kích ADC trong chế độ Auto Trigger
Trang 324.1.8 Ngắt ngoài :
Thanh ghi điều khiển MCU, MCUCR (MCU Control Register) là thanh ghi xác
lập chế độ ngắt cho ngắt ngoài 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
Hình 4.16 Cấu trúc thanh ghi MCUCR
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 bitthấp là các bit Interrupt Sense Control (ISC) trong đó 2 bit ISC11:ISC10 dùng cho INT1 và 2bit ISC01:ISC00 dùng cho INT0
Bảng 4.9 Bảng chức năng các bit ISC Thanh ghi điều khiển ngắt chung GICR (General Interrupt Control Register)
GICR cũng là 1 thanh ghi 8 bit nhưng chỉ có 2 bit cao (bit 6 và bit 7) là được sử dụng cho điều khiển ngắt
Hình 4.17 Cấu trúc thanh ghi GICR
Bit 7: INT1 gọi là bit cho phép ngắt 1 (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 điều khiển ngắt INT0
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 INT1 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)
Hình 4.18 Cấu trúc thanh ghi GICR
Trang 33Chú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
Sau khi đã xác lập các bit sẵn sàng cho các ngắt ngoài, việc sau cùng chúng ta cần làm là set bit 1, tức bit cho phép ngắt toàn cục, trong thanh ghi trạng thái chung của IC Một chú ý khác là vì các chân PD2, PD3 là các chân ngắt nên phải set các chân này là Input (set thanh ghi DDRD)
Hình 4.19 Sơ đồ thiết lập ngắt ngoài
4.2 CẢM BIẾN GIA TỐC GÓC NGHIÊNG MMA7260Q:
4.2.1 Tìm hiểu chung về cảm biến gia tốc :
Đo gia tốc hay một trong các đặc tính vật lý như dao động, va chạm hay độ nghiêng góc trở nên rất phổ biến trong một loạt các sản phẩm Những ưu điểm kỹ thuật của cảm biến gia tốc ngày nay, với những loại vi cơ silicon, làm giá thành của sản phẩm giảm đáng kể
Có rất nhiều dạng cảm biến dùng đo lường gia tốc, dao động, va chạm hay nghiêng góc Những cảm biến này bao gồm lớp màng áp điện (piezo-film), servo cơ điện áp, áp điện, góc chất lỏng áp điện, điện trở vi cơ điện áp điện, (piezomicromachined) và cảm biến điện dung, cũng như là cảm biến vi cơ điện dung bề mặt
Mỗi cảm biến này có đặc tính khác biệt nhau về các tín hiệu ngõ ra, chi phí sản xuất, và môi trường hoạt động Cảm biến có khả năng đo lường gia tốc có thể cho giá trị vận tốc bằng tích phân đơn và giá trị vị trí bằng tích phân bậc 2
Khả năng dao động hay va chạm có thể được dùng cho việc kiểm tra độ chịu lực của máy cũng như kiểm tra sự chuyển động và va chạm để cấp báo cho xe Gia tốc tĩnh
đo lực hấp dẫn có thể dùng để kiểm tra góc và độ nghiêng, nhưng cảm biến phải đáp ứng nhanh với gia tốc tĩnh
Trang 344.2.2 Giới thiệu cảm biến gia tốc MMA7260Q của Freescale:
MMA7260QT là loại cảm biến gia tốc 3 trục vi cơ điện dung bề mặt giá thành thấp
Nó có khối cảm biến vi cơ điện dung bề mặt, một bộ lọc thông thấp, bù nhiệt ngõ ra và cho phép chọn 4 mức độ nhạy
Khối cảm biến G-cell là một cấu trúc cơ khí được hình thành từ vật liệu bán dẫn (polysilICon) Nó có thể được hình dung như là ta đặt 1 trục cân bằng có thể di chuyển giữa các trục cố định Trục di chuyển có thể bị lệch khỏi điểm dừng của nó do sự thay đổi gia tốc
• HDD MP3 Player: Phát hiện rơi tự do
• Máy tính xách tay: rơi tự do phát hiện, Anti-Theft
Hình 4.20 Sơ đồ chân cảm biến MMA7260Q
Trang 35*Sơ đồ khối của cảm biến :
Hình 4.21 Sơ đồ khối cảm biến gia tốc MMA7260Q
*Tầm hoạt động:
Bảng 4.10 Bảng giá trị hoạt động của cảm biến gia tốc MMA7260Q
Trang 37Các tính năng:
*Chọn G:
Cho phép lựa chọn 1 trong số 4 độ nhạy có trong thiết bị Tùy thuộc vào mức logic đầu vào đặt trên các chân 1 và 2, mà thiết bị sẽ hoạt động tương ứng với các mức độ
nhạy khác nhau 1.5G, 2G, 4G, hoặc 6G
Tính năng này rất quan trọng đối với các sản phẩm có ứng dụng đòi hỏi có độ nhạy cảm khác nhau cho tối ưu hiệu suất
Độ nhạy này có thể được thay đổi bất cứ lúc nào trong quá trình hoạt động của sản phẩm
Nếu chân G-Select1 và G-Select2 được để trống thì lập tức thiết bị sẽ tự động chọn
Nhằm giúp chống nhiễu tốt đối với môi trường hoạt động xung quanh
*Sơ đồ mạch kết nối của cảm biến :
Hình 4.22 Sơ đồ kết nối cảm biến
Trang 38*Sơ đồ mạch nguyên lý :
Hình 4.23 Mạch nguyên lý kết nối của module cảm biến
*Mạch kết nối vi điều khiển :
Hình 4.24 Sơ đồ kết nối cảm biến với vi điều khiển
Trang 39*Các trục của cảm biến :
Hình 4.25 Sơ đồ các trục của cảm biến
*Lực tác dụng của trường hấp dẫn trái đất:
Bảng 4.13 Bảng giá trị của lực hấp dẫn tác dụng cảm biến gia tốc
Trang 404.2.3 Cách xác định góc nghiêng với cảm biến MMA7260Q:
Gia tốc kế có thể được dùng để đo gia tốc động và tĩnh Độ nghiêng được đo ở trạng thái tĩnh nơi mà gia tốc trọng trường được đo Vì vậy, để đạt được độ phân giải cao nhất của một phép đo độ nghiêng, cần một gia tốc kế tầm đo thấp và có độ nhạy cao
Các dòng gia tốc kế MMA6200Q và MMA7260Q của Freescale là giải pháp tốt cho việc đo độ nghiêng so với các trục XY và XYZ Tất cả các cảm biến gia tốc thường có dải biến thiên gia tốc từ -1g đến +1g tương ứng với góc nghiêng -90 đến +90 độ (1g = 9,8m/s2)
Để có độ phân giải tốt nhất cho mỗi mức độ thay đổi, các IC phải được gắn kết với trục đo song song với mặt phẳng của sự chuyển động, nơi mà có độ nhạy tốt nhất
Ví dụ, nếu đo góc trong khoảng từ 0-90 độ và PCB được gắn vuông góc với trọng lực Khi đó, trục X của cảm biến sẽ là giải pháp tốt nhất
Nếu đo góc trong khoảng từ 0–45 độ và PCB được gắn vuông góc với trọng lực Khi đó, trục Z của cảm biến sẽ là giải pháp tốt nhất