Atmega 128 có thể mở rộng bộ nhớ ngoài lên 64k. Khả năng này được minh họ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ầu hế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 bê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ơi củ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 thi chươ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 thi chươ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.
Đối với một loại vi điều khiển sẽ có nhiều vectơ ngắt để phục vụ cho chương trì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ân gâ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
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:
Chức năng kép (Bộ truyền và nhận độc lập)
Chức năng xung đồng bộ chính và phụ
Cung cấp định dạng nối tiếp với 4,5,6 hoặc 7 bits dữ liệu và 1 hoặc 2 bits stop
Tạo ra và kiểm tra cờ chẵn lẽ bởi phần cứng
Phát hiện lỗi tràn
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 RX xong
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
c )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
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ín hiệ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)
2.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
2.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ày bit 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 dị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), bit TXB8 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, bit start bị dịch chuyển ra chân TXD. Sau đó kế tiếp là dữ liệu, LSB trước tiên. Khi bit
stop đã đượ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, bit UDRE đượ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ền trong 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 ra không đếm xỉa gì đến việc đặt của bit 1 trong DDRD. Một ký tự mới đã được ghi vào UDR trước khi bit stop từ ký tự trước đã được dịch đi. Thanh ghi dịch được nạp khi 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ời hoặ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ẫn xuất của tín hiệu giữ nhịp đó được sử dụng để giữ nhịp bộ định thời, trong khi giống như 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), đóng vai 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.
Hì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
Sơ đồ 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
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
3.1 Thiết kế bộ điều khiển PID-Neural có chỉnh định thích nghitrọng số của mạng trọng số của mạng
3.1.1 Thuật toán chỉnh định trọng số
Trong phần này sẽ trình bày việc vận dụng thuật toán tương tác thích nghi vào việc chỉnh định các trọng số w w wP, ,I D của bộ điều khiển PID-Neural. Hình
2.1 là sơ đồ khối của hệ thống điều khiển với bộ điều khiển PID-Neural có chỉnh định thích nghi trọng số của mạng.. Hình 2.2 là sơ đồ bộ điều khiển PID-Neural có chỉnh định thích nghi trọng số của mạng.
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. s( )x =x
Hì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ồm phầ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à w , w , w , w112 221 312 113 . Hình 2.3 mô tả sự phân tích hệ thống theo thuật toán Brandt-Lin. Trọng số liên kết giữa nút 21 và nút 31 là w113 bằng hằng số nên
3 3 11 11
w w& =0. Do vậy công thức tính các trọng số sẽ còn là:
ij i ij i j E w F x y y l l' l l l ( ) g¶ - =- ¶ 1 &
2 2' 2 11 2 1 11 p 1 E w F (x )e z γ ∂ = − ∂ & ( )2 2 1 1 2 2 m E= e = x −y 2 2 2 1 1 1 E E y y e z y z z ∂ = ∂ ∂ = − ∂ ∂ ∂ ∂ ∂ 2 1 y z ∂
∂ chính là đạo hàm đầu ra của đối tượng theo đầu vào.
2 2 2 1 1 1 1 y y y z z t z t ∂ = ∂ = ∂ ∂ ∂ ∂ & &
Chuyển sang miền Laplace: ( )
( ) ( )( )
sY s Y s
sU s =U s = 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ỉ 2 1 y z ∂ ∂ 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à:
2
11 p
w& =γe e
Tính toán tương tự thu được:
2 21 w& =γe eI 2 31 w& =γe eD 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 định thí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ác nhau. 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
thố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ằng Matlab/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à
( ) ( ) 1 1 5 G s s s = + + ( )
Bộ điều khiển PID-Neural:
Bộ điều khiển có hệ số thích nghi γ =1 và các trọng số có giá trị ban đầu là
2 2 2
11 21 31
w =1.685,w = 2.765,w = −0.4378.
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ố K T TP, ,I D được tính theo
phươ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:
( ) ( ) 0 2 1 1 0 2 G s s s = + + . ( ) .
( ) 1 0.2 1.2 TΣ = + = s 2 10 0.2 P K = = ;TI =0.8*1.2 0.96= ;TD =0.194 *1.2 0.2328= Kết quả mô phỏng:
Hình 3.5: (a) Tín hiệu đặt và các tín hiệu đầu ra; (b)Trọng số 2 11 w ; (c)Trọng số 2 21 w ; (d) Trọng số 2 31 w
Nhận xét: So với bộ PID truyền thống, bộ điều khiển PID-Neural cho tín hiệu đầu ra tốt hơn nhiều, không có độ quá điều chỉnh, tốc độ xác lập nhanh.
b) Đối tượng có nhiễu
Nghiên cứu trường hợp có nhiễu, đưa vào hệ thống nhiễu ồn trắng có cường độ noise power =0.01 và nhiễu được cộng thêm vào đầu vào của đối tượng. Đối tượng nghiên cứu không đổi.
Bộ điều khiển PID-Neural:
Bộ điều khiển có hệ số thích nghi γ =1 và các trọng số có giá trị ban đầu là
2 2 2
11 21 31
w =1.685, w = 2.765, w = −0.4378.
Mô hình điều khiển:
Hình 3.6: Khi có nhiễu
Bộ điều khiển PID truyền thống với các hệ số K T TP, ,I D được tính theo phươ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:
( ) ( ) 0 2 1 1 0 2 G s s s = + + . ( ) . ( ) 1 0.2 1.2 TΣ = + = s 1 20 0.2 P K = = ;TI =0.667 *1.2 0.8004= ;TD =0.167 *1.2 0.2004=
Hình 3.7: (a) Tín hiệu đặt và các tín hiệu đầu ra; (b)Trọng số 2 11 w ; (c)Trọng số 2 21 w ; (d) Trọng số 2 31 w
Nhận xét: Khi có nhiễu bộ điều khiển PID-Neural cho tín hiệu đầu ra bám theo tín hiệu đặt, không có độ quá điều chỉnh trong khi ở bộ PID truyền thống có xảy ra hiện tượng quá điều chỉnh.
c) Đối tượng có trễ
Để tạo ra đối tượng có trễ, ta thêm vào 1 khâu trễ trước đối tượng điều khiển. Thời gian trễ là 0.2 giây. Đối tượng điều khiển có hàm truyền là:
( ) ( )( )10.2 5 s e G s s s − = + +
Bộ điều khiển PID-Neural:
Bộ điều khiển có hệ số thích nghi γ = 0 3. và các trọng số có giá trị ban đầu là
2 2 2
11 21 31
w =2.758, w =3.722, w = −0.8847.
Mô hình điều khiển:
Hình 3.8: Đối tượng có trễ
Bộ điều khiển PID truyền thống với các hệ số K T TP, ,I D được tính theo phươ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:
( ) ( ) 0 2 0 2 1 1 0 2 s e G s s s − = + + . . ( ) . ( ) 1 0.2 0.2 1.4 TΣ = + + = s ; 2 10 0.2 P K = = ;TI =0.8*1.4 1.12= ;TD =0.194 *1.4 0.2716=
Hình 3.9: (a) Tín hiệu đặt và các tín hiệu đầu ra; (b)Trọng số 2 11 w ; (c)Trọng số 2 21 w ; (d) Trọng số 2 31 w
Nhận xét: Với đối tượng có trễ, tín hiệu ra của hệ thống ở bộ điều khiển PID-