Professional Documents
Culture Documents
Báo Cáo Đồ Án Đo Lường Và Điều Khiển Tự Động
Báo Cáo Đồ Án Đo Lường Và Điều Khiển Tự Động
I HC KHOA HC HU
KHOA IN T - VIN THNG
------
BO CO MN HC:O LNG V
IU KHIN T NG
ti: iu khin ng c bc bng b KIT PIC V4
Bo co n o lng v iu khin t ng
Page 1
MC LC
Page 2
Bo co n o lng v iu khin t ng
Page 3
Bo co n o lng v iu khin t ng
Page 4
Bo co n o lng v iu khin t ng
Page 5
1a: + 0 0 + 0 0 + 0 0
1b: 0 + 0 0 + 0 0 + 0
2a: 0 + 0 0 + 0 0 + 0
2b: 0 0 + 0 0 + 0 0 +
=>Thi gian=>
1a: + + + + + +
1b: + + + + + +
2a: + + + + + +
2b: + + + + + +
=>Thi gian=>
Bo co n o lng v iu khin t ng
Page 6
Bo co n o lng v iu khin t ng
Page 7
L loi kt hp gia STEP t thng thay i v loi nam chm vnh cu. Rotor cho
ng c STEP lai c nhiu rng, ging nh loi t thng thay i, cha li t ha
trn ng tm xoay quay trc ca n. Rng ca rotor to ng dn gip nh
hng cho t thng u tin vo trong l khng kh.
STEP lai hot ng ging nh loi n cc v lng cc.
Mch iu khin n gin:
Bo co n o lng v iu khin t ng
Page 8
Page 9
Bc 2: 1100
Bc 3: 1001
Bc 4: 0011
4.1.2.iu khin Na bc:
iu khin ng c quay na bc, th t cc xung cp vo cc cun dy nh
sau (th t t tri sang phi: cun 1 ->...-> cun 4 cun 1 ->...-> cun 4)):
Bc 1: 0110 1110
Bc 2: 1100 1101
Bc 3: 1001 1011
Bc 4: 0011 0111
Khi iu khin na bc, ng c s chy mt hn so vi khi chy FULL bc.
4.2.S v nguyn l hot ng ca ng bc trn KIT:
4.2.1.S :
Bo co n o lng v iu khin t ng
Page 10
- Khi IC ULN2003:
Bo co n o lng v iu khin t ng
Page 11
Page 12
Page 13
{
/*
Che do FULL buoc: i<4
Che do Nua buoc: i<8
*/
for(i=0;i<8;i++)
{
//DONGCO=QUAY_THUAN_FULL[i]; // Che do Full buoc
DONGCO=QUAY_THUAN_HALF[i]; // Che do nua buoc
delay_ms(5);
}
}
}
Bo co n o lng v iu khin t ng
Page 14
Page 15
3. LCD1602
4. Giao Tip IR
5. Nhit DS18B20
6. ADC
7. Led Matrix
8. UART
9. DS1307 ( Thi Gian Thc)
10. EEPROM 24C02
11. o Tn S 555
12. KeyBoard 4x4
13. Relay
14. Ci Chip
15. CAN MCP2510
16. iu Khin ng C Bc
Page 16
Trong :
-
2.1.2.Hot ng ca IC 74LC138:
- a d liu nh phn 3bit vo C, B, A(LSB), ly d liu ra cc ng O0 n
O7; ng cho php E2 v E3 t mc thp, ng cho php E1 t mc cao.
Chng hn khi CBA l 001 th ng O1 xung thp cn cc ng cn li mc cao.
Page 17
Page 18
2.3.PIC 16F877A:
2.3.1.Gii thiu:
PIC 16F877A l loi vi iu khin 8bit tm trung ca hng microchip.
- PIC 16F877A c kin trc Havard, s dng tp lnh kiu RISC (Reduced
Instruction Set Computer) vi ch 35 lnh c bn.
- Tt c cc lnh c thc hin trong mt chu k lnh ngoi tr cc lnh r nhnh.
- S chn vi chip loi cm 40 chn:
Bo co n o lng v iu khin t ng
Page 19
Page 20
Page 21
2.4.1.S mch:
2.4.2.Nguyn l lm vic:
- Ma trn phm gm 9 phm bm nn ta c 9 trng hp bm phm n gin ha
ta bm t SW1-SW9. Lc mch ma trn phm hot ng theo nguyn l sau.
Nhn SW1: chn RB0 = 0 chn RB0 c kch hot nhng do c in tr R1 nn
gi tr nhn vo s mc thp, ngc li RB5 = 1, cc chn RB1,2 = 1, RB3,4 = 1.
Gn gi tr sau khi nhn l X th X s bng X1 = 011001YY (Trong YY l 2
chn RB6,7 gn gi tr xut qua LED).
Nhn SW2: tng t ta c chn RB0 = 0 , chn RB4 = 1, cc chn RB1,2 = 1,
RB3,5 = 0. V X2 = 011010YY
Nhn SW3: tng t ta c gi tr X3= 011100YY
Nhn SW4: X4= 101001YY
Nhn SW5:X5 = 101010YY
Nhn SW6:X6= 101100YY
Nhn SW7:X7= 110001YY
Nhn SW8:X8= 110010YY
Nhn SW9:X9= 110100YY
Bo co n o lng v iu khin t ng
Page 22
Bo co n o lng v iu khin t ng
Page 23
Phn mm bao gm 2 chng trnh: ISIS cho php m phng mch v ARES dng
v mch in. Proteus l cng c m phng cho cc loi Vi iu Khin kh tt, n
h tr cc dng VK 8051, AVR, PIC, dsPIC, ARM ... cc giao tip I2C, SPI,
CAN, USB, Ethenet,... ngai ra cn m phng cc mch s, mch tng t mt
cch hiu qu.
Bo co n o lng v iu khin t ng
Page 24
4.1.Code
4.1.2.Code ma trn phm:
#include "key3x3/key3x3.h"
.................... * Ten Tep
key3x3.h
....................
******************************************************************
************
.................... #define
KEY3X3_COL1
PINB_0
.................... #define
KEY3X3_COL2
PINB_1
.................... #define
KEY3X3_COL3
PINB_2
.................... #define
KEY3X3_ROW1
PORTB_4
.................... #define
KEY3X3_ROW2
PORTB_5
.................... #define
KEY3X3_ROW3
PORTB_6
....................
******************************************************************
************
.................... **/
....................
.................... #ifndef __KEY_3X3_H
Bo co n o lng v iu khin t ng
Page 25
74ls138.h
: Khong.
....................
******************************************************************
**************/
.................... void LS138_Out(uint8_t Point);
.................... #endif
Bo co n o lng v iu khin t ng
Page 26
#use fast_io(b)
#byte portb=0x6
#use fast_io(d)
#byte portd=0x8
Void hien_thi();
Page 27
while(1)
{
for(i=0;i<=9999;i++)
{
for(k=0;k<=50;k++)
{
hien_thi();
}
}
}
}
Void hien_thi()
{
ng= i/1000;
tr= (i%1000)/100;
ch= (i%100)/10;
dv= i%10 ;
portb=(font[dv]);
portd=(0x01);
delay_us(1000);
portd=(0x00);
Bo co n o lng v iu khin t ng
Page 28
portb=(font[ch]);
portd=(0X02);
delay_us(1000);
portd=(0x00);
portb=(font[tr]);
portd=(0x04);
delay_us(1000);
portd=(0x00);
portb=(font[ng]);
portd=(0X08);
delay_us(1000);
portd=(0x00);
}
4.1.4.Code khai bo PIC 16F877A:
.................... #include <16F877A.h>
.................... //////// Standard Header file for the PIC16F877A device ////////////////
.................... #device PIC16F877A
.................... #list
....................
.................... #device*=16 adc=10
....................
.................... #FUSES NOWDT
Bo co n o lng v iu khin t ng
Page 29
.................... #FUSES HS
(>10mhz for PCD)
//No EE protection
Page 30
bit;
int8_t;
int16_t;
int32_t;
....................
.................... /* Kieu So Nguyen Khong Dau */
.................... typedef unsigned
int uint8_t;
long uint16_t;
float32_t;
....................
.................... #include "DEF_16F877A.h"
Bo co n o lng v iu khin t ng
Page 31
.................... /**
....................
******************************************************************
************
Khai bao, dinh nghia mot so thah ghi cho PIC16F877A
= 0x05
= 0x06
= 0x07
= 0x08
= 0x09
= 0x05
= 0x06
= 0x07
= 0x08
= 0x09
= 0x85
= 0x86
= 0x87
= 0x88
Bo co n o lng v iu khin t ng
Page 32
= 0x89
.................... /*********************PORTA**********************/
.................... #bit PORTA_5
= PORTA.5
= PORTA.4
= PORTA.3
= PORTA.2
= PORTA.1
= PORTA.0
= PINA.0
= PINA.1
= PINA.2
= PINA.3
= PINA.4
= PINA.5
= DDRA.0
= DDRA.1
= DDRA.2
= DDRA.3
= DDRA.4
.................... /*********************PORTB**********************/
.................... #bit PORTB_7
= PORTB.7
= PORTB.6
= PORTB.5
Bo co n o lng v iu khin t ng
Page 33
= PORTB.4
= PORTB.3
= PORTB.2
= PORTB.1
= PORTB.0
= PINB.7
= PINB.6
= PINB.5
= PINB.4
= PINB.3
= PINB.2
= PINB.1
= PINB.0
= DDRB.0
= DDRB.1
= DDRB.2
= DDRB.3
= DDRB.4
= DDRB.5
= DDRB.6
= DDRB.7
.................... /*********************PORTC**********************/
.................... #bit PORTC_7
= PORTC.7
Bo co n o lng v iu khin t ng
Page 34
= PORTC.6
= PORTC.5
= PORTC.4
= PORTC.3
= PORTC.2
= PORTC.1
= PORTC.0
= PINC.7
= PINC.6
= PINC.5
= PINC.4
= PINC.3
= PINC.2
= PINC.1
= PINC.0
= DDRC.0
= DDRC.1
= DDRC.2
= DDRC.3
= DDRC.4
= DDRC.5
= DDRC.6
= DDRC.7
Bo co n o lng v iu khin t ng
Page 35
.................... /*********************PORTD**********************/
.................... #bit PORTD_7
= PORTD.7
= PORTD.6
= PORTD.5
= PORTD.4
= PORTD.3
= PORTD.2
= PORTD.1
= PORTD.0
= PIND.7
= PIND.6
= PIND.5
= PIND.4
= PIND.3
= PIND.2
= PIND.1
= PIND.0
= DDRD.0
= DDRD.1
= DDRD.2
= DDRD.3
= DDRD.4
= DDRD.5
Bo co n o lng v iu khin t ng
Page 36
= DDRD.6
= DDRD.7
.................... /*********************PORTE**********************/
.................... #bit PORTE_2
= PORTE.2
= PORTE.1
= PORTE.0
= PINE.2
= PINE.1
= PINE.0
= DDRE.0
= DDRE.1
= DDRE.2
#define DDR_OUT
.................... #endif
.................... #ifndef DDR_IN
....................
#define DDR_IN
.................... #endif
.................... #endif
Bo co n o lng v iu khin t ng
Page 37
Bo co n o lng v iu khin t ng
Page 38
Bo co n o lng v iu khin t ng
Page 39
Page 40
chuc=dem/10;
dv=dem%10;
for(j=0;j<=100;j++)
{
output_d(0xbf);
output_c(MA7DOAN[dv]);
delay_us(1000);
output_d(0xdf);
output_c(MA7DOAN[chuc]);
delay_us(1000);
output_d(0xef);
output_c(MA7DOAN[tram]);
delay_us(1000);
output_d(0Xf7);
output_c(MA7DOAN[nghin]);
delay_us(1000);
}
dem=gian;
}
}
}
Bo co n o lng v iu khin t ng
Page 41
Bo co n o lng v iu khin t ng
Page 42
Page 43
Bo co n o lng v iu khin t ng
Page 44
Page 45
- Nhng thit b tiu th cng sut thp (v d: chut, bn phm, loa my tnh
cng sut thp...) c cung cp in nng cho hot ng trc tip t cc
cng USB m khng cn c s cung cp ngun ring (thm ch cc thit b
gii tr s nh SmartPhone, PocketPC ngy nay s dng cc cng USB
sc pin). Vi cc thit b cn s dng ngun cng sut ln (nh my in, my
qut...) khng s dng ngun in t ng truyn USB nh ngun chnh
ca chng, lc ny ng truyn ngun ch c tc dng nh mt s so snh
mc in th ca tn hiu. Hub c th c ngun cp in ring cp in
thm cho cc thit b s dng giao tip USB cm vo n bi mi cng USB
ch cung cp mt cng sut nht nh.
- Nhng thit b USB c c tnh cm nng, iu ny c ngha cc thit b c
th c kt ni (cm vo) hoc ngt kt ni (rt ra) trong mi thi im m
ngi s dng cn m khng cn phi khi ng li h thng.
- Nhiu thit b USB c th c chuyn v trng thi tm ngng hot ng
khi my tnh chuyn sang ch tit kim in.
3.2.Cu to ca USB:
3.2.1. u cm USB:
Bo co n o lng v iu khin t ng
Page 46
Bo co n o lng v iu khin t ng
Page 47
Bo co n o lng v iu khin t ng
Page 48
Bo co n o lng v iu khin t ng
Page 49
Page 50
#bit p1 = t1con.1
#bit p2 = t1con.2
#bit p3 = t1con.3
#bit p4 = t1con.4
#bit p5 = t1con.5
#bit b0 = portb.0
#bit b1 = portb.1
#bit b2 = portb.2
#bit b3 = portb.3
#bit b4 = portb.4
#bit b5 = portb.5
#bit c0 = portc.0
#bit c1 = portc.1
#bit c2 = portc.2
#bit c3 = portc.3
#bit c4 = portc.4
#bit c5 = portc.5
#bit d1 = portd.1
#bit d2 = portd.2
#bit d3 = portd.3
#bit d4 = portd.4
#bit d5 = portd.5
#bit e1 = porte.1
#bit e2 = porte.2
Int16 value,speed; //KHAI BIEN TOAN CUC
Int8 sansang,Hngan,Htram,Hchuc,HDonVi,x,data,tam,i;
char z;
#Int_rda //data nhan tu rs232 san sang
void ngat1()
{
z = getc();//nhan du lieu z
if(z!='a' && z!='b' && z!='c' && z!='d' && z!='e' && z!='f') // z khac a,b,c..
Bo co n o lng v iu khin t ng
Page 51
{
data= z;
if(c3 == 0 && e1 ==0)//kiem tra quay thuan va quay nghich
{
c3 = 1;
e1= 0;
setup_ccp2(ccp_pwm); // xuat xung pwm2 ra chan c1
set_pwm2_duty(x);//x=m,Th=m*gia tri chia tan
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);// cho chan c2 ve muc thap( dong co quay thuan)
setup_timer_2(t2_div_by_4,255,1);
}
if(c3 == 1 && e1 ==0)//kiem tra nut nhan
{
setup_ccp2(ccp_pwm);
set_pwm2_duty(x);
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
while(true);
}
if(c3 == 0 && e1 == 1)
{
setup_ccp1(ccp_pwm);
set_pwm1_duty(x);
setup_ccp2(ccp_pwm);
set_pwm2_duty(0);
setup_timer_2(t2_div_by_4,255,1);
while(true);
}
}
else
{
if(z = 'f')
Bo co n o lng v iu khin t ng
Page 52
{
z=0;
sansang = !sansang;
if(sansang ==1)
e2 = 1;
else
{
e2 = 0;
c3 = e1 = 0;
setup_ccp2(ccp_pwm);
set_pwm2_duty(0);
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
x = 10;
while(true);
}
}
}
}
#INT_TIMER0 //ngat timer 0
void ngat()
{
value = (timer1h*256)+(timer11%256);
set_timer0(15280);
timer11 = 0;
timer1h = 0;
p1 = 1;
p2 = 0;
p3 = 0;
p4 = 0;
p5 = 0;
p0 = 1;// ON
congat = 0;
Bo co n o lng v iu khin t ng
Page 53
}
Void hienthi();
Void main()
{
enable_interrupts(INT_RDA);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
ext_int_edge(L_TO_H);//chon cach lay xung canh len
set_tris_b(0b111111);
set_tris_c(0b10000001);
set_tris_d(0);
set_tris_e(0b00);
portb=portc=portd=porte=0;
setup_timer_0(RTCC_DIV_256| RTCC_INTERNAL);//
set_timer0(15280);// delay 50ms
timer11 = 0;
timer1h = 0;
p1 = 1;
p2 = 0;
p3 = 0;
p4 = 0;
p5 = 0;
p0 = 1; // On
value = 0;
sansang = 0;
tam = 1;
speed = 20;
data = 20;
x = 120;
while(1)
{
speed = (value*20)/400;
Bo co n o lng v iu khin t ng
Page 54
Hchuc = speed/10;
HDonVi = speed%10;
putc(Hchuc+48);
putc(HDonVi+480);
hienthi();
if(b0==0)
{
do
{}
while(b0==0);
putc('#');
putc('4');
sansang=!sansang;
if(sansang==1)
e2=1;
else
{
e2=0;
c3 = e1 = 0;
setup_ccp2(ccp_pwm);
set_pwm2_duty(0);
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
x =10;
while(true);
}
}
if(sansang==1)
{
if(b1==0 || z=='a')
{
setup_ccp2(ccp_pwm);
set_pwm2_duty(0);
Bo co n o lng v iu khin t ng
Page 55
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
x =10;
while(true);
delay_ms(500);
z=0;
c3=1;
e1=0;
setup_ccp2(ccp_pwm);
set_pwm2_duty(x);
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
while(true);
putc('#');
putc('1');
}
if(b2=0 || z=='b')
{
setup_ccp2(ccp_pwm);
set_pwm2_duty(0);
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
x =10;
while(true);
delay_ms(500);
z=0;
c3=0;
e1=1;
setup_ccp2(ccp_pwm);
set_pwm2_duty(0);
Bo co n o lng v iu khin t ng
Page 56
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
while(true);
putc('#');
putc('2');
}
if(b3==0 ||z=='c')
{
z=0;
c3=e1=0;
setup_ccp2(ccp_pwm);
set_pwm2_duty(0);
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
while(true);
putc('#');
putc('3');
x =10;
}
if(b4==0 ||z=='d')
{
do
{
}
while(b4==0);
delay_ms(500);
if(data>=2)
data=data-1;
z= 0;
}
if(b5==0 || z=='e')
Bo co n o lng v iu khin t ng
Page 57
{
do
{
}
while(b5==0);
delay_ms(50);
x =10;
if(data<=34)
data=data+1;
z =0;
}
if(speed>data && x>=1)
{
x=x-1;
if(c3==1 && e1==0)
{
setup_ccp2(ccp_pwm);
set_pwm2_duty(x);
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
while(true);
}
if(c3==0 && e1==1)
{
setup_ccp2(ccp_pwm);
set_pwm2_duty(0);
setup_ccp1(ccp_pwm);
set_pwm1_duty(x);
setup_timer_2(t2_div_by_4,255,1);
while(true);
}
}
if(speed<data && x<=254)
Bo co n o lng v iu khin t ng
Page 58
{
x=x+1;
if(c3 ==1 &&e1 ==0)
{
setup_ccp2(ccp_pwm);
set_pwm2_duty(x);
setup_ccp1(ccp_pwm);
set_pwm1_duty(0);
setup_timer_2(t2_div_by_4,255,1);
while(true);
}
if(c3 ==0 && e1 ==1)
{
setup_ccp2(ccp_pwm);
set_pwm2_duty(0);
setup_ccp1(ccp_pwm);
set_pwm1_duty(x);
setup_timer_2(t2_div_by_4,255,1);
while(true);
}
}
}
}
}
Void hienthi()
{
For(i=0;i<=2;i++)
{
Int ht[10]={192,249,164,176,153,146,130,248,128,144};
portd=ht[Hchuc];
c5=0;
c4=1;
delay_ms(10);
Bo co n o lng v iu khin t ng
Page 59
portd=ht[HDonVi];
c5=1;
c4=0;
delay_ms(10);
}
}
Bo co n o lng v iu khin t ng
Page 60