Giới thiệu về CCS ?

Một phần của tài liệu Thiết kế chế tạo bộ điều khiển động cơ không đồng bộ 3 pha cho môn học thí nghiệm truyền động điện (Trang 62)

CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microcp. Chƣơng trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là:

‐ PCB cho dòng PIC 12‐bit opcodes

‐ PCM cho dòng PIC 14‐bit opcodes

‐ PCH cho dòng PIC 16 và 18‐bit

Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chƣơng trình bao gồm cả t rình soạn thảo và biên dịch là CCS, phiên bản mới nhất là PCWH Compiler Ver 3.227 Giống nhƣ nhiều trình biên dich C khác cho PIC, CCS giúp cho ngƣời sử dụng nắm bắ t nhanh đƣợc vi điều khiển PIC và sử dụng PIC trong các dự án. Các chƣơng trình diều khiển sẽ đƣợc thực hiện nhanh chóng và đạt hiệu quả cao thông qua việc sử dụng ngô

52

n ngữ lạp trình cấp cao –

Ngôn ngữ C Tài liệu hƣớng dẫn sử dụng có rất nhiều, nhƣng chi tiết nhất chính là bản Help đi kèm

theo phần mềm (tài liệu Tiếng Anh). Trong bản trợ giúp nhà sản xuất đã mô tả rất nhiề u về hằng, biến, chỉ thị tiền xủa lý, cấu trúc các câu lệnh trong chƣơng trình, các hàm t ạo sẵn cho ngƣời sử dụng… Ngoài ra về Tiếng Việt cũng có bản dịch của tác giả Trần Xuân Trƣờng, SV K2001 DH BK HCM. Tài liệu này dịch trên cơ sở bản Help của CC S, tuy rằng chƣa đầy đủ nhƣng đây là một tài liệu hay, nếu bạn tìm hiểu về PIC và CCS thì nên tìm tài liệu này về đọc. Địa chỉ Download tài liệu: www.picvietnam.com ‐> M ục nói về CCS.

Công thức của bạn cần tính là:

setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,1,0,9 9,0,1, 0);

Công thức tổng quát:

setup_power_pwm(modes, postscale, time_base, period, compare, compare_postscale, dead_time)

Trong đó:

//PWM_CLOCK_DIV_4: ( 1: 4 ) //Mode = Free Run

// Postscale = 1 (1-16) Timebase output postscaler

// TimeBase = 0 (0-65355) Initial value of PWM Timebase

// Period là khoảng thời gian đếm từ 0 lên tới PTPER nhƣ vậy có thể hiểu cái PTPER củabạn là 99.( Nếu vậy, trong công thức tổng quát thì phải thay Period là PRPER chứ nhỉ?mình cũng ko hiểu chỗ này ? Các bạn xem hình dƣới minh họa để hiểu thêm ) Vậy là Period chính là thời gian chu kỳ xung của pwm

// Compare = 0 (Timebase value for special event trigger) // Compare Postscale = 1 (Postscaler for Compare value) // Dead Time = 0

Theo nhƣ datasheet của Pic8f4431-trang 195 thì công thức tính tần số ( PWM Frequency ) là:

PWM Frequency = 1/ PWM_period = 1/Tpwm ( PWM_period = Tpwm = chu kỳ thời gian của tần số muốn điều chế xung pwm )

Với:

53

Trong đó:

- Fosc: Tần số thạch anh ngoài 20Mhz=20.000.000Hz

- PTPER : bit thời gian cần đếm tới và sẽ đƣợc nạp vào 2 thanh ghi PTPERL và PTPERH ( của bạn là 99 ) Bộ đếm sẽ đếm từ 0 lên tới PTPER

- PTMRPS:là Postscale nênPTMRPS = 1 ( mình hiều vậy )

Cách tính % duty: ( % độ rộng xung ) %dutycyle = dutycycle/(PTPER*4)

Lệnh trong CCS để thay đổi độ rộng xung là: ví dụ : set_power_pwm0_duty ( duty )

Giá trị dutycycle = %dutycyle* PTPER *4

Ví dụ:

- Bạn muốn chạy với độ rộng xung là 50% thì:

dutycyle = 50% * 99 * 4 = 198 ( vì PTPER của bạn là 99 ) - Do đó lệnh trong code của bạn là:

set_power_pwm0_duty (198);[12]

54

CHƢƠNG 3: THIẾT KẾ PHẦN CỨNG

3.1> YÊU CẦU CƠ BẢN :

Hình 3.1: Sơ đồ khối của hệ thống

3.2> MẠCH ĐỘNG LỰC : 3.2.1) Bộ chỉnh lƣu:

55

Có hai lựa chọn chính cho việc sử dụng khoá đóng cắt công suất trong điều khiển đông cơ đó là MOSFET và IGBT. Cả hai loại MOSFET và IGBT đều là linh kiện đƣợc điều khiển bằng điện áp, nghĩa là việc dẫn và ngƣng dẫn của linh kiện đƣợc điều khiển bằng một nguồn điện áp nối với cực gate của linh kiện thay vì là dòng điện trong các bộ nghịch lƣu sử dụng transitor nhƣ trƣớc đây. Vì vậy cách sử dụng loại linh kiện này làm cho việc điều khiển trởnên dễ dàng hơn.

56

Thông thƣờng MOSFET đƣợc sử dụng với các ứng dụng đòi hỏi tốc độ cao, tuy nhiên MOSFET không có khả năng chịu dòng điện cao. Trong khi đó IGBT thích hợp với các ứng dụng ở tốc độ thấp, tuy nhiên IGBT có khả năng chịu đƣợc dòng điện cao. Vì vậy tuỳ vào đặc điểm của ứng dụng mà có sự lựa chọn linh kiện phù hợp. Các yêu cầu chính đặt ra cho linh kiện sử dụng làm bộ nghịch lƣu : Điện áp VDS ( Mosfet) hay VCE ( IGBT) > VDC Dòng điện qua linh kiện > dòng định mức của động cơ ≈ 10A ở nhiệt độ hoạt động ,Chịu đƣợc tần số đóng ngắt cao=> IRFP460P đƣợc lựa chọn : thõa mãn các yếu tố trên, có thể mua dễ dàng và giá thành rẻ !

[13]

3.2.2) Mạch lái ( driver) & cách ly :

Sƣ̉ du ̣ng tpl251

[14]

Con tlp251 vƣ̀ a là cách ly quang vƣ̀a nâng áp lên +15v -15v Cho tín hiê ̣u đầu vào , kích đóng ngắt mosfet

57

Chƣơng 4:CHẾ TẠO THƢ̉ NGHIỆM – ĐÁNH GIÁ

Hình 4.1 mạch nguồn kích 15v0v-15v

58

Giải thích :

Mạch tạo ra nguồn 15v 0v -15v tƣ̀ 5v (dc-dc)

Cung cấp nguồn cho ma ̣ch kích nâng dòng kích .Khi pic mƣ́c 1 thì tạo +15v ,khi pic mƣ́c 0 tạo -15v,để đóng ngắt mosfet

Hình 4.2 mạch kích Mạch kích :

Cách ly bộ nghịch lƣu với píc ,nếu có dòng lớn dô ̣i ngƣợc về thì sẽ không làm hƣ pic , tín hiê ̣u điều khiển ,nâng áp tín hiê ̣u điều khiển của píc lên mƣ́c 1 là +15v mƣ́c 0 là - 15v ,để đóng ngắt mosfet

59

60

Hình 4.3 Mạch điều khiển

Sơ đồ 4.3 mạch điều khiển Giải thích :

61

Là trung tâm điều khiên , tạo ra 6 xung pwm điều khiển theo yêu cầu

Hình 4.4 mạch nghịch lƣu Sơ đồ 4.4 mạch nghịch lƣu Mạch nghịch lƣu

Biến đổi dòng điê ̣n 1 chiều thành xoay chiều 3 pha thông qua sƣ̣ đóng ngắt của 6 con MOSFET IRF460

Giới sƣ̣ điều khiển tƣ̀ píc

62

Hinh 4.5 mạch nguồn

Sơ đồ 4.5 :Mạch nguồn Giải thích :

Mạch chỉnh lƣu biến đổi dòng diện xoay chiều thành một chiều thông qua mạch cầu

Tải bóng đèn

Hình 4.6 bóng đèn

63

Hình 4.7 đô ̣ng cơ không đồng bô ̣ 3 pha

Kết quả thƣ̣c nghiê ̣m

Vdc:150v điện áp 1 pha tải bóng đèn

Hình 4.8 điê ̣n áp pha tải bóng đèn

64

Hình 4.9 điê ̣n áp dây tải đô ̣ng cơ không đồng bô ̣ 3 pha

65

Hình 4.11 sản phẩm

CHƢƠNG 5:BÀI THÍ NGHIỆM

THỰC HÀNH ĐIỀU KHIỂN ĐỘNG CƠ BA PHA KHÔNG ĐỒNG BỘ

Mục tiêu:

Sau khi thí nghiệm bài này sinh viên có khả năng sau:

 Hiểu cấu ta ̣o , nguyên lý hoa ̣t đô ̣ng của đô ̣ng cơ không đồng bô ̣ 3 pha .  Hiểu cấu ta ̣o ,nguyên lý ma ̣ch nguồn ma ̣ch kích .

 Thành lập đúng sơ đồ mạch điện điều khiển động cơ ba pha không đồng bô ̣.  Hiê ̣n thi ̣ da ̣ng sóng ra máy hiện sóng “oscilloscope”.

A.DANH SÁCH THIẾT BỊ VÀ DỤNG CỤ THÍ NGHIỆM

STT TÊN THIẾT BỊ SỐ LƢỢNG GHI CHÚ 1 CP 1 pha 1 2 Tụ 470 microphara 400v 1 3 Mạch nguồn 15v0v-5v 1 4 Mạch lái tpl250 1

5 Mạch nghịch lƣu 6 mosfet irfp 460 1

6 biến áp 220v-15v 6

7 Bô ̣ chỉnh lƣu 1

8 Nguồn tổ ông 15v-5v 1

66

10 Máy đo đa năng 1

11 Mạch điều khiển 1

12 Mạch nạp cho pic 1

13 Dây dẫn điê ̣n 1 10m

B. CHUẨN BỊ KIẾN THƢ́C

 Hiểu cấu ta ̣o , nguyên lý hoa ̣t đô ̣ng mosfet irfp 460, tlp250, tụ phân cực cầu h , ic ổn áp

 Sƣ̉ du ̣ng thành tha ̣o ma ̣ch đo (vôn kế , ampe kế )  Sƣ̉ du ̣ng thành tha ̣o máy hiện sóng “oscilloscope”  Sƣ̉ du ̣ng thành tha ̣o máy ta ̣o nguồn dc

 Hiểu đƣơ ̣c phƣơng pháp điều khiển

C.NỘI DUNG THÍ NGHIỆM

1. Bài 1: Thực hành lắp mạch điện nguồn (kích) vớ i ma ̣ch điều khiển với ma ̣ch kích , đo da ̣ng sóng ngõ ra , quan sát deadtime trên máy hiê ̣n sóng “oscilloscope”.với tỷ số m=0.8

Lắp ma ̣ch theo sơ đồ :

mạch điều khiển

67

68

Đo ̣c và nhâ ̣n xét da ̣ng sóng ngõ ra pwm1(s1),pwm2(s2) , quan sát deadtime trên máy hiê ̣n sóng “oscilloscope”.

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

69

2.Bài 2 :thƣ̣c hành lắp ma ̣ch điê ̣n nguồn dc, mạch điều kiển , mạch nguồn kích , mạch kích , bảng mạch nghịch lƣu mosfet ,3 bóng đèn .tăng dòng điê ̣n đo da ̣ng sóng ra trên máy hiện sóng “oscilloscope”. Vẽ dạng sóng .

Lắp ma ̣ch theo sơ đồ :

Sơ đồ 5.2 điều khiển

Đo ̣c và nhâ ̣n xét da ̣ng sóng ngõ ra ,vẽ dạng sóng ngõ ra trên 3 tải .m=0.8,f=50hz

Điê ̣n áp trên tải (vôn): ...

Tốc độ (vòng /phút): ... ... ... ... ... ...

70

Với tần số :50hz

m 0.3 0.4 0.5 0.6 0.7 0.8 V(lý thuyết) V(thƣ̣c tế ) Tốc đô ̣ vòng/phút ... ... ... ... ... ... ... ... Với m=0.8 Tần số 10 20 30 40 50 60 Tốc đô ̣ (vòng /phút) ... ... ... ... ... ... ... ...

D. BẢNG ĐÁNH GIÁ BUỔI THÍ NGHIỆM

STT Tiêu Chí Đánh Giá Điểm Ghi Chú

1 Đi đúng giờ (1điểm) Đi trể 15’: trƣ̀ 1 điểm

2 Chuẩn bi ̣ đầy đủ kiến thƣ́c (2 điểm) 2 Hoàn thành đầy đủ Bài 1 (3 điểm) 3 Hoàn thành đầy đủ Bài 2 (4 điểm) TỔNG ĐIỂM

71

Tiêu chí đánh giá

1. Tác phong: đi học đúng giờ, ngồi đúng nhóm, trang phục phù hợp…….

2. Kiến thức: trả lời câu hỏi lý thuyết liên quan bài thí nghiệm, mạch thí nghiệm hoạt động tốt…. 3. Kỹ năng thực hành: thời gian hoàn thành bài thí nghiệm, mạch thí nghiệm kết nối đẹp, thiết kế tốt… Kết luâ ̣n và đề nghi ̣ Đáp ƣ́ng yêu cầu đề ra ban đầu ,làm cơ sở để xây dựng bài thí nghiệm điều khiển động cơ không đồng bô ̣ 3 pha phu ̣c vu ̣ môn thí nghiê ̣m truyền đô ̣ng điê ̣n . Hoàn thiện bài thí nghiệm hƣớng dẫn sinh viên , để sinh viên dễ thao tác hơn . Mục lục : #include <18f4431.h> #fuses HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP #device *=16 adc=8 #use delay (clock=20000000) //#define LCD_RS PIN_D0 //#define LCD_RW PIN_D1 //#define LCD_EN PIN_D2 //#define LCD_D4 PIN_D4 //#define LCD_D5 PIN_D5 //#define LCD_D6 PIN_D6 //#define LCD_D7 PIN_D7 //#define LCD_TYPE 1 //#include <lcd.c> //#define LCD_ENABLE_PIN PIN_D0 ////

// #define LCD_RS_PIN PIN_D1 ////

//#define LCD_RW_PIN PIN_D2 ////

// #define LCD_DATA4 PIN_D4 ////

//#define LCD_DATA5 PIN_D5 ////

//#define LCD_DATA6 PIN_D6 ////

//#define LCD_DATA7 1000uf 35v PIN_D7 INT16 value;

long duty_cycle, period;

signed LONG Vs_angle; //long=int16 long update_angle,f_FLOAT,temp_float; int1 direction_flag = 1;

72

long M,Vref,Vdc=150; long TS=2000,TA,TB,Tz;

int8 f,f_req, sector,dienap,dongdien; int16 CONST data[512]=

{ 0, 7, 14, 21, 28, 35, 43, 50, 57, 64, 71, 78, 85, 92, 99, 106, 114, 121, 128, 135, 142, 149, 156, 163, 170, 177, 184, 192, 199, 206, 213, 220, 227, 234, 241, 248, 255, 262, 269, 277, 284, 291, 298, 305, 312, 319, 326, 333, 340, 347, 354, 361, 368, 376, 383, 390, 397, 404, 411, 418, 425, 432, 439, 446, 453, 460, 467, 474, 481, 488, 495, 502, 509, 516, 523, 530, 537, 544, 551, 558, 565, 572, 579, 586, 593, 600, 607, 614, 621, 628, 635, 642, 649, 656, 663, 670, 677, 684, 691, 698, 705, 712, 719, 726, 733, 740, 747, 754, 760, 767, 774, 781, 788, 795, 802, 809, 816, 823, 830, 836, 843, 850, 857, 864, 871, 878, 885, 891, 898, 905, 912, 919, 926, 933, 939, 946, 953, 960, 967, 973, 980, 987, 994, 1001, 1007, 1014, 1021, 1028, 1035, 1041, 1048, 1055, 1062, 1068, 1075, 1082, 1089, 1095, 1102, 1109, 1116, 1122, 1129, 1136, 1142, 1149, 1156, 1163, 1169, 1176, 1183, 1189, 1196, 1203, 1209, 1216, 1223, 1229, 1236, 1242, 1249, 1256, 1262, 1269, 1275, 1282, 1289, 1295, 1302, 1308, 1315, 1322, 1328, 1335, 1341, 1348, 1354, 1361, 1367, 1374, 1380, 1387, 1393, 1400, 1406, 1413, 1419, 1426, 1432, 1439, 1445, 1452, 1458, 1465, 1471, 1477, 1484, 1490, 1497, 1503, 1509, 1516, 1522, 1529, 1535, 1541, 1548, 1554, 1560, 1567, 1573, 1579, 1586, 1592, 1598, 1605, 1611, 1617, 1623, 1630, 1636, 1642, 1648, 1655, 1661, 1667, 1673, 1680, 1686, 1692, 1698, 1704, 1710, 1717, 1723, 1729, 1735, 1741, 1747, 1754, 1760, 1766, 1772, 1778, 1784, 1790, 1796, 1802, 1808, 1814, 1820, 1826, 1832, 1839, 1845, 1851, 1857, 1863, 1868, 1874, 1880, 1886, 1892, 1898, 1904, 1910, 1916, 1922, 1928, 1934, 1940, 1946, 1951, 1957, 1963, 1969, 1975, 1981, 1986, 1992, 1998, 2004, 2010, 2015, 2021, 2027, 2033, 2038, 2044, 2050, 2056, 2061, 2067, 2073, 2078, 2084, 2090, 2095, 2101, 2107, 2112, 2118, 2124, 2129, 2135, 2140, 2146, 2151, 2157, 2163, 2168, 2174, 2179, 2185, 2190, 2196, 2201, 2207, 2212, 2218, 2223, 2228, 2234, 2239, 2245, 2250, 2256, 2261, 2266, 2272, 2277, 2282, 2288, 2293, 2298,2304, 2309, 2314, 2320, 2325,

73 2330, 2335, 2341, 2346, 2351, 2356, 2361, 2367, 2372, 2377, 2382, 2387, 2392, 2398, 2403, 2408, 2413, 2418, 2423, 2428, 2433, 2438, 2443, 2448, 2453, 2458, 2463, 2468, 2473, 2478, 2483, 2488, 2493, 2498, 2503, 2508, 2513, 2518, 2522, 2527, 2532, 2537, 2542, 2547, 2551, 2556, 2561, 2566, 2571, 2575, 2580, 2585, 2589, 2594, 2599, 2604, 2608, 2613, 2618, 2622, 2627, 2631, 2636, 2641, 2645, 2650, 2654, 2659, 2664, 2668, 2673, 2677, 2682, 2686, 2691, 2695, 2699, 2704, 2708, 2713, 2717, 2722, 2726, 2730, 2735, 2739, 2743, 2748, 2752, 2756, 2761, 2765, 2769, 2773, 2778, 2782, 2786, 2790, 2795, 2799, 2803, 2807, 2811, 2815, 2820, 2824,2828, 2832, 2836, 2840, 2844, 2848, 2852, 2856, 2860, 2864, 2868,2872, 2876, 2880, 2884, 2888, 2892, 2896, 2900, 2903, 2907, 2911, 2915, 2919, 2923, 2927, 2930, 2934, 2938, 2942, 2945, 2949, 2953, 2957, 2960, 2964, 2968, 2971, 2975, 2978, 2982, 2986, 2989, 2993, 2996, 3000}; VOID main() {

//setup_adc_ports(sAN0); //AN0 as analog INPUT //setup_adc (ADC_CLOCK_INTERNAL);

//delay_us(10);

set_tris_a(0b00000111); //RA0 as input (AD converter) set_tris_b(0b00000000);

//lcd_init();

setup_power_pwm_pins (PWM_COMPLEMENTARY,

PWM_COMPLEMENTARY, PWM_COMPLEMENTARY, PWM_OFF); setup_power_pwm (PWM_CLOCK_DIV_4|PWM_UP_DOWN|PWM_DEAD_CLOCK_DIV_4, 1, 0, 500, 0, 1, 20); // 1) mode:PWM_CLOCK_DIV_4; PWM_UP_DOWN; PWM_DEAD_CLOCK_DIV_4, // 2) postscale:1

// 3) time_base: = > first value of timebase

// 4) period:chu ky` xung 6 PWM = 500 = > 200uS // 5) compare:0

// 6) compare_postscale:1

// 7) dead_time:10 = > Tdeatime = 10 * 0.2 = 2uS //set_power_pwm0_duty(0);

//set_power_pwm2_duty(0); //set_power_pwm4_duty(0);

74

sector = 1;

Vs_angle=0; //default value for 1st Vs; direction=1 update_angle=0; f_req=60; f_float=60; WHILE (TRUE) { temp_FLOAT = f_float*1.44 ;

Vref = temp_FLOAT; //Vref (Vphase; motor in deltal mode) at f //frequency to maintain V / f = cont = (150 / sqrt (3)) / 60 = 1.44

temp_FLOAT=0.6144*f_float; //0.6144 = Tpwm * 360 * n / 60; n = 512 update_angle=temp_FLOAT; //stepsize is INTERGER after this line TB = data[Vs_angle]; //data = PTPER * 4 * sqrt (3) * SIN;

// at 1st RUN: n = 0

TA = data[511 - Vs_angle];

M = Vref*16/vdc; // mutiply 16 = > will shift right 4 bit later TA = TA*M;

TB = TB*M;

TA = (TA>>4)&0x0FFF; //4TA TB = (TB>>4)&0x0FFF; //4TB Tz = (TS - TA - TB)/2; //TS = 4TS

IF (direction_flag==1) //FORWARD direction// {

Vs_angle = Vs_angle + update_angle; IF (Vs_angle > 511) { Vs_angle = Vs_angle - 511; sector = sector + 1; IF (sector > 6) //sector (1) - > (6) { sector = 1; } } }

75

{

Vs_angle = Vs_angle - update_angle; //n < 0 = > overflow to value (2 ^ 16) - //"negative value" if n is UNSIGNED int

IF (Vs_angle < 0) { Vs_angle = Vs_angle + 511; sector = sector - 1; IF (sector == 0) //sector (1) - > (6) { sector = 6; } } } SWITCH (sector) { CASE 1: set_power_pwm0_duty (TS - Tz); set_power_pwm2_duty (Tz + TB); set_power_pwm4_duty (Tz); BREAK;

CASE 2: set_power_pwm0_duty (TA + Tz); set_power_pwm2_duty (TS - Tz); set_power_pwm4_duty (Tz); BREAK; CASE 3: set_power_pwm0_duty (Tz); set_power_pwm2_duty (TS - Tz); set_power_pwm4_duty (Tz + TB); BREAK; CASE 4: set_power_pwm0_duty (Tz); set_power_pwm2_duty (Tz + TA); set_power_pwm4_duty (TS - Tz); BREAK; CASE 5: set_power_pwm0_duty (Tz + TB); set_power_pwm2_duty (Tz); set_power_pwm4_duty (TS - Tz); BREAK; CASE 6: set_power_pwm0_duty (TS - Tz); set_power_pwm2_duty (Tz); set_power_pwm4_duty (Tz + TA); BREAK;

76

} } }

77

TÀI LIỆU THAM KHẢO

[1]Jon Burroughs. “Controlling 3 – Phase AC Induction Motors Using the PIC18f4431”. Seminar of Microchip. 2004.

[2] Steve Bowling. “An induction to AC Induction Motor Control Using the Dspic30f MCU AN984”. Seminar of Microchip. 2005.

[3] Jingchuan Li, “Adaptive sliding mode observe and loss minimization for Sensorless field oriented control of induction machine”, Ph.D thesis, faculty of

Electrical and conputer, Ohio University, USA, 2005.

[4] Lê Trung Nam, “Điều khiển động cơ không đồng bộ ba pha theo phƣơng

Một phần của tài liệu Thiết kế chế tạo bộ điều khiển động cơ không đồng bộ 3 pha cho môn học thí nghiệm truyền động điện (Trang 62)

Tải bản đầy đủ (PDF)

(89 trang)