Lĩnh vực điều khiển tự động ngày càng phát triển, đặc biệt là điều khiển chính xác, đã trở thành một phần không thể thiếu của nền công nghiệp hiện đại. Phần lớn các loại máy móc, thiết bị dân dụng hay trong công nghiệp hay sử dụng động cơ điện, từ động cơ điện trong các máy móc công cụ, máy CNC, các cánh tay robot,…. đến những thiết bị gia dụng như máy giặc, máy lạnh, máy hút bụi và có cả trong máy vi tính. Những thiết bị như vậy cần độ chính xác rất cao, tiết kiệm năng lượng, tuổi thọ và chu kì bảo dưỡng dài. Một trong những yêu cầu cần được đáp ứng để đạt được những yêu cầu trên là điều khiển tốc độ động cơ điện một cách ổn định, đáp ứng nhanh, vận hành trơn tru khi xác lập và khi thay đổi trạng thái. Với ưu điểm là điều khiển tốc độ động cơ dễ dàng, độ ổn định tốc độ cao nên động cơ một chiều được sử dụng rộng rãi như : truyền động cho một số máy như máy nghiền, máy nâng vận chuyển, điều khiển băng tải, điều khiển cánh tay robot,.. Động cơ một chiều có nhiều ứng dụng trong cả công nghiệp và cả trong đời sống hằng ngày. Vì vậy, nó cần yêu cầu có nhiều cáp tốc độ có thể tăng giảm dễ dàng. Với sự ra đời và phát triển của vi sử lí mà ta có thể điều khiển động cơ với nhiều mức độ khác nhau như : điều khiển dừng, điều khiển đảo chiều, điều khiển tốc độ nhanh chậm,… Trong khuôn khổ đồ án, nhóm em xin trình bày thuật toán điều khiển tốc độ động cơ, xây dựng các bộ điều khiển này trên vi điều khiển Arduino Uno R3.
1
Mục đích chọn đề tài
Mô hình điều khiển tốc độ động cơ bằng Arduino Uno R3 cho phép người dùng điều chỉnh tốc độ động cơ theo ý muốn Mục tiêu chính của dự án là hiểu rõ thuật toán PID, nhằm ứng dụng trong nhiều lĩnh vực phục vụ cho con người.
Mô hình điều khiển tốc độ động cơ không chỉ có nhiều ứng dụng thực tiễn mà còn giúp sinh viên áp dụng kiến thức học được vào thực tế Với cấu trúc cơ khí đơn giản và khả năng kết hợp với các thành phần điện tử như mạch cầu H, động cơ DC và Arduino, những mô hình này rất phù hợp cho sinh viên nghiên cứu và học hỏi về ngành tự động hóa.
Sơ lược các bước thực hiện
Để bắt đầu, chúng ta cần tìm hiểu về cách thức hoạt động và điều khiển bằng thuật toán PID Mô hình cần được sắp xếp và kết nối các linh kiện một cách tối ưu và hiệu quả Sau khi hoàn thiện mô hình, bước tiếp theo là viết chương trình điều khiển nhằm điều chỉnh tốc độ động cơ với phản ứng nhanh và chính xác nhất dựa trên thuật toán PID Cuối cùng, chúng ta sẽ vận hành mô hình, phát hiện và khắc phục các sai sót, đồng thời suy nghĩ về hướng phát triển cho mô hình mà nhóm đã nghiên cứu.
2
Giới thiệu
Mạch điều khiển tốc độ động cơ xoay chiều một pha là mạch điện tử có chức năng thay đổi tốc độ động cơ.
Hầu Có các phương pháp thay đổi tốc độ động cơ như sau.
- Thay đổi số vòng dây stato.
- Điều khiển điện áp đưa vào động cơ
- Điều khiển tần số dòng điện đưa vào động cơ
Hiện nay, việc điều khiển tốc độ động cơ một pha thông qua việc điều chỉnh điện áp và tần số đang trở nên phổ biến Các mạch điện tử được áp dụng rộng rãi để tối ưu hóa hiệu suất và tiết kiệm năng lượng trong các ứng dụng công nghiệp.
Giao tiếp động cơ DC qua mạch cầu H
Cầu H là một mạch gồm 4 transitor được mắc theo hình chữ H.
Hình 2.1 Sơ đồ tổng quát của một mạch cầu H. Ở điều kiện bình thường (4 khóa đều mở) mạch không hoạt động.
Khi khóa L1 và R2 đóng, kL1 qua đối tượng hóa L2 và khóa R2 mở thì dòng điện trong mạch có chiều từ nguồn qua điều khiển qua R2 xuống mass.
Khi khóa L2 và R1 đóng, khóa L1 và khóa R2 mở thì dòng điện trong mạch có chiều từ nguồn qua R1 qua đối tượng điều khiển qua L2 xuống mass.
Hình 2.2 Chiều đi của dòng điện trong cầu H.
Khi khóa L1 và L2 đóng, hoặc khóa R1 và R2 đóng, hoặc cả bốn khóa đều đóng, sẽ xảy ra hiện tượng ngắn mạch Để khắc phục tình trạng này, nhà thiết kế đã phát triển mạch cầu H với sự sử dụng của bốn transistor BJT, bao gồm hai transistor PNP và hai transistor NPN.
Hình 2.3 Sơ đồ mạch của cầu H.
Cầu H được thiết kế với 4 transistor BJT, được kết nối theo sơ đồ hình 2-3 Bên cạnh đó, 4 diode có nhiệm vụ bảo vệ các transistor BJT, đồng thời điều khiển việc bật tắt các BJT thông qua việc thay đổi tín hiệu đầu vào A hoặc B, từ đó kiểm soát chiều đi của dòng điện.
Khi ngõ vào A ở mức cao và ngõ vào B ở mức thấp, các công tắc Q1 và Q4 sẽ đóng, trong khi các công tắc Q2 và Q3 mở Dòng điện sẽ chạy từ nguồn qua công tắc Q1, đi qua đối tượng điều khiển, và cuối cùng qua công tắc Q4 xuống mass.
Khi ngõ vào A ở mức thấp và ngõ vào B ở mức cao, công tắc Q2 và Q3 sẽ đóng, trong khi công tắc Q1 và Q4 mở Dòng điện trong mạch sẽ chạy từ nguồn qua Q2, đi qua đối tượng điều khiển, và tiếp tục qua Q3 xuống mass.
Nếu đối tượng là động cơ thì chiều dòng điện làm thay đổi chiều quay của động cơ. Ưu điểm: đơn giản, đóng ngắt nhanh, có nhiều ứng dụng.
Nhược điểm: chỉ làm việc với nguồn 1 chiều, sử dụng trong những ứng dụng đơn
TS Vũ Văn Phong giản.
Chip điều khiển
Atmega328 là vi điều khiển 8 bit mạnh mẽ hơn Atmega8, thuộc họ MegaAVR của Atmel Nó sử dụng kiến trúc RISC với bộ nhớ chương trình 32KB ISP flash có khả năng ghi xóa hàng nghìn lần, cùng với 1KB EEPROM và 2KB SRAM, mang lại dung lượng RAM lớn trong thế giới vi xử lý 8 bit.
Với 23 chân có thể sử dụng cho các kết nối vào hoặc ra i/O, 32 thanh ghi, 3 bộ timer/counter có thể lập trình, có các gắt nội và ngoại (2 lệnh trên một vector ngắt), giao thức truyền thông nối tiếp USART, SPI, I2C Ngoài ra có thể sử dụng bộ biến đổi số tương tự 10 bít (ADC/DAC) mở rộng tới 8 kênh, khả năng lập trình được watchdog timer, hoạt động với 5 chế độ nguồn, có thể sử dụng tới 6 kênh điều chế độ rộng xung (PWM), hỗ trợ bootloader
Atmega328 có khả năng hoạt động trong một dải điện áp rộng (1.8V – 5.5V), tốc độ thực thi (thông lượng) 1MIPS trên 1MHz
Thông số chính Atmega328P-PU:
+ Xung nhịp lớn nhất: 20Mhz
+ Bộ nhớ chương trình (FLASH): 32KB
+ Điện áp hoạt động rộng: 1.8V – 5.5V
+ Số timer: 3 timer gồm 2 timer 8-bit và 1 timer 16-bit
+ Số kênh xung PWM: 6 kênh (1timer 2 kênh)
PID (Proportional Integral Derivative) là một phương pháp điều khiển bao gồm ba thành phần: tỉ lệ, tích phân và vi phân Phương pháp này giúp điều chỉnh sai số một cách tối ưu, tăng tốc độ phản hồi, giảm hiện tượng vọt lộ và hạn chế sự dao động trong hệ thống.
Bộ điều khiển PID, viết tắt của Proportional-Integral-Derivative, là một kỹ thuật điều khiển quá trình hiệu quả, hoạt động dựa trên ba thành phần chính: tỉ lệ, tích phân và vi phân Kỹ thuật này giúp giảm thiểu sai số bằng cách điều chỉnh các tín hiệu theo ảnh hưởng của từng thành phần, từ đó tối ưu hóa hiệu suất hệ thống Điều khiển PID là phương pháp hồi tiếp vòng kín phổ biến, được ứng dụng rộng rãi trong các lĩnh vực điện, tự động hóa và điện tử.
TS Vũ Văn Phong Hình 2.5 Mô hình tổng quan của PID.
Quá trình điều khiển theo mô hình khép kín yêu cầu hệ thống hoạt động xung quanh giá trị Setpoint, tùy thuộc vào yêu cầu chất lượng Để đảm bảo tính ổn định và chất lượng, hệ thống cần duy trì độ sai lệch nhỏ nhất và thời gian quá độ nhanh nhất so với Setpoint Bộ điều khiển PID, bao gồm ba thành phần: Tỉ lệ (P), Vi phân (D) và Tích phân (I), mỗi thành phần này đóng vai trò khác nhau trong quá trình điều khiển của hệ thống.
Tín hiệu điều khiển u(t) tỉ lệ với tín hiệu sai lệch e(t).
Phương trình sai phân mô tả động học: u(t) = Kp.e(t) trong đó: u(t): tín hiệu ra của bộ điều khiển. e(t): tín hiệu vào.
Kp : hệ số khuyếch đại của bộ điều khiển.
Thành phần tỉ lệ (P) có tác dụng làm giảm sai lệch tĩnh, thời gian tác động nhanh.
Tín hiệu điều khiển ut) tỉ lệ với tích phân của tín hiệu sai lệch e(t).
Phương trình vi phân mô tả động học: u(t) = Ki ∫_0^t▒〖e(τ) d(τ)〗 trong đó: u(t): tín hiệu điều khiển. e(t) : tín hiệu vào của bộ điều khiển.
Ki là hằng số thời gian tích phân, giúp cải thiện hiệu suất của hệ thống Ưu điểm của bộ tích phân là khả năng loại bỏ sai lệch dư, đồng thời giảm thiểu ảnh hưởng từ nhiễu cao tần.
Nhược điểm: Bộ điều khiển tác động chậm nên tính ổn định của hệ thống kém.
Tín hiệu ra của bộ điều khiển tỉ lệ với vi phân tín hiệu sai lệch e(t).
Phương trình vi phân mô tả động học: u(t) = K_d (de(t))/dt
Trong đó: u(t): tín hiệu điều khiển. e(t) : tín hiệu vào của bộ điều khiển.
Hằng số thời gian vi phân (Kd) là một yếu tố quan trọng trong điều khiển tự động Luật điều khiển vi phân mang lại ưu điểm nổi bật với khả năng tác động nhanh, điều này rất được ưa chuộng trong các hệ thống tự động.
Nhược điểm của hệ thống sử dụng bộ điều khiển vi phân là dễ bị ảnh hưởng bởi nhiễu cao tần, loại nhiễu này thường xuất hiện trong môi trường công nghiệp.
Khâu tỉ lệ, tích phân và vi phân được kết hợp để tính toán đầu ra U(t) của bộ điều khiển PID Công thức của thuật toán PID thể hiện mối quan hệ giữa các thành phần này nhằm tối ưu hóa hiệu suất điều khiển.
2.4.2 PHƯƠNG PHÁP XÁC ĐỊNH THAM SỐ Kp, Kd, Ki
Ta phải điều chỉnh có thông số dựa theo kinh nghiệm để hệ thống đạt đến ngưỡng ổn định.
Thời gian lên Độ vọt lố Thời gian xác lập Sai số xác lập
Kp Giảm Tăng Thay đổi nhỏ Giảm
Kd Giảm Tăng Tăng Loại bỏ
Ki Thay đổi nhỏ Giảm Giảm Thay đổi nhỏ
8
Giới thiệu Arduino Uno R3
3.1.1 Sơ lược về Arduino Uno R3
Arduino Uno R3 sử dụng vi điều khiển Atmega328, cho phép thực hiện các ứng dụng đơn giản như điều khiển LED nhấp nháy tự động, xử lý tín hiệu cho xe điều khiển từ xa, điều khiển động cơ bước, và xây dựng trạm đo nhiệt độ-độ ẩm.
Arduino Uno R3 là một sản phẩm phổ biến trong dòng Arduino, được ưa chuộng nhờ khả năng ứng dụng đa dạng và tính hữu ích trong nhiều mô hình Với giá thành hợp lý và dễ sử dụng, Arduino Uno R3 thường được lựa chọn cho các dự án nghiên cứu của học sinh và sinh viên.
Hình 3.1 Hình ảnh thực của Arduino Uno R3.
3.1.2 Một vài thông số của Arduino Uno R3
Arduino Uno R3 có 14 pin ra/vào được đánh số từ 0 đến 13, trong đó có 6 pin PWM được đánh dấu bằng ký hiệu ~ Ngoài ra, board còn có 6 pin nhận tín hiệu analog từ A0 đến A5, có thể sử dụng như các pin ra/vào thông thường Đặc biệt, pin 13 kết nối trực tiếp với LED trạng thái trên board.
Vi điều khiển Atmega328 họ 8bit Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (Atmega328) với 0.5KB dùng bởi bootloader
Hình 3.2 Bảng thông số kĩ thuật Arduino Uno R3
Hình 3.3 Sơ đồ chân Arduino Uno R3.
Bộ nhớ Flash 32KB cho phép lưu trữ các đoạn lệnh lập trình trên vi điều khiển, trong đó thường có vài KB dành cho bootloader.
SRAM (Static Random Access Memory) có dung lượng 2KB, nơi lưu trữ giá trị của các biến trong quá trình lập trình Số lượng biến bạn khai báo càng lớn thì yêu cầu về bộ nhớ RAM càng cao Tuy nhiên, bộ nhớ RAM thường không phải là vấn đề đáng lo ngại trong lập trình Lưu ý rằng khi mất điện, dữ liệu trong bộ nhớ SRAM sẽ bị mất.
EEPROM (Electrically Erasable Programmable Read Only Memory) có dung lượng 1KB, hoạt động giống như một ổ cứng mini cho phép bạn đọc và ghi dữ liệu mà không lo mất mát khi mất điện, khác với dữ liệu trên SRAM.
Arduino Uno có 14 chân digital để đọc và xuất tín hiệu, với hai mức điện áp là 0V và 5V Mỗi chân có dòng vào/ra tối đa là 40mA Vi điều khiển Atmega328 tích hợp các điện áp pull-up cho từng chân, nhưng các điện trở này không được kết nối mặc định.
Chân Serial 0 (RX) và 1 (TX) trên Arduino Uno được sử dụng để gửi và nhận dữ liệu TTL serial, cho phép giao tiếp với các thiết bị khác Kết nối Bluetooth thường được coi là kết nối Serial không dây Nếu không cần giao tiếp Serial, nên tránh sử dụng hai chân này để tiết kiệm tài nguyên.
Trên dãy đầu bảng mạch Arduino, có 14 chân tín hiệu kỹ thuật số Input/Output (từ 0 đến 13) linh hoạt, cho phép hoạt động như đầu vào hoặc đầu ra Đây sẽ là các chân quan trọng trong dự án của bạn, vì chúng có khả năng ghi hoặc đọc tín hiệu ở trạng thái bật hoặc tắt.
Trong số các chân kỹ thuật số, các chân được đánh dấu bằng dấu ngã “~“ (3, 5, 6, 9, 10, 11) là những chân điều chế độ rộng xung (PWM), cho phép cung cấp tín hiệu đầu ra với các mức khác nhau Chúng có thể được sử dụng để điều chỉnh độ sáng của đèn LED hoặc kiểm soát tốc độ của động cơ.
Chân 13 nổi bật với tính năng gắn đèn LED trực tiếp (built-in LED), mang lại sự tiện lợi cho việc kiểm thử Bạn có thể dễ dàng sử dụng đèn LED này bằng cách xuất tín hiệu từ chân 13, hoặc sử dụng nó như một chân vào/ra (I/O) chuẩn.
Tại góc dưới bên phải của thiết bị, có 6 chân đầu vào tương tự (analog input) dùng để đọc giá trị từ các cảm biến tương tự, chẳng hạn như cảm biến ánh sáng hoặc biến trở.
- Góc dưới bên trái kế bên các chân đầu vào analog là các chân nguồn (power) Các chân mà bạn nên quan tâm nhất là GND, 3.3v và 5v.
- Chân lại là chân reset Nó sẽ khởi động lại bất cứ chương trình nào có trong bộ nhớ của Arduino còn.
3.2.2 Mạch cầu H L298 Đây là một module giao tiếp công suất giữa các đối cần tượng điều khiển và vi điều khiển do nguồn hoạt động của vi điều khiển khác với nguồn hoạt động đối tượng cần điều khiển Và module L298N được sử dụng ở đây do chi phí của nó thấp, dễ sử dụng, nguồn cấp có chịu được tương đối cao, thuận lợi cho các việc như điều khiển thuận nghịch, điều khiển PWM, điều khiển đóng ngắt vì đây là linh kiện bán dẫn nên tần số đóng ngắt nhanh, nhưng chỉ sử dụng được nguồn một chiều công suất thấp, để điều khiển đóng ngắt với nguồn xoay chiều tần số cao thì ta nên sử dụng mạch kích triac thay vì sử dụng L298N.
Hình 3.4 Hình ảnh thực module L298N.
- Driver: L298N tích hợp 2 mạch cầu H.
- Dòng cấp tối đa cho mỗi cầu H là 2A.
- Điện áp của tín hiệu điều khiển: +5V ~ +7V.
- Dòng của tín hiệu điều khiển: 0 ~ 36mA.
- Công suất hao phí: 20W (khi nhiệt độ Tu ℃).
3.3.3 Động cơ Encorder Động cơ DC giảm tốc GA25 Encoder thường được sử dụng trong các ứng dụng cần xác định tốc độ, vị trí, chiều quay của động cơ DC: Robot mê cung, robot xe hai bánh tự cân bằng,… Động cơ DC giảm tốc GA25 Encoder thực tế là động cơ DC GA25 thường có gắn thêm phần Encoder để có thể trả xung về vi điều khiển giúp xác định vị trí, vận tốc,… và thành Động cơ DC giảm tốc
Động cơ DC giảm tốc GA25 Encoder sử dụng Driver tương tự như động cơ DC thông thường, như L298, L293, để điều khiển công suất, tốc độ và đảo chiều Điểm khác biệt chính là sự tích hợp encoder, cho phép hồi tiếp (feedback) xung về Vi điều khiển Vi điều khiển sau đó điều chỉnh động cơ qua mạch công suất bằng các thuật toán điều khiển như PID, nhằm kiểm soát tốc độ và vị trí Động cơ này có nhiều biến thể khác nhau về tốc độ không tải.
Hình 3.5 Động cơ DC giảm tốc GA25 Encoder
THÔNG SỐ KĨ THUẬT Điện áp cung cấp : 3~18VDC.
Tốc độ sau hộp giảm tốc: 140 rpm
Dòng điện không tải : 50mA Đường kính động cơ: 24.4mm
Chiều dài động cơ (không tính trục và hộp số): 30.8mm Đường kính trục: 4mmChiều dài trục: 9mm Trục ra là loại trục vát
Sử dụng nguồn tổ ong để chuyển nguồn 220 VAC thành 12 VDC để cấp cho L298.
15
Sơ đồ nguyên lý tổng quát
Mô hình điều khiển tốc độ động cơ được thiết kế bằng cách thay đổi điện áp cung cấp cho động cơ, cho phép người dùng cài đặt tốc độ quay mong muốn Quá trình điều khiển và giám sát được thực hiện thông qua màn hình HMI, đảm bảo động cơ hoạt động với độ vọt lố thấp nhất Dưới đây là sơ đồ tổng quát của mô hình.
Hình 4.1 Sơ đồ tổng quát.
Khi cấp nguồn cho mô hình, thông qua màn hình HMI thì chúng ta có thể quyết định được tốc độ quay của động cơ.
Khi nhận được tín hiệu điều khiển từ màn hình HMI mà ở đây là tốc độ đặt động cơ sẽ chạy.
Bộ xử lý trung tâm kết hợp với bộ điều khiển PID sẽ tính toán tốc độ hoạt động của động cơ, so sánh với tốc độ đặt và hiển thị sự chênh lệch qua đồ thị trên màn hình HMI.
Sơ đồ kết nối các linh kiện như sau:
Hình 4.2 Sơ đồ kết nối dây
Lưu đồ giải thuật
Hình 4.3 Lưu đồ chương trình con chọn hướng và điều khiển.
Khi cấp nguồn cho mô hình và ta sẽ chọn tốc độ quay của động cơ tông qua màn hình HMI
Ban đầu, tín hiệu đầu vào được thiết lập là Setpoint (tốc độ đặt) Khi động cơ nhận điện áp, encoder sẽ quay và tạo ra tín hiệu trên các kênh A và B Tín hiệu này được cảm biến đọc và trả về giá trị xung.
Switch (10ms) hoạt động như một chương trình ngắt, thực hiện việc ngắt chương trình bên ngoài sau mỗi 10ms để đưa tín hiệu đầu vào, bao gồm xung, tốc độ đặt và tốc độ sai số, vào hàm PID.
Hàm PID sẽ xử lý và tính toán tốc độ dựa trên các xung đo được, sau đó so sánh tốc độ này với giá trị tốc độ đặt (Setpoint) ban đầu để kiểm tra mức độ chính xác.
Cứ sau 10ms nó sẽ tính toán và đưa ra tốc độ để mình kiểm tra với tốc độ đặt Setpoin ban đầu.
Phần mềm điều khiển
Sử dụng Visual Studio, tôi đã phát triển một màn hình điều khiển đơn giản cho máy tính Dưới đây là các bước để tạo ra ứng dụng điều khiển cá nhân của mình.
Hình 4.4: Giao diện lập trình của app inventor
Tiếp theo, chúng ta sẽ lập trình cho ứng dụng bằng cách sử dụng thao tác kéo thả các khối lệnh, giúp việc lập trình trở nên dễ dàng mà không cần viết câu lệnh.
Hình 4.6 Giao diện của ứng dụng trên điện thoại
Sản phẩm sau khi hoàn thiện
Hình 4- 7 Mặt dưới của robot.
Hình 4- 8 Mặt trên của robot.
Hình 4- 9 Chiều ngang tổng thể robot.
20
Kết luận
- Động cơ chạy tương đối ổn định.
- Tốc độ sử lí nhanh, đáp ứng nhanh ít bị vọt lố.
- Tín hiệu sử lí tốt không bị nhiễu sóng.
- Có một số tốc độ chạy vẫn có độ vọt lố khá cao.
- Mô hình vẫn chưa được đẹp mắt.
Hướng phát triển
- Có thể phát triển giải thuật và phần cứng lên để ứng dụng vào nhiều thiết kế điều khiển hơn.
- Xây dựng giải thuật hoàn chỉnh hơn nữa để dù chạy ở tốc độ nào thì động cơ đều có độ vọt lố thấp nhất.