14
TRƯỜNG ĐẠI HỌC VĂN HIẾN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Khoa Điện Tử - Viễn Thông Độc Lập – Tự Do – Hạnh Phúc ************ BÁO CÁO TIẾN ĐỘ THỰC HIỆN ĐỒ ÁN MÔN HỌC Sinh viên thực hiện : 1. Nguyễn Hoàng Hiếu MSSV: 0891020023 2. Nguyễn Phước MSSV: 0891020022 Lớp : 0891021 Khoa : Điện Tử - Viễn Thông Tên đề tài : ĐIỀU KHIỂN GÓC QUAY ĐỘNG CƠ SERVO QUA ĐIỀU KHIỂN GÓC QUAY ĐỘNG CƠ SERVO QUA RF RF I. GIAI ĐOẠN 1: Thiết kế mạch: Từ ngày 01/12/2011 đến ngày 18/12/2011 1.1. Vẽ mạch bằng chương trình Proteus: Định hình tổng thể các khối chức năng của mạch và phục vụ cho việc mô phỏng. Từ ngày 01/12/2011 đến ngày 08/12/2011. Kết quả Thiết kế mạch

Tien Do Thuc Hien DAMH

Embed Size (px)

Citation preview

Page 1: Tien Do Thuc Hien DAMH

TRƯỜNG ĐẠI HỌC VĂN HIẾN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Khoa Điện Tử - Viễn ThôngĐộc Lập – Tự Do – Hạnh Phúc

************

BÁO CÁO TIẾN ĐỘ THỰC HIỆN

ĐỒ ÁN MÔN HỌC

Sinh viên thực hiện : 1. Nguyễn Hoàng Hiếu MSSV: 0891020023

2. Nguyễn PhướcMSSV: 0891020022

Lớp : 0891021

Khoa : Điện Tử - Viễn Thông

Tên đề tài : ĐIỀU KHIỂN GÓC QUAY ĐỘNG CƠ SERVO QUA RFĐIỀU KHIỂN GÓC QUAY ĐỘNG CƠ SERVO QUA RF

I. GIAI ĐOẠN 1: Thiết kế mạch: Từ ngày 01/12/2011 đến ngày 18/12/2011

1.1. Vẽ mạch bằng chương trình Proteus:

Định hình tổng thể các khối chức năng của mạch và phục vụ cho việc mô phỏng. Từ ngày 01/12/2011 đến

ngày 08/12/2011.

Kết quả Thiết kế mạch

Mạch phát tín hiệu điều khiển

Page 2: Tien Do Thuc Hien DAMH

Mạch phát:

- khối Reset PIC

- khối LCD hiển thị góc quay và Ton của xung điều khiển.

Các khối như giao động thạch anh không cần thực hiện trên mô phỏng, Proteus đã tự động cấp xung clock

cho PIC hoạt động.

Mạch thu tín hiệu và điều khiển góc quay động cơ Servo

Mạch thu:

- khối Reset PIC

- khối động cơ Servo

- khối LCD hiển thị góc quay và Ton xung điều khiển.

Sơ đồ toàn bộ mạch điều khiển động cơ Servo qua sóng RF

Page 3: Tien Do Thuc Hien DAMH

Việc thu phát RF được chúng em mô phỏng bằng nối dây Rx và Tx qua giao thức truyền thông

UART của PIC Master và Slave. Ngoài thực tế thi công việc thu phát sẽ thay bằng mô đun thu phát RF

HM-TR Rev:1.1.

1.2. Viết chương trình: Từ ngày 09/12/2011 đến ngày 18/12/2011.

a. Chương trình cho PIC Master: Chuyển đổi ADC sang tín hiệu số, tính toán, đưa ra góc quay và Ton

tương ứng điều khiển Servo, hiển thị trên LCD 16x02.

#include <16F877A.h>

#include <def_877a.h>

#device *=16 ADC=10

#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP 

#use delay(clock=20000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#include <lcd.c>

/* Khai bao cac bien su dung trong chuong trinh */

int8 angle_dvi,angle_chuc,angle_tram;

int8 angle_dvi_old;

int16 ton;

float adc;

float temp;

/* Khai bao cac ham con */

void wait_system();

void get_adc();

void convert_bcd();

void send_data();

void display();

#INT_RDA

void Receive_isr(){ // Ham xu ly khi ngat noi tiep xay ra

if(getc() == 'm') send_data(); // Khi nhan dc ki tu m tu PIC Slave thi gui du lieu di

}

void main(){

enable_interrupts(int_rda); // Cho phap ngat noi tiep

enable_interrupts(GLOBAL); // Cho phep ngay toan cuc

setup_adc_ports(AN0); // Cau hinh chan tin hieu ADC vao

setup_adc(ADC_CLOCK_INTERNAL); // Cau hinh dung xung clock ben trong cho bo ADC

angle_dvi_old = 0; // Cho so hang don vi cu cua goc bang 0

lcd_init(); // Goi ham khoi tao LCD

wait_system(); // Goi ham doi khoi dong RF

get_adc(); // Goi ham lay du lieu ADC

convert_bcd(); // Goi ham phan tich chuyen doi du lieu

send_data(); // Goi ham gui du lieu toi PIC Slave

Page 4: Tien Do Thuc Hien DAMH

display(); // Goi ham hien thi LCD

while(1){

get_adc();

convert_bcd();

if(angle_dvi_old - angle_dvi != 0){

angle_dvi_old = angle_dvi;

send_data();

display();

}

}

}

/* Ham doi khoi dong module RF */

void wait_system(){

printf(lcd_putc,"STARTUP RF"); delay_ms(100); // Ghi chuoi bao hieu ra LCD

lcd_putc('.'); delay_ms(110);

lcd_putc('.'); delay_ms(120);

lcd_putc('.'); delay_ms(130);

lcd_putc('.'); delay_ms(140);

lcd_putc('.'); delay_ms(150);

printf(lcd_putc,"\nSENDING"); delay_ms(100); // Gui chuoi bao dang gui du lieu

lcd_putc('.'); delay_ms(110);

lcd_putc('.'); delay_ms(120);

lcd_putc('.'); delay_ms(130);

lcd_putc('.'); delay_ms(140);

lcd_putc('.'); delay_ms(150);

}

/* Ham thuc hien lay gia tri ADC tu chan AN0 */

void get_adc(){

adc = read_adc(); // adc = 1023; adc 10bit

adc = adc / 5.66; // Chia de duoc ti le goc quay tu 0 - 180

}

/* Ham phan tich du lieu ADC, chuyen doi thang goc quay va Ton */

void convert_bcd(){

angle_dvi = ((int8)adc % 100) % 10; // Chia tach lay so hang don vi

angle_chuc = ((int8)adc % 100) / 10; // Chia tach lay so hang chuc

angle_tram = (int8)adc / 100; // Chia tach lay so hang tram

adc = angle_tram * 100 + angle_chuc * 10 + angle_dvi; // Nhan voi he so tuong ung de duoc

// so adc dang so nguyen

temp = adc / 90 + 0.5; // Ton: thay doi tu 0.5mS 2.5mS

ton = temp * 1000; // Nhan voi 1000 de duoc don vi micro giay ve hien thi len LCD

}

Page 5: Tien Do Thuc Hien DAMH

/* Ham gui du lieu toi PIC Slave qua module RF */

void send_data(){

putc('h'); putc(angle_tram + 0x30); // Gui ki tu ma hoa va so hang tram

putc('m'); putc(angle_chuc + 0x30); // Gui ki tu ma hoa va so hang chuc

putc('l'); putc(angle_dvi + 0x30); // Gui ki tu ma hoa va so hang don vi

}

/* Ham hien thi LCD */

void display(){

lcd_gotoxy(1,1); // Dua con tro ve dau dong mot (vi tri x=1, y=1 tren LCD)

printf(lcd_putc,"ANGLE SERVO:"); // Ghi dong van ban ra LCD

lcd_putc(angle_tram + 0x30); // Ghi ki tu so hang tram ra LCD

// (Cong voi 0x30 de chuyen so sang ki tu)

lcd_putc(angle_chuc + 0x30); // Ghi ki tu so hang chuc ra LCD

lcd_putc(angle_dvi + 0x30); // Ghi ki tu so hang don vi ra LCD

lcd_putc(0xdf); // Ki tu do // Ghi ki tu do ra LCD

printf(lcd_putc,"\nTon:%4lu%cS ",ton,0xe4); // Ghi chuoi Ton va ki tu micro S ra LCD

}

b. Chương trình cho PIC Slave: Nhận dữ liệu góc quay từ PIC Master, tính toán ra Ton, phát Xung tần số

50Hz với Ton đã tính toán để điều khiển động cơ Servo.

#include <16F877A.h>

#include <def_877a.h>

#device *=16 ADC=10 

#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP 

#use delay(clock=20000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#include <lcd.c>

/* Khai bao cac bien su dung trong chuong trinh */

int8 lo,mi,hi;

float adc;

int16 ton;

float temp;

int16 tpwm = 20000; // t = 20000us = 20ms => f = 50Hz

/* Khai bao cac Ham con */

void wait_system();

void get_data();

void display();

void pwm(int16 ton);

int char2int(int8 ch);

#INT_RDA

void Receive_isr(){ // Ham thuc hien khi xay ra ngat noi tiep

get_data(); // Nhan du lieu

Page 6: Tien Do Thuc Hien DAMH

display(); // Hien thi LCD

}

void main(){

enable_interrupts(int_rda); // Cho phap ngat noi tiep

enable_interrupts(GLOBAL); // Cho phep ngay toan cuc

lcd_init(); // Goi ham khoi tao LCD

trisa = 0xff; // Toan bo PORT A la PORT nhap

trisc2 = 0; // Chan RC2 la chan Out

rc2 = 0; // Set chan RC2 xuong thap

wait_system(); // Goi ham khoi dong RF

while(1){

pwm(ton); // Phat xung, thoi gian xung cao la Ton

}

}

/* Ham khoi dong module RF */

void wait_system(){

printf(lcd_putc,"STARTING RF"); delay_ms(100); // Ghi chuoi bao hieu ra LCD

lcd_putc('.'); delay_ms(120);

lcd_putc('.'); delay_ms(130);

lcd_putc('.'); delay_ms(140);

lcd_putc('.'); delay_ms(160);

lcd_putc('.'); delay_ms(180);

printf(lcd_putc,"\nREQUESTING"); delay_ms(80); // Gui chuoi bao dang nhan du lieu

lcd_putc('.'); delay_ms(90);

lcd_putc('.'); delay_ms(100);

lcd_putc('.'); delay_ms(110);

lcd_putc('.'); delay_ms(120);

lcd_putc('.'); delay_ms(130);

putc('m'); // Yeu cau tra loi tu board Master

lcd_gotoxy(1,1); // Dua con tro ve dau dong mot (vi tri x=1, y=1 tren LCD)

printf(lcd_putc,"ANGLE SERVO: %c\n",0xdf);

printf(lcd_putc,"\nTon: %cS ",0xe4);

}

/* Ham nhan du lieu tu PIC Master qua module RF */

void get_data(){

if(getc() == 'h') hi = getc(); // Neu nhan duoc ki tu ma hoa la h

// thi ki tu tiep theo la so goc hang tram

if(getc() == 'm') mi = getc();

if(getc() == 'l') lo = getc();

adc = char2int(hi) * 100 + char2int(mi) * 10 + char2int(lo);

temp = adc / 90 + 0.5; // temp = adc / 90 + 0.5 => Ton: 0.5mS -> 2.5mS

ton = temp * 1000;

Page 7: Tien Do Thuc Hien DAMH

}

/* Ham hien thi LCD */

void display(){

lcd_gotoxy(13,1); // Dua con tro ve vi tri coi 13, dong 1

lcd_putc(hi); // Ghi ki tu hang tram ra LCD

lcd_putc(mi);

lcd_putc(lo);

lcd_gotoxy(5,2);

printf(lcd_putc,"%4lu%cS",ton,0xe4);

}

/* Ham phat xung tan so 50Hz, thoi gian xung cao la Ton */

void pwm(int16 ton){

rc2 = 0; delay_us(tpwm-ton); // Thoi gian xung thap

rc2 = 1; delay_us(ton); // Thoi gian xung cao

}

/* Ham chuyen ki tu sang so nguyen */

int8 char2int(char ch){

return ch - '0';

}

Biên dịch và nạp chương trình cho PIC tương ứng, kết quả mô phỏng như bên dưới.

Khởi động Module RF

Page 8: Tien Do Thuc Hien DAMH

Góc quay 180o tương ứng với Ton là 2500µS

Góc quay 90o tương ứng với Ton là 1500µS

Góc quay 0o tương ứng với Ton là 500µS

II. GIAI ĐOẠN 2: Thi công mạch: Từ ngày 19/12/2011 đến ngày 24/12/2011

2.1. Vẽ mạch nguyên lý bằng phần mềm Orcad Capture:

Dựa mạch mô phỏng trên Protues chúng em vẽ nguyên lý để thực hiện Layout và thi công mạch in. Thời

gian thực hiện từ 19/12/2011 đến 21/12/2011.

Page 9: Tien Do Thuc Hien DAMH

Kết quả vẽ mạch

R 2 4 7 0

P G C

V C C

P W M 1

U 1L M 7 8 0 5

1

2

3V I

GN

D

V O

R D 5

V C C

P W M 2

R D 0

V C C

R A 1

V C C

J 7

R F R X

1234

LCD 16x2

L C D 1 6 x 2

7 8 9 10 11 12 13 14 15 161 2 3 4 5 6

D0

D1

D2

D3

D4

D5

D6

D7

A KVS

SV

DD

VE

ER

SR

WE

N

5 V C C

R D 4

M C L R

R _ A K2 2 0

J 8

P I N

12

V C C

TX

V C C

R D 7

R 11 0 k

2 0 M h zXTA L

R X

TX

C 2

3 3 p

P W M 1

V C C

R 32 2 0

R D 6

P W M 2

J 9

S E R V O 1

123

P V N 1

P I C 1 6 F 8 8 7

234567

3 33 43 53 63 73 83 94 0

1 51 61 71 82 32 42 52 6

1 92 02 12 22 72 82 93 0

1 3

1 4

3 21 1

3 11 2

1

891 0

R A 0 / A N 0R A 1 / A N 1R A 2 / A N 2 / V R E F -/ C V R E FR A 3 / A N 3 / V R E F +R A 4 / T0 C K I / C 1 O U TR A 5 / A N 4 / S S * / C 2 O U T

R B 0 / I N TR B 1R B 2

R B 3 / P G MR B 4R B 5

R B 6 / P G CR B 7 / P G D

R C 0 / T1 O S O / T1 C K IR C 1 / T1 O S I / C C P 2R C 2 / C C P 1R C 3 / S C K / S C LR C 4 / S D I / S D AR C 5 / S D OR C 6 / TX/ C KR C 7 / R X/ D T

R D 0 / P S P 0R D 1 / P S P 1R D 2 / P S P 2R D 3 / P S P 3R D 4 / P S P 4R D 5 / P S P 5R D 6 / P S P 6R D 7 / P S P 7

O S C 1 / C L K I N

O S C 2 / C L K O U T

V D DV D D

V S SV S S

M C L R * / V P P

R E 0 / R D * / A N 5R E 1 / W R * / A N 6R E 2 / C S * / A N 7

R X

RD

4

C 1

3 3 p

V C C

R D 2V R _ C o n s t ra c t

1 0 K

RD

6

D 3

L E D

12

V C C

P G C

J 1 0

S E R V O 2

123

RD

7

S W 2

S W D I P -2

1 24 3

R D 1

M C L R

RD

5

J 2

2 4 V C C

1

2

P G D

V C C

R X

J 4

P R O G R A M E R

123456

RD

2

D 2L E D 5 V C C

12

J 5

H M -TR

123456

RA

1

RD

1

P G D

RD

0

C 32 2 u

Sơ đồ nguyên lý mạch Slave – Thu dữ liệu điều khiển động cơ

R A 1

V C C

RD

7

R 2 4 7 0

R D 0

V C C

RD

5

R 11 0 k

R D 1

C 32 2 u

RD

6

J 4

P R O G R A M E R

123456

R D 4

TX

R D 6

U 1L M 7 8 0 5

1

2

3V I

GN

D

V O

P W M 1

C 1

3 3 p

V C C

P G C

J 1 0

S E R V O 2

123

V C C

R X

LCD 16x2

L C D 1 6 x 2

7 8 9 10

11

12

13

14

15

16

1 2 3 4 5 6

D0

D1

D2

D3

D4

D5

D6

D7

A KVS

SV

DD

VE

ER

SR

WE

N

R 91 0 k

13

2

V C C

R D 7

R A 0

RD

4

V C C

R3

22

0

5 V C C

J 8

P I N

12

P W M 2

P W M 2

RA

1

D 4

L E D

12

R X

RD

1

R D 5

J 2

2 4 V C C

1

2

RD

2

V C C

P G C

D 2L E D 5 V C C

12

V C C

R D 2

R A 0

J 7

R F TX

123

V C C

R1

22

20

V C C

P G D

J 5

H M -TR

123456

R1

11

0K

TX

J 9

S E R V O 1

123

M C L RP V N 1

P I C 1 6 F 8 8 7

234567

3 33 43 53 63 73 83 94 0

1 51 61 71 82 32 42 52 6

1 92 02 12 22 72 82 93 0

1 3

1 4

3 21 1

3 11 2

1

891 0

R A 0 / A N 0R A 1 / A N 1R A 2 / A N 2 / V R E F -/ C V R E FR A 3 / A N 3 / V R E F +R A 4 / T0 C K I / C 1 O U TR A 5 / A N 4 / S S * / C 2 O U T

R B 0 / I N TR B 1R B 2

R B 3 / P G MR B 4R B 5

R B 6 / P G CR B 7 / P G D

R C 0 / T1 O S O / T1 C K IR C 1 / T1 O S I / C C P 2R C 2 / C C P 1R C 3 / S C K / S C LR C 4 / S D I / S D AR C 5 / S D OR C 6 / TX/ C KR C 7 / R X/ D T

R D 0 / P S P 0R D 1 / P S P 1R D 2 / P S P 2R D 3 / P S P 3R D 4 / P S P 4R D 5 / P S P 5R D 6 / P S P 6R D 7 / P S P 7

O S C 1 / C L K I N

O S C 2 / C L K O U T

V D DV D D

V S SV S S

M C L R * / V P P

R E 0 / R D * / A N 5R E 1 / W R * / A N 6R E 2 / C S * / A N 7

RD

0

P W M 1

M C L R

C 2

3 3 p

V C C

TX

2 0 M h zXTA L

P G D

S W 2

S W D I P -2

1 24 3

Sơ đồ nguyên lý mạch Master – Chuyển đổi ADC, phát dữ liệu điều khiển

Page 10: Tien Do Thuc Hien DAMH

2.2. Vẽ mạch Layout bằng phần mềm Orcad Layout:

Thiết kế Layout cho từ mạch nguyên lý để in mạch và thi công mạch. Thời gian thực hiện từ 22/12/2011

đến 24/12/2011

Page 11: Tien Do Thuc Hien DAMH
Page 12: Tien Do Thuc Hien DAMH

III. GIAI ĐOẠN 3: Hoàn thành Báo cáo đồ án môn học: Từ ngày 25/12/2011 đến ngày 08/01/2012

3.1. Tổng hợp tài liệu cần thiết

3.2. Trình bày báo cáo theo Đề cương chi tiết đã gửi cho cô.

3.3. Soạn thảo Slide trình chiếu

3.4 Nộp đồ án môn học