1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Điều khiển tốc độ động cơ bằng PID có hồi tiếp

13 421 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 766,39 KB

Nội dung

Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM Khoa : Điện – Điện Tử Giảng viên : TS Nguyễn Minh Tâm BÁO CÁO HỆ THỐNG ĐIỀU KHIỂN NÂNG CAO ĐỀ TÀI: Điều khiển tốc độ động PID hồi tiếp Tổng quan hệ thống gồm có: Động DC encoder hồi tiếp Pic 16f887 để điều khiển động Cầu H để điều chỉnh tốc độ đảo chiều quay cho động Keypad để set tốc độ mong muốn LCD để thị tốc độ Một nguồn để cấp cho hệ toàn hệ thống 1 Động cơ: Động DC điện áp cấp định mức 24V DC mạch thực tế nhóm làm cấp nguồn 12V Tốc độ quay đình mức mà nhóm điều khiển 1500 vòng/phút Thực tế tốc độ tối đa động khoảng 2500 vòng/phút Encoder dây: + Vcc ( dây đỏ ) + GND ( dây đen ) + dây tín hiệu AB ( dây xanh lá, vàng ) Pic 16F887: Nguồn cấp định mức 5V Chức làm điều khiển trung tâm cho toàn hệ thống Điều khiển động DC quay thuận nghịch Băm xung PWM điều khiển tốc độ động RC1 Nguyên lý hoạt động vi xử lý đảm nhiệm chức tính toán cũn điều khiển cấp xung nhận giá trị set từ keypad Cầu H (IC L298) IC L298 IC tích hợp nguyên khối gồm mạch cầu H bên Với điện áp làm tăng công suất đầu từ 5V – 47V , dòng lên đến 4A, L298 thích hợp ứng dụng công suất nhỏ động DC loại vừa … Chức chân L298: - chân INPUT: IN1, IN2, IN3, IN4 nối với chân 5, 7, 10, 12 L298 Đây chân nhận tín hiệu điều khiển chân OUTPUT: OUT1, OUT2, OUT3, OUT4 (tương ứng với chân INPUT) nối với chân 2, 3, 13, 14 L298 Các chân nối với động Hai chân ENA ENB dung để điều khiển mạch cầu H L298 Nếu mức logic “1” (nối với nguồn 5V) cho phép mạch cầu H hoạt động, mức logic “0” mạch cầu H không hoạt động Với toán trên, bạn cần lưu ý đến cách điều khiển chiều quay với L298: -Khi ENA = 0: Động không quay với đầu vào -Khi ENA = 1: - INT1 = 1; INT2 = 0: động quay thuân - INT1 = 0; INT2 = 1: động quay nghịch - INT1 = INT2: động dừng tức (tương tự với chân ENB, INT3, INT4) Nguyên lý hoạt động: Đầu vào gồm chân kết nối với PIC dùng để điều khiển động Đầu gồm bốn chân kết nối tương ứng với module L298 Chân Q1 PWM1 dùng để điều khiển bánh trái động PWM1 chân dùng xung để băm xung PWM để điều khiển tốc độ động Khi chân Q1=1 động quay thuận Q1=0 động quay ngược lại Xung PWM1 điều chế từ bo điều khiển PIC 16F887 Tương tự chân Q2 PWM2 dùng để điều khiển bánh phải động Khi chân Q2=1 động quay thuận Q2=0 động quay ngược lại Xung PWM1 điều chế từ bo điều khiển PIC 16F887 Chú ý: với mạch ta điều khiển quay thuận quay ngược hai động DC dễ dàng mà xung PWM luôn hoạt động, cần đỏi tín hiệu chân Q động DC tự đảo chiều Thông số bản: Điện áp cấp 5V Ngõ V Giản đồ xung: Nguyên lý : Trong khoảng thời gian - to ta cho van G mỏ toàn điện áp nguồn Ud đưa tải Còn khoảng thời gian to - T cho van G khóa, cắt nguồn cung cấp cho tải Vì với to thay đổi từ T ta cung cấp toàn , phần hay khóa hoàn toàn điện áp cung cấp cho tải + Công thức tính giá trị trung bình điện áp tải : Gọi t1 thời gian xung sườn dương (khóa mở ) T thời gian sườn âm dương, Umax điện áp nguồn cung cấp cho tải ==> Ud = Umax.( t1/T) (V) hay Ud = Umax.D Ở nhóm tạo xung PWM Pic 16F887 cách dung chân RC1 Code ví dụ microC: void InitMain() { ANSEL = 0; ANSELH = 0; C1ON_bit = 0; C2ON_bit = 0; PORTC = 0; TRISC = 0; PWM1_Init(5000); PWM2_Init(5000); // Configure AN pins as digital // Disable comparators // set PORTC to // designate PORTC pins as output // Initialize PWM1 module at 5KHz // Initialize PWM2 module at 5KHz } void main() { InitMain(); current_duty = 16; current_duty1 = 16; // initial value for current_duty // initial value for current_duty1 PWM1_Start(); // start PWM1 PWM2_Start(); // start PWM2 PWM1_Set_Duty(current_duty); // Set current duty for PWM1 PWM2_Set_Duty(current_duty1); // Set current duty for PWM2 Keypad set tốc độ: Bản chất thật keypad ma trận bàn phím, dùng nút nhấn để hiệu chỉnh tốc độ mong muốn từ người điều khiển Một đoạn code mẫu microC: unsigned short kp, cnt, oldstate = 0; char txt[6]; // Keypad module connections char keypadPort at PORTD; // End Keypad module connections // LCD module connections sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D4 at RB0_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D7 at RB3_bit; sbit LCD_RS_Direction at TRISB4_bit; sbit LCD_EN_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB0_bit; sbit LCD_D5_Direction at TRISB1_bit; sbit LCD_D6_Direction at TRISB2_bit; sbit LCD_D7_Direction at TRISB3_bit; // End LCD module connections void main() { cnt = 0; Keypad_Init(); ANSEL = 0; I/O ANSELH = 0; Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1, 1, "1"); Lcd_Out(1, 1, "Key :"); Lcd_Out(2, 1, "Times:"); { kp = 0; // Reset counter // Initialize Keypad // Configure AN pins as digital // Initialize LCD // Clear display // Cursor off // Write message text on LCD // Reset key code variable // Wait for key to be pressed and released // kp = Keypad_Key_Press(); // Store key code in kp variable kp = Keypad_Key_Click(); // Store key code in kp variable while (!kp); // Prepare value for output, transform key to it's ASCII value switch (kp) { //case 10: kp = 42; break; // '*' // Uncomment this block for keypad4x3 //case 11: kp = 48; break; //case 12: kp = 35; break; //default: kp += 48; case keypad4x4 case case case case case case case case case case case case case case case // '0' // '#' 1: kp = 49; break; // 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: kp kp kp kp kp kp kp kp kp kp kp kp kp kp kp = = = = = = = = = = = = = = = 50; 51; 65; 52; 53; 54; 66; 55; 56; 57; 67; 42; 48; 35; 68; break; break; break; break; break; break; break; break; break; break; break; break; break; break; break; // // // // // // // // // // // // // // // // Uncomment this block for A B C * # D } if (kp != oldstate) { previous cnt = 1; oldstate = kp; } else { cnt++; } // Pressed key differs from // Pressed key is same as previous Lcd_Chr(1, 10, kp); // Print key ASCII value on LCD if (cnt == 255) { cnt = 0; Lcd_Out(2, 10, " } // If counter varialble overflow WordToStr(cnt, txt); string Lcd_Out(2, 10, txt); } while (1); } "); // Transform counter value to // Display counter value on LCD LCD hiển thị: Nhóm sử dụng LCD 16x2 (LCD HD44780 ) Chân - 14 Ký Mô tả hiệu Vss Chân nối đất cho LCD, thiết kế mạch ta nối chân với GND mạch điều khiển VDD Chân cấp nguồn cho LCD, thiết kế mạch ta nối chân với VCC=5V mạch điều khiển VEE Điều chỉnh độ tương phản LCD RS Chân chọn ghi (Register select) Nối chân RS với logic “0” (GND) logic “1” (VCC) để chọn ghi + Logic “0”: Bus DB0-DB7 nối với ghi lệnh IR LCD (ở chế độ “ghi” - write) nối với đếm địa LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0-DB7 nối với ghi liệu DR bên LCD R/W Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic “0” để LCD hoạt động chế độ ghi, nối với logic “1” để LCD chế độ đọc E Chân cho phép (Enable) Sau tín hiệu đặt lên bus DB0-DB7, lệnh chấp nhận xung cho phép chân E + Ở chế độ ghi: Dữ liệu bus LCD chuyển vào(chấp nhận) ghi bên phát xung (high-to-low transition) tín hiệu chân E + Ở chế độ đọc: Dữ liệu LCD xuất DB0-DB7 phát cạnh lên (low-to-high transition) chân E LCD giữ bus đến chân E xuống mức thấp DB0 Tám đường bus liệu dùng 6.Bộ nguồn: Mạch nguồn tận dụng từ mạch nguồn máy tính để bàn củ mượn xường 4A Điều khiển động phương pháp PID PWM1_Init(5000); Kp1=1.2555; Ki=0; Kd=0; Với thông số PID hệ thống ổn định 1500v/p a=count*600/400; //la vong 400 xung count=0; // so xung trongm 0,1s TMR1H=0b01011110; TMR1L=0b01011000; TMR1IF_bit=0; E1=set_value-a; // sai s0 //kp la he khuyet dai I1=I1+0.05*(E1+E2); //ki la he khau tich phan D1= (E2-E1)/0.1; //kd la he so vi phan u=Kp1*E1+Ki*I1+Kd*D1; E2=E1; Và đoạn code để tính hệ số tính cờ ngắt cho pic R1 RV2 LCD1 LM016L 10k U2 30p CLK L0 L1 L2 L3 L4 L5 LS1 33 34 35 36 37 38 39 40 SOUNDER D0 D1 D2 D3 D4 D5 D6 D7 RS RW E 10 11 12 13 14 K0 K1 K2 K3 K4 K5 K6 K7 VSS VDD VEE 19 20 21 22 27 28 29 30 10k IN1 IN2 ENA L0 L1 L2 L3 8MHz 15 16 17 18 23 24 25 26 L5 X1 C2 RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1 RA1/AN1/C12IN1RC3/SCK/SCL RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA RA3/AN3/VREF+/C1IN+ RC5/SDO RA4/T0CKI/C1OUT RC6/TX/CK RA5/AN4/SS/C2OUT RC7/RX/DT RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RD0 RD1 RB0/AN12/INT RD2 RB1/AN10/C12IN3RD3 RB2/AN8 RD4 RB3/AN9/PGM/C12IN2RD5/P1B RB4/AN11 RD6/P1C RB5/AN13/T1G RD7/P1D RB6/ICSPCLK RB7/ICSPDAT RE0/AN5 RE1/AN6 RE2/AN7 L4 30p RE3/MCLR/VPP 14 13 1 RESET C1 +24V 10 PIC16F887 PROGRAM=hoi tiep encoder.hex IN1 IN2 10 12 ENA 11 R3 R4 R5 10k 10k 10k 10k 1 2 1 2 1 2 2 1 1N4007 M2 +88.8 2 Hình ảnh mô nhóm Hình ảnh thức tế nộp cho thầy lúc báo cáo VCC VS SENSA SENSB D2 D4 1N4007 1N4007 U1 OUT1 OUT2 OUT3 OUT4 13 14 GND D3 M1 SET MUTE 15 STOP 1N4007 CLEAN FW 2 D1 RW +24V CLK K0 K1 K2 K3 K4 K5 K6 K7 R2 IN1 IN2 IN3 IN4 ENA ENB L298 M1 M2 ... quan hệ thống gồm có: Động DC có encoder hồi tiếp Pic 16f887 để điều khiển động Cầu H để điều chỉnh tốc độ đảo chiều quay cho động Keypad để set tốc độ mong muốn LCD để thị tốc độ Một nguồn để... PWM để điều khiển tốc độ động Khi chân Q1=1 động quay thuận Q1=0 động quay ngược lại Xung PWM1 điều chế từ bo điều khiển PIC 16F887 Tương tự chân Q2 PWM2 dùng để điều khiển bánh phải động Khi... toàn hệ thống 1 Động cơ: Động DC có điện áp cấp định mức 24V DC mạch thực tế nhóm làm cấp nguồn 12V Tốc độ quay đình mức mà nhóm điều khiển 1500 vòng/phút Thực tế tốc độ tối đa động khoảng 2500

Ngày đăng: 29/08/2017, 09:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w