ĐẠ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 )