Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
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ỀUKHIỂN NÂNG CAO ĐỀ TÀI: ĐiềukhiểntốcđộđộngPIDcóhồitiếp Tổng quan hệ thống gồm có: Động DC có encoder hồitiếp Pic 16f887 để điềukhiể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 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ềukhiển 1500 vòng/phút Thực tế tốcđộ tối đa động khoảng 2500 vòng/phút Encoder có 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ềukhiển trung tâm cho toàn hệ thống Điềukhiểnđộng DC quay thuận nghịch Băm xung PWM điềukhiểntốcđộđộng RC1 Nguyên lý hoạt động vi xử lý đảm nhiệm chức tính toán cũn điềukhiể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ềukhiể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ềukhiể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ềukhiể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ềukhiể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ềukhiển bánh trái động PWM1 chân dùng xung để băm xung PWM để điềukhiểntố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ềukhiển PIC 16F887 Tương tự chân Q2 PWM2 dùng để điềukhiể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ềukhiển PIC 16F887 Chú ý: với mạch ta điềukhiể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ềukhiể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ềukhiể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ềukhiể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 có 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ềukhiể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