Luận văn, khóa luận tốt nghiệp, báo cáo là sản phẩm kiến thức, là công trình khoa học đầu tay của sinh viên, đúc kết những kiến thức của cả quá trình nghiên cứu và học tập một chuyên đề, chuyên ngành cụ thể. Tổng hợp các đồ án, khóa luận, tiểu luận, chuyên đề và luận văn tốt nghiệp đại học về các chuyên ngành: Kinh tế, Tài Chính & Ngân Hàng, Công nghệ thông tin, Khoa học kỹ thuật, Khoa học xã hội, Y dược, Nông - Lâm - Ngữ... dành cho sinh viên tham khảo. Kho đề tài hay và mới lạ giúp sinh viên chuyên ngành định hướng và lựa chọn cho mình một đề tài phù hợp, thực hiện viết báo cáo luận văn và bảo vệ thành công đồ án của mình
Trang 1CHƯƠNG 1 TỔNG QUAN
1.1 Mục tiêu để tài:
“Máy đo gia tốc theo hai phương X-Y” có khả năng đo được gia tốc tĩnh và gia tốc động, hiển thị gia tốc trên màn hình LCD với kết quả gia tốc trên 2 kênh theo hai phương X-Y Máy cịn có khả năng ứng dụng để đo được độ rung, độ nghiêng với độ nhạy vài mili giây Các kết quả đo đạc được lưu trữ vào thẻ nhớ với định dạng FAT32, để từ đó có thể đọc được trên các hệ điều hành khác nhau như Linux, Windows, MAC
1.2 Cơ sở lý thuyết: Khái niệm: Véc tơ gia tốc Trục cảm biến x Ax = Acos(@) với ( là góc lệch theo trục x
Gia tốc là sự thay đổi của vận tốc theo thời gian Vận tốc đến lượt nó lại do sự thay đổi của độ dịch chuyển theo thời gian Lực trọng trường là nguyên nhân gây ra gia tốc rơi tự do và gia tốc này bằng 9.81m/s” (1g)
Công thức:
Gia tốc thường được tính thông qua lực gây ra gia tốc đó vì lực liên hệ với gia tốc theo công thức F = m*a
Trong đó:
Trang 2
e Fla luc gay ra gia toc e ml là khối lượng
e ala gia téc
Lực có đơn vị là N, m c6 đơn vị là gam (g), a có đơn vị là m/s’
Các thiết bi dùng để đo gia tốc phải xác định được giá trị của lực tác dụng lên một khối vật thể đã biết trước
Một cách tiếp cận khác để tính tốn gia tốc đó là : Gia tốc là đạo hàm của vận tốc theo thời gian Vận tốc lại là đạo hàm của độ dịch chuyển theo thời gian
Gia tốc: Acceleration Mis2 Time
Hình 1.1 Gia tốc theo thời gian Vận tốc: 1 Velocity M/s 5 MT iN | N 0 » ũ 3 10 15 20 25 230 35 40 45 50 Time
Hình 1.2 Vận tốc theo thời gian Độ dịch chuyển:
Distance M
9 $ 10 l§ 20 244 30 34 40 4$ 50 Time
Hình 1.3 Độ dịch chuyển theo thời gian
Gia tốc cũng có thể được xác định một cách dễ dàng nhờ một dụng cụ đơn giản như
sau:
Trang 3
SVTH : Huỳnh Minh Nguyện
Hình 1.4 Xác định gia tốc
Hình 1.5 Gia tốc theo định luật Newton Theo định luật II Newton:
Trang 41.3 Đo gia tốc bằng cảm biến MEMS: 1.3.1 Tổng quan về MEMS:
Vào thế kỷ XX, các thiết bị điện tử được tích hợp với số lượng ngày càng lớn, kích thước ngày càng nhỏ và chức năng ngày càng được nâng cao Điểu này đã mang lại sự biến đổi sâu sắc cả về mặt công nghệ lẫn xã hội Vào cuối những năm 50 của thế kỷ XX, một cuộc cách mạng hố về cơng nghệ micro đã diễn ra và hứa hẹn một tương lai cho tất cả các ngành công nghiệp Hệ thống vi cơ điện tử (Micro Electro Mechanical Systems) viết tắt là MEMS cũng đã được ra đời và phát triển trong giai đoạn này
Công nghệ vi cơ đã và đang tiến xa hơn nhiều so với nguồn gốc cửa nó là cơng nghiệp bán dẫn MEMS bao gồm những cấu trúc vi cơ, vi sensor, vi chấp hành và vi điện tử cùng được tích hợp trên cùng một chip (on chip) Các linh kiện MEMS thường được cấu tạo từ silic Một thiết bị MEMS thông thường là một hệ thống vi cơ tích hợp trên một chip mà có thể kết hợp những phần cơ chuyển động với những yếu tố sinh học, hoá học, quang hoặc điện Kết quả là các linh kiện MEMS có thể đáp ứng với nhiều loại lối vào: hoá, ánh sáng, áp suất, rung động vận tốc và gia tốc Với ưu thế có thể tạo ra những cấu trúc cơ học nhỏ bé tỉnh tế và nhạy cảm đặc thù, công nghệ vi cơ hiện nay đã cho phép tạo ra những bộ cảm biến (sensor), những bộ chấp hành (actuator) được ứng dụng rộng rãi trong cuộc sống Các bộ cắm biến siêu nhỏ và rất tiện ích này đã thay thế cho các thiết bị đo cũ kỹ, công kểnh trước đây Song công nghệ MEMS mới đang ở giai đoạn đầu của nó và cần rất nhiều những nghiên cứu cơ bản hơn, sâu hơn
1.3.2 Vi cảm biến gia tốc:
Cảm biến gia tốc chế tạo theo công nghệ vi cơ điện tử có hai loại là cảm biến kiểu tụ và cảm biến kiểu áp trở Trong nhiều ứng dụng việc lựa chọn cảm biến kiểu tụ hay kiểu áp trở là rất quan trọng Cảm biến kiểu áp trở có ưu điểm là công nghệ cấu tạo rất đơn giản Tuy nhiên nhược điểm của nó là hoạt động phụ thuộc nhiễu vào sự thay đổi nhiệt độ và có độ nhạy kém hơn cảm biến kiểu tụ Các cảm biến kiểu tụ có độ nhạy cao hơn, ít bị phụ thuộc vào nhiệt độ, ít bị nhiễu và mất mát năng lượng Tuy nhiên chúng có nhược điểm là mạch điện tử phức tạp hơn Hiện nay cảm biến gia tốc kiểu tụ được ứng dụng rộng rãi hơn
Nguyên tắc hoạt động của cảm biến kiểu tụ:
Trang 5
e
Trong đó:
e ø là khoảng cách giữa hai bản tụ điện ° là độ dịch chuyển của hai bản tụ e _C là điện dung của tụ điện
e _E là năng lượng hay điện trường giữa hai bản tụ e©_ klà hằng số đàn hồi
e FM là hệ số phẩm chất
Việc đo gia tốc thông qua cảm biến gia tốc MEMS có thể được mô tả nhờ một sơ đồ trên hình vẽ 1.7 như một hệ gồm một khối lượng m và một lò xo
Trang 6
Reference frame z Hình 1.7 Hệ khối lượng m với lò xo
‘Accelerometer’ m TN = Y - Vobject Object
Hình 1.8 Hệ khối lượng — lò xo được sử dụng để ảo gia tốc
Khi hệ quy chiếu được gia tốc, gia tốc này được truyền cho khối m thơng qua lị xo Lồ xo giãn ra và độ dịch chuyển này được xác định bởi một cảm biến độ dịch chuyển
Theo định luật Hooke, lực kéo khối lượng m tỉ lệ với độ biến dạng của lò xo F = kx, với k là hệ số tỉ lệ hay độ cứng của lò xo, x là khoảng dịch chuyển so với vị trí cân bằng Theo định luật II Newton, trong hệ quy chiếu quán tính đứng yên, lực E này cung cấp cho khối lượng m có một gia tốc a theo công thức F = ma Tại vị trí cần bằng ta có F= ma = kx
Hệ thống có thể được mơ tả bởi phương trình vi phân sau:
——+ —+ = = *
Trang 7
với D là hệ số ma sát Do đó, chúng ta thu được
trong hệ quy chiếu quán tính đứng yên
Như vậy, để đo gia tốc ta chỉ cần đo khoảng dịch chuyển x Để đo khoảng dịch chuyển này, người ta có thể sử dụng thuộc tính điện của tụ điện có hai bản cực song song khoảng cách giữa hai bản tụ có thể thay đổi được (hình 6)
Ca Cụ
————_Ê
i= x Cox mT x
Hình 1.9 Mơ hình một tụ điện đơn (bên trái) và hai tụ nối tiếp nhau (bên phải) Điện dung của tụ điện đơn là:
với k là hằng số phụ thuộc vào thuộc tính của mơi trường nằm giữa hai bản tụ Nếu biết k, điện dung của tụ điện C, ta có thể tính được xọ Cũng trong hình 3, nếu bản tụ nằm giữa Cạ và Cg dịch chuyển một khoảng là x thì:
hay có thể viết lại là:
Trang 8Do đó:
1
A= - = E 1
————]
Với khoảng x dịch chuyển nhỏ, phương trình trên có thể rút gọn thành: 2
A x —
Như vậy, nếu gắn khối lượng m của cảm biến vào bản tụ nằm giữa hệ hai tụ điện nối tiếp thì có thể xác định được độ dịch chuyển của nó dưới tác dụng của lực F, tức là xác định được gia tốc thông qua việc xác định giá trị AC
Trang 9
CHƯƠNG 2
GIỚI THIỆU LINH KIỆN
2.1 Màn hình LCD hiển thị ký tự 20x4:
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, tôi chọn loại Text LCD có khả năng hiển thị 4 dòng, mỗi dòng 10 ky tu theo bang ma ASCII
2.1.1 Tinh nang:
e Dinh dang hién thi : 20 ky ty x 4 dong e Ky tu tring trén nén xanh duong e Hoat dng 6 nhiét d6 -10°C ~ +60°C e Điệnápvậnhành 45V~5.5V e_ Dòng cung cấp I.3mA
e_ Dòng cung cấp nếu dùng đèn nền I8mA 2.1.2 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 I dòng và tổng số dòng mà
Trang 10
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
Hinh 2.1 Text LCD 20x4
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 (dot-matrix), chip này có thể được dùng cho các LCD có I, 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.1.3 Sơ đồ chân:
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:
Bảng 2.1 Sơ đô chân:
Trang 11
Chức năng Chân Ground 1 Vss - 0 Nguôn 2 Vdd - +5V Tương phản 3 Vee - 0 - Vdd 0 D0 - D7 : Lệnh 4 RS 1 D0 - D7 : Dữ liệu 0 Ghi : từ uC vào LCD 5 R/W 1 Đọc : từ LCD vào Điều khiển uC
0 Vô hiệu hoá LCD
6 E 1 LCD hoạt động
Từ I xuống | Bắt đầu ghi/đọc
0 LCD 7 D0 0/1 Bit0 LSB 8 DI 0/1 Bit 1 9 D2 0/1 Bit 2 D@ liéu/ 10 D3 0/1 Bit 3 Lénh II | D4 0/1 Bit 4 12 D5 0/1 Bit 5 13 D6 0/1 Bit 6 14 D7 0/1 Bit 7 MSB Led A 15 Vss - 0 Led K 16 Vdd - +5V
Trong một số LCD 2 chân LED nền được đánh số 15 và 16 nhưng trong một số trường hợp 2 chân này được ghi là A (Anode) và K (Cathode) Hình 2.2 mô tả cách kết nối LCD với nguồn và mạch điều khiển
2.1.4 Sơ đồ kết nối:
Trang 12
Microcontroller (AVR)
Hình 2.2 Kết nối LCD với wuC và nguồn
Chân I1 và chân 2 là các chân nguồn, được nối với GND và nguồn 5V Chân 3 là chân chỉnh độ tương phản (contrast), chân này cân được nối với 1 biến trở chia áp như trong hình 2.2 Trong khi hoạt động, chỉnh để thay đổi giá trị biến trở để đạt được độ tương
phản cần thiết, sau đó giữ mức biến trở này Các chân điểu khiển RS, R/W, EN và các
đường dữ liệu được nối trực tiếp với vi điều khiển Tùy theo chế độ hoạt động 4 bit hay §
bit mà các chân từ D0 đến D3 có thể bỏ qua hoặc nối với vi điều khiển 2.1.5 Thanh ghi:
HD44780U có 2 thanh ghi 8 bits la INSTRUCTION REGISTER (IR) va DATA REGISTER (DR) Thanh ghi IR chứa mã lệnh điều khiển LCD và là thanh ghi “chỉ ghi” (chỉ có thể ghi vào thanh ghi này mà không đọc được nó) Thanh ghi DR chứa các các loại dữ liệu như ký tự cân hiển thị hoặc dữ liệu đọc ra từ bộ nhớ LCD Cả 2 thanh ghi đều được nối với các đường dữ liệu D0:D7 của Text LCD và được lựa chọn tùy theo các chân điều
Trang 13
khiển RS, RW Thực tế để điều khiển Text LCD không cần quan tâm đến cách thức hoạt động của 2 thanh ghi này
2.1.6 Tổ chức bộ nhớ:
HD44780U có 3 loại bộ nhớ, đó là bộ nhớ RAM dữ liệu cần hiển thị DDRAM (Didplay Data RAM), bộ nhớ chứa ROM chứa bộ font tạo ra ký tự CGROM (Character Generator ROM) và bộ nhớ RAM chứa bộ font tạo ra các symbol tùy chọn CGRAM
(Character Generator RAM)
2.1.6.1.DDRAM:
DDRAM là bộ nhớ tạm chứa các ký tự cần hiển thị lên LCD, bộ nhớ này gồm có 80 ô được chia thành 4 hàng, mỗi ơ có độ rộng 8 bit và được đánh số như sau:
- Dong 1: 0x00 > 0x13 - Dong 2: 0x40 > 0x53 - Dong 3: 0x14 > 0x27 - Dong 4: 0x54 > 0x67
Mỗi ô nhớ tương ting véi 1 6 trén man hình LCD Text LCD loại 20x4 có thể hiển thị tối đa 80 ký tự (có 80 ơ hiển thị), vì thế cần biết chính xác vị trí trên màn hình text LCD Bang 2.2 thể hiện vị trí DDRAM trên màn hình:
Bảng 2.2 Tổ chức của DDRAM: O1 | 02 | 03 | 04 | OS | 06 | 07 | 08 | 09 | OA | OB 0C |0D |0E|OF|I0|11)12|13 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |4A |4B_ 4C |4D | 4E |4F | 50 | 51 | 52 | 53 15 | 16 | 17 | 18 | 19 | IA | 1B} IC | ID | 1E | IF | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 55 | 56 | 57 | 58 | 59 | SA | 5B | SC | 5D | 5E | 5F 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67
Muốn hiển thị một ký tự nào đó trên LCD, cân viết ký tự đó vào DDRAM 6 1 trong 80 địa chỉ trên Các ký tự nằm ngoài 80 ô nhớ trên sẽ không được hiển thị, tuy nhiên vẫn không bị mất đi, chúng có thể được dùng cho các mục đích khác nếu cân thiết
2.1.6.2 CGROM:
CGROM là vùng nhớ cố định chứa định nghĩa font cho các ký tự Không thể trực tiếp truy xuất vùng nhớ này mà chip HD44780U sẽ tự thực hiện khi có yêu cầu đọc font để hiển thị Một điều đáng lưu ý là địa chỉ font của mỗi ký tự vùng nhớ CGROM
Trang 14
SVT Hh Mien eum
chính là mã ASCIH của ký tự đó Ví dụ ký tự ‘a’ cé6 ma ASCII 1a 97, tham khảo tổ chức của vùng nhớ CGROM trong hình 4, sẽ nhận thấy địa chỉ font của *a` có 4 bit thấp là 0001 và 4 bit cao là 0110, địa chỉ tổng hợp là 01100001 = 97
=sl#_ | |BIRHF|*|P —i3| 5|
.=mleø| | TAAL ale) | le [PFO Sly
==iaL "SBRbr 4x ele
wooo! | [FSCS [c/s 1 |H|T|Ele.z
woxoroo| | [DT dt »ILiF tlH|=
wor! @| eel E| elu : J1i!i1l=U
=ssial IRlBIFMIfiuL | ÌSIHIEINAE
zxen|sL |" [TIBIU[Slu ziTizi In
xo | | | SA | Fa 7 |1#|H|.r|x
wooo) SITY ES) | ÌaPTiJiblrlu
xoxtota | @ l5 |] Zl11Z TÍH1inl| ]|#
wooo | [ES RIL [ke] a ziTIEIH* lF
xaoløL |z |S|LI#|TII PRD
otto | | |—|=|Ffll 1lm| z 22s /E)=
woitto] >) | a | SIA] > a/Pit|* Ai
roood 111 | @) |? (0) _ lol wl)" Ole
Hình 2.3 Vàng nhớ CGROM 2.1.6.3 Hoạt động của CGROM và DDRAM:
Trang 15
CGROM và DDRAM được tự động phối hợp trong quá trình hiển thị của LCD Giả sử muốn hiển thị ký tự ‘a’ tai vi tri dau tiên, dòng thứ 2 của LCD thì các bước thực hiện sẽ như sau:
- Vi tri đầu tiên của dịng 2 có địa chỉ là 0x40 trong bộ nhớ DDRAM (bảng 2.2), vì thế cần ghi vào ô nhớ có địa chỉ 0x40 một giá trị là 97 (mã ASCII của ký tự ‘a’)
- Chip HD44780U doc gid tri 97 nay và coi như là địa chỉ của vùng nhớ CGROM, nó sẽ tìm đến vùng nhớ CGROM có địa chỉ 97 và đọc bảng font đã được định nghĩa sẵn ở đây
- _ Xuất font này ra các “chấm” trên màn hình LCD tại vị trí đầu tiên của dịng 2 trên LCD
Đây chính là cách mà 2 bộ nhớ DDRAM và CGROM phối hợp với nhau để hiển thị các ký tự Như vậy, việc lập trình điều khiển LCD tương đối đơn giản, đó là viết mã ASCII vao bé nhé DDRAM tai đúng vị trí được yêu cầu, bước tiếp theo sẽ do HD44780U đảm nhiệm
2.1.6.4 CGRAM:
CGRAM là vùng nhớ chứa các symbol do người dùng tự định nghĩa, mỗi symbol được có kích thước 5x8 và được dành cho 8 ô nhớ 8 bit Các symbol thường được định nghĩa trước và được gọi hiển thị khi cần thiết Vùng này có tất cả 64 ơ nhớ nên có tối đa 8 symbol có thể được định nghĩa
2.1.7 Điều khiển hiển thị Text LCD: 2.1.7.1 Các chân điều khiển LCD:
Các chân điều khiển việc đọc và ghi LCD bao gồm RS, R/W và EN
- RS (chân số 3): Chân lựa chọn thanh ghi (Select Register), chân này cho phép lựa chọn 1 trong 2 thanh ghi IR hoặc DR để làm việc Vì cả 2 thanh ghi này đều được kết nối với các chân Data cửa LCD nên cần I bit để lựa chọn giữa chúng Nếu RS=0, thanh ghi IR được chọn và nếu RS=l thanh ghi DR được chọn Thanh ghi IR là thanh ghi chứa mã lệnh cho LCD, vì thế nếu muốn gởi 1 mã lệnh đến LCD thì chân RS phải được reset về 0 Ngược lại, khi muốn ghi mã ASCII của ký tự cần hiển thị lên LCD thì set RS=1 để chọn thanh ghi DR Hoạt động của chân RS được mơ tả trong hình 2.4
Trang 16
SVTH : Huỳnh Minh Nguyện
RS
Hình 2.4 Hoạt động của chan RS
- R/W (chân số 4): Chân lựa chọn giữa việc đọc và ghi Nếu R/W=0 thì dữ liệu sẽ được ghi từ bộ điều khiển ngoài (vi điều khiển AVR chẳng hạn) vào LCD Nếu R/W=I thì dữ liệu sẽ được đọc từ LCD ra ngoài Tuy nhiên, chỉ có duy nhất 1 trường hợp mà dữ liệu có thể đọc từ LCD ra, đó là đọc trạng thái LCD để biết LCD có đang bận hay không (cờ Busy Flag - BE) Do LCD là một thiết bị hoạt động tương đối chậm (so với vi điểu khiển), vì thế một cờ BF được dùng để báo LCD đang bận, nếu BF=l thì cho LCD xử lí xong nhiệm vụ hiện tại, đến khi nào BF=0 một thao tác mới sẽ được gán cho LCD Vì thế, khi làm việc với Text LCD cần phải có một chương trình con để chờ cho đến khi LCD rảnh
Có 2 cách để viết chương trình chờ cho LCD rãnh Cách I là đọc bit BE về kiểm tra và
chờ BF=0, cách này đòi hỏi lệnh đọc từ LCD về bộ điều khiển ngồi, do đó chân R/W cần được nối với bộ điều khiển ngoài Cách 2 là viết một hàm delay một khoảng thời gian cố định nào đó (tốt nhất là trên Ims) Ưu điểm của cách 2 là sự đơn giản vì khơng cần đọc LCD, do đó chân R/W không cần sử dụng và luôn được nối với GND Tuy nhiên, nhược điểm của cách 2 là khoảng thời gian delay cố định nếu quá lớn sẽ làm chậm quá trình thao tác LCD, nếu quá nhỏ sẽ gây ra lỗi hiển thị
EN (chân số 5): Chân cho phép LCD hoạt động (Enable), chân này cần được kết nối với bộ điều khiển để cho phép thao tác LCD Để đọc và ghi data từ LCD cần tạo một “xung cạnh xuống” trên chân EN, nói theo cách khác, muốn ghi dữ liệu vào LCD trước hết cân đảm bảo rằng chân EN=0, tiếp đến xuất dữ liệu đến các chân D0:7, sau đó set chân EN lên I và cuối cùng là xóa EN về 0 để tạo 1 xung cạnh xuống
2.1.7.2 Tập lệnh của LCD: Bảng 2.3 Các tập lệnh của LCD:
Trang 17
SVTH : Huỳnh Minh Nguyện D D D es wu 7 6 D4 D3 D2 DI 0 Xố màn hình 0 010 0 0 0 0 0 | 1.64ms Con trỏ về đầu dòng 0 000 0 |0 | 1 | x |1.6ú4ms ¿ I Đặt chế độ 0000 0| 1 5 S | 40us
Bat/Tat hién thi 00010, 1D B | 40us
Con trỏ/Hiển thị/Dịch 00011 ` x x | x | 40us
D
Đặt chức năng 0 0 1 L N F x x 40us
Đặt địa chỉ CGRAM 0 |1 Địa chỉ CGRAM 40us
Đặt địa chỉ DDRAM 1 Dia chi DDRAM 40us
Doc cd "BAN" BE BF Dia chi DDRAM -
Ghi vào
RoE Ratt D7|D6| D5} D4 D3 | D2 | D1 | DO| 40us
Đọc từ CGRAM/DDRAM D7 | D6 |D5| D4 D3 | D2 | D1 | DO| 40us
- Xố màn hình: lệnh này xóa tồn bộ nội dung DDRAM và vì thế xóa tồn bộ hiển thị trên LCD Vì đây là 1 lệnh ghi Instruction nên chân RS phải được reset về 0 trước khi ghi lệnh này lên LCD Mã lệnh xóa LCD là 0x01(ghi vào D0:D7)
- Đưa con trồ về vị trí đầu, dịng 1 của LCD: lệnh này thực hiện việc đưa con trỏ về vị trí đầu tiên của bộ nhớ DDRAM, vì thế nếu sau lệnh này một biến được ghi vào DDRAM thì biến này sẽ nằm ở vị trí đầu tiên (1:1) RS cũng phải bằng 0 trước khi ghi lệnh Mã lệnh là 0x02 hoặc 0x03(chọn | trong 2 mã lệnh, tùy ý)
- Đặt địa chỉ DDRAM - định vị trí con trổ cho DDRAM: di chuyển con trỏ đến một vị trí tùy ý trong DDRAM và vì thế có thể được dùng để chọn vị trí cần hiển thị trên
LCD Để thực hiện lệnh này cần reset RS=0 Bit MSB của mã lệnh (D7) phải bằng 1, 7 bit
còn lại của mã lệnh chính là địa chỉ DDRAM muốn di chuyển đến
Ví dụ: Muốn di chuyển con trỏ đến vị trí thứ 3 trên dòng 2 của LCD (địa chỉ 42), cần ghi mã lệnh 0xAA vì 0xAA=10101010 (binary) trong đó bit MSB bằng 1, bẩy bit còn lại là 0101010=42, địa chỉ của ô nhớ muốn đến
Trang 18
- Ghi dữ liệu vào CGRAM hoặc DDRAM: vì đây khơng phải là lệnh ghi
instruction ma là I lệnh ghi dữ liệu nên chan RS cân được set lên I trước khi ghi lệnh vào
LCD Lệnh này cho phép ghi mã ASCII của một ký tự cần hiển thị vào thanh ghi DDRAM
- Đặt các chức năng hiển thị: Lệnh này chỉ ra cách hiển thị một ký tự tiếp theo I
ký tự trước đó
Ví dụ: Nếu muốn hiển thị 2 ký tự liên tiếp AB, trước hết viết A tại vị trí 5, dịng 1 Sau đó ghi B vào LCD, lúc này có 4 cách mà LCD có thể hiển thị B như Sau:
Hiển thị B bên phải A tại vị trí số 6
B cũng có thể được hiển thị bên trái A, tại vị trí số 4
LCD có thể tự dịch chuyển A về bên trái đến vị trí 4 sau đó hiển thị B bên phải A, tại vị trí 5
o LCD dich chuyển A về bên phải đến vị trí 6 sau đó hiển thị B bên trái A, tại vị trí 5
Có thể chọn | trong 4 cách hiển thị trên thông qua lệnh Đặt các chức năng Đây là
lệnh ghi Instruction nén RS=0, 5 bit cao D7:3=00000, bit D2=1, hai bít cịn lại DI:0 chứa
mã lệnh để lựa chọn I trong 4 cách hiển thị Xem lại bảng 3, bit D1 chia gid tri I/D va DO chứa S Trong đó I/D nghĩa là tăng hoặc giảm (Increment or Decrement) I/D= I là hiển thị tăng tức ký tự sau sẽ hiển thị bên phải ký tự trước, nếu I/D=0 thì hiển thị giảm, tức ký tự sau hiển thị bên trái ký tự trước S là giá trị Dịch, nếu S=l thì các ký tự trước đó sẽ được “đẩy” đi, ký tự sau chiếm chỗ ký tự trước, ngược lại nếu S=0 thì vị trí hiển thị của các ký tự trước đó khơng thay đổi Có thể tóm tắt 4 mode hiển thị ứng với 4 mã lệnh như
sau:
© D7:0 = 0x04 (00000100) : hién thi giảm và khơng dịch © D7:0 = 0x05 (00000101) : hién thị giảm và dịch
¢ D7:0 = 0x06 (00000110) : hién thi ting va khéng dich (thong thudng sử dung)
e D7:0 = 0x07 (00000111) : hién thị tăng và dịch
- Bật/Tắt hiển thị — xác lập cách hiển thị cho LCD: lệnh này bao gồm các thông số cho phép LCD hiển thị, cho phép hiển thị cursor và mở/tắt nhấp nháy Đây cũng là một lệnh ghi Instrcution nên RS phải bằng 0 Mã lệnh cho lệnh này có dang 00001DCB trong d6 D (Display) cho phép hién thi LCD néu mang gid tri 1, C (Cursor) bing | thi cursor sé được hiển thị và B là nhấp nháy cho con trỏ tại vị trí hiển thị (nhấp nháy là dạng 1 ô đen
Trang 19
tại vị trí ký tự đang hiển thị) Mã lệnh được dùng phổ biến cho lệnh này là 0x0E (000011 10 - hiển thị con trổ nhưng không nhấp nháy)
- Đặt chức năng - xác lập chức năng cho LCD: đây là lệnh thiết lập phương thức giao tiếp với LCD, kích thước font chữ và số lượng line của LCD RS cũng phải bằng 0 khi sử dụng lệnh này Mã lệnh Đặt chức năng có dạng 001DLNExx Trong đó nếu DL=1 (DL: Data Length) thì mode giao tiếp 8 bit sẽ được dùng, lúc này tất cả các chân từ D0 đến D7 phải được kết nối với bộ điều khiển ngoài Nếu DL=0 thì mode 4 bit được dùng, trong trường hợp này chỉ có 4 chân D4:7 được dùng để truyền nhận dữ liệu và kết nối với bộ
điểu khiển ngoài, các chân D0:3 được để trống N quy định số dòng của LCD F là kích thước font chữ hiển thị, do LCD có 2 bộ font chữ có sẵn trong CGROM nên cần lựa chọn thông qua bit F, nếu F=1 bộ font 5x10 được sử dụng và nếu F=0 thì font 5x§ được hiển thị 2 bit thấp trong mã lệnh này có thể được gán giá trị tùy ý Mã lệnh được dùng phổ biến cho lệnh Đặt chức năng là 0x38 (00111000 — giao tiếp 8 bit, 2 dòng với font 5x8 ) hoặc 0x28 (00101000 ~ giao tiếp 4 bit, 2 dòng với font 5x )
2.1.7.3 Giao tiếp 8 bit và 4 bit:
Text LCD có 2 mode để ghi và đọc dữ liệu mode § bit và mode 4 bit:
- Mode 8 bit: Nếu bit DL trong lệnh function set bằng 1 thì mode 8§ bit được dùng Để sử dụng mode § bit, tất cả các lines dữ liệu của LCD từ D0 đến D7 (từ chân 7 đến chân 14) phải được nối với 1 PORT của chip điều khiển bên ngoài Ưu điểm của phương pháp giao tiếp này là dữ liệu được ghi và đọc rất nhanh và đơn giản vì chip điểu khiển chỉ cần xuất hoặc nhận dữ liệu trên 1 PORT Tuy nhiên, phương pháp này có nhược điểm là tổng số chân dành cho giao tiếp LCD quá nhiêu, nếu tính ln cả 3 chân điều khiển thì cần đến
11 đường cho giao tiếp LCD
- Mode 4 bit: LCD cho phép giao tiếp với bộ điểu khiển ngoài theo chế độ 4 bit Trong chế độ này, các chân D0, DI, D2 và D3 của LCD không được sử dụng (để trống), chỉ có 4 chân từ D4 đến D7 được kết nối với chip bộ điểu khiển ngoài Các instruction và data 8 bit sẽ được ghi và đọc bằng cách chia thành 2 phần, gọi là các Nibbles, mỗi nibble gồm 4 bit và được giao tiếp thông qua 4 chân D7:4, nibble cao được xử lí trước và nibble thấp sau Ưu điểm lớn nhất của phương pháp này tối thiểu số đường kết nối dùng cho giao
tiếp LCD
2.2 Sensor gia tốc ADXL202:
Trang 20
Có rất nhiều loại sensor có thể áp dụng được trong lĩnh vực này Song hiện nay sensor gia tốc ADXL202 được dụng khá phổ biến và đặc biệt là sự tiện lợi của sensor này nên trong để tài tôi dùng sensor ADXL202
2.2.1 Tính năng:
Sensor này được tích hợp trên một chíp đơn Đo được cả gia tốc động và tĩnh
Người sử dụng có thể điều chỉnh được chu kỳ lối ra
Nguồn cung cấp thấp < 0.6mA Đáp ứng nhanh
Dải thơng có thể hiệu chỉnh nhờ một tụ đơn Có độ phân giải 5mg ở dải thông 60Hz
Điện áp vận hành +3V tới +5.25V Độ sốc là 1000g
2.2.2 Mô tả chung:
ADXL202 giá thành thấp, nguôn cung cấp nhỏ Có dải đo gia tốc +2g/+10g, có thể
đo được cả hai gia tốc động và tĩnh
< "Bê TU A3)
Hình 2.5 Hình dạng thực tế Sensor ADXL202E đặt trên đông xu
Lối ra là tín hiệu số tương ứng với gia tốc trên hai trục Lối ra có thể đo trực tiếp nhờ bộ đếm của vi điều khiển mà không cần bộ biến đổi AD hay một bộ logic nào Chu kỳ lối ra được hiệu chỉnh từ 0.5ms tới 10ms thông qua một điện trở (Rset Nếu điện áp lối ra được đề cập thì điện áp này sẽ cân xứng với gia tốc sẵn có từ hai chân XEilt và YFilt của sensor
Dải thông của ADXL202 có thể được đặt từ 0.01 Hz tới 5 kHz thông qua hai điện trở Cx và Cy Nhiễu nền điển hình là 50g// cho phép tín hiệu dưới 5mg được giải quyết cho dải thông dưới 60 Hz
Dải nhiệt độ làm việc của sensor là 0°C tới +70°C, tuy nhiên trong công nghiệp lại là từ -40°C tới +85°C
2.2.3 Sơ đồ khối chức năng:
Trang 21
Bê mặt của cảm biến là có cấu tạo từ nhiễu lớp silíc, trên bể mặt có cấu tạo là những lò xo cung cấp điện trở để kìm hãm gia tốc Mọi sự chuyển động của những khối
không cân xứng các tụ khác nhau kết quả là sẽ xuất hiện một xung vuông ở lối ra với biên
độ tỷ lệ với gia tốc Trên mỗi trục sẽ được dải điều biến chỉnh sửa tín hiệu và xác định rõ hướng của gia tốc Lối ra này cung cấp tới bộ điểu biến chu kỳ xung (DCM) đó là sự kết hợp chặt chẽ những tụ bên ngoài để đặt dải thông trên mỗi trục Tín hiệu tương tự đã được lọc và chuyển đổi tới chu kỳ xung lối ra bởi DCM Sau khi qua bộ DCM tín hiệu thu được sẽ là tín hiệu số Điện trở Ry đặt độ rộng xung PWM (T2) Cịn tín hiệu tương tự thu được ở các kênh Xu và Yon thông qua các tụ lọc Cc va C Một điện trở ngoài đặt khoảng thời gian của chu kỳ công suất lối ra.A(g)= 0 (g) gia tốc tạo ra 50% chu kỳ xung suất lối ra
+3.0V TO +5.25V al 7
Yoo Vm Xeur SELF TEST
(18) % ® ADXL202/ X SENSOR ADXL210 Ret 32k@ XOUT —»=~ L—| DEMOD c = T DUTY 0
MODULATOR N|uP N|mi
OSCILLATOR " N | Ret E 32k vour || ‡ | prmop Y SENSOR | ia» a ` 7 a COM Yrury Ry
Hình 2.6 Sơ đồ khối chức năng của sensor ADXL202 2.2.4 Sơ đồ chân:
Trang 22
Xrit} 7 ST Yet XourL° Your BOTTOM VIEW
Hinh 2.7 So dé chan Sensor ADXL202E
Bảng 2.4 Chức năng các chan:
Chân Tên Chức năng
Self Test, dùng để kiểm 1 ST | tra
T2_ | Nối với Rset để đặt T2
COM | Nối VSS Yout | Ngõ ra số kênh Y Xout | Ngõ ra số kênh X
Yfilt | Ngõ ra analog kênh Y
Xfilt | Ngõ ra analog kênh X
COIN TD |+ | |2 VDD | +5V 2.2.5 Nguyên lý vận hành:
Lối ra của bộ giải điều chế điều khiển trạng thái bộ điều chế chu kỳ công suất thông qua một điện trở 32KO Ở điểm này một chân sẵn có trên trên một kênh cho phép người sử dụng dặt dải thông của tín hiệu của thiết bị bằng một tụ điện thêm vào đó Bộ lọc này cải tiến độ phân giải của phép đo và chống nhiễu xuyên kênh
Sau khi qua bộ lọc thông thấp, tín hiệu được biến đổi thành tín hiệu điều chế chu kỳ công suất bởi trạng thái DCM Một điện trở sẽ được đặt để quyết định đến chu kỳ của T2, ở đó T2 biến đổi trong khoảng 0.5ms đến 10ms Ở gia tốc 0g tương ứng với 50% chu ky
Trang 23
công suất Tín hiệu gia tốc có thể được quyết định bởi việc đo độ rộng xung của T1 và T2 bằng bộ đếm hay bộ định thời của vi điều khiển
Điện áp lối ra tương tự được lưu trữ bằng bộ đệm tín hiệu từ chân XEilt và YEilt, hay thơng qua tín hiệu chu kỳ công suất thông qua bộ lọc RC tạo thành tín hiệu một chiều
ADXL202 sẽ vận hành với điện áp cung cấp 3.0V đến 5.25V TI và T2 được biểu diễn bằng hình 2.8
F——"——
Fr |
Hình 2.8 Ngõ ra xung số
2.2.6 Linh kiện mạch ngoài:
Linh kiện bên ngoài chủ yếu là một tụ điện đơn 0.IHF, Cpc, dùng lọc nhiễu do nguồn cung cấp Tuy nhiên trong một số trường hợp sử dụng chung nguồn cung cấp cho các thiết bị khác như LCD, bảng LED do đó nhiễu trên nguồn có thể gây nên nhiễu trên
lối ra của ADXL202 Điều này thường thấy như hiện tượng gợn sóng của điện áp ở chân
Xu và Ygi Để lọc nhiễu trên đường nguồn cung cấp, cần mắc một điện trở 1000 hay
một thanh ferit ở lối vào nguồn cấp cho ADXXL202E
2.2.7 Đặt giải thông cho ADXL202 sử dung Cx va Cy:
ADXL202 cung cấp giới hạn dải cho các chân Xfilt và Yfilt Các tụ phải thêm tại những chân để thực hiện bộ lọc thông thấp tránh hiện tượng chồng phổ và giảm nhiễu Công thức tính 3 db dải thông:
— 1
~ (2 2 0)*C@&.y))
Hay đơn giản hơn:
Dung sai của điện trở nội (Rau) có thể thay đổi nhiều khoảng +25% với giá trị định
mức là 32KO, vậy dải thông sẽ thay đổi theo Dung kháng tối thiểu trong mọi trường hợp yéu cau 14 1000 pF cho Cx y)
Bảng 2.5 Lựa chọn tụ lọc, Cx và Cy:
Dải thông Giá trị tụ
Trang 24
10Hz 0.47uF 50Hz 0.10uE 100Hz 0.05uF 200Hz 0.027uF 500Hz 0.01uE SKHz 0.001uF
Chu kỳ lối ra của DCM được đặt cho cả hai kênh bởi một điện trở đơn từ Rser tới đất cơng thức tính toán chu kỳ:
(Q)
?=125 0 Bang 2.6 Lựa chọn giá trị điện trở cho T2:
T2 RSET lms 125KQ 2ms_| 250KQ Sms 625KQ 10ms_| 1.25MQ
Tính gia tốc theo lối ra số: Acceleration (in g) =
Theo những đặc điểm chính ctia data sheet, thì định mức chu kỳ công suất lối ra của ADXL202 là 50% tại Zero g và 12.5% chu kỳ công suất thay đổi per g Bởi vậy cơng thức tính chu kỳ công suất như sau:
Tạ — 50% A cceleration (in g) ti i = 125% Diễn giải các thông số:
Resoluion(độ phân giải): sự thay đổi tín hiệu nhỏ nhất cân phát hiện ra ¢ Bandwidth(bang thơng): tần số cao nhất cần được phát hiện ra
Trang 25® Acquisifion Time(thời gian nhận): đó là thời có thể nhận tín hiệu trên mỗi trục
Những thông số trên sẽ giúp xác định rõ dải thông của gia tốc kế, tốc độ đồng hồ của vi điểu khiển và chiểu dài của chu kỳ T2
Sự lựa chọn dải thông của gia tốc kế sẽ được xác định rõ bằng đo đạc độ phân dải (dải thông nhỏ nhất có thể phát hiện ra gia tốc) bộ lọc có thể được sử dụng làm giảm nhiễu nền và cải thiện độ phân giải của gia tốc kế Độ phân giải phụ thuộc vào cả dải thơng bộ lọc tín hiệu tương tự tại Xø¡¿ và Yøi, và tốc độ của bộ đếm vi điểu khiển
Lối ra của tương tự của ADXL202 có đặc trưng dải thông khoảng 5kHz, cao hơn nhiễu so với trạng thái cửa chu kỳ công suất có khả năng chuyển đổi Người sử dụng phải lọc tín hiệu tại những thời điểm để giới hạn hiện tượng chồng phổ Để làm giảm tối thiểu lỗi DCM dải thơng tín hiệu tương tự cần nhỏ hơn 1/10 tân số DCM
Dai thơng của tín hiệu tương tự có thể giảm hơn nữa để làm giảm nhiễu và cải thiện độ phân giải Nhiễu của ADXL202 có thể xác định thông qua công thức sau:
500
noise (rms) = — xVBWx1.5 Tại 100Hz giá trị của nhiễu sẽ là:
500ug
noise (rms) = TH xv100x1.5 = 6.12mg
Thường thì giá trị đỉnh của nhiễu là giá trị mong muốn nhiễu đỉnh — đỉnh được ước lượng bằng phương pháp thống kê
Bảng 2.7 Bảng thống kê giá trị nhiễu:
Bandwith Cx,Cy Rmsnoise Peak to peak noise
10Hz 0.47 1.9 mg 7.6 mg 50Hz 0.1 4.3 mg 17.2 mg 100Hz 0.05 6.1 mg 24.4 mg 200Hz 0.027 8.7 mg 35.8 mg 500Hz 0.001 13.7 mg 54.8 mg
2.2.8 Đặc tuyến ngõ ra của sensor ADXL202:
Khảo sát hệ hệ giao động lò so ta thấy mối quan hệ giữa số xung thu được từ bộ đếm và góc nghiêng của cảm biến so với phương của trọng trường ta thu được tín hiệu hình sin điều hồ như hình 2.9
Trang 26
Phương trình của dạng xung lối ra: P(t) = Asin(at + 2) + offset Biên độ đặc tuyến: _ Pmax — Pmin ~ 2 D6 dich offset: Pmax — Pmin Offset = A + Pmin = 2 xung Đụ: Offset A Prnin goc
Hình 2.9 Quan hệ giữa góc và xung lối ra
Từ các phương trình trên ta có cơ sở để tính tốn góc nghiêng dựa vào lối ra số của cảm biến gia tốc:
Xung = Asin(góc) + offset Góc = arcsin[(xung - offset)/A] Pitch = arcsin[(xung - offset)/A] Pitch = arcsin[(xung - offset)/A]
Tín hiệu lối ra là chu kỳ hình sin biến đổi từ 0360 , hai kênh X và Y lệnh pha 90 và hoàn toàn độc lập với nhau
Sở dĩ đặc tuyến của ADXL202 có dạng Sin điều hòa, do cấu tạo của nó là dạng tụ, để thay đổi gia tốc thì những bản tụ phải thay đổi khoảng cách sự thay đổi đó làm cho số xung phát ra thay đổi trên hai kênh X và Y
2.3 Vi điều khiển ATMega32:
AVR là họ Vi điểu khiển khá mới trên thị trường cũng như đối với người sử dụng Đây là họ VĐK được chế tạo theo kiến trúc RISC (Reduced Intruction Set Computer) có cấu trúc kháphức tạp Ngoài các tính năng như các họ VĐK khác, nó cịn tích hợp nhiều tính năng mới rất tiện lợi cho người thiết kế và lập trình
Trang 27
Sự ra đời của AVR bắt nguồn từ yêu cầu thực tế là hầu hết khi cân lập trình cho vi điều khiển, chúng ta thường dùng những ngôn ngữ bậc cao HLL (Hight Level Language) để lập trình ngay cả với loại chip xử lí 8 bit trong đó ngơn ngữ C là ngôn ngữ phổ biến nhất Tuy nhiên khi biên dịch thì kích thước đoạn mã sẽ tăng nhiều so với dùng ngôn ngữ Assembly
Hãng Atmel nhận thấy rằng cần phải phát triển một cấu trúc đặc biệt cho ngôn ngữ C để giảm thiểu sự chênh lệch kích thước mã đã nói trên Và kết quả là họ vi điều khiển AVR ra đời với việc làm giảm kích thước đoạn mã khi biên dịch và thêm vào đó là thực hiện lệnh đúng đơn chu kỳ máy với 32 thanh ghi tích ly và đạt tốc độ nhanh hơn các họ vi
điều khiển khác từ 4 đến 12 lần
Họ vi điều khiểnAVR của Atmel Corp là một bước phát triển trên nền của Vi điểu khiển AT89 đã khá quen thuộc Nếu như AT89 là vi điều khiển có CPU CISC thi AVR là RISC, với kiến trúc Harvard do vậy tốc độ sẽ nhanh hơn (tốc độ tối đa là l6 triệu lệnh/giây) Ngồi ra AVR cũng tích hợp sẵn ngay trong chip mạch ADC, PWM cũng như hỗ trợ các chuẩn giao tiếp thông dụng như UART/USART, I2C, 2-wires nên việc thiết kế và thực hiện phần cứng cho những ứng dụng rất thuận tiện, nhanh chóng, nhỏgọn
Hình 2.10 Hình dạng thực tế ATMega32 2.3.1 Chức năng:
e 16KB bộ nhớ Flash với khả năng đọc trong khi ghi e 512 byte b6 nhé EEPROM
e 1KB b6 nhé SRAM
e 32 thanh ghi chtfc nang chung e 32 dung vào ra chung
e3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại, USART e _ Giao tiếp nối tiếp 2 day, 8 kénh ADC 10 bit
e _ Hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như: trình dịch C, macro assemblers, chương trình mơ phỏng/sửa lỗi, kit thử nghiêm
2.3.2 Sơ đô khối:
Trang 28
SVTH : Huỳnh Minh Nguyện
L PORTA RIVERS OBCILLATOR OSCILLATOR ị | 1 ' ' ' ' ' ' 1 ' 1 ' ' ' ' 1 ' ' t ' 1 ' ' ' ' 1 ' i H ' ' 1 1 r '
PROGRAM STACK WATCHDOG
COUNTER POINTER TIMER '
'
| J i 1
PROGRAM FLAK _—" J MCU CONTROL | REGISTER_ | ' !
' '
| : !
INSTRUCTION REGISTER GENERAL PURFOGE counters TMER ig ED ị ' ' ' 1 ' 1 ' ' ' ' 1 ' ' ' ' 1 ' ' ' ' 1 ' 1 ' ' 1 ' ' ' ' ' ' 1 ' 1 ' ' 1 ' 1 ' ' ' ' 1 ' REGISTERS INSTRUCTION ~ xrea=zr fg DECODER T unt iE | CONTROL LINES ‘STATUS REGISTER
Hình 2.11 Sơ đồ khối ATMega32
2.3.2 Cấu trúc nhân AVR:
Phần cốt lõi của AVR kết hợp tập lệnh phong phú về số lượng với 32 thanh ghi làm
việc đa năng Toàn bộ 32 thanh ghi đều được nối trực tiếp với ALU (Arithmetic Logic Unit), cho phép truy cập 2 thanh ghi độc lập bằng một chu kì xung nhịp Kiến trúc đạt được có tốc độ xử lý nhanh gấp 10 lân vi điều khiển dạng CISC thông thường
Trang 29
2.3.2.1 Cấu trúc tổng quát:
< Data Bus 8-bit
Program Status lun Couter [“ and Control |*® Memory
Interrupt
' wis | bel “SS?
Instruction General
Register Pưpose [*) SPI
Registrers <> Unit
Instruction Watchdog
Decoder ¬ <> Timer
i : 1 Analog
Control Lines 3 3 <>) comparator < 3} 2 s & = ~©=>| VO Modulet
SRAM Osta VO Module 2
+>) VO Module n EEPROM I 1O Lines ‘i v
Hình 2.12 Sơ đồ cấu trúc CPU của ATMega32
AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và dữ liệu Các lệnh được thực hiện chỉ trong một chu kỳ xung clock Bộ nhớ chương trình được lưu trong bộ nhớ Flash
2.3.2.3 ALU:
ALU làm việc trực tiếp với các thanh ghi chức năng chung Các phép toán được thực hiện trong một chu kỳ xung clock Hoạt động của ALU được chia làm 3 loại: đại số, logic và theo bit
2.3.2.4 Thanh ghi trạng thái:
Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và logic
Trang 30SVTH : Huỳnh Minh Nguyện
Bit 7 6 s 4 3 2 1 9
‘SSF (SSF) | a | †rT | H | s | V | N | Z7 | c_& srEG
Read Write RAW RW RW RW RW RW RW RW
initial Value 9 9 9 9 9 9 9 9
Hình 2.13 Thanh ghi trang thai SREG
C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập) Z: Zero Flag ;Cờ zero (Nếu kết quả phép tốn bằng 0)
NĐ: Negative Flag (Nếu kết quả của phép toán là âm)
e V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số bù 2) V, For signed tests (S=N XOR V) S: N
e _H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ r sau) eT: Transfer bit used by BLD and BST instructions(Bugc sử dụng làm nơi chung ® gian trong các lệnh BLD,BST)
e I: Global Interrupt Enable/Disable Flag (Day 14 bit cho phép toàn cục ngắt Nếu bit
e nay 6 trang thái logic 0 th khơng có một ngắt nào được phục vụ 2.3.3 Các thanh ghi chức năng chung:
7 0 Addr sob $oE $oF sto sit SIA s1B sic s1D SIE St
Hình 2.14 Thanh ghỉ chức năng chung 2.3.4 Con trổ ngăn xếp (SP)
Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong bộ nhớ RAM là $5E) Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp
Trang 31
Ba 15 14 13 12 11 10 2 8
SSE (SSE) - - - - - - spo SPS SPH $3D ($5D) SP7 SP6 ‘SPS SP4 SP3 SP2 SPI SPO SPL 7 6 5 4 3 2 1 9 Read'Wrte R R R R R R Rw Rw Rw Rw Rw Rw RW RW Rw Rw Initial Value 9 ° 9 9 9 9 9 9 9 9 9 9 9 9 9 9
Hình 2.15 Thanh ghi con trỏ ngăn xếp
Khi chương trình phục vu ngắt hoặc chương trình con thì con trồ PC được lưu vào ngăn xếp trong khi con trổ ngăn xếp giảm hai vị trí Và con trỏ ngăn xếp sẽ giảm I khi thực hiện lệnh push Ngược lại khi thực hiện lệnh POP th con trổ ngăn xếp sẽ tăng | va khi thực hiện lệnh RET hoặc RETI th con trỏ ngăn xếp sẽ tăng 2 Như vậy con trổ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ Và giá trị ngăn xếp ít nhất cũng phải lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi
2.3.5 Quản lý ngắt:
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng sẵn sàng cho đổi dữ liệu của mình
Ví dụ: Khi bộ truyền nhận UART nhận được một byte nó sẽ báo cho CPU biết thông qua cờ RXC, hoặc khi nó đã truyền được một byte thì cờ TX được thiết lập Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu vị trí đang thực hiên chương trình (con trổ PC) vào ngăn xếp sau đó trỏ tới vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó cho tới khi gặp lệnh RETI (return from
interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện chương trình mà trước khi có ngăt nó đang thực hiện Trong trường hợp mà có nhiễu ngắt yêu cầu cùng một lúc thi CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt các ngắt theo mức ưu tiên Trong khi đang thực hiện ngắt mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp Trường hớp ngắt này có mức ưu tiên cao hơn thì nó sẽ được phục vụ Cịn nếu có mức ưu tiên thấp hơn thì sẽ bị bỏ qua
Bộ nhớ ngăn xếp là vùng bất kỳ trong SRAM từ địa chỉ 0x60 trở lên Để truy nhập vào SRAM thơng thường thì ta dùng con trỏ X, Y, Z và để truy nhập vào SRAM theo kiểu ngăn xếp thì ta dùng con trổ SP Con trỏ này là một thanh ghi 16 bit và được truy nhập như hai thanh ghi 8 bit chung có địa chỉ SPL :0x3D/0x5D(IO/SRAM) và SPH:0x3E/0x5E
Khi chương trình phục vu ngắt hoặc chương trình con thì con trổ PC được lưu vào ngăn xếp trong khi con trổ ngăn xếp giảm hai vị trí.Và con trổ ngăn xếp sẽ giảm I khi thực hiện lệnh push Ngược lại khi thực hiện lệnh POP thì con trổ ngăn xếp sẽ tăng | va khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2 Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình
Trang 32
con được gọi hoặc các ngắt được cho phép phục vụ Và giá trị ngăn xếp ít nhất cũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi
2.3.6 Cấu trúc bộ nhớ:
2.3.6.1 Bộ nhớ chương tr.nh (Bộ nhớ Flash):
Bộ nhớ Flash 32KB của Atmega32 dùng để lưu trữ chương trình Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu 8KX32 Bộ nhớ Flash được chia làm 2 phần, phần dành cho chương trình boot và phần dành cho chương trinh ứng dụng
$0000
Application Flash Section
Boot Flash Section
SIFFF
Hình 2.16 Bản đồ bộ nhớ chương trình 2.3.6.2 Bộ nhớ dif ligu SRAM:
1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ nhớ dữ liệu SRAM nội Trong đó 96 ơ nhớ đâu tiên định địa chỉ cho file thanh ghi và bộ nhớ O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội
Trang 33
Register File Data Address Space Intenal SRAM Hình 2.17 Bản đồ bộ nhớ dữ liệu SRAM 2.3.6.3 Bộ nhớ dữ liệu EEPROM
ATmegaló6 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, và được sắp xếp theo từng byte, cho phép các thao tác đọc/ghi từng byte một
2.3.7 Các cổng vào ra (I/O):
Vi điều khiểnATmega32có 32 đường vào ra chia làm bốn nhóm 8 bit một Các đường vào ra này có rất nhiều tính năng và có thể lập tr.nh được 6 day ta sé xét chúng là các cổng vào ra số Nếu xét trên mặt này th các cổng vào ra này là cổng vào ra hai chiều có thể định hướng theo từng bit Và chứa cả điện trở pull-up (có thể lập trình được) Mặc dù mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra số thì dường như điều khiển vào ra dữ liệu th hoàn toàn như nhau Chúng ta có thanh ghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng (PORTA, PORTB, PORTC, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRA, DDRB, DDRC, DDRD) và cuối cùng là địa chỉ chân vào của cổng (PINA, PINB, PINC, PIND)
2.3.7.1 Thanh ghi DDRx:
Đây là thanh ghi § bit (ta có thể đọc và ghi các bit ở thanh ghi này) và có tác dụng điều khiển hướng cổng PORTx (tức là cổng ra hay cổng vào) Nếu như một bit trong thanh ghi này được set th bit tương ứng đó trên PORTx được định nghĩa như một cổng ra Ngược lại nếu như bit đó khơng được set th bit tương ứng trên PORTx được định nghĩa là cổng vào
Trang 34
2.3.7.2 Thanh ghi PORTx
Đây cũng là thanh ghi 8 bit (các bit có thể đọc và ghi được) nó là thanh ghi dữ liệu của cổng Px và trong trường hợp nếu cổng được định nghĩa là cổng ra thì khi ta ghi một bit lên thanh ghi này thì chân tương ứng trên port đó cũng có cùng mức logic Trong trường hợp mà cổng được định nghĩa là cổng vào thì thanh ghi này lại mang dữ liệu điểu khiển cổng Cụ thể nếu bit nào đó của thanh ghi này được set (đưa lên mức 1) thì điện trở kéo lên (pull-up) của chân tương ứng của port đó sẽ được kích hoạt Ngược lại nó sẽ ở trạng thái hi-Z Thanh ghi này sau khi khởi động Vi điểu khiển sẽ có giá trị là 0x00
2.3.7.3 Thanh ghi PINx
Đây là thanh ghi 8 bit chứa dữ liệu vào cửa PORTx (trong trường hợp PORTx được thiết lập là cổng vào) và nó chỉ có thể đọc mà không thể ghi vào được
2.3.8 Bộ định thời
Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit, có các đặc điểm sau:
e_ Bộ đếm một kênh
e Xóa bộ định thời khi trong mode so sánh (tự động nạp)
e PWM e_ Tạo tân số
e Bộ đếm sự kiện ngồi © B6 chia tan 10 bit
¢ Nguén ngat tran bé dém va so sénh Sơ đồ cấu trúc của bộ định thời:
Trang 35
(PntRea (Fron Preseaier) Tre: Ceunler TCNTA DATABUS (etReq.) We©rm Generaton =
Hình 2.18 Sơ đồ cấu trúc bộ định thời 2.3.8.1 Các thanh ghi
TCNT0 và OCR0 là các thanh ghi 8 bit Các tín hiệu yêu cầu ngắt đều nằm trong thanh ghi TIFR Các ngắt có thể được che bởi thanh ghi TIMSK
Bộ định thời có thể sử dụng xung clock nội thông qua bộ chia hoặc xung clock ngoài trên chân T0 Khối chọn xung clock điều khiển việc bộ định thời/bộ đếm sẽ dùng nguồn xung nào để tăng giá trị của nó Ngõ ra của khối chọn xung clock được xem là xung clock của bộ định thời (cIkT0)
Thanh ghi OCRO0 luôn được so sánh với giá trị của bộ định thời/bộ đếm Kết quả so sánh có thể được sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tai chan OCO
2.3.8.2 Đơn vị đếm:
Phần chính của bộ định thời § bit là một đơn vị đếm song hướng có thể lập trình được Cấu trúc của nó như h.nh dưới đây:
TOVn ——*>
DATA BUS (ra Req.)
Trang 36Hình 2.19 Đơn vị đếm e Count: ting hay giam TCNTO 1
e Direction: Iva chon giita dém lén va đếm xuống e Clear: x6a thanh ghi TCNTO
e CIkTO: xung clock ctia bé dinh thdi
e TOP: báo hiệu bộ định thời đ tăng đến giá trị lớn nhất
e _ BOTTOM: báo hiệu bộ định thời đ giảm đến giá trị nhỏ nhất (0)
2.3.8.3 Đơn vị so sánh ngõ ra: DATA BUS ‘= (&-bit Comparator ) OCEn (Int.Res.) tp
bon 'Waveform Generator
FOCn
'WGMn1:0 €OMụn1:0
Hình 2.20 Đơn vị so sánh ngõ ra
Bộ so sánh 8§ bít liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so sánh ngõ ra (OCRO0) Khi giá trị TCNT0 bằng với OCRO, bộ so sánh sẽ tạo một báo hiệu Báo hiệu này sẽ đặt giá trị cờ so sánh ngõ ra (OCF0) lên I vào chu kỳ xung lock tiếp theo Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh ngõ ra và sẽ tự động được xóa khi ngắt được thực thi Cờ OCF0 cũng có thể được xóa bằng phần mềm
Trang 37
2.3.9 Mô tả các thanh ghi:
2.3.9.1 Thanh ghi điều khiển bộ định thời/bộ đếm TCCRU:
Bit 7 6 5 4 3 2 1 0
G [coor] conoo | woot] csc2 | cso1_] cs00 J Tccno
Read/Write Ww RW RW RW RW RW RW R/W Initial Value 0 0 0 0 0 0 0 0
Hình 2.21 Thanh ghi điều khiển bộ định thời
e Bit 7 - FOC0: So sánh ngõ ra bắt buộc: Bit này chỉ tích cực khi bit WGM00 chi định chế độ làm việc khơng có PWM Khi đặt bit này lên 1, một báo hiệu so sánh bắt buộc xuất hiện tại đơn vị tạo dạng sóng
¢ Bit 6, 3- WGMO01:0: Ché d6 tao dạng sóng: Các bit này điều khiển đếm thứ tự của bộ đếm, nguôn cho giá trị lớn nhất của bộ đếm (TOP) và kiểu tạo dạng sóng sẽ được sử dụng
e_ Bit 5:4 - COM0I1:0: Chế độ báo hiệu so sánh ngõ ra: Các bit này điều khiển hoạt động của chân OC0 Nếu một hoặc cả hai bit COMOI:0 được đặt lên 1, ngõ ra OCO0 sẽ hoạt động
e _ Bit 2:0: CS02:0: Chọn xung đồng hồ : Ba bit này dùng để lựa chọn nguồn xung
cho bộ định thời/bộ đếm cso2 | CS01 CS00 | Description
0 0 No clock source (Timer/Counter stopped)
0 1 đlk,,g(No prescaling) 0 1 0 Clk, 9/8 (From prescaler) 0 1 1 Clk, 9/64 (From prescaler) 1 0 0 Clk, 9/256 (From prescaler) 1 0 1 Clk; 9/1024 (From prescaler)
0 External clock source on TO pin Clock on falling edge 1 External clock source on TO pin Clock on rising edge
Hình 2.22 Chọn nguồn xung cho bộ định thời 2.3.9.1 Thanh ghi bộ định thời/bộ đếm:
Trang 38Hình 2.23 Thanh ghỉ bộ định thời
Thanh ghi bộ định thời/bộ đếm cho phép truy cập trực tiếp (cả đọc và ghi) vào bộ đếm 8 bit
2.3.9.2 Thanh ghi so sánh ngõ ra - OCR0:
Bít 7 6 5 4 3 2 1 0 Ỉ OCR0(7:0] | ocno Read/Write RW RW RW Rw Rw RW RW RW Initial Value ° 0 0 0 9 0 0 0 Hình 2.23 Thanh ghỉ so sánh ngõ ra
Thanh ghi này chứa một giá trị 8 bit và liên tục được so sánh với giá trị của bộ đếm
2.3.9.3 Thanh ghi mặt nạ ngắt:
Bit 7 6 5 4 3 2 1 0
OCIE2 | TOIE2 | TICIE1 | OCIE1A | OCIE1B | TOIE1 OCIEO TOIEO TIMSK ReadWrite RW RW RW RW RW RW RW RW
Initial Value 0 0 0 0 0 0 0 0
Hình 2.24 Thanh ghỉ mặt nạ ngắt TIMSK e Bit 1-OCIE0: Cho phép ngắt báo hiệu so sánh e _ Bit0-TOIE0: Cho phép ngắt tràn bộ đếm 2.3.9.3 Thanh ghi cờ ngắt bộ định thời:
Bi 7 6 5 4 3 2 1 0
[ocre_] Tove] lcrt_] ocria | ocris | Tovi_| TIFR
Trang 39Bit TOVO được đặt lên I khi bộ đếm bị tràn và được xóa bởi phần cứng khi vector ngắt tương ứng được thực hiện Bit này cũng có thể được xóa bằng phần mềm
2.3.10 USART:
Bộ truyền nhận nối tiếp đồng bộ và bất đông bộ là một thiết truyền thơng nối tiếp có các chức năng chính như sau:
e_ Hoạt động song công (các thanh ghi truyểền và nhận nối tiếp độc lập với nhau)
e_ Hoạt động đồng bộ hoặc bất đồng bộ e_ Bộ tạo tốc độ baud có độ chính xác cao
e _ Hỗ trợ khung truyền nối tiếp với 5, 6, 7, 8, hoặc 9 bit dữ liệu và I hoặc 2 bit stop
e Kiém tra chan lé e_ Phát hiện tràn dữ liệu e_ Phát hiện lỗi khung
¢ Loc nhiéu, bao gdm phat hién bit start lỗi và bộ lọc thông thấp số e _ Ngắt khi kết thức truyền, thanh ghi truyền hết dữ liệu và kết thức nhận e_ Chế độ truyền thông đa vi xử I
e _ Chế độ truyền đồng bộ tốc độ cao
Sơ đồ khối của bộ USART như sau:
Trang 40
[TT TT —_— — ae | UBRR[H:L| | | x2 ose 1 | | |
| BAUD RATE GENERATOR
| l
| {sync Loaic}e———f>n |
I CONTRoL [*†®*j XeK
| |
Fo ee ce eee NN eae ee ec See a ees Tee
I Transmitter}
UDR (Transmit) aur |
PARITY
a | y [>] Generator |
S| ! TRANSMIT SHIFT REGISTER [| a Lot rxo
a | + ©owrRoL | —| PL -LLTL_“C_—_—-_-_-_ _ — -— _—-_—_— — .-_ al | Receiver | Ị CLOCK RK ! I RECOVERY CONTROL 1 | |
I —)}- RECEIVE SHIFT REGISTER LÍ ge2veay DATA como PN Met | tro
|
Ị i PARITY '
HOR we CHECKER
=-= L Se 1
UCSRA UCSRB UCSRC
Hình 2.26 Sơ đô khối bộ USART
USART bao gồm 3 phần chính: bộ tạo xung clock, bộ truyền và bộ nhận Các thanh ghi điều khiển được sử dụng chung giữa các phân này
2.3.10.1 Tạo xung clock:
Bộ tạo xung clock tạo ra xung đồng hô căn bản cho bộ truyền và bộ nhận USART hỗ trợ 4 chế độ hoạt động xung clock: bất đồng bộ, bất đồng bộ tốc độ cao, truyền đồng bộ master và truyền đồng bộ slave Sơ đô khối của bộ tạo xung clock như sau: