Tải bản đầy đủ (.pdf) (28 trang)

ĐỒ án môn học THIẾT kế hệ THỐNG cơ điện tử

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.86 MB, 28 trang )


ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CƠ KHÍ
BỘ MÔN CƠ ĐIỆN TỬ
  


ĐỒ ÁN MÔN HỌC

THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ







GVHD : Nguyễn Thành Luân Ký tên :
Nhóm
SVTH : Tăng Mã Minh MSSV : 20701485
SVTH : Đào Công Thuận MSSV : 20702386
Ngày bắt đầu : 20/09/2010
Ngày kết thúc : 26/12/2010
Ngày bảo vệ :

Tp HCM, tháng 12/2010
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 2


Mục lục
Lời nói đầu 3
1. Tổng quan 4
2. Thiết kế mô hình 5
3. Thiết kế mạch điện 7
3.1. Vấn đề cần giải quyết 7
3.2. Mạch nguồn 24VDC+5VDC 7
3.3. Mạch công suất 9
3.4. Mạch điều khiển 10
4. Mô phỏng bằng MATLAB và lưu đồ giải thuật 13
4.1 Sơ đồ động 13
4.2 Mô phỏng bằng Matlab 13
4.3 Lưu đồ giải thuật 14
5. Kiểm nghiệm kết quả và khắc phục sai số 15
Phụ lục
Mô phỏng bằng Protues 17
Chương trình điều khiển và thư viện 18
Tài liệu tham khảo 28
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 3

Lời nói đầu

Việc vận chuyển, xếp hàng hóa là một công việc quan trọng và không thể thiếu
trong nhiều lỉnh vực sản xuất. Để giảm bớt sức lao động nặng nhọc,tăng năng suất lao
động, an toàn, giảm bớt được chi phí sản xuât, tăng lợi nhuận cho nên người ta đã nghĩ
ra nhiều loại máy móc, thiết bị nâng chuyển. Các thiết bị này rất đa dạng, nhưng nhìn
chung có cùng một mục đích là vận chuyển nhanh, an toàn, tiết kiệm. Một trong những
thiết bị mà người ta thường sử dụng đó là hệ thống băng tải. Nhờ vào những ưu điểm

và những đặc tính tiện lợi nên băng tải là một phần không thể thiếu của một nhà máy.

Trước đây hệ thống băng tải thuần túy chỉ là hệ thống cơ khí từ động cơ qua bộ
giảm tốc để được vận tốc mong muốn. Như vậy muốn thay đổi nhiều tốc độ khác nhau
rất là khó khăn. Với sự phát triển của khoa học kỹ thuật, việc áp dụng hệ thống máy
tính và các thiết bị bán dẫn vào hệ thống cơ khí để điều khiển cho hệ thống cơ khí
ngày càng linh hoạt hơn ngày càng được sử dụng nhiều. Trong đồ án này nhóm em sẽ
trình bày thiết kế và thực hiện khiển bẳng tốc độ động cơ DC vận tốc băng tải theo
mong muốn với sai số thỏa mãn yêu cầu.

Trước khi đến với môn học, chung em chỉ có được những kiến thức rời rạc về cơ,
điện, và điều khiển và vẫn chưa liên kết tất cả các kiến thức đó thành một, môn học
này đã giúp chúng ta tôi luyện thêm những kĩ năng vốn có và vận dụng một cách có hệ
thống những kiến thức, lý thuyết đã được các thầy cô chỉ dạy trong ba năm qua.

Sau khi hoàn thành đề tài được giao, ta sẽ có một cái nhìn cơ bản và tổng quan
hơn về điều khiển, về Cơ điển tử. Và vì thế có thể nói môn học này là một môn học
cưc kì hữu ích, vừa đúc kết lại những gì đã biết, vừa làm tiền đề cho những gì chưa
biết.

Vì thế, em xin chân thành cảm ơn nhà trường đã đưa môn học này vào chương
trình giảng dạy, cám ơn các thầy cô đã chỉ bảo em trong suốt thời gian qua và đặc biệt
là thầy Nguyễn Thành Luân đã hướng dẫn chúng em trong môn học này. Do trình độ
còn hạn chế nên chúng không thể tránh khỏi những sai sót trong quá trình thực hiện,
kính mong thầy cô thông cảm, chúng em sẽ cố gắng học tập, rèn luyện để hoàn thiện
mình hơn.

Sinh viên thực hiện

TĂNG MÃ MINH

ĐÀO CÔNG THUẬN
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 4

CHƯƠNG 1 : Tổng quan

Ứng dụng băng tải trong nhà máy :

Có thể ứng dụng hệ thống băng tải này trong hệ thống sản xuất như : trong
hệ thống đóng chai nước giải khát, hệ thống có thể thay đổi vận tốc thì có thể tạo
ra nhưng loại chai với thể tích khác nhau rất dễ dàng. Tương tự cho việc đóng
gói các loại sản phẩm có dạng bột.

Có thể lắp ghép nhiều hệ thống băng tải với vận tốc khác nhau trong một hệ
thống để thực hiện những yêu cầu khác nhau của hệ thống sản xuất và đương
nhiên việc thay đổi vận tốc dễ dàng bằng việc nhập vận tốc thông qua một máy
tính.

Ngoài ra còn dung trong các hệ thống đòi hỏi độ chính xác cao vì vận tốc
được kiểm soát và nằm trong sai số cho phép nào đó.


Hình 1.1- Băng tải đang làm việc


Hình 1.2- Băng tải vận chuyển từ thấp lên cao
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 5



CHƯƠNG 2 : Thiết kế mô hình


Hình 2.1- Mô hình vẽ bằng phần mềm Solidwork


Hình 2.2- Mô hình hoàn chỉnh

ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 6

Thiết kế rulô :


Hình 2.3- Rulô trước


Hình 2.4- Rulô trước vẽ bằng solidwork


Hình 2.5- Rulô sau

ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 7



Hình 2.6- Rulô sau vẽ bằng solidwork

CHƯƠNG 3 : Thiết kế mạch điện

3.1. Vấn đề cần giải quyết :

Điều khiển vận tốc băng tải bằng cách điều khiển động cơ DC-24v. Động cơ sử
dụng là động cơ 24v, tốc độ 4200-4500 vòng/phút, có gắn hộp giảm tốc với tỉ số
truyền là 30.

Encoder 300 xung/vòng dùng để đo vận tốc băng tải.

Giải quyết vấn đề:
Để động cơ hoạt động, ta phải có nguồn 24v. Ta thiết kế thêm phần 5v để cấp cho
vi điều khiển khi cần.

3.2. Mạch nguồn 24v_5v được thiết kế như sau :


Hình 3.1- Mạch nguồn 24v

Vì IC ổn áp LM7824 chịu dòng tối đa là 0,5A nên là khuyến đại dòng bằng
Transistor B688, điện trở R1 đóng vai trò tạo chêch áp chân E và chân B. Điện trở R1
được tính như sau :

Tại thời điểm B688 không dẫn, thì dòng trên LM7824 :
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 8



I
in
=I
out
vậy để B688 dẫn khi dòng nhỏ hơn 0,5A thì

V
EB
>0,7(v)

 I
in
.R
1
>0,7


1
0,7
R = = 7(
Ω)
0,1


Ta chọn dẫn khi dòng 0,1A và chọn điện trở 10(Ω)

Hình 3.2- Mạch nguyên lý mạch nguồn 24v+5v



Hình 3.3- Mạch nguồn 24v+5v
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 9


3.3. Mạch công suất :
Ta điều khiển động cơ qua mạch công suất, ở đây sử dụng mạch cầu H :


Hình 3.4- Mạch nguyên lý mạch cầu H

Nếu sử dụng 4 MOSFET loại N, thì để MOSFET dẫn, điện áp chân G phải lớn hơn
điện áp chân S ít nhất 3v. Xét 2 MOSFET phía trên, điện áp chân S là 24v, vậy để
MOSFET dẫn thì điện áp chân G ít nhất phải 27v nên rất khó tạo điện áp này. Vì vậy,
ta sử dụng 2 con MOSFET lọai P phía trên (IRF9540), 2 con MOSFET loại N phía
dưới( IRF540).

Các điện trở R1, R2, R3, R4 đóng vai trò là điện trở kéo lên và kéo xuống.
Ta tách li mạch điện bằng 4 OPTO (TLP521).


Hình 3.5- Mạch cầu H
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 10


Bảng logic mạch cầu H điều khiển động cơ :


In 1 In 2 In 3 In 4 Động cơ
0 0 0 0 Tắt động cơ
1 0 0 1 Quay thuận
0 1 1 0 Quay nghịch
1 0 1 0 Thắng động lực

3.4. Mạch điều khiển :

Ta điều khiển vận tốc băng tải bằng cách điều khiển tốc độ động cơ. Ta chọn
phương án điều khiển bằng cách cấp xung, thay đổi tốc độ động cơ bằng cách thay đổi
độ rộng xung (PWM).

Vậy ta chọn vi điều khiển là PIC16F887, vi điều khiển này thông dụng, và có
modul điều khiển động cơ bằng cách cấp xung PWM (Enhanced PWM).

Hình 3.7- Sơ đồ chân PIC16F887
PIC16F887 có 3 timer, ta sử dụng timer0 dùng đếm thời gian lấy mẫu, timer1
dùng ở chế độ đếm để nhận xung encoder, timer2 dùng cho modul PWM.
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 11


Hình 3.8- Khối xuất PWM

Giao tiếp máy tính bằng phướng thức giao tiếp nối tiếp bất động bộ (UART-
Universal Asynchronous Receiver Transmitter).

Hình 3.9- Khối giao tiếp với máy tính


Gắn thêm 3 biến trở để tinh chỉnh 3 thông số của bộ điều khiển PID.

ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 12


Hình 3.10- Mạch nguyên lý của mạch điều khiển


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

ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 13

CHƯƠNG 4 : Mô phỏng bằng MATLAB và lưu đồ giải thuật

4.1. Sơ đồ động :


Trong đó :
(1) Động cơ điện và hộp giảm tốc.
(2) Khớp nối trục, băng tải.
(3) Cảm biến (encoder).
(4) Bộ vi xử lý và điều khiển.
(5) Driver.

4.2. Mô phỏng bằng MATLAB :


Hình 4.1- Khối simulink


Hình 4.2- Đồ thị đáp ứng

ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 14


4.3. Lưu đồ giải thuật :


Quay nghịch
Bắt đầu
Thiết lập timer0, timer1,
timer2, PWM, ADC,
UART, LCD.

tocdomm<100 hoặc
tocdomm>300
Nhập sai
Func = “F”
Quay thuận
Func = “R”
Tính tóan PID,
PWM, xuất
PWM.
Nhập sai
Kết thúc

Đúng
Sai

Đúng
Đúng
Sai

Sai

Ngắt UART
Nhận dữ liệu
tocdomm và
Func

Kết thúc
Ngắt imer0
Lấy mẫu từ ADC,
timer1 và reset
timer1

Kết thúc
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 15

CHƯƠNG 5 : Thực nghiệm và kết luận

Kết quả thực nghiệm :
Gửi giá trị từ máy tính và thông kế kết quả bằng đo thời gian cho băng tải chạy trong
10 vòng/lần đo. Chiều dài băng tải là 450mm, từ đó ta tính được vận tốc.


Vận tốc
mong muốn
(mm/s)
Thời gian (s)
Thời gian
trung bình
(s)
Vận tốc trung
bình
(mm/s)
Sai số
(%)
Lần
1
Lần
2
Lần
3
100

42,10

42,30

42,84

42,41

106,10


6.10

110

38,53

38,43

38,46

38,47

116,96

6.33

120 35,58 35,41 35,61 35,53 126,64 5.53
130

32,70

32,67

32,59

32,65

137,81


6.01

140 30,27 30,39 30,30 30,32 148,42 6.01
150

28,31

28,22

28,07

28,20

159,57

6.38

160 26,55 26,46 26,47 26,49 169,85 6.16
170

24,89

25,13

25,04

25,02

179,86


5.80

180 23,58 23,66 23,65 23,63 190,44 5.80
190

22,35

22,36

22,34

22,35

201,34

5.97

200 21,21 21,32 21,21 21,25 211,80 5.90
210

20,26

20,23

20,28

20,26

222,15


5.79

220 19,34 19,38 19,54 19,42 231,72 5.33
230

18,56

18,52

18,52

18,53

242,81

5.57

240 17,61 17,70 17,79 17,70 254,24 5.93
250

17,15

16,98

17,04

17,06

263,83


5.53

260 16,37 16,28 16,41 16,35 275,17 5.84
270

15,88

15,56

15,71

15,72

286,32

6.04

280

15,10

15,16

15,18

15,15

297,10

6.11


290

14,62

14,65

14,71

14,66

306,96

5.85

300

14,06

14,15

14,20

14,14

318,32

6.11



Nguyên nhân sai số :
Do các bản mạch làm thủ công nên độ chính xác không cao.
Việc lắp ghép mô hình không chính xác.
Do nhễu tính hiệu điện.

Cách khắc phục :
Sử dụng hàm nội suy tuyến tính :
x là vận tốc mong muốn, y là vận tốc trung bình
y = a.x+b
Phương pháp bình phương cực tiểu, ta tìm đc a = 1,058055844, b = 0,1702597403
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 16


Kết quả kiểm nghiệm sau khi sử dụng hàm nội suy tuyến tính :

Vận tốc
mong muốn
(mm/s)
Thời gian (s)
Thời gian
trung bình
(s)
Vận tốc trung
bình
(mm/s)
Sai số
(%)
Lần

1
Lần
2
Lần
3
100 45,10 45,30 45,12 45,17 99,62 0,38
110

40,80

41,03

40,92

40,92

109,98

0,02

120 37,44 37,44 37,51 37,46 120,12 0,10
130

34,77

34,53

34,58

34,63


129,96

0,03

140 32,30 32,29 32,25 32,28 139,41 0,42
150

30,17

30,26

30,03

30,15

149,24

0,51

160 28,29 28,40 28,44 28,38 158,58 0,89
170

26,56

26,70

26,49

26,58


169,28

0,42

180

25,03

25,17

25,16

25,12

179,14

0,48

190

23,62

23,83

23,70

23,72

189,74


0,14

200

22,50

22,64

22,53

22,56

199,50

0,25

210 21,42 21,56 21,46 21,48 209,50 0,24
220

20,57

20,51

2
0,65

20,58

218,69


0,59

230 19,56 19,61 19,74 19,64 229,16 0,36
240

18,66

18,91

18,85

18,81

239,28

0,30

250 18,07 18,08 18,03 18,06 249,17 0,33
260

17,43

17,43

17,33

17,40

258,67


0,51

270 16,68 16,77 16,67 16,71 269,35 0,24
280

15,99

16,31

16,07

16,12

279,10

0,32

290 15,54 15,54 15,57 15,55 289,39 0,21
300

14,96

15,06

14,92

14,98

300,40


0,13


Nhận xét :
Sau khi sử dụng hàm nội suy, sai số đã đạt được thỏa yêu cầu.
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 17

Phụ lục

Mạch điện mô phỏng bằng protues
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 18


Layout mạch công suất

Layout mạch nguồn
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 19


Layout mạch điều khiển

Chương trình cho vi điều khiển viết bằng hi-tech C :
/******************************************

Thoi gian lay mau : 0.064s (timer0)
******************************************/

#include <pic16f887.h>
#include <htc.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "LCD4b.h"
#include "config.h"

__CONFIG(XT & WDTDIS & UNPROTECT & PWRTEN & MCLREN & LVPDIS
& DUNPROTECT
& BORDIS & IESODIS & FCMDIS & DEBUGDIS);

#define _XTAL_FREQ 4000000
#define D 12
#define xung 300
#define tocdo 100

ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 20

unsigned char *ptr, n, i, enc, ADC1value, ADC2value, ADC3value, flag;
char Re[6], buf[30],scr[16], func[1], num[4], delim[5] = ", .";
float tocdoht, vtb, e_p, e_i, e_d, e_temp, Kp, Ki, Kd, PID;
unsigned int PWM, tocdomm;
float vantoc[10];


void CalVantoc( void )
{
tocdoht = ( enc*( ( D*3.141592654)/(0.064*xung )));
tocdoht = ( 0.1702597403+1.058055844*tocdoht);
i = i%10;
vantoc[i] = tocdoht;
vtb = (( vantoc[0]+vantoc[1]+vantoc[2]+vantoc[3]+vantoc[4]

+vantoc[5]+vantoc[6]+vantoc[7]+vantoc[8]+vantoc[9])/10);
i++;
}

void Cal_PID( void )
{
Kp = ADC1value/25.5;
Ki = ADC2value/255.0;
Kd = ADC3value/25.5;
e_p = tocdomm - tocdoht;
e_i = e_p + e_temp;
e_d = e_p - e_temp;
e_temp = e_p;
PID = 0.6*Kp*e_p + Ki*e_i + Kd*e_d;
}

void interrupt isr( void )
{
//**********interrupt timer 0
if( T0IF & T0IE )
{
enc = TMR1L;

TMR1L = 0;
TMR1H = 0;
TMR0 = 6;
T0IF = 0;
ADC1value = getADC( 2 );
ADC2value = getADC( 3 );
ADC3value = getADC( 6 );
}

//**********interrupt receive
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 21

if ( RCIE & RCIF )
{
if (n==0)
{
strcpy( Re, "" );
}
Re[n]=RCREG;
n++;
flag = 1;
RCIF = 0;
}
}


void main()
{

__delay_ms(20);
TRISB = 0x00;
TRISE0 = 0;
TRISE1 = 1;
TRISE2 = 0;
ANSEL = 0x00;
ANSELH = 0x00;
TRISA2=1;
TRISA3=1;
TRISD = 0x00;
TRISC2=0;
cfgTimer0();
cfgTimer1();
cfgTimer2();
cfgUART();
cfgADC();
cfgPWM1();
LCD_Init();

LCD_PutCmd ( CLEAR_DISP ); // clear screen
LCD_SetPosition ( LINE_2 + 2 ); // set line and offset on line
LCD_PutStr( "Minh & Thuan" );


while(1)
{
CalVantoc();
if(flag==1)
{
strcpy( func, "" );

ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 22

strcpy( num, "" );
ptr = strtok( Re, delim);
strcpy( func, ptr);
ptr = strtok( NULL, delim);
strcpy(num, ptr);
tocdomm = atoi( num );
}
flag = 0;
Cal_PID();
PWM = PWM + PID;
if ( PWM >= 0x03ff ) PWM = 0x03ff;
if ( PWM < 200 ) PWM = 200;
if ( tocdomm < 100 | tocdomm > 300 )
{
setPWM( 0 );
WriteUART_str("value wrong \r");
}
else if (strcmp(func, "F")==0)
{
P1M1 = 0;
WriteUART_str( buf );
setPWM( PWM );
LCD_SetPosition ( LINE_2 );
LCD_PutStr( " FORWARD " );
}
else if (strcmp(func, "R")==0)

{
P1M1 = 1;
WriteUART_str(buf);
setPWM( PWM );
LCD_SetPosition ( LINE_2 );
LCD_PutStr( " REVERSE " );
}
else {
setPWM(0);
WriteUART_str("input wrong \r");
}

sprintf( buf, "[%5.2f,%5.2f,%5.2f,%5.2f]\r", Kp, Ki, Kd, tocdoht );
sprintf( scr, "%5.2f ", vtb ); //string format
n = 0;
LCD_SetPosition ( LINE_1 );
LCD_PutStr( " v=" );
LCD_PutStr( scr );
LCD_PutStr( "(mm/s)" );
}
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 23

}

Nội dung thư viện config.h :

void cfgTimer0(void);
void cfgTimer1(void);

void cfgTimer2(void);
void cfgUART(void);
void WriteUART( unsigned char data );
void WriteUART_str( unsigned char data[] );
void cfgADC(void);
int getADC(unsigned char x);
void cfgPWM1( void );
void cfgext_int( void );
void setPWM( unsigned int value );

void cfgTimer0( void )
{
T0IE = 1; //disable/enable interrupt
T0IF = 0; //Timer 0 interrupt flag
GIE = 1; //Global interrupt enable
RBPU = 1; //PORT B pull-up enable, 0 is enable
T0CS = 0; //transition on T0CKI pin
// T0SE = 1; //increment on high to low transition on
T0CKI pin
PSA = 0; //Prescale is assigned to timer 0
PS0 = 1; // prescale
PS1 = 1;
PS2 = 1;
TMR0 = 6;
}

void cfgTimer1( void )
{
T1CON = 0; //reset register
T1CKPS0 = 0; //perscaler

T1CKPS1 = 0;
TMR1CS = 1; //0=internal clock

GIE = 1;
PEIE = 0;
TMR1IE = 0; //enable interrupt timer 1
TMR1IF = 0; //reset interrupt flag
TMR1H = 0;
TMR1L = 0;
TMR1ON = 1; //enable timer 1
ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 24

}

void cfgTimer2( void )
{
GIE = 1;
PEIE = 1;
TMR2IE = 0;
TMR2IF = 0;
TOUTPS0 = 0; // postscaler
TOUTPS1 = 0;
TOUTPS2 = 0;
TOUTPS3 = 0;
T2CKPS0 = 1; //prescaler
T2CKPS1 = 1;
PR2 = 249; //Period register
TMR2ON = 1;

}

void cfgUART( void )
{
CREN = 1; //enable receice
TXEN = 1; //enable transmit
SYNC = 0; //asynchronous
SPEN = 1; //set I/O port for RX-TX
TX9 = 0; //UART 8 bit
BRGH = 1; //high baud rate select bit
BRG16 = 0; //8 bit baud rate
SPBRG = 25;
SPBRGH = 0;
//interrupr
TXIE = 0;
RCIE = 1; //enable interrupt
PEIE = 1;
GIE = 1;
RCIF = 0;
}

void WriteUART( unsigned char data )
{
while( !TRMT );
TXREG = data;

}

void WriteUART_str( unsigned char data[] )
{

ĐỒ ÁN MÔN HỌC : THIẾT KẾ HỆ THỐNG CƠ ĐIỆN TỬ

SVTH : TĂNG MÃ MINH – ĐÀO CÔNG THUẬN 25

unsigned char temp;
temp = 0;
while( data[temp] )
{
TXREG = data[temp];
while( !TRMT );
temp++;
}
}

void cfgADC( void )
{
//set analog port
ANSEL = 0b00001100;
ADCON0 = 0b11000000;
ADFM = 0; //0 = left
VCFG1 = 0; //Vref
VCFG0 = 0;

ADIE = 0;
ADIF = 0;
ADON = 1;
}

int getADC(unsigned char x)
{

ADIF = 0;
CHS0 = ( x & 0x01 );
CHS1 = ( ( x & 0x02 ) >>1 );
CHS2 = ( ( x & 0x04 ) >>2 );
CHS3 = ( ( x & 0x08 ) >>3 );
__delay_us( 10 );
GODONE = 1;
while ( !ADIF );
return ( ADRESH );
}

void cfgPWM1( void )
{
CCP1CON = 0b01001100; //select PWM mode
CCPR1L = 0;
DC1B1 = 0;
DC1B0 = 0;
}

void setPWM( unsigned int value )

×