5. Cấu trúc của luận văn
2.2.1. Ngôn ngữ lập trình cho AT91SAM3X8E
Để lập trình cho AT91SAM3X8E ta sử dụng trình biên dịch Atmel Studio do hãng Atmel phát triển. Atmel Studio hỗ trợ lập trình bằng ngôn ngữ C và ASM, biên dịch và gỡ lối cho các vi điều khiển của hãng Atmel.
Hình 2. 9. Giao diện phần mềm Atmel Studio
Chƣơng trình AT91SAM3X8E trong card điều khiển đƣợc lập trình bằng ngôn ngữ C và theo cấu trúc gồm chƣơng trình chính và các chƣơng trình con.
2.2.2. Thuật toán chương trình chính
Hình 2. 10. Lƣu đồ thuật toán chƣơng trình chính
Bắt đầu
Khởi tạo các khối: RS232, PWM, TIMER, ngắt, … Khởi tạo các giá trị ban đầu.
Kiểm tra có dữ liệu từ Matlab?
Đọc và xử lý tín hiệu đầu vào tƣơng tự Đọc tín hiệu đầu vào số
Cập nhật dữ liệu,
Thực hiện các chức năng theo yêu cầu từ Matlab. 0
1 Yêu cầu kết nối từ
Matlab?
Yêu cầu ngắt kết nối từ
Matlab? 0
0
1 1
2.2.3. Thuật toán chương trình con xử lý dữ liệu từ Matlab/Simulink
Hình 2. 11. Lƣu đồ thuật toán chƣơng trình con xử lý dữ liệu từ Simulink
Bắt đầu
Nhận dữ liệu, lƣu vào xâu str
Str = “1x” Đọc đầu vào số “x”
Kết thúc
1 0
str = “2xy” 1 Xuất giá trị “y” ra đầu ra số “x”
0
str = “3x” 1 Đọc đầu vào tƣơng tự “x”
0
str = “4xy” 1 Xuất giá trị “y” ra đầu ra tƣơng tự “x”
0
str = “5xy” 1 Xuất giá trị PWM “y” ra đầu ra số “x”
0
str = “8xy” Xuất giá trị góc “y” ra
servo “x” 1
0 str = “Exyz”
Cài đặt encoder “x” với 2 pha nối vào đầu vào
“y” và “z” 1
0
str = “Gx” 1 Đọc giá trị từ encoder “x”
0
str = “Kx” Điều khiển module 32
kênh servo “x” 1
str = “Ix” 1 Điều khiển module 16 kênh PWM “x”
str = “Rx” Cài đặt bộ điều khiển
PID online “x” 1
str = “Yx” 1 Cài đặt bộ điều khiển PID “x”
0 0
0
2.3. Phần mềm cho Matlab – Simulink [5, 11]
MATLAB là một môi trƣờng tính toán số và lập trình, đƣợc thiết kế bởi công ty MathWorks. MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện thân thiện với ngƣời dùng, liên kết với những chƣơng trình máy tính viết trên nhiều ngôn ngữ lập trình khác và truyền thông kết nối thiết bị thực. Đặc biệt với bộ công cụ Simulink và các thƣ viện, MATLAB cho phép mô phỏng quá trình điều khiển nhiều mô hình trong thực tế và kỹ thuật. Matlab có thể đóng vai trò là trung tâm điều khiển trong hệ thống điều khiển số.
Để MATLAB có thể nhận đƣợc các tín hiệu từ card điều khiển, tác giả đã phát triển một thƣ viện simulink riêng cho card, CardTNUT_Library. CardTNUT_Library đƣợc xây dựng trên phần mềm Matlab 2012a, nên chỉ các các phiên bản sau Matlab 2012a mới có thể kết nối đƣợc. Để cài đặt CardTNUT_Library, ta đặt thƣ mục làm việc của Matlab đến thƣ mục chứa thƣ
viện này và chạy lệnh install_CardTNUT. CardTNUT_Library gồm các khối cơ
bản nhƣ cài đặt kết nối, đọc/xuất tín hiệu số/tƣơng tự, xuất tín hiệu PWM, đọc tín hiệu từ bộ mã hóa xung encoder; các khối nâng cao nhƣ điều khiển động cơ một chiều, động cơ servo, động cơ bƣớc, cài đặt tham số bộ điều khiển PID; các khối hỗ trợ giao tiếp nối tiếp RS232, RS485, I2C, SPI, CAN; và các khối hỗ trợ các module ứng dụng có sẵn trên thị trƣờng nhƣ module điều khiển 32 RC servo, module điều khiển 16 PWM 12bits, module hiện thị 8 LED. Sau khi cài đặt xong, công cụ Simulink đã đƣợc thêm thƣ viện CardTNUT_Library.
Hình 2. 12. Thƣ viện CardTNUT đƣợc cài vào Simulink
2.3.1. Khối cài đặt – CardTNUT Setup
Khối CardTNUT
Setup dùng để cài đặt thông số kết nối từ Simulink tới CardTNUT. Việc trao đổi
dữ liệu giữa card và
Simulink đƣợc thự hiện theo chuẩn giao tiếp nối tiếp không đồng bộ với tốc độ 1.152.000bits/s. Tốc độ trao đổi dữ liệu cao nhƣ vây (>1Mb/s) do dữ liệu thực
chất trao đổi qua cổng USB của vi điều khiển AT91SAM3X8E, và vi điều khiển đƣợc lập trình tạo ra cổng com ảo (Virtual terminal), trên Simulink thực hiện các giao tiếp với cổng com ảo này theo phƣơng thức nhƣ với cổng com thật nhƣng tốc độ lại cao hơn.
2.3.2. Khối đọc tín hiệu tương tự
Khối CardTNUT ADC là khối đọc tín hiệu tƣơng tự đƣợc chuyển đổi thành tín hiệu số trên CardTNUT. Các đầu vào tƣơng tƣ này có thể nhận đƣợc tín hiệu điện áp 0÷10VDC hoặc tín hiệu dòng điện 0÷20mA rồi chuyển thành tín hiệu số 12bits có giá trị từ 0÷4095. Các giá trị này còn đƣợc xử
lý sơ bộ một lần qua bộ lọc số với công thức sau:
|
∑
(2.1)
2.3.3. Khối xuất tín hiệu tương tự
Khối CardTNUT DAC là khối xuất tín hiệu đầu ra tƣơng tự trên CardTNUT.
Các đầu ra tƣơng tự này có hai dạng gồm tín hiệu điện áp 0÷10VDC và tín hiệu dòng điện 0÷20mA. Bộ
DAC có độ phân giải 12bits nên khi xuất giá trị số từ 0÷4095 thì đầu ra tƣơng ứng có giá trị từ 0÷10VDC hoặc 0÷20mA.
Khối CardTNUT DAC có thể cài đặt chế độ chỉ xuất tín hiệu khi đầu vào có sự thay đổi giá trị nhằm giảm lƣợng dữ liệu trao đổi giữa CardTNUT và Simulink.
Hình 2. 14. Khối đọc tín hiệu tƣơng tự
2.3.4. Khối đọc tín hiệu số
Khối CardTNUT DI là khối đọc tín hiệu số ở đầu vào trên CardTNUT. Các đầu vào số này có mức điện áp 0, 24VDC ứng với mức logic 0, 1.
2.3.5. Khối xuất tín hiệu số
Khối CardTNUT DO là khối xuất tín hiệu số ra đầu ra số trên CardTNUT.
Khối CardTNUT DO có thể cài đặt chế độ chỉ xuất tín hiệu ra khi đầu vào có sự thay đổi giá trị nhằm giảm lƣợng dữ liệu trao đổi giữa CardTNUT và Simulink.
2.3.6. Khối xuất tín hiệu PWM
Khối CardTNUT PO là khối xuất tín hiệu PWM ra đầu ra số trên CardTNUT.
Khối PWM có độ phân giải 12bits nên khi xuất giá trị số từ 0÷4095 thì đầu ra tƣơng ứng tỷ lệ độ rộng xung từ 0÷100%.
Khối CardTNUT PWM có thể cài đặt mức logic tích cực của tín hiệu PWM ở mức logic 0 hoặc mức logic 1 và chế độ chỉ xuất tín hiệu khi đầu vào có
Hình 2. 16. Khối đọc tín hiệu số
Hình 2. 17. Khối xuất tín hiệu số
sự thay đổi giá trị nhằm giảm lƣợng dữ liệu trao đổi giữa CardTNUT và Simulink.
2.3.7. Khối đọc tín hiệu từ bộ mã hóa xung encoder
Khối CardTNUT EI là khối đọc tín hiệu encoder trên đầu vào
số trên CardTNUT. Trên
CardTNUT có 06 đầu vào số đƣợc thiết kế để nhận tín hiệu xung từ encoder tƣơng đối một pha hoặc hai pha do đó CardTNUT có thể
ghép nối đƣợc tối đa 03 encoder tƣơng đối 2 pha hoặc tối đa 06 encoder 1 pha. Kết quả có thể đƣợc cài đặt là số xung đếm đƣợc, số xung trên 100ms hoặc thời gian (ms) của một xung, tức kết quả có thể trả về là vị trí hoặc tốc độ giúp ngƣời dùng có thể dễ dàng xử lý theo yêu cầu. Ngƣời dùng cũng có thể tùy chọn đếm theo xung hoặc đếm theo sƣờn (sƣờn lên, sƣờn xuống) giúp cho độ phân giải của encoder đƣợc tăng lên gấp đôi.
2.3.8. Khối xuất tín hiệu điều khiều động cơ servo một chiều động cơ servo một chiều
Khối CardTNUT SEO là khối xuất xung tần số 50Hz ra đầu ra số của CardTNUT để điều khiển động cơ servo một chiều. Giá trị đầu vào là
vị trí đặt của servo (0o÷180o), tín hiệu
xung có độ rộng xung tƣơng tứng từ 500÷2500ms.
Khối CardTNUT SEO có thể cài đặt chế độ chỉ xuất tín hiệu khi đầu vào có sự thay đổi giá trị nhằm giảm lƣợng dữ liệu trao đổi giữa CardTNUT và Simulink.
Hình 2. 20. Khối điều khiều động cơ servo Hình 2. 19. Khối đọc tín hiệu từ bộ mã hóa xung encoder
2.3.10. Khối ghép nối module điều khiển 16 kênh PWM 12bits
Khối CardTNUT 16PWM là khối xuất tín hiệu điều khiển module 16PWM. CardTNUT có thể kết nối với 64 module 16PWM thành mạng theo chuẩn giao tiếp nối tiếp I2C giúp cho
việc mở rộng đầu ra PWM đƣợc thực hiện một cách đơn giản. Tín hiệu PWM của module 16PWM có thể đƣợc cài đặt với tần số từ 0÷1600Hz, độ phân giải 12bits.
Khối CardTNUT 16PWM có thể cài đặt chế độ chỉ xuất tín hiệu khi đầu vào có sự thay đổi giá trị nhằm giảm lƣợng dữ liệu trao đổi giữa CardTNUT và Simulink.
2.3.11. Khối ghép nối module điều khiển 32 servo
Khối CardTNUT 32RC
SERVO là khối xuất tín hiệu điều khiển module 32RC SERVO. CardTNUT có thể kết nối module 32RC SERVO theo chuẩn giao tiếp nối tiếp không đồng bộ RS232 giúp cho việc mở rộng đầu ra điều khiển động cơ servo một chiều đƣợc thực
hiện một cách đơn giản. Tín hiệu đầu vào của khối CardTNUT 32RC SERVO
có giá trị từ 500 đến 2500 ứng với vị trí đặt của động cơ servo từ 0o÷180o..
Khối CardTNUT 32RC SERVO có thể cài đặt chế độ chỉ xuất tín hiệu khi đầu vào có sự thay đổi giá trị nhằm giảm lƣợng dữ liệu trao đổi giữa CardTNUT và Simulink.
Hình 2. 21. Khối điều khiển module 16PWM
2.3.12. Khối xuất xung điều khiển Thyristor
Khối CardTNUT Thyristor là khối xuất tín hiệu xung điều khiển Thyristor của các bộ chỉnh lƣu cơ bản (chỉnh lƣu hình tia 1, 2, 3 pha, chỉnh lƣu hình cầu 1, 3 pha). CardTNUT có thể hỗ trợ phát xung cho 02 bộ chỉnh lƣu với tần số điện áp lƣới đến 100Hz. Tín hiệu đầu vào của khối CardTNUT Thyristor có giá trị từ 0 đến 1 ứng với góc
mở Thyristor từ lớn nhất đến bé nhất của mỗi sơ đồ chỉnh lƣu.
Khối CardTNUT Thyristor có thể cài đặt chế độ chỉ xuất tín hiệu khi đầu vào có sự thay đổi giá trị nhằm giảm lƣợng dữ liệu trao đổi giữa CardTNUT và Simulink.
2.3.13. Khối giao tiếp nối tiếp
Hình 2. 24. Khối hỗ trợ giao tiếp nối tiếp
CardTNUT hỗ trợ trao đổi dữ liệu với các module hoặc thiết bị khác theo chuẩn giao tiếp nối tiếp RS232, SPI hoặc I2C giúp cho khả năng ứng dụng của CardTNUT đƣợc linh hoạt và phù hợp với nhiều dự án khác nhau.
Hình 2. 25. Khối PID online
2.3.14. Khối bộ điều khiển PID online
CardTNUT có thể thực hiện thuật toán điều khiển PID với các giá trị cài đặt và đầu vào đƣợc nhận từ Matlab/Simulink, giá trị đầu ra đƣợc gửi trở lại máy tính. Với chức năng này, CardTNUT có thể đƣợc ứng dụng trong việc kiểm nghiệm bộ điều khiển PID thực trong việc điều khiển các mô hình của hệ thống mà việc xây dựng hệ thống thực gặp khó khăn.
CarTNUT có thể thực hiện cùng lúc 04 bộ điều khiển PID online. Khối CardTNUT Online PID có thể cài đặt chế độ chỉ gửi dữ liều khi đầu vào có sự thay đổi giá trị nhằm giảm lƣợng dữ liệu trao đổi giữa CardTNUT và Simulink.
2.3.15. Khối cài đặt tham số bộ điều khiển PID trên Card
Khối CardTNUT Setup PID dùng để cài đặt đầu vào, đầu ra và các tham số bộ điều khiển PID.
Giá trị đặt có thể là hằng số hoặc từ các đầu vào tƣơng tƣ, từ các bộ mã hóa xung; Giá trị phản hồi có thể từ các đầu vào tƣơng tự
từ các bộ mã hóa xung; Giá trị đầu ra có thể đƣợc xuất ra đầu ra tƣơng tự, đầu ra PWM và đƣợc gửi lên Matlab/Simulink.
2.4. Kết luận chƣơng 2
Chƣơng 2 đã trình bày về thiết kế phần cứng, thuật toán lập trình cho CardTNUT và thƣ viện Matlab/Simulink để giao tiếp với CardTNUT. Sơ đồ nguyên lý các module đƣợc thiết kế để đáp ứng các yêu cầu xác định: module vi xử lý trung tâm sử dụng vi xử lý AT91SAM3X8E với tần số hoạt động 84MHz, giao tiếp với Matlab/Simulink qua cổng USB với tốc độ 1.152.000bits/s; module tƣơng tự có thể xử lý tín hiệu có điện áp 0÷10VDC hoặc dòng điện 0÷20mA với độ phân giải 12bits; module vào/ra số có mức logic 0/1 ứng với mức điện áp 0/24VDC, có thể nhận đƣợc tín hiệu từ bộ mã hóa xung, xuất tín hiệu PWM với độ phân giải 12bits; phần cứng CardTNUT cũng đƣợc thiết kế để có thể giao tiếp với một số module chức năng nhƣ module 32 kênh điều khiển động cơ servo, module 16 kênh PWM 12bits. Phần mềm cho CardTNUT và thƣ viện Simulink đƣợc xây dựng phù hợp với các chức năng của phần cứng. Để biết CardTNUT có làm việc đƣợc hay không, tác giả tiến hành kiểm nghiệm CardTNUT với một số đối tƣợng điều khiển, các nội dung này đƣợc trình bày trong chƣơng 3 của luận văn.
CHƢƠNG 3. THỰC NGHIỆM
3.1. Hệ truyền động động cơ một chiều kích từ độc lập [2], [6]
3.1.1. Sơ đồ nguyên lý hệ truyền động động cơ một chiều kích từ độc lập
Hình 3. 1. Sơ đồ nguyên lý hệ truyền động động cơ một chiều
Trong đó:
Đ: Động cơ một chiều, CKĐ: Cuộn kích từ động cơ, FT: Máy phát tốc,
BBĐ: Bộ biến đổi chỉnh lƣu Thyristor, FX: Mạch phát xung điều khiển Thyristor, PID: Bộ điều chỉnh tốc độ,
AI0, AI1, AO0: đầu vào/ra tƣơng tự của CardTNUT, : Biểu tƣợng biểu thị tác dụng giới hạn biên độ,
ucđ: Tín hiệu chủ đạo (Tốc độ đặt), n: Tín hiệu phản hồi tốc độ, Ud Đ = CKĐ + - BBĐ FX FT +10V ucđ n uđk + - PID CardTNUT AO0 AI1 AI0 Matlab/Simulink
Ud: Sức điện động của BBĐ. Thông số động cơ: Pđm [ kW] Uđm [ V] Iđm [ A] nđm [ v/p] 2,2 220 12,0 1500
3.1.2. Tổng hợp hệ truyền động động cơ một chiều kích từ độc lập
Cấu trúc điều khiển hệ truyền động động cơ một chiều kích từ độc lập:
Từ sơ đồ hình 3.1, ta xây dựng đƣợc cấu trúc điều khiển hệ truyền động động cơ một chiều kích từ độc lập:
Hình 3. 2. Cấu trúc điều khiển hệ truyền động động cơ một chiều kích từ độc lập
Trong đó:
nđ: Tốc độ đặt,
BĐK: Bộ điều khiển,
BBĐ: Bộ biến đổi chỉnh lƣu (gồm mạch phát xung và mạch
chỉnh lƣu co điều khiển Thyristor),
ĐC: Động cơ truyền động,
n: Đáp ứng tốc độ quay của động cơ (vòng/phút),
e: Sai lệch tín hiệu đặt và đáp ứng đầu ra,
uđk: Tín hiệu điều khiển.
Để tổng hợp Bộ điều khiển tốc độ, tìm ra luật điều khiển ta phải xác định mô hình các thành phần trong hệ thống. Có nhiều phƣơng pháp để xác định mô
BBĐ ĐC n
BĐK uđk
(-)
Đối tƣợng điều khiển
hình toán học theo mối quan hệ các đại lƣợng của từng thành phần. Tuy nhiên,
trong phạm vi luận văn tác giả kết hợp sử dụng CardTNUT và công cụ nhận
dạng mô hình (System Identification toolbox) của phần mềm Matlab để xác
định mô hình toán học hệ thống. Khi đó, đối tƣợng điều khiển gồm Bộ biến đổi
và Động cơ, với tín hiệu vào là tín hiệu điều khiển mạch phát xung uđk và tín
hiệu ra là vận tốc quay động cơ n.
Xác định mô hình toán học hệ thống:
CardTNUT xuất ra tín hiệu điều khiển ra đầu ra AO0 cấp cho mạch phát xung và đo tín hiệu tốc độ động cơ thông qua đầu vào tƣơng tự AI1, AI1 đƣợc nối vào đầu ra máy phát tốc.
Sau khi thực hiện thu thập dữ liệu tín hiệu điều khiển và đáp ứng tốc độ quay động cơ, ta thu đƣợc đặc tính của các dữ liệu nhƣ sau:
Hình 3. 3. Dữ liệu tín hiệu điều khiển (volt)
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 9 10 Time (s) D ie n a p ( v o lt )
Hình 3. 4. Dữ liệu tín hiệu tốc độ quay động cơ (vòng/phút)
Sử dụng công cụ của Matlab (System Identification toolbox) để nhận
dạng đối tƣợng (khi nhận dạng đối tƣợng sử dụng dữ liệu trong miền thời gian Time – Domain Data), mô hình toán học đối tƣợng:
1 2 ( ) (1 )(1 ) dk n K W s u s s (3.1) Trong đó: K = 190.668, τ1 = 0.678, τ2 = 0.433. Thay số ta đƣợc hàm truyền hệ thống: