Con người luôn ngạc nhiên về khả năng lưu trữ, nhận dạng và xử lý thông tin của bộ não con người. Từ lâu, các nhà khoa học đã tìm hiểu, nghiên cứu và sáng tạo các giải pháp cho các bài toán kỹ thuật theo phương pháp xử lý của bộ não.
Trang 1LỜI NÓI ĐẦU 3
LỜI NÓI ĐẦU 3
CHƯƠNG 1: LÝ THUYẾT MẠNG NƠRON 5
1.1 Nơron tự nhiên 5
1.2 Nơron nhân tạo 7
1.3 Mạng truyền thẳng và huấn luyện mạng theo thuật toán Brandt-Lin 9
1.3.1 Mạng truyền thẳng 9
1.3.2 Thuật toán Brandt-Lin 11
CHƯƠNG 2: GIỚI THIỆU ATMEGA 128 15
2.1 Đặc điểm của Atmega 128 15
2.2 Mô tả các chân 17
2.3 Kiến trúc tổng quan của Atmega128 20
2.3.1 Bộ nhớ của Atmega128 20
2.3.2 Tệp thanh ghi : 22
2.3.3 Port (cổng) vào ra 23
2.3.4 Giao tiếp với SRAM ngoài 27
2.3.5 Cấu trúc ngắt của Atmega 128 28
2.3.6 Bộ biến đổi A/D bên trong 31
2.3.7 Bộ truyền/nhận UART 32
2 3.8 Bộ định thời 34
CHƯƠNG 3: MÔ PHỎNG HỆ THỐNG ĐIỀU KHIỂN ĐƯỢC THIẾT KẾ DỰA TRÊN MẠNG NƠRON 37
3.1 Thiết kế bộ điều khiển PID-Neural có chỉnh định thích nghi trọng số của mạng 37
3.1.1 Thuật toán chỉnh định trọng số 37
3.1.2 Kết quả mô phỏng 39
3.2 Thiết kế bộ điều khiển sử dụng sai lệch làm đầu vào 54
3.2.1 Thuật toán chỉnh định trọng số 54
3.2.2 Kết quả mô phỏng 59
Trang 2CHƯƠNG 4 : ỨNG DỤNG ĐIỀU KHIỂN ĐỐI TƯỢNG THỰC 66
4.1 Động cơ điện một chiều 66
4.1.1 Cấu tạo của động cơ một chiều 66
4.1.2 Encoder gắn trên động cơ một chiều 68
4.1.3 Động cơ sử dụng để thử nghiệm 69
4.2 Thiết kế bộ điều khiển trên nền vi điều khiển Atmega 128 70
4.2.1 Khối điều khiển trung tâm 71
4.2.2 Giao tiếp với LCD 72
4.2.3 Phương thức truyền nhận dữ liệu qua RS232 trên PC 73
4.2.3.1 Cấu trúc vật lý của cổng RS232 73
4.2.3.2 Quá trình truyền và nhận dữ liệu của cổng COM của PC 75
4.2.3.3 Các loại truyền thông nối tiếp 79
4.2.4 Khối driver điều khiển động cơ 80
4.2.4.1 Giới thiệu về IC cầu H MC33886 80
4.2.4.2 Sơ đồ nguyên lý của driver điều khiển động cơ 83
4.2.5 Giao tiếp với bàn phím 84
4.3 Thiết kế giao diện bảng điều khiển 85
4.3 Thiết kế hệ thống điều khiển trên nền bộ điều khiển PID-Neural 88
4.3.1 Mô hình điều khiển 88
4.3.2 Chỉnh định các trọng số và tính toán đầu ra 91
4.5 Đánh giá kết quả thực nghiệm 92
Chương 5: KẾT LUẬN 93
Tài liệu tham khảo 94
Trang 3LỜI NÓI ĐẦU
Con người luôn ngạc nhiên về khả năng lưu trữ, nhận dạng và xử lý thông tincủa bộ não con người Từ lâu, các nhà khoa học đã tìm hiểu, nghiên cứu và sáng tạocác giải pháp cho các bài toán kỹ thuật theo phương pháp xử lý của bộ não Mạngnơron nhân tạo đã ra đời từ đó Hiện nay, mạng nơron được ứng dụng trong nhiềulĩnh vực như nhận dạng, xử lý thông tin, dự báo và điều khiển Đồ án của nhómnghiên cứu khía cạnh ứng dụng trong điều khiển của mạng nơron Không giống cáclĩnh vực ứng dụng khác là việc tính toán mạng nơron được thực hiện bằng máy tính,khi áp dụng vào điều khiển, mọi tính toán của mạng nơron đều được thực hiện bằng
vi điều khiển có tốc độ thấp hơn tốc độ máy tính rất nhiều nên yêu cầu thiết kế cấutrúc mạng gọn nhẹ để phù hợp với vi điều khiển và tối ưu thời gian điều khiển đượcđặt lên hàng đầu Khi ứng dụng trong điều khiển cấu trúc mạng nơron sẽ bao gồmluôn cả đối tượng điều khiển nên không thể sử dụng các luật học thông thường nhưluật học lan truyền ngược mà cần tìm 1 luật học khác phù hợp hơn Sau một thờigian dài tìm kiếm, nhóm đã tìm ra được thuật toán Brandt-Lin làm giải pháp choviệc huấn luyện mạng nơron Thuật toán Brandt-Lin là sản phẩm do 2 nhà khoa họcRobert D Brandt và Feng Lin đưa ra Trong đồ án này, ngoài việc thực hiện tốt các
mô phỏng, nhóm đã tiến hành điều khiển thực tế được động cơ 1 chiều có công suấtnhỏ và với các yêu cầu điều khiển không cao
Do hạn chế về dụng cụ thí nghiệm nên bộ điều khiển dựa trên mạng nơron củanhóm mới chỉ ứng dụng điều khiển 1 đối tượng ở điều kiện đơn giản nên chưa thểkhẳng định sẽ điều khiển thành công với các loại đối tượng khác Đồ án của nhómchắc hẳn còn nhiều sai sót mà bản thân các thành viên trong nhóm chưa phát hiện
ra Do vậy nhóm rất hy vọng nhận được sự chỉ bảo của thầy cô, bạn bè và ngườiđọc
Chúng em, những thành viên trong nhóm làm đồ án xin gửi lời cảm ơn đếnphó giáo sư, tiến sĩ Phan Xuân Minh đã tận tình hướng dẫn chúng em hoàn thành đồ
Trang 4án này Ngay từ ban đầu cô đã đặt ra mục tiêu rõ ràng và cao giúp cả nhóm thấy rõnhững việc mình cần hoàn thành Cô cung cấp cho nhóm những lời khuyên mangtính định hướng đúng đắn khi nhóm gặp khó khăn trong quá trình nghiên cứu.Nhóm cám ơn những người bạn đã hỗ trợ, cung cấp những tài liệu về mạng nơronquý giá và giúp đỡ về mặt thiết kế, nhờ đó mà đồ án này được hoàn thành đúng hạn.
Hà Nội, ngày 30 tháng 5 năm 2007
Nhóm thực hiện đồ án Nguyễn Ngọc Hải Cao Thế Phong
Võ Đoàn Quế Anh
Trang 5CHƯƠNG 1: LÝ THUYẾT MẠNG NƠRON
1.1 Nơron tự nhiên
Thành phần cấu thành cơ bản của hệ thần kinh trung ương là nơron Tế bàosinh học này nhận và xử lý thông tin và sau đó giao tiếp với các phần khác của cơthể con người Hình 1.1 trình bày một mô hình đơn giản các nơron sinh học và hình1.2 mô tả một nơron sinh học Thân tế bào thần kinh được gọi là soma và được baoquanh bởi một lớp mạng huyết tương mỏng
Hình 1.1: Sơ đồ 5 nơron liên kết với nhau
Trang 6Hình 1.2: Sơ đồ một nơron sinh học
Mỗi tế bào thần kinh nhận nhiều đầu vào thông qua các dendrite và sau khi xử lý sẽtạo một đầu ra dọc theo axon Điểm nối giữa một axon và một dendrite được gọi làsynapse Thông tin do một tế bào thần kinh tạo ra được truyền dọc theo axon của
nó Một axon kết thúc ở mối nối khớp của một nơron khác
Về mặt xử lý thông tin, một nơron với nhiều dendrite như nhiều đầu vào và mộtaxon đại diện một đầu ra có thể được xem như một hệ MISO Các hàm xử lý thôngtin trong hệ MISO này được chia thành 4 loại Hình 1.3 mô tả một nơron đơn giản
Hình 1.3: Mô hình một nơron đơn giản có nhiều đầu vào và một đầu ra
Trang 7Dendrites: Chúng bao gồm một cây nhiều nhánh, đóng vai trò như các đầu vào củanơron Trung bình có dendrite trên một nơron.
Synapse: Đây là vùng chứa đựng các kinh nghiệm trong quá khứ Nó cung cấp bộnhớ dài hạn cho các kinh nghiệm được thu thập trong quá khứ Vùng này nhậnthông tin từ các giác quan hay từ các nơron khác và cung cấp đầu ra thông quaaxon
Soma: Thân tế bào thần kinh được gọi soma Nó nhận thông tin từ synapse và sau
đó xử lý thông tin Hầu như tất các các chức năng logic của nơron được thực hiện ởsoma
Axon: Đầu ra của nơron được gọi là axon
1.2 Nơron nhân tạo
Hình 1.4: Nơ-ron nhân tạo
Cấu trúc một nơron nhân tạo (xem hình 1.4) bao gồm các thành phần sau:
Đầu vào : Các đầu vào nhân với các trọng số Một đầu vào
có giá trị bằng 1 được gọi là 1 bias và được ký hiệu là
Hàm số đầu vào f tính tập hợp các tín hiệu đầu vào cho nơron , trong
đó x và w lần lượt là các vectơ đầu vào và trọng số Thông thường chọn f là hàm
Hàm kích thích s tính toán mức độ kích thích của nơron a=s(u).
Trang 8Hàm đáp ứng tính toán giá trị tín hiệu đầu ra của nơron o=g(a) Tín hiệu đầu ra của tín hiệu thông thường bằng mức độ kích thích của nơron o=a.
Tùy theo sự khác nhau của từng tham số ở trên mà sinh ra các kiểu nơron khácnhau Các giá trị đầu vào và đầu ra của 1 nơron có thể số nhị phân {0,1}, số lai{-,1}, giá trị liên tục trong đoạn [0,1], hoặc các số rời rạc trong 1 khoảng được địnhnghĩa trước
Hình 1.5: Các hàm kích thích hay được sử dụng nhất: (a) Hàm chặn cứng; (b-1),
(b-2) Các hàm chặn tuyến tính ; (c) Các hàm sigma: hàm logsig (c-1), hàm logsig 2
cực (c-2); (d) hàm gaussian (hàm hình quả chuông)Hình trên mô tả các loại hàm kích thích hay được sử dụng nhất
Hàm chặn cứng (hình 1.5[a]) Nếu giá trị đầu vào của mạng lớn hơn 1 giá trị chặn
nào đó thì nơron trở nên tích cực (giá trị kích thích bằng 1), ngược lại nó sẽ khôngtích cực (giá trị kích thích bằng 0)
Hàm chặn tuyến tính Giá trị kích thích sẽ tăng tuyến tính cùng với sự tăng của tín
hiệu đầu vào và khi đến một ngưỡng nào đó đầu ra sẽ bão hòa Các kiểu hàm chặntuyến tính khác nhau phụ thuộc vào phạm vi của giá trị đầu ra nơron (hình 1.5[b-1],1.5[b-2])
Trang 9Hàm sigma Hàm sigma là hàm truyền phi tuyến hình chữ S được đặc trưng bởi các
yếu tố sau
Bị chặn, các giá trị của nó bị hạn chế giữa 2 ngưỡng, ví dụ như [0 1], [-1 1].
Đơn điệu tăng, nghĩa là các giá trị của g(u) không bao giờ giảm khi u tăng.
Liên tục và tăng, do đó có thể đạo hàm ở mọi điểm trong miền của hàm xác định
của hàm Các kiểu hàm sigma khác nhau được sử dụng trong thực tế là: hàm logsig
(hình 1.5[c-1]) trong đó c là hằng số Một hình thức khác của hàm
logsig là hàm logsig 2 cực: (hình 1.5[c-1]) và hàm tansig:
Hàm gaussian (hàm hình quả chuông, hình 1.5[d]).
1.3 Mạng truyền thẳng và huấn luyện mạng theo thuật toán Brandt-Lin
1.3.1 Mạng truyền thẳng
Mạng nơron nhân tạo là tập hợp các nơron nhân tạo được liên kết với nhautheo một quy luật nhất định nhằm phục vụ nhu cầu của người thiết kế mạng Có 2loại mạng nơron thường được sử dụng là mạng truyền thẳng và mạng hồi tiếp Hình1.6 mô tả mạng truyền thẳng và mạng hồi tiếp Dù cấu trúc của mạng nơron thuộcloại nào thì mạng nơron đều có cấu tạo chung là được cấu thành từ các lớp Lớp đầutiên được gọi là lớp đầu vào (input layer), lớp cuối cùng được gọi là lớp đầu ra(output layer), các lớp giữa được gọi là các lớp ẩn (hidden layer)
Trang 10Hình 1.6 : (a) Mạng truyền thẳng ; (b) Mạng hồi tiếp
Khi ứng dụng đối với một hệ động học, yêu cầu tính toán nhanh luôn đượclên hàng đầu Mạng hồi tiếp tốn nhiều thời gian để tính toán nên trong nội dung đồ
Trang 11là đầu vào thứ i, i=1,2,3
là đầu ra của nơron thứ i thuộc lớp ẩn, i=1,2,3
o là đầu ra của lớp đầu ra.
, lần lượt là hàm truyền của lớp ẩn, lớp đầu ra.
Tính đầu ra của các lớp:
Lớp ẩn:
Lớp đầu ra:
1.3.2 Thuật toán Brandt-Lin
Tư tưởng của thuật toán Brandt-Lin chia nhỏ một hệ thống phức tạp thành N
hệ thống con gọi là các nút Mỗi nút có 1 tín hiệu đầu ra khả tích và nhiều tínhiệu đầu vào khả tích Đầu vào và đầu ra của các nút được nối với nhau thôngqua các trọng số Đặc tính động học của mỗi trạm được mô tả bằng một hàmnhân quả
trong đó và là không gian đầu vào và đầu ra Như vậy, đầu ra của nút
thứ n được xác định bằng phương trình sau
Trang 12Hình 2.1: Phân tích 1 hệ thống theo thuật toán Brandt-Lin Định lý Đối với một hệ thống có tính động học cho bởi
(1)
nếu các trọng số liên kết được thích nghi theo
thì chỉ số chất lượng sẽ giảm dần theo thời gian Nói tóm lại là
phương trình sau luôn thỏa mãn:
trong đó là hệ số thích nghi
Trong đó là trọng số liên kết của nút thứ j thuộc lớp l xuất phát từ nút thứ i.
là đầu ra của nút thứ thứ j thuộc lớp l.
là đầu vào của nút thứ j thuộc lớp l xuất phát từ nút thứ i.
Trang 13q là số lượng nhánh ra xuất phát từ nút thứ j của lớp l
Chứng minh
Hình 2.2: Một phần của mạng nơron
Trang 15CHƯƠNG 2: GIỚI THIỆU ATMEGA 128
2.1 Đặc điểm của Atmega 128
Khả năng thực thi cao, công suất tiêu thụ thấp, bộ vi xử lý 8 bit
Bộ vi xử lý với cấu trúc RISC :
Có thể tính toán 16 triệu lệnh trên 1s ở tần số 16MHz
Tạo ra đầy đủ các trạng thái
32 thanh ghi với mục đích làm việc và điều khiển thiết bị ngoại vi
Bộ nhớ chương trình không đổi và bộ nhớ dữ liệu :
Bộ nhớ dữ liệu chương trình là 128K Bytes với chu kì tẩy xóa cho bộnhớ là 10 000 lần
Bộ nhớ EEPROM là 4 K bytes với chu kỳ tẩy xóa là 100 000 lần
Có 4 K Bytes bộ nhớ SRAM nội
Có thể lựa chọn mở rộng không gian bộ nhớ ngoài lên 64 K Bytes
Có chế độ khóa để bảo mật chương trình
Giao tiếp SPI trong lập trình trong hệ thống
Giao tiếp JTAG (theo chuẩn IEEE 1149.1) :
Có khả năng quét danh giới theo chuẩn JTAG
Mở rộng khả năng Debug trên chíp
Bộ nhớ chương trình, EEPROM, các cầu chì, khóa các bit thông quagiao tiếp JTAG
Các ngoại vi :
Hai bộ Timer/Counter 8 bit hoạt động riêng rẽ và có chế độ so sánh
Hai bộ Timer/Counter mở rộng 16 bit hoạt động riêng rẽ, chế độ sosánh và chế độ lưu trữ
Bộ đếm thời gian thực với tần số dao động riêng
Trang 16 Hai kênh PWM 8 bit
Sáu kênh PWM với khả năng thay đổi được từ 2 đến 16 bit
Khối so sánh đầu ra
Tám kênh ADC 10 bit
Hai khối giao tiếp USART có thể lập trình
Giao tiếp nối tiếp SPI master/slave
Watchdog và Timer có thể lập trình nhờ xung nhịp trên chip Tự độngreset khi treo máy
Khối so sánh tương tự trên chip
Các đặc trưng đặc biệt của vi điều khiển :
Có nguồn ngắt bên trong và mở rộng
Có khả năng lựa chọn xung clock bằng phần mềm
Có sáu chế độ nghỉ : Idle, ADC noise Reduction, Power–save, Power–down, Standby, Standby mở rộng
Có khả năng định cỡ xung dao động thời gian thực bên trong
Vi điều khiển này cho phép người thiết kế có thể tối ưu hoá mức độ tiêu thụ nănglượng mà vẫn đảm bảo tốc độ xử lí Phần cốt lõi của AVR kết hợp tập lệnh phongphú 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 Atmega128 cung cấp những đặc tính sau:
Trang 17128 K bytes bộ nhớ chương trình, 4K bytes bộ nhớ EEPROM, 4K bytes SRAM, 52chân với mục đích vào ra thông thường, 32 thanh ghi làm việc với mục đích thôngthường, bộ đếm thời gian thực (RTC), 4 bộ Timer/Counter với chế độ so sánh vàPWM, 2 USARTs, 8 kênh ADC 10 bit với khả năng lựa chọn đầu vào và lập trìnhđược hệ số khuếch đại, Watchdog timer có khả năng lập trình nhờ bộ tạo dao độngbên trong, giao tiếp SPI, bộ giao tiếp kiểm tra lỗi theo chuẩn IEEE 1149.1, chỉ dùng
để debug hệ thống và chương trình trên chip và khả năng lựa chọn 6 chế độ tiếtkiệm năng lượng chế độ Idle ngừng hoạt động của CPU trong khi cho phép SRAM,Timer/Counter, cổng SPI, hệ thống ngắt tiếp tục gọi hàm, chế độ power-down tiếtkiệm lượng thanh ghi nhưng ổn định cho xung giao động, ko hoạt động các hàmkhác cho đến khi có ngắt tiếp theo hoặc reset phần cứng Ở chế độ power-save,Timer không đồng thời tiếp tục hoạt động, mà cho phép người sử dụng dùng mộtTimer cơ sở trong khi các thiết bị đang ở chế độ nghỉ Chế độ giảm nhiễu cho ADCngừng CPU và các module vào ra ngoại trừ timer và ADC, để giảm nhiễu xuốngthấp nhất trong quá trình biến đổi ADC Ở chế độ standby thạch anh dao động đangchạy trong khi các thiết bị khác ở chế độ nghỉ Ở chế độ standby mở rộng bộ daođộng chính và timer không đồng bộ tiếp tục chạy
Trang 18 Reset : dùng để reset lại hệ thống
XTAL1 và XTAL2 : là hai chân để tạo dao động ngoài khi nối vớithạch anh
AVCC là chân nguồn cho cổng F và dùng để biến đổi ADC Khi kếtnối với VCC thì quá trình biến đổi ADC là chính xác hơn
AREF là chân điện áp so sánh phục vụ cho quá trình biến đổi ADC
PEN là chân enable cho chế độ giao tiếp SPI
Hình 2.1 : Sơ đồ chân của Atmega128
Trang 19Hình 2.2: Sơ đồ khối bên trong của Atmega 128
Trang 202.3 Kiến trúc tổng quan của Atmega128
Hình 2.3 : Biểu đồ khối cấu trúc của AVR
2.3.1 Bộ nhớ của Atmega128
Atmega 128 chứa 128 Kbytes chương trình và có chu kỳ tẩy xóa là 10 000lần Bộ đếm của Atmega 128 là 16 bit Có thể nạp chườn trình cho chip qua cổngSPI, JTAG hoặc cổng song song
Atmega 128 sử dụng kiến trúc Harvard với bộ nhớ dữ liệu và bộ nhớ chươngtrình tách biệt nhau Hình 3.4 minh họa phác thảo kiến trúc bên trong của bộ điềukhiển Atmega 128 Bus dữ liệu dùng cho bộ nhớ dữ liệu là một bus 8 bit, cho phép
Trang 21nối hầu hết các bộ phận ngoại vi với tệp thanh ghi Bus dữ liệu dùng cho bộ nhớchương trình có độ rộng 16 bit và chỉ nối với thanh ghi lệnh
Bộ nhớ chương trình là loại bộ nhớ Flash Bộ nhớ chương trình được truynhập theo từng chu kỳ đồng hồ, và một lệnh được nạp vào thanh ghi lệnh Thanhghi lệnh nối với tệp thanh ghi bằng cách lựa chọn xem thanh ghi nào sẽ được ALU
sử dụng để thực thi lệnh Lối ra của thanh ghi lệnh được giải mã bằng bộ giải mãlệnh để quyết định chọn tín hiệu điều khiển nào sẽ được kích hoạt để hoàn tành lệnhhiện tại
Bộ nhớ SRAM bên trong được sử dụng cho ngăn xếp cũng như để lưu trữcác biến Trong thời gian có ngắt và gọi đoạn chương trình, giá trị hiện tại của bộđếm chương trình được lưu tữ trong ngăn xếp Vị trí của ngăn xếp được chỉ thị bởicon trỏ ngăn xếp
Hình 2.4 : Định dạng bộ nhớ của Atmega128
Atmega 128 cung cấp hai cấu hình khac nhau cho bộ nhớ SRAM, có thế sửdụng 4096 Bytes bộ nhớ ram trong hoặc 64 k Bytes bộ nhớ ram ngoài
Trang 22Hình 2.5 : Không gian địa chỉ bộ nhớ SRAM
Bộ nhớ dữ liệu EEPROM của Atmega 128 là 4k Bytes, với chu kỳ tẩy xóa là
100 000 nghìn lần sự truy nhập giữa EEPROM và MCU được mô tả như sau, nóđược chỉ rõ trong các thanh ghi địa chỉ, thanh ghi dữ liệu và thanh ghi điều
của EEPROM
2.3.2 Tệp thanh ghi :
Atmega 128 có 32 thanh ghi đa chức năng Một số trong các thanh ghi nàycòn có các chức năng riêng, bổ sung Các thanh ghi này được được đặt tên từ R0đến R31.tất cả các lệnh thao tác trên thanh ghi đều có thể truy nhập trực tiếp và truynhập trong chu trình đơn đến tất cả các thanh ghi Nhưng một ngoại lệ là các lệnh
Trang 23SBCI, SUIB, CPI, ANDI và ORI cũng như WI, các lệnh nay chỉ tác động đến cácthanh ghi R16 đến R31.
Các thanh ghi từ R26 đến R31 có các chức năng bổ xung thanh ghi R0 được
sử dụng trong các lệnh lạp bộ nhớ chương trình LPM, trong khi các thanh ghi R26đến R31 được sử dụng làm các thanh ghi con trỏ như được minh họa trên hình 2.6
Hình 2.6: Tệp thah ghi của Atmega 128
2.3.3 Port (cổng) vào ra
Atmega 128 có tất cả là 7 Port từ PortA đến PortG Tất cả các Port của AVRđều có trở treo bên trong và được lựa chọn cho mỗi bit và có thể được đọc-chỉnhsửa-ghi khi sử dụng như một Port xuất nhập thông thường Điều này có nghĩa làđường dữ liệu của các chân sẽ được thay đổi hướng không định trước nếu nhưkhông đặt lệnh cho nó Mỗi bộ đệm đầu ra đều có những tính chất đối xứng choviệc nhập và xuất dữ liệu Tất cả các chân đều có điện trở kéo lên độc lập khôngthay đổi Tất cả đều được bảo vệ bằng diode đối với cả nguồn và đất
Trang 24Hình 2.7: Sơ đồ bên trong mỗi chân
Port A : dùng để mở rộng bộ nhớ Ram ngoài bảng sau mô ta chức năng củacác chân ở Port A
PA7 AD7 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 7)
PA6 AD6 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 6)
PA5 AD5 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 5)
PA4 AD4 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 4)
PA3 AD3 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 3)
PA2 AD2 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 2)
PA1 AD1 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 1)
PA0 AD0(mở rộng bộ nhớ ngoài với bit dữ liệu là bit 0)
Port B : chức năng các chân của port B được trình bày dưới bảng
Pin Chức năng của các chân
PB7 OC2/OC1C (đầu ra so sánh và đầu ra của PWM cho timer/counter2
hoặc đầu ra so sánh và PWM C của timer/counter1PB6 OCB1 (đầu ra so sánh và PWM B của timer/counter1)
Trang 25PB5 OC1A (đầu ra so sánh và PWM A của timer/counter1)
PB4 OCO ( đầu ra so sánh và PWM của timer/counter0
PB3 MISO (bus giao tiếp SPI vào master hoặc ra slave)
PB2 MOSI ( bus giao tiếp SPI vào slave hoặc ra master)
PB1 SCK (quy định tốc độ đông hồ khi giao tiếp)
PB0 (chọn SPI là slave hay master)
Port C : ngoài chức năng vào ra thông thường, Port C còn có thêm chức năng
mở rộng bộ nhớ ngoài chân ở Port C
PC7 AD15 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 15)
PC6 AD14 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 14)
PC5 AD13 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 13)
PC4 AD12 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 12)
PC3 AD11 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 11)
PC2 AD10 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 10)
PC1 AD9 (mở rộng bộ nhớ ngoài với bit dữ liệu là bit 9)
PC0 AD8(mở rộng bộ nhớ ngoài với bit dữ liệu là bit 8)
Port D : ngoài chức năng vào ra thông thường, Port D còn có thêm chức năng
mở rộng bộ nhớ ngoài chân ở Port D
PD7 T2 (đầu vào bộ đếm timer/counter2)
PD6 T1 (đầu vào bộ đếm timer/counter1)
PD5 XCK1 (dùng khi giao tiếp USART1 cần dùng bộ dao động riêng)
PD3 INT3/TXD1 (Ngắt mở rộng hoặc chân truyền tín hiệu của UART1)PD2 INT2/RXD1 (Ngắt mở rộng hoặc nhận tín hiệu của UART1)
Trang 26PD1 INT1/SDA (Ngắt mở rộng hoặc chân địa chỉ của giao tiếp I2C)
PD0 INT0/SCL (Ngắt mở rộng hoặc chân địa dao động của giao tiếp I2C)
Port E : ngoài chức năng vào ra thông thường, Port E còn có thêm chức năng
mở rộng bộ nhớ ngoài chân ở Port E
timer/counter3)PE2 AINO/XCKO (đầu vào so sánh tương tự dương
PE1 PDO/TXD0 ( chân truyền dữ liệu của UART0)
PE0 PDI/RXD0 (chân nhận dữ liệu của UART0)
Port F : ngoài chức năng vào ra thông thường, Port F còn có thêm chức năng
mở rộng bộ nhớ ngoài chân ở Port F
PF7 ADC7/TDI (đầu vào ADC kênh 7 hoặc kiểm tra dữ liệu đầu vào của
JTAG)PF6 ADC6/TDO (đầu vào ADC kênh 6 hoặc kiểm tra dữ liệu đầu ra của
JTAG)PF5 ADC5/TMS (đầu vào ADC kênh 5 hoặc chọn chế độ cho JTAG)PF4 ADC4/TCK ( đầu vào ADC kênh 4 hoặc kiểm tra dao động của
JTAG)PF3 ADC3 (đầu vào ADC kênh 3)
PF2 ADC2 (đầu vào ADC kênh 2)
PF1 ADC1 (đầu vào ADC kênh 1)
Trang 27PF0 ADC0 (đầu vào ADC kênh 0)
Port G : ngoài chức năng vào ra thông thường, Port G còn có thêm chức năng
mở rộng bộ nhớ ngoài chân ở Port G
PG4 TOSC1 (tạo xung dao động riêng cho bộ timer/counter0)
PG3 TOSC2 (tạo xung dao động riêng cho bộ timer/counter0)
PG2 ALE ( chân cho phép chốt địa chỉ với bộ nhớ mở rộng)
PG1 ( chân cho phép đọc với bộ nhớ ngoài)
PG0 ( chân cho phép ghi với bộ nhớ ngoài)
2.3.4 Giao tiếp với SRAM ngoài
Atmega 128 có thể mở rộng bộ nhớ ngoài lên 64k Khả năng này được minhhọa trên hình 2.8 Để cho phép truy nhập bộ nhớ SRAM ngoài trên PORTA vàPORTC
Hình 2 8: Giao tiếp với bộ nhớ ngoài
2.3.5 Cấu trúc ngắt của Atmega 128
Ngắt là một cơ cấu điều khiển dòng lệnh, cơ cấu này được thiết kế trên hầuhết các bộ điều khiển Trong quá trình giao tiếp của hệ thống bộ xử lý với thế giới
Trang 28bên ngoài, nhiều sự việc xảy ra theo cách không đồng bộ, chẳng hạn người dùng cóthể đã nhấn một công tắc để thực hiện một công việc nào đó, trong khi một byte dữliệu có thể đã đến cổng nối tiếp Điều này gây khó khăn cho hoạt động của bộ xử lýkhi mà nó phải kiểm tra tất cả các thiết bị để giám sát sự di chuyển của dữ liệu.Ngược lại mọi việc sẽ trở nên tốt hơn nếu các thiết bị này có thể loan báo sự đến nơicủa dữ liệu Đây là tất cả những gì mà cơ chế ngắt phải thực hiện Thiết bị ngoại vi
sẽ ngắt việc thực thi của chương trình chính, và bộ xử lý tạm ngừng việc thực thichương trình chính, và bộ xử lý tạm ngừng việc thực thi chương trình bình thường
để thẩm tra nguồn ngắt và để thực hiện các thao tác đáp ứng cần thiết, việc thực thichương trình đã bị ngắt lại tiếp tục Chương trình ngắt chỉ đơ giản giống hệt nhưmột chương trình con (subrountine), ngoại trừ một đặc điểm là việc thực thi củađoạn chương trình ngắt này không bị bộ xử lý đoán trước là sẽ xuất hiện ở một thờiđiểm cụ thể nào Bộ vi điều khiển AVR có rất nhiều cấu trúc ngắt sau đây em chỉtrình bày về các loại ngắt mà mình sẽ dùng
a )Ngắt (USART)
Đối với một loại vi điều khiển sẽ có nhiều vectơ ngắt để phục vụ cho chươngtrình như vectơ ngắt ngoài, ngắt nối tiếp, ngắt định thời Sau đây là các nguyên nhângây ngắt của AVR
Reset : Chân ngoài, Preset, Brown-out reset và Watchdog reset
INT0 : Ngắt ngoài yêu cầu 0
INT1 : Ngắt ngoài yêu cầu 1
Timer1 CAPT : Ngắt do sự kiện Đếm/Định thời 1
Timer1 COMPA : Ngắt do đạt giá trị so sánh A Đếm/Định thời 1
Timer1 COMPB : Ngắt do đạt giá trị so sánh B Đếm/Định thời 1
Timer1 OVF: Ngắt do tràn bộĐếm/Định thời 1
Timer0 OVF: Ngắt do tràn bộĐếm/Định thời 0
SPI,STC : Giao tiếp nối tiếp xong
USART, RXC : Nhận nối tiếp xong
Trang 29 USART, UDRE : Thanh ghi dữ liệu nối tiếp rỗng
USART, TXC : Truyền nối tiếp xong
ANA_COMP : So sánh tương tự
INT2 : Yêu cầu ngắt ngoài 2
TIMER0 COMP : Đạt giá trị đếm bộ Đếm/Định thời 0
EE_RDY : EEPROM sẵn sàng
SPM_RDY : Bộ nhớ chương trình sẵn sàng
Trong chương trình dành cho mạch giao tiếp có sử dụng đến hai loại vectơngắt là ngắt do định thời và ngắt do nối tiếp Vì vậy, trong phần này chỉgiới thiệu hai loại vectơ ngắt này
b )Giao tiếp nối tiếp
Bộ truyền nhận đồng bộ và không đồng bộ nối tiếp (USART) là một thiết bịgiao tiếp nối tiếp có tính tương thích cao có các tính chất chính:
Phát hiện lỗi dạng dữ liệu
Chống nhiễu bằng bit start và bộ lọc thông thấp
3 vectơ ngắt do truyền TX xong, thanh ghi truyền TX rỗng, nhận RXxong
Chế độ truyền thông đa xử lý
Chế độ xung đồng bộ gấp đôi
Bộ tạo tốc độ Baud nhiều giải pháp
Chế độ tăng gấp đôi tốc độ dao tiếp
Trang 30c )Bộ đếm/định thời
TIMER/COUNTER0 là một module đếm/định thời 8-bits, đơn kênh, đa mụcđích với các tính chất sau
Bộ đếm đơn kênh
Xoá timer khi đạt được giá trị so sánh (Tự động nạp lại)
Xung tự do được tự động chữa bởi bộ điều chế độ rộng chuỗi xung(PWM)
Tạo tần số
Đếm sự kiện bên ngoài
Bước đếm 10 bits
Cung cấp ngắt khi đạt được giá trị so sánh (T0V0 và 0CF0)
Cho phép tạo xung mở rộng từ bộ dao động thạch anh ngoài 32 kHz
d ) Bộ đếm/định thời
TIMER/COUNTER1 là bộ Đếm/định thời 16-bit thiết kế để cho phép
chương trình định thời một cách chính xác (quản lý sự kiện), tạo sóng và đếm tínhiệu thời gian với các tính chất chính như sau:
Thiết kế 16-bit thực ( ví dụ cho phép 16-bit PWM)
Ba đơn vị so sánh ra độc lập
Gấp đôi bộ đệm so sánh ra
Xoá bỏ nhiễu đầu vào được phát hiện
Xoá bộ đếm khi đạt giá trị so sánh (Tự động nạp lại)
Xung tự do được tự động chữa bởi bộ điều chế độ rộng chuỗi xung(PWM)
Khoảng PWM thay đổi
Tạo tần số
Đếm sự kiện bên ngoài
nguồn ngắt độc lập (TOV1, OCF1A, OCF1B, v à ICF1)
Trang 312.3.6 Bộ biến đổi A/D bên trong
Atmega 128 cung cấp bộ biến đổi tương tự số với độ phân giải 10 bit Ngoài
ra, bên cạnh bên cạnh bộ biến đổi ADC còn có một bộ dồn kênh 8 nối vào, mỗi lối
có thể được dẫn riêng lẻ tới bộ hiển thị ADC Bộ biến đổi ADC được sử dụng ởPORTF Nó có khả năng kết hợp 16 đầu vào điện áp khác nhau Hai đầu vào khác là( ADC0 với ADC1 và ADC2 với ADC3) là có thể lập trình được hệ số khuếch đại,
nó cung cấp các bước hệ số khuếch đại 0 dB(1x), 20 dB(10x) hoặc 46 dB(200x)điện áp đầu vào khác nhau trước khi biến đổi A/D Nếu 1x hoặc 10x được chọn thìnên chọn độ phân giải là 8 bit còn nếu 200x được chọn thi độ phân giải nên là 7 bit.Hình 2.9 biểu diễn sơ đồ khối của bộ biến đổi A/D
Hình 2.9 : Sơ đồ khối của bộ biến đổi A/D
Trang 322.3.7 Bộ truyền/nhận UART
Hình 2.10 minh họa sơ đồ khối của bộ truyền/nhận UART Việc truyền dữliệu được khởi tạo bằng cách ghi dữ liệu vào thanh ghi dữ liệu I/O USART, ký hiệu
là UDR Dữ liệu được truyền từ UDR đến thanh ghi dịch truyền khi :
Hình 2.10 : Sơ đồ khối của bộ truyền/nhận UART
Một ký tự mới đã được ghi vào UDR sau khi bit stop từ ký tự trước đó đãdịch chuyển ra Thanh ghi dich chuyển ra được nạp ngay lập tức Ở thời điểm nàybit UDRE trong thanh ghi trạng thái USART, USR, được đặt khi bit này đặt thành
“1”, bộ USART đã sẵn sàng nhận ký tự tiếp theo Vào cùng thời điểm khi dữ liệuđược truyền từ UDR đến thanh ghi dịch bộ truyền 10 (11) bit, bit 0 của thanh ghi
Trang 33dịch bị xóa (start bit) và bit 9 (10) được đặt (stop bit) Nếu như một dữ liệu 9 bitđược lựa chọn (bit CHR9 trong thanh ghi điều khiển USART, UCR được đặt), bitTXB8 trong thanh ghi UCR được truyền vào bit 9 trong thanh ghi dịch bộ truyền.Theo nhịp của đồng hồ tốc độ baud sẽ diễn ra cuộc truyền đến thanh ghi dịch, bitstart bị dịch chuyển ra chân TXD Sau đó kế tiếp là dữ liệu, LSB trước tiên Khi bitstop đã được dịch chuyển ra, thanh ghi dich được nạp nếu bất kỳ dữ liệu nào đãđược ghi vào thanh ghi UDR trong khoảng thời gian truyền Trong thời gian nạp, bitUDRE được đặt thanh “1” Nếu như không có dữ liệu mới trong thanh ghi UDR đểtruyền di khi bit stop được dịch chuyển ra, cờ UDRE sẽ giữ nguyên trạng thái đượcđặt cho đến khi thanh ghi UDR được ghi một lần nữa Khi không có dữ liệu mới cầnđược ghi, và bit stop đã có mặt trên TxD đối với một chiều dài bit, cờ TX complete,TXC, trong thanh ghi USR được đặt thành “1” Khi bit này được xóa thành “0”, thìchân PDI có thể được sử dụng cho thao tác I/O chung Khi đặt thành “1”, bộ truyềntrong USART sẽ được nối với PDI, chân này bị bắt buộc trở thành một chân nối rakhông đếm xỉa gì đến việc đặt của bit 1 trong DDRD Một ký tự mới đã được ghivào UDR trước khi bit stop từ ký tự trước đã được dịch đi Thanh ghi dịch được nạpkhi bit stop của ký tự đang được truyền đã được dich chuyển ra Nếu bộ truyền 10(11) bit đang trống thì thì dữ liệu được truyền UDR đến thanh ghi dịch.
2 3.8 Bộ định thời
Bộ định thời trong Atmega128 có chức năng giống như một bộ định thờihoặc một bộ đếm Giống như một bộ định thời, tín hiệu giữ nhịp bên trong hoặc dẫnxuất của tín hiệu giữ nhịp đó được sử dụng để giữ nhịp bộ định thời, trong khi giốngnhư một bộ đếm, một tín hiệu từ bên ngoài ở chân của một cổng được sử dụng đểgiữ nhịp bộ định thời/bộ đếm hình 3.14 minh họa bộ dồn kênh (multiplexer), đóngvai trò lựa chọn một trong nhiều nguồn tín hiệu đồng hồ dùng cho bộ timer/counter
Bộ chia tần số dùng cho cả bộ timer/counter 0, timer/counter 1, và timer/counter 2được minh họa trên hình 2.11
Trang 34Hình 2.11 : Bộ dồn kênh
Sơ đồ của bộ timer/counter 0 8 bit được minh họa trên hình 2.12
Hình 2.12 : Sơ đồ của bộ timer/counter0 8 bit
Trang 35Sơ đồ của bộ timer/counter 1 16 bit được biểu diễn trên hình 2.13
Hình 2.13 : Sơ đồ của bộ timer/counter1 16 bit
Sơ đồ của bộ timer/counter 2 8 bit được biểu diễn trên hình 2.14
Hình 2.14 : Sơ đồ của bộ timer/counter2 8bit
Trang 36CHƯƠNG 3: MÔ PHỎNG HỆ THỐNG ĐIỀU KHIỂN ĐƯỢC THIẾT KẾ DỰA TRÊN
Hình 3.1: Hệ thống điều khiển PID-Neural
Mạng nơron được dùng để thiết kế bộ điều khiển là mạng 1 lớp có 3 đầu vào.Mạng chỉ có 1 nơron và hàm truyền của nơron là hàm purelin
Trang 37Hình 3.2: Neural network controller
Theo thuật toán Brandt-Lin, hệ thống trên được chia thành 3 lớp, 5 nút Nút 11 làkhâu P có hệ số khuếch đại bằng 1, nút 12 là khâu I, nút 13 là khâu D, nút 21 gồmphần mạng nơron không chứa các trọng số đối tượng, nút 31 là đối tượng Các trọng
số là Hình 2.3 mô tả sự phân tích hệ thống theo thuật toánBrandt-Lin Trọng số liên kết giữa nút 21 và nút 31 là bằng hằng số nên
Do vậy công thức tính các trọng số sẽ còn là:
Hình 3.3: Phân tích hệ thống theo thuật toán Brandt-Lin
Trang 38chính là đạo hàm đầu ra của đối tượng theo đầu vào.
Chuyển sang miền Laplace:
= hàm truyền đối tượng
Do vậy với một hệ động học ổn định, có thể xấp xỉ về 1 hằng số Các kết quả
mô phỏng bằng Matlab/Simulink và kết quả điều khiển thực tế cho thấy sự xấp xỉnày không ảnh hưởng xấu đến việc điều khiển Hằng số này được đưa vào trong hệ
số bước học nên sai lệch trọng số sẽ là:
Tính toán tương tự thu được:
3.1.2 Kết quả mô phỏng
Sau đây là các kết quả mô phỏng bộ điều khiển PID-Neural có chỉnh địnhthích nghi trọng số của mạng với các loại đối tượng và điều kiện mô phỏng khácnhau Các kết quả này được so sánh với các kết quả điều khiển từ bộ PID truyền
Trang 39thống Tín hiệu mẫu là tín hiệu mức 1.Các mô phỏng được thực hiện bằngMatlab/Simulink.
a) Đối tượng ổn định
Đối tượng điều khiển là đối tượng tuyến tính ổn định bậc 2 có hàm truyền G(s) là
Bộ điều khiển PID-Neural:
Bộ điều khiển có hệ số thích nghi và các trọng số có giá trị ban đầu là
Mô hình điều khiển:
Hình 3.4: Mô hình điều khiển với đối tượng ổn định
Bộ điều khiển PID truyền thống với các hệ số được tính theophương pháp hằng số thời gian tổng của Kuhn:
Hàm truyền của đối tượng được viết lại như sau:
Trang 40; ;
Kết quả mô phỏng: