Viện khoa học và Công nghệ Việt Nam
Phòng Công nghệ Tự động hoa- Viện Công nghệ thông tin ĐÈ TÀI KC-03-20
©
NGHIEN CUU, THIET KE VA CHE TAO
BO DIEU KHIEN MAY LANH VA
BO DIEU KHIEN TU XA HONG NGOAI
<
Trang 2Viện Khoa học và Công nghệ Việt Nam
Phòng Công nghệ Tự động hóa —- Viện Công nghệ thông tin ĐỀ TÀI KC-03-20
Tài liệu kỹ thuật
BO DIEU KHIEN MAY LANH
Trang 3Phòng Công nghệ Tự động hoá- Viện Công nghệ thông tỉn
Đề tài KC-03-20
PHAN CUNG VA PHAN MEM DIEU KHIEN
MAY LANH
1 PHAN CUNG, CAC THIET LAP, SO DO VAO RA VA CHIP DKML-1 Sơ đồ khối vào/ra của board điều khiển máy lạnh: Chip DKML-1 / #Ix Loe tin higu 0 ` › , Module đèn LED dau thu hang ngoai vé Loa tin higu © Module nhận 00 lệnh từ nút bi — Led chíthịL nit bam và đầu thu hồng [ | — ngoai 5 Module động O : 13) cơ dân núng £) E động cơ nén - «QD
nsor nhiét da E Module động
OL mg module da c cơ quạt gid —O
iết đỒ 1
: nhấn độ C động cơ quat gid
sensur điểm đồng — Abe li module do ˆ C} x os Module déng điểm đồng ce déo cánh —X) động cơ đáo cánh
Các chức năng hoạt động của chip DKML-I
1.1 Thiết kế CHIP DKML-I
Chip DKML-1 được thiết kế trên nền chip trắng CY8C27443 của công
nghệ PSoC Chip là thành phần điều khiển chính cả phần cứng và mềm của bo
điều khiển máy lạnh
Trang 4
Phòng Cơng nghệ Tự động hố- Viện Công nghệ thông tin Đề tài KC-03-20 e Các thông số hệ thống của Chip DKML-I : Selected Giobai Parameters (test) : Name ị Value 32K Select 7 Internal AGndBypass _ :
A Bull Power Low i
Analog Power SC On/Ref Low ị
'CPU_Clock _ J8ysClv2
LVDThrottleBack " "Disable
‘Op-Amp Bias Low
PLL_Mode _ Disable -
Power Setting [ Vcc / SysClk freq ] '5.0V / 24MAz :
Ref Mux (Wdd/2)+/-BandGap § ep_Timer 512_Hz ‘SwitchModePump / ~~ OFF SysClk Source™” Internal ‘SysClk*2 Disable ~ ` _ No ‘Trip Voltage [LVD (SM ~~ 481¥ (5.00¥) iene SyeCet anion la ị VCa= VCLN - ws a ‘VC3 Divider — - 60 7 VG Sa "— _- ver" Watchdog Enable = ==- Enable + Áp sử dung: 5V + Dao động trong + Tần số đồng hồ CPU 12 MHz + Tân số đồng hồ hệ thống SysClk 24 Mhz + Tần số ngắt Sleep_ Timer 1 Hz + Có sử dụng WatchDog
- WatchDog được dùng đề phòng trường hơp hệ thống bị rơi vào trạng thái treo máy do bất kì lí do gì Máy sẽ được khởi động lại Sleep_Timer được dùng để phục vụ WatchDog
Trang 5
Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin Để tài KC-03-20 e Các khối chức năng của Chip DKML-I: POA EFE2PRDM, 0ounter24 | PGA Timers Sole) aa Alot l MUX ADCINCVR AMUX4 Buffer E2PROMRealtimeclock Ref_!ow timers + ADC dùng kiểm soát nhiệt độ phòng và kiểm soát nhiệt độ mặt giàn lạnh ; + Bộ phân kênh dùng cho mục đích một ADC kiểm soát nhiều điểm đo khác nhau
+ Khuyếch đại đệm dùng ôn định đầu vào cho ADC Khuyếch đại 1:1
+ Timer_1 và các ngắt GPIO đùng cho các đầu vào điều khiển nút bấm và điều khiển hồng ngoại
+ Timer 2 dùng cho mục đích Real Time Clock Tạo ra bộ đếm xung đồng hồ dựa trên nguồn xung đồng hồ hệ thống
Đây là các khối chức năng được xử lí bằng phần cứng, ngoài ra các
module con lai dùng để điều khiển các đầu ra của hệ như:
Trang 6
Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin Dé tai KC-03-20
+ Module hién thị, trực tiếp điều khiển các led chỉ thị qua các Port của
chip
+ Module Buzzer, truc tiếp điều khiển loa tín hiệu bằng tần số âm thích
hợp qua Port của chip, có hỗ trợ của mạch đệm công suất
+ Module Quat gió và máy nén, điều khiển cdc relay dong cat động cơ
quạt gió và động cơ nén giàn nóng
+ Module Louver điều khiển động cơ bước dùng cho cánh đảo gió Áp dụng theo phương pháp điều khiển Half Stepping là phương pháp cho độ mịn
bước và độ ôn định cao
* Dưới đây là sơ đồ chân vào ra của chip DKML~1 Port_0_7 1 P0] ~ 28 VDD Porto § C”” 2Pojn| 27 P0(6] Comperessor_Motor cj 3 Pas} 28 P044] Fan_Motor_ Medium 4 Pott} 25 P02] IrBARX_PRX_Dinw_lnpuPn | § P27] 24 POLO} (rDARX_CRX_BtTimerOutputPin 6 P25] 23 P26) Port_2_3 ?P2l3] Chip DKML-1 22 P2{4] Temp_ln 8P2|1| 21 P2[2] | 9SMP 20 P2|0] Timer_LED_Yellow 10 P17] 19 XRES Economic_LED_Green 11 P15] 18 P1[ Mightness_LED_Red
Step_Motor_3 12 P113] 17P14J Power LED_ Green
Step_Motor_1 13P11] 18P1I2] 4 Slep Molor 2
4vss 18 P1[0) (ed Step_Motor_0
_ Chip DKML-1 duoc thiét ké trén
nén chip trang CY8C27443 cia céng nghé PSoC
Trang 7
Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin
Dé tai KC-03-20
* Mô tả chỉ tiết các chân của chip DKML-1
Signal Pin Table (test)
Piné®PorthLabel Select , Drive Interrupt
1 PO[7] Pert 0 7 AnalogÏnput ‘High Z Analog’ Disablelnt : 2 Pols] | Port 0 5 AnalogOutBu£_ 1 High Z Analog Disablelnt ị 3 P0[2] ¡ | Port_ 0_3 AnalogOutBuf_0 High Z Analog " Disablelnt : 4 so PO[i] Port_0_1 Analoginput ‘High Z Analog DisablelInt 6
P2[7] | Port_2_7 StdCPU HighZ Analog Disablelnt
: P2[5] | Port_2_5 StdCPU _ High Z Analog DisableInt Por 2 3: StdCPU High Z Analog _ Dis ablelnt
Port21 StdCPU HighZ Analog Disablelm
C10 PA{7] Potl7 StdCPU SrengSlew Diabiein
11: PI[5] Podn l5 StdCPU = StrongSlow Disablelnt 12 Pl[3] Port13 StdCPU StrongSlow _Disablelnt 12 PHI] Port1_1 StdCPU — Strong Slow Disablelnt 14 VSS ị 15 PHO] Poen l0 St4CPU ¡SwongSlow “7 BIBT, a Diablin su _ ;Đet l2 StdCPU SwongSlew Dablclnt
a 17 P114] StdCPU | Strong Slow _Disablelnt
18 _ _PHS] StdCPU — Strong Slow Dwablelnt 1Q XRES tư
_ Ø1 P22} Port_22) SIdCPU | Strong Slow Disablelnt - “92°” P24] Port 24 StdCPU | StrongSlow Diableim - _ 23 P26] Port26 StdCPU /SưongSlew Disablelnt - ' 24 POO} |Port_0.0 StdCPU | StrongSlow Disablein
25 P0[2] Port 02 StdCPU HighZAnalog Disablelnt
Trang 8Phòng Công nghệ Tự động hoá- Viện Công nghệ thông tin
Đề tài KC-03-20
1.2 Sơ đồ nguyên lý của board điều khiển máy điều hoà nhiệt độ
Được chia ra thành các module gồm có: + Khối nguồn cấp
+ Khối giao tiếp hồng ngoại, nút bấm, khối đo nhiệt độ (hai kênh) và khối
chỉ thị Tất cả đều giao tiếp trực tiếp với mC
+ Khối đầu ra điều khiển máy nén, quạt gió, đảo cánh gió và loa tín hiệu thì có tầng đệm công suất trong giao tiếp với mC
Trang 10Phòng Công nghệ Tự động hoá- Viện Công nghệ thông tin Đề tài KC-03-20 LIST OF MATERIAL Item Part
Number | Description Reference Value Quantity | Note
1 | Còi tín hiệu BZ1 HXD 11 Loa tín hiệu 2 | Tụ Sứ C1 104 4 3 | Tụ Sứ C2 104 4 4 | Tụ Hoá C3 47uF 1 5 | Tụ Sứ C4 104 1 6 | Ty Nhva C5 1uF/450V † 7 | Tụ Sứ C6 104 i 8 | Tụ Sử C7 104 4 9 | Tụ Nhựa ce 0.1uF/275V ‡ 10 | Tụ Sứ cg 104 1 11 | Tụ Hoá C10 2200uF 1 12 | Tụ Sứ C1 104 ‡ 13 | Tụ Hoá C12 220uF 1 14 | Tụ Sứ C13 104 † 15 | Tụ Hoá C14 220uF 1 16 | Den Bao D1 LED $3 i 17 | Đèn Báo D2 LED ¿3 4 18 | Đèn Báo D3 LED ¿3 1 19 | Dén Bao D4 LED 63 1 20 | Cầu nắn dòng D5 BRIDGE 3A 1
21 | Cầu chỉ F1 | FUSE 3A 250VAC 1
22 | Connector J† 2 pin x 2.5 mm 1_¡ Emergency Botton
23 | Dây Socket 2 pin 255mm 1 | Emergency Botton 24 | Connector J2 5 pin x 2.5 mm 1 | Stepper Motor 25 | Day Socket 5 pin 1 | Stepper Motor
26 | Connector d3 5 pin x 7.5 mm 11 CN-Fan
27 | Connector J4 7 pin x 2.5 mm 1 | Socket LED - REV
Trang 11Phòng Công nghệ Tự động hoá- Viện Công nghệ thông tin Đề tài KC-03-20
30 | Connector J7 2 pin x 7.5mm 1 | POWER
31 | Connector 48 4 pin x 2.5 mm 1 | Sensor 32 | Day Socket 4 pin Nhiét 86(385mm) Chéng đông (440mm) 1 | Sensor 33 | Connector JQ 2 pin x 2.5 mm 1 34 | Connector J10 ‘2 pin x 2.5 mm 1 35 | Động cơ đảo cánh MG1 MOTOR STEPPER 5 wires 1 36 | Điện Trở Ri 220G +5% 0.25W 1 37 | Điện Trở R2 4.7kQ +5% 0.25W 1 38 | Điện Trở R3 470Q +5% 025W 1 39 | Điện Trở R4 470Q +5% 0.25W 1 40 | Điện Trở R5 tk QO +5% 0.25W 1 41 | Điện Trở R6 470 Q +5% 0.25W i 42 | Điện Trở R7 470Q +5% 0.25W 1 43 | Điện Trở R8 10kQ + 5% 0.25W 1 44 | Điện Tre R9 10k Q + 5% 0.25W 1 45 | Đầu thu hồng ngoại | REV1 IrDA Reciever có mũ sắt chống nhiễu 1 | Tàn số 38kHz 46 | Rơle RL1 HJR-3FF-S-Z 1 47 | Role RL2 HJR-3FF-S-Z 1 48 | Role RL3 HJR-3FF-S-Z 1 49 | Rơle RL4 HJQ-15F-Z-S-H 1
50 | Nhiệt điện trở RT1 THERMISTOR 10k EC95 4_| Sensor nhiét 51 | Nhiét dién tro RI2 THERMISTOR 10k EC95 1 | Sensor chống đông
52 | VARISTOR RV1 14k561 1
B3 | Vỏ nhựa bọc RV1 si
54 | Phim bam SW1 SW TACT-SPST/SM 1 | Emergency Button
55 | Biến Áp T1 TRANSFORMER 1 | 12V AC Out
56 | IC U1 ULN2003A 1 | Đệm công suất
67 | Ic U2 ULN2003A 1 Đệm công suất
Trang 12Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin
Đề tài KC-03-20
2 PHAN MEM, NGUYEN LY VA GIAI THUAT
Chương trình điều khiển máy điều hoà nhiệt độ gồm có các vấn đê chính là: + Giao tiếp với các đầu vào nhận lệnh và xử lí các lệnh đó
+ Do các thông số nhiệt độ hiện tại và so sánh với các thông số đặt trước để đưa ra quyết định điều khiển
+ Đo đếm đồng hồ thời gian thực dùng cho các lệnh và quyết định điều khiển theo thời gian
+ Các thuật điều khiển theo các chế độ đặt trước của người dùng
Bốn vấn để chính trên chính là cốt lõi của phần mềm điều khiển ngoài ra
còn có các module giao tiếp đầu vào và đầu ra, phục vụ cho các đầu thu thập số liệu vào và các đầu điều khiển ra Các đầu vào và ra sẽ được sử lí theo các
nguyên lí đo và điều khiển
Trong cả bốn vấn đẻ cốt lõi cần giải quyết của phần mềm điều khiển thì ta
thấy tất cả các module đó đều có thể can thiệp vào trạng thái hoạt động của máy
Chính vì vậy vẫn đề được đặt ra là tất cả các module đó phải can thiệp được vào vấn đề điều khiển các đầu ra của hệ thống, nhưng không được chồng chéo làm
vô hiệu hoá nhau cũng như không làm rối loạn điều khiển Bên cạnh đó để đảm
bảo sự kịp thời trong vấn để điều khiển, phải được phân chia các quá trình cũng
như xen kẽ để thực hiện một cách kịp thời các quá trình đó
Với vấn đề đặt ra như vậy, ý tưởng được xây dựng là các trạng thái hoạt động, điều khiển được xây dựng qua hệ thống các thanh ghi xác lập trạng thái hoạt động Cùng một loạt các thanh ghỉ hỗ trợ dùng trong các trường hợp lưu giữ
Trang 13Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin Đề tài KC-03-20 power_remote 00100000 0x20 Temper_flag 00000000 0x40 Remote_flag 10000000 0x80 If Command_Reg_1 XXXX XXXX OxXX RunMode Auto 0000 0001 0x01 RunMode Cool 0000 0010 0x02 RunMode Dry 0000 0100 0x04 RunMode Fan 0000 1000 0x08 Speed Auto 0001 0000 0x10 Speed High 00100000 0x20 Speed Medium 01000000 0x40 Speed Low 1000 0000 0x80 it Command_Reg 2 XXXX XXXX OxXX Run_start 0000 0001 0x01 Start run Oscilation Auto 0000 0010 0x02 Oscilation Con 00000100 0x04 Oscilation Stp 0000 1000 0x08
Power start 00010000 0x10 Power on Start
Flag 1 0010 0000 0x20 Run Mode Auto /Dry start
Power_Stop 01000000 0x40 Power off Start
MotorDr 1000 0000 0x80 Motor Direction
PRBS EROS OE IEDR OR IEE ISOS OSI ISSO IORIORI TOC OSIOR I aI EI
Ngoài ra còn có các thanh ghi phụ trợ dùng dé backup trang thái của một
số trạng thái điều khiển khác nhau trong các lệnh tạm thời Như tạm dừng, tạm
ngắt, tạm chuyến chế độ
Econ Mig_Reg dùng tạm chuyển chế độ sang Economy va Mightiness Dung phy tro cho thanh ghi Power_Timer_Reg
Rest_reg dùng trong chế độ tạm dừng máy nén khi nhiệt độ hạ dưới mức yêu cầu Phụ trợ cho thanh ghi Command_Reg_ 1
Pause_reg_1, Pause_reg 2 ding trong chế độ tạm nghỉ trong các chế độ
điều khiển Run Mode của người dùng, hai thanh ghi tạm này phụ trợ cho thanh
ghi Command_Reg 1 và Command_Reg_2
Và khá nhiều các biến trạng thái khác được sử dụng kết hợp cho xử lí các giải thuật của chương trình
Trang 14
Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin
Đề tài KC-03-20
Các thanh ghỉ này sẽ xác lập trạng thái hoạt động của máy để xác lập các đầu ra thông qua các module điều khiển đầu ra Các lệnh đầu vào cũng can thiệp trực tiếp lên các thanh ghi này, và các module thực hiện các giải thuật điều khiển cũng tác động lên nó
2.1 CÁC MODULE ĐẦU VÀO
2.1.1 ĐO NHIỆT ĐỘ ĐA KÊNH, NGUYÊN LÝ VÀ THUẬT TOÁN
Trên board điều khiển có hai kênh nhiệt độ, một kênh xác định nhiệt độ
phòng, kênh còn lại xác định nhiệt độ mặt giàn lạnh đề phòng hệ thống phân
phối nhiệt trục trạc, gây đóng băng trên bề mặt máy Nhiệt độ được đo qua hai cảm biến nhiệt điện trở Nên khi xác định được giá trị điện trở của nhiệt điện trở
thì ta cũng xác định được nhiệt độ bao quanh nhiệt điện trở đó Một ADC được dùng phối hợp với một bộ phân kênh sẽ giúp giải quyết vấn đề này
Nguyên !í: Hai cổng P0.3 và P 0.5 là hai chân cấp áp tham chiếu, khi đặt
lên hai nhánh của mạch một hiệu điện thé thì sẽ có một dòng chạy qua và tạo áp rơi trên thermoistor Với điện trở tham chiếu có gia tri biết trước, ta xác định
được dòng chạy qua nhánh mạch, đồng thời ta có được áp rơi trên các thermistor đo được trên port P 0.1 và P0.7 thì tương ứng sẽ xác đính được điện trở hiện thời
Trang 15Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin :
Đề tài KC-03-20
Thermistor đùng loại 10k chuẩn tại 25°C
Thông qua bộ phân kênh ta sẽ lần lượt đo được các gia tri Vo, Vi, V2, V3 có: cư, V.-V, 7=] ,-E: Ra man = Rol «xe: = Al
Qua công thức này cho thấy, độ chính xác và ôn định của điện trở tham chiều rất ảnh hưởng tới kết quả của thermistor đo được Giải thuật: Start Measure ADC Sample V0= VỊ= Vv2= VA= SteinHart-Hart / equation T1= T2= Sau khi có được Rue„iso, ta sẽ tính được nhiệt độ của điểm đo dựa trên đặc tính của sensor
Loại thermistor được dùng ở dây là loại NTC Thermistor EC95, độ nhạy
là -4%/°C, độ chính xác có thể đạt được là +0.1 °C, giải đo là -80°C —> +150%C
Trang 16
Phòng Cơng nghệ Tự động hố- Viện Công nghệ thông tin Đề tài KC-03-20
Để tính toán được nhiệt độ cần thiết có thể sử dụng hai phương pháp tra bảng hoặc tính tốn theo cơng thức SteinHart Hart
Với phương pháp tra bảng thì sẽ tốn bộ nhớ hơn tuy nhiên tốc độ cho ra kết quả nhanh hơn Với phương pháp SteinHart Hart thì tiết kiệm bộ nhớ hơn tuy nhiên tính toán phức tạp hơn, chậm hơn
Dựa trên yêu cầu thì phương pháp tỉnh toán SteinHart Hart được lựa chọn ở đây Và được tính toán như sau:
7 “ae { Rr] * {n® ha) ° (In: fas)
Trong đó T là nhiệt độ thực tế cần tinh toán Rt là điện trở đã đo và tính được, R¿; là điện trở chính xác Các hệ số a, b, c, d được tra theo bảng sau: Rt/ Ry 5 a b c d 68.600 to3.274 3.3538646E-3 | 2.5654090E-4 | 1.9243889E-6 | 1.0969244E-7 3.274 to 0.36036 3.3540154E-3 | 2.5627725E-4 | 1.9621987E-6 ¡ 7.3003206E-8 0.36036 to 0.06831 | 3.3539264E-3 | 2.5609446E-4 | 2.0829210E-6 | 4.6045930E-8 0.06831 to 0.01872 | 3.3368620E-3 | 2.4057263E-4 | -2.6687093E-6 | -4.0719355E-7 Ụ
Áp dụng công thức trên và bộ hệ sô đã cho thì kết quả thu được sẽ chính
là nhiệt độ cân đo
Chương trình thực hiện đo nhiệt độ trên hai kênh từ một ADC:
JJ*YYEEECEEEkXEEOEBOESOIOECEE-IOE-KEXCIOECECHECEHOEEEIOICICECECICEOICICEIOCEIOIOESCECIOEXEIOECEAOEIOECEHOIO
void Mes_dew_tem(void) { BYTE i;
int V0,V1,V2,V3; // Voltage measure
float rR; // Resistance real measure
Trang 18Phòng Công nghệ Tự động hố- Viện Cơng nghệ thơng tin Đề tài KC-03-20 //Findout suitable coefficients Rnom = (float)rR/R25; rLogR = log(Rnom); i=0; while(Range[i] > Rnom){ Ar = Afi); Br = BỊ]; Œr = CỊI]; Dr = DỊ; 1+t; } //Temperature with SteinHart-Hart equation rT =( 1Art(Br*rLogR)+(Cr*pow(rLogR,2))+(Dr*pow(rLogR,3)) ))-273.15; Cur_Dew = (double)(rT); } J [FEAR A AE 8 RA A AE OH HR HR HR RE CR RR BK RH AE HE EE HC A A Ak HH HH
Kết quả trả về là hai giá trị nhiệt độ hiện tại Cur_Tem và Cur_Dew
2.1.2 NHAN LENH TU NUT BAM VA DIEU KHIEN TU XA
Cả nút bấm và đầu nhận infrared đều có trạng thái thường cao Vì vậy cả
hai đều có thể sử dụng ngắt GPIO dạng falling edge dé nhận dang
Với nút bắm thì khi có ngat falling edge cia đầu vào nút bấm thì nó sẽ xử lí lệnh Botton_Power Can thiệp thanh ghi lệnh dựng cờ báo Botton_Power
Cũng như vậy, đầu thu hồng ngoại cũng được giao diện qua ngắt GPIO Tuy nhiên, ngắt GPIO mới là bắt đầu của quá trinh nhận dạng lệnh từ remote control : Nguyên lý của lệnh từ điều khiển từ xa: 400 us 200 us GOO us 200 us 500 us
Start bit bit 0 bit 1
Nguyên lí trên có đặc điểm là: Nếu ta sử dụng một bộ đếm để đếm được
khoảng hạ thấp của cdc bit và qui đối theo thời gian thì có thể xác định được bit
Trang 19
Phòng Công nghệ Tự động hoá- Viện Công nghệ thông tin
Đề tài KC-03-20
start, bit 0, bit 1, hơn nữa số bit số liệu sẽ chủ động được chứ không giới hạn 6 8 bit Phu thuộc theo giới hạn của tập lệnh điều khiển Do yêu cầu của tập lệnh
điều khiển trong ứng dụng này, độ dài lệnh là 8 bit được lựa chọn, 8 bịt đủ đáp ứng cho độ của tập lệnh
Giải thuật: Sử dụng một ngất GPIO dé nhận diện sự bắt đầu khoảng ha
thấp của mối bit, đồng thời một counter được kích hoạt để đếm độ rộng của
khoảng lặng đó (thường chọn tần số đếm ở 38 kHz) Khi kết thúc khoảng lặng
thi dung ngắt counter dé nhận lại giá trị counter, đựa vào đó để nhận diện đó là
bit 0 hay 1 Bat đầu tir bit start đến khi đếm đủ tổng số 9 bit (ké ca start bit) thi
có được một lệnh hoàn chỉnh và chuyển cho module xử lí lệnh Remote Control, Botton Interrupt GPIO int of Botton Port nose GPIO int of !R Port PowerTimerReg Buzzer, Led, Temvalue Bit 0, Bit 1: 1+=1 Start_bit: i= 1 CommandReg = PowerTimerReg = Buzzer, Led, Temvalue
Tuy nhiên nếu xử lí trực tiếp lệnh trong ngắt sẽ làm cho ngắt quá dài và có
thể làm chương trình trở nên không ổn định Chính vì vậy có thể dựng cờ báo
lệnh để chương trình xử lí ngoài vòng ngắt Nhưng nếu hết một vòng quét
chương trinh mới xử lí cờ lệnh thì lại quá lâu, có thé là các lệnh chưa kịp xử lí đã
Trang 20
Phòng Cơng nghệ Tự động bố- Viện Công nghệ thông tin
Đề tài KC-03-20
bị lệnh khác chèn vào Để khắc phục, module kiểm tra cờ lệnh và xử lí lệnh sẽ được cài vào rải rac trong các quá trình khác đề xử lí đan xen trong chương trình Tăng tính kịp thời của vấn đề xử lí lệnh lên bằng cách tăng số lần kiểm soát trong một chu kì quét của chương trình
Chương trình ngắt GPIO kiểm tra và kiểm tra nguồn ngắt (Botton / Infrared) để chuyển tiếp chương trình:
đjPE XE XS XE E SE SE đc 4E 4O Ác 4C SH SCSE đt Ác 4C dc SE 4C OR ICICI AICI EER HK
Trang 21Phòng Công nghệ Tự động hố- Viện Cơng nghệ thơng tin
Đề tài KC-03- 20
Chương trình ngắt GPIO đã khởi động bộ đếm timer khi nguồn ngất là
infrared Khi hệt khoảng lặng của bit ngắt Capture của bộ đêm được kich hoạt đề sử lí
Trang 22Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin Đề tài KC-03-20 RETURN: or reg[INT_MSKO0], INT_MSK0_GPIO or reg{INT_MSKO], INT_MSK1_DCB03 ‘or reg[INT_MSK0], INNT_MSK0 SLEEP nop call _Timer8_Stop pop xX pop A reti
| PERRO ARICA ROIIOO I IE IOC RIOR ICICI AICI ICI RCI ICICI ICICI AA ICR AR A AE
Trong quá trinh xử lí ngắt cho Infrared tất cả các ngắt khác: GPIO Int, Real Time Int, Sleep Timer Int sẽ bị khoá và chỉ được mở lại khi đã thực hiện xong ngắt này để tránh tranh chấp ngắt gây sai lệch số liệu thu được
Giá trị mã lệnh thu được sẽ được xử lí trong module ngoài ngắt remote_control() dé tránh làm ngắt quá dài
2.1.3 BONG HO THOI GIAN THUC VA WATCHDOG TIMER
Đồng hồ thời gian thực dùng đếm thời gian hệ thống Nguyên li thực hiện lả dùng một counter đếm và dùng ngất counter dé tang giá trị thời gian sau mỗi lần ngắt Giá trị thời gian đếm được sẽ được xử lí trong các module chính giải quyết về giải thuật xử lí thời gian
Chương trình phục vụ ngắt thời gian rất đơn giản: -
(JE XS X CEC IA IEICE dt ĐC s 4c SE dc + SE ok se 4 4d £ €4 4 ĐC X 4k tế
RealTime Clk_ISR:
;@PSoC_UserCode_BODY@ (Do not change this line.)
Trang 23Phòng Công nghệ Tự động hoá- Viện Công nghệ thông tin Dé tai KC-03-20 ; Insert your custom code above this banner :@PSoC_UserCode_END@ (Do not change this line.) reti
| [A HAIR AAA RAR AA EAR RATA AREER A IIA TO TO IE TC AACE ACAI TCA HEA TAA A AR A AH A OA
Ngắt Sleep Timer có tính chất chu kì tương tự khi chọn nó ở tan sé 1 Hz,
tuy nhiên không thể sử dụng ngắt này cho đồng hồ thời gian thực với độ chính xác cao, vì ngắt này có mức độ ưu tiên thấp nhất, dễ bị làm sai lệch bởi các ngắt khác Tuy nhiên đây là ngắt cần thiết dùng cho WatchDog WatchDog sẽ tự động reset hệ thống khi vì một lí do nào đó mà hệ bị treo (chương trinh lỗi, nhiễu loạn ) Khi hệ thống bị time_out khoảng 3 chu kì sleep timer mà không Clear WatchDog thi hé thống sẽ auto reset Day là một tính chất cần có dé hệ thống có thể chạy ôn định mà tránh phiền phức nhất cho người sử dụng
Chương trình Watch Dog được ghép với ngắt Sleep Timer Int:
(PS SE CE # Ệ É đc đc 4€ CC SE 4CSE RIGGS OCICS ISIC ICCC ACI AG ICI HC IO IK ia] ka ok
SleepTimer_ISR:
Trang 24Phòng Công nghệ Tự động hố- Viện Cơng nghệ thơng tin
Đề tài KC-03-20
2.2 CAC MODULE DIEU KHIEN DAU RA
2.2.1 CAC DEN CHi THI, QUAT GIO VA MAY NEN
Các đèn chỉ thị có công suất nhỏ nên được điều khiến trực tiếp mà không
cần sử dụng tới tầng đệm công suất Tuy nhiên, đèn được treo ở mức thường cao cho nên đề bật đèn ta cần đưa chân điều khiển về mức thấp Điều khiển theo mức logíc ngược Ưu điểm của phương thiết kế mạch điều khiển thường cao là giảm tải cho các chân điều khiển của mC Đầu ra chỉ tiêu công suất khi chân điều khiển hạ xuống mức thấp, chính vì vậy giảm tải cho mC, nếu trong trường hợp công suất tiêu hao khi mức điều khiến cao thì có thể xảy ra trường hợp mức áp duy trì không đủ, non áp khi đầu ra cần một công suất tương đối Tuy nhiên, điêu đó chỉ có ý nghĩa khi cần giao tiêp ngoài với mức logic cần ôn định, và với các mC có công suất tải trên các chân không được tốt Đối với PSoC cũng như
trong trường hợp điều khiển LED chỉ thị thì điều này không có nhiều ý nghĩa vì
công suất tải của PSoC rất tốt cũng như mức logic đối với LED là không quân
trọng
Chương trình điều khiển LED chỉ thị đầu ra khá đơn giản:
_ PRR XE co E SE ức ác c 4oEcC Rk kak a oo oe ook ake a fe aco a fk fa a ok of aa a MP doc đc #define timer_led (0x02) z #define economic_led (0x08) ⁄ #define mightness led (0x20) #define power_led (0x80) #define all_led (OxAA) Ht void LedOff(BYTE IDL) { PRTIDR |= IDL; } it
void LedOn(BYTE IDL) {
PRTIDR &= ~IDL; }
[PERRO IO ICICI ICO Ác dc Ác c đc SE 4c 4c 4 Ác ĐC St kc đo dc I CK Ác đe ẹ đc A f dc ICR IK ae
Các đầu ra điêu khién relay dong cat dong co quat gió và động cơ nén đòi hỏi công suất điều khiển lớn hơn, chính vì vậy cần có tầng đệm công suất
Trang 25
Phòng Công nghệ Tự động hoá- Viện Công nghệ thông tin
Đề tài KC-03-20
Đệm công suất ở đây sử dùng IC ULN2003, IC này có thể chịu dòng tới
500 mA, đầu ra đảo(hỉnh vẽ) Do đó mặc dù các relay cũng được treo thường cao nhưng lại được điều khiển theo mức logic thông thường, mức cao sẽ đóng
relay
Cả động cơ nén và động cơ quạt gió đều là loại động cơ AC Động cơ nén chỉ có một cấp độ duy nhất tuy nhiên động cơ quạt gió có 3 cấp độ khác nhau Có thể thay đổi được tốc độ nhờ 3 cấp độ đó có số vòng dây khác nhau Nên cần điều khiển 4 trạng thái cho máy nén và quạt gió
Chương trình điều khiển đóng cắt quạt gió và máy nén thông qua điều
khiển các relay rất đơn giản chỉ là điều khiển các trạng thái cổng đầu ra
[PEACE SIO IO IOI IOI ICI cá Íc ác Ác dd dc đc dc dc CÁ c dc dc oe oe oe eee ee de ke fe ak ae ka #define fan_low #define fan_medium #define fan_high #define compressor #define fan_all #define fan_comp 1B 2B 3B 4B 5B 6B 7B 16 15 14 13 12 1 10 Diện ULN20034 (0x01) (0x04) (0x10) (0x40) (0x15) (0x55) If
void FanOn(BYTE IDF){
Trang 26Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin Đề tài KC-03-20 PRT2DR |= IDF; } it void FanOff(BYTE IDF) { PRT2DR &= ~IDE; } Of [RP a ee ee ee oe Re of ee eo ee Ế SE dẸ Ệ E dự sÉ dỆ tệ đệ dc đ sk đệ E sÉ É AE 2E dE SE dự dế d ee ee cứ d dế dế dịc Ác dE 4 2E s Á€ XE ÚC
Cần đảm bảo các relay điều khiển động cơ quạt gió không được cùng đóng nhiều hơn 1 trạng thái Động cơ máy nén cần được chú ý vì nó ít thay đôi trạng thái hơn quạt gió nhưng không được khởi động nhiều lần với thời gian quá ngăn vì có thê làm tăng ap trong máy nén gây nguy hiểm
2.2.2 ĐỘNG CƠ ĐẢO CÁNH GIÓ
Trang 27Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin
Đề tài KC-03-20
Điều khiển động cơ bbước là sự điều khiển phối hợp các pha A,B,C,D
sao cho động cơ quay, có chiều và tốc độ như ta mong muốn Ưu điểm của động cơ bước là:
+ Độ chính xác cao trong điều khiển chuyên dộng + Không cần sensor tốc độ
+Độ ổn định cao, không có những điểm mất ôn định nghiêm trọng
Trang 28Phòng Công nghệ Tự động hoá- Viện Công nghệ thông tin Đề tài KC-03-20 +Bước 3: +Bước 4:
Trang 29Phòng Cơng nghệ Tự động hố- Viện Công nghệ thông tin Đề tài KC-03-20 Bước 3: Bước 4: Phương pháp này có độ phân giải thấp nhất Nhưng khả năng ỗn định vị trí là tot nhat
+ HALF STEPPING — COMBINATION OF WAVE AND FULL STEPPING:
Trang 31Phòng Cơng nghệ Tự động hố- Viện Công nghệ thông tin Đề tài KC-03-20 Bước 8: al # Ie fi
Phương pháp này có được sự ưu việt của cả hai phương pháp trên Ôn định
ở tốc độ cao, momen lớn Độ phân giải tốt
Trong trường hợp muốn quay ngược lại đảo lại các bước cũng theo thứ tự trên Đúng với cả ba phương pháp
Chương trình điều khiên động cơ:
Động cơ đảo cánh gió được điều khiển theo phương pháp thứ ba là phương pháp có nhiều ưu điểm nhất Với chương trình điều khiển thực hiện cho cả hai chiều xuôi và ngược chiều kim đồng hồ /E XE SE HCXETE ĐC dc dc đc Ác Úc dc đc 4E ST Í co TE SE ck scare ok fi ae Ca ek ak ak i a A Ca #define step_motor_0 (0x01) #define step_motor_1 (0x04) #define step_motor_2 (0x10) #define step_motor_3 (0x40) #define step_motor_all(0x55) Ne void LouverUp(INT Pos, BYTE Speed) {
Trang 32Phòng Công nghệ Tự động hố- Viện Cơng nghệ thơng tin Đề tài KC-03-20 module_delay_l(Speed); PRTIDR &= ~step_motor_1; module_delay_1(Speed); PRT1DR |= step_motor_3; module_delay_l(Speed); PRTIDR &= ~step_motor_2; module delay l(Speed); Louver_Pos++; } Louver _Pos ; PRTIDR &= ~step motor_ all; } it
Trang 33Phòng Công nghệ Tự động hố- Viện Cơng nghệ thơng tin
Đề tài KC-03-20
PRTIDR &= ~step_motor_all;
} [PRA RAE He A A A AR of A EE EE ee FE 2 FF BB A ACA A ee EH Hee Oh A A a HH Chương trình thực hiện các bước điều khiển như nguyên lí đã xây dựng Cần xử lí thêm việc ngắt toàn bộ pha của động cơ khi ra khỏi module điều khiển nảy Để tránh bị nóng động cơ Do quá trinh đảo cánh gió là quá trình kéo đài và liên tục nên quá trình này được chia nhỏ và xử lí từng phần nhỏ trong ca chu kì vòng quét, đồng thời phải lưu lại thông tin về vị trí và hướng quay cho lần hoạt động tiếp theo
2.2.3 MODULE DIEU KHIỂN LOA TÍN HIEU
Trang 34Phòng Công nghệ Tự động hoá- Viện Công nghệ thông tin
Đề tài KC-03-20
2.3 CÁC MODULE XỬ LÝ THUẬT TOÁN CHƯƠNG TRÌNH CHÍNH 2.3.1.MODULE XỬ LÝ THỜI GIAN
Module xử lí thời gian dùng cập nhật thời gian, xử lí các khoảng thời gian
hẹn giờ bật tắt, xử lí khoảng thời gian bắt đầu bật máy và thời gian bắt đầu tắt
máy phục vụ cho vấn để giải quyết các thuật toán bật/tắt máy Cập nhật thời gian hệ thông để phục vụ các module khác
Tuỳ theo trạng thái của máy là đang bật hay tắt máy mà có các thông số
cần cập nhật khác nhau Dựa vào đó có thể chia ra hai dang cap thời gian khi
Trang 35Phòng Công nghệ Tự động hố- Viện Cơng nghệ thơng tin Đề tài KC-03-20 Chương trình; [PRISE O ICI TSCA RICCI TEI ACAI ICR ARR IO ACR ICICI I RO OR AACR A I I A HHA AA AH HR void On_Update_time(void){ if (ticktack != 0){ Cur_Time += ticktack; if(Cur_Time > 0x15179){ Cur_Time = 0; } if ((Command_Reg 2 & Power_start) != 0){ Run_Time -= ticktack; if ((Run_Time > OxFF)|(Run_Time < 1)){ Command_Reg 2 &=~Power_start; } } if (Power_Timer_Reg & Sleep_timer) != 0){ Set_Time_ Of -= ticktack; if ((Set_Time_Off > 0x8CA0)|(Set_Time_Off < 0x01)){ asm("nop"); Power_Timer_Reg &= ~Sleep_timer; code_value = 0x02; Power_Timer_Reg |= Remote_flag; } } if (Power_Timer_Reg & Mightiness) != 0){ if (HiPower_Time > Cur_Time){ HiPower_Time = Cur_Time; } if (Cur_Time - HiPower_Time > 900){ code_value = 0x1A; > Power_Timer_Reg |= Remote_flag; 7 } } ticktack = 0; } return; }
//Y* X#E XI ®# XE 4CSE SE K É 44C 4 4E SE S SE fE 4E c4 € c E Úc đc ck dc đc E c SE E St E SE c E4 +
Đối với module offime update dùng khi máy ở trạng thái tắt thì không cần cập nhật thời gian hẹn giờ tắt nữa, nhưng thay vì đếm khoảng thời gian bắt đầu
mở máy thì đếm ngược khoảng thời gian bắt đầu tắt máy
Trang 37
Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin
De tai KC-03-20
2.3.2 CAC MODULE XU LY CHE DO HOAT DONG 2.3.2.1 MODULE XU LY CHE DO CHO SPEED
Speed của quạt gió có các chế độ chạy:
Xx "AUTO - HIGH - MEDIUM - LOW —”
«+
Trong đó chỉ chế độ Auto là có cách chạy biến đổi:
° AUTO: Ở chế độ này quạt gió sẽ chạy lúc mạnh lúc yếu mô phỏng như gió trời, cứ sau 10 phút tốc độ quạt lại được thay đổi theo chu ki: High - Medium — Low
e HIGH, MEDIUM, LOW: G cac chế độ này tốc độ quạt là xác
định và được duy trì ôn định
Vì vậy xây dựng chế độ phức tạp hơn các chế độ điều khiển trực tiếp kia
đôi chút và có dựa vào thời gian hệ thống đề xử lí
Trang 38Phòng Cơng nghệ Tự động hố- Viện Công nghệ thông tin Đề tài KC-03-20 FanOn(fan_low); retum; } Fan Time = Cur_Time; J [RRR IR I I TH A HR HE XS dc HE A A ee He ee he eR Be ee ee ke Ae ko ae
Các chế độ của quạt gió sẽ được điều khiển qua module chuyên trách Fan Mode Module nay kiém tra thanh ghi xác định các chế độ đặt của quạt gió từ
đó đưa ra quyết định điều khiển Sơ đỗ chương trình: Start Fan Mode Ỳ Reading Command for select mode t t Auto High Med Low ỳ Ỳ ! ! 10" FanOn(fan_high) 10" FanOn(fan_medium) FanOn(fan_high) FanOn(fan_medium) - FanOn(fan_low) 10° 10” FanOn(fan_low) oe eS’
Chương trình lựa chọn chế độ chạy
Trang 39Phòng Công nghệ Tự động hố- Viện Cơng nghệ thông tin Đề tài KC-03-20 if (Command_Reg_1 & Speed_medium) != 0){ FanOn(fan_medium); Fan_ Time =0; return; } if (Command_Reg_1 & Speed_low) != 0){ FanOn(fan_low); Fan_Time =0; return; } FanOff(fan_all); } | fA Ae Re ke A eRe He AR A Ee ee A SE 4E Ý ĐC E Đ + A A OR É %
2.3.2.2 MODULE XU LY CHE DO CHO OSCILATION
Oscilation là chức năng thực hiện việc đảo cánh gió Có thể có các chế độ đảo cánh gió sau :
& AUTO - CONTINUOUS - STOP —™
y «
Cửa gió được chia ra 6 vị trí Vị trí đóng hết, mở hết và 4 vị trí trung gian Khi tắt mày cánh gió luôn ở vị trí đóng hết
Cánh đảo gió được điều khiển ở 3 chế độ và theo các vị trí trên:
° AUTO: Ở chế độ này cánh gió sẽ đảo kép sắc vị trí Sau khi cánh gió được mở ra khỏi vị trí đóng hết sẽ đảo theo trình tự: từ vị trí 1 lên 3, xuống 2, lên 4, xuống 3, lên 5, sau đó trong quá trình xuống sẽ đảo ngược lại cũng như vậy Như vậy trong một quá trình lên hoặc xuống mỗi vị trí thường được đảo qua 2 lần tạo ra những luồng gió có cường độ thay đổi như gió trời chứ không rải đều như ở chế độ liên tục Cánh gió sẽ đảo theo chu kì 3 phút chạy, 1 phút dừng
e CONTINUOUS: Ở chế độ này cánh gió sẽ đảo đều và liên tục từ
trên xuống dưới từ vị trí I lên 5 và ngược lại
° STOP: Khi nhận được lệnh này, cánh dao gid sé dimg 6 1 trong 5 vi trí gần nhất tuỳ thuộc theo quá trính đang đảo lên hay xuống
Sơ đồ giải thuật : (next page)