1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo Cáo VXL 2 – VDK Pic Quạt Tự Động

18 335 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 541,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 MẠCH ĐIỀU CHỈNH :NÚT NHẨN ĐIỀU KHIỂN CHẾ ĐỘ HIỂN THỊ,MẠCH ĐỘNG LỰC... SƠ ĐỒ NGUYÊN LÝ:A.Tóm tắt : - Dùng LM35 đo nhiệt độ môi trường,dùng vdk Pic 16f877a,dùng PWM có sẵn của vdk Pic để

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

KHOA ĐIỆN – ĐIỆN TỬ NGÀNH : ĐIỆN TỬ VIỄN THÔNG



BÁO CÁO VXL 2 – VDK PIC

QUẠT TỰ ĐỘNG

TP HỒ CHÍ MINH, THÁNG 11 NĂM 2010

Nhận xét của giáo viên :

Trang 2

SƠ ĐỒ KHỐI :

Trang 3

 KHỐI CẢM BIẾN : LM35

 KHỐI XỬ LÝ TRUNG TÂM :VDK PIC 16F877A

 HIỂN THỊ: GỒM CÓ 4 LED 7 ĐOẠN

 MẠCH ĐỘNG LỰC : CẦU H ĐIỀU KHIỂN ĐỘNG CƠ QUAY THUẬN QUAY NGHỊCH.

 MẠCH ĐIỀU CHỈNH :NÚT NHẨN ĐIỀU KHIỂN CHẾ ĐỘ HIỂN THỊ,MẠCH ĐỘNG LỰC

Trang 5

SƠ ĐỒ NGUYÊN LÝ:

A.Tóm tắt :

- Dùng LM35 đo nhiệt độ môi trường,dùng vdk Pic 16f877a,dùng PWM

có sẵn của vdk Pic để điều khiển tốc độ động cơ theo nhiệt độ

- Công việc thực hiện:

o Tìm hiểu VDK Pic và ADC trong VDK Pic 16f877A

o Tìm hiểu LM35

o Tìm hiểu PWM trong VDK Pic 16f877A

o Tìm hiểu ngôn ngữ lập trình CCS C cho VDK Pic

Trang 6

o Thiết kế mạch bằng phần mềm Proteus

o Viết code và mô phỏng

B.Nội Dung:

1 Tìm hiểu VDK Pic và ADC Trong VDK Pic 16F877A

Hình dạng vdk Pic 16F877A

Pic 16F877A có 5 Port tất cả : PORT A ,PORT B ,PORT C ,PORT

D ,PORT E

THANH GHI ADCON0

Trang 7

• Bit 5-3 :

CHS2 à CHS0: Các bit lựa chọn kênh tương tự Trong đề tài chọn kênh AN0 nên set CHS2:CHS0 = 000

• Bit 6,7 : Dùng lựa chọn tần số chuyển đổi

• Bit 2 GO/DONE:

Bit này bằng 1 khi chuyển đổi ADC đang diễn ra và về 0 khi quá trình chuyển đổi kết thúc

• Bit 0 :ADON

o Bit này bằng 1 thì khối ADC được mở nguồn

o Bit này bằng 0 thì khối ADC bị tắt nguồn để giảm bớt công suất tiêu thụ

Thanh ghi ADCON1:

Trang 8

• Bit 7 : ADFM

Bit này lựa chọn định dạng cho kết quả ADC 1= Canh lề phải || 0= Canh lề trái

• Bit 6 : Bit ADCS2 cùng với ADCS1:0 (Trong ADCON0) cho phép lựa chọn xung clock cho chuyển đổi ADC

Trang 9

• Bit 3:0 : PCFG3: PCFG0: Bit điều khiển ADC.

Trong đề tài sử dụng ADC 8 bit,tức có 256 mức x 10mv -

0.55V=2.01V=>vref- là 0.55V và vref+ là 2.01Vol

2 Tìm hiểu LM35:

+ LM35 là IC cảm biến nhiệt độ

+ Cảm biến nhiệt độ trong khoảng từ

-55 đến 150 oC

+ Ngõ ra tương thích TTL + Độ nhạy: 10mV/10C +Có ưu điểm là rẻ tiền

+Khuyết điểm là không chịu được nhiệt độ cao

KẾT NỐI LM35

 Dạng 1:

Trang 10

Cảm biến đáp ứng tại ngõ vào từ 2 C đến 150 C Ngõ ra thay đổi: 10mV/1oC

 Dạng 2: (Trong đề tài sử dụng dạng này)

Cảm biến đáp ứng tại ngõ vào từ

-55oC đến 150 oC Điện trở R1 được

chọn: R1= -Vs/50 uA

Ngõ ra thay đổi: 10mV/oC

V OUT= -0.55 đến 1.5 Vol

Tính toán :1.5-(-0.55) x 1/10mV =205

Mức => chưa đủ toàn thang ADC 8 Bit

Max của ADC toàn thang là 255

Khai báo ADC :

setup_adc(adc_clock_internal);

//thiết lập adc dùng xung clok nội

setup_adc_ports(AN0_VREF_VREF);

//Khái báo adc channel 0,điện áp chuẩn Vref- và Vref+

3 Tìm hiểu PWM trong VDK Pic 16f877A

Với mục đích là điều khiền khiển quay thuận nghịch nên chọn hai chân CCP1(17) và CCP2 (16) là 2 chân điều xung Pwm có sẵn

Tại các chân này khi hoạt động sẽ xuất chuỗi xung vuông , độ rộng điều chỉnh được dễ dàng Xung ra này dùng để tạo tín hiệu đóng ngắt

Trasistor trong mạch động lực,với độ rộng xác định sẽ tạo ra một điện

áp trung bình xác định Thay đổi độ rộng xung sẽ thay đổi điện áp trung bình và do đó thay đổi được tốc độ động cơ

Để có thể sử dụng được bộ PWM trước hết nó phải được khởi tạo chế

độ PWM bằng lệnh:

Trang 11

setup_ccp1(CCP_PWM); //khai báo dùng PWM1 và PWM2

setup_ccp2(CCP_PWM);

setup_timer_2(mode,period,postscale)

Bộ PWM hoạt động phải được sự hỗ trợ của Timer 2 , đây là Timer 8-bit

có bộ chia trước Ngõ vào xung Clock (=fosc/4) có tuỳ chọn hệ số chia trước là: “1:1”, “1:4”, “1:16” được lựa chọn bằng các bit điều

khiểnT2CKPS1:T2CKPS2

Lệnh để khởi tạo Timer2 và cũng là tạo chu kỳ

xung cho bộ PWM là: setup_timer_2(t2_div_by_16,154,1);

- Mode có thể chọn một trong các hình thức sau:

T2_DISABLED, T2_DIV_BY_1 T2_DIV_BY_4,

T2_DIV_BY_16 ( trong đề tài dùng bộ chia 16)

- Period là một số nguyên (0255) để xác định

khi nào thì xung clock reset

- Postscale là số (116) để xác định có bao

nhiêu lần reset trước một ngắt: 1 có nghĩa là 1

lần, 2 nghĩa là 2 lần…

Chức năng của lệnh này là tạo ra chu kỳ xung và

được tính như sau:

T = (1/fosc)*4*t2_div*(period+1)

setup_timer_2(t2_div_by_16,154,1);

//Tpwm =(1/10MHz)*4*16*(154+1) = 0.992 ms

Timer sẽ tăng mỗi 6.4us (4*16*(1/10Mhz=6,4us),Timer2 sẽ tràn mỗi 6.4us *154 = 985.6us,tràn 1 lần (postscale=1)thì sảy ra ngắt

Trang 12

Value=duty = 620=4*(154+1); Tpwm=value*T2_div*(1/10MHz)

set_pwm1_duty(duty); //620 là giá Max duty Thời gian duty là thời gian xung (mức cao) của chu kỳ xung, minh hoạ như hình dưới:

Như vậy, trong bài ta có chu kỳ

xung là 0.992ms, để động cơ quay

với tốc độ cực đại thì thời gian duty

= chu kỳ xung bởi vì khi ấy gần như

ngõ ra bộ PWM chỉ là mức 1

4 Tìm hiểu ngôn ngữ lập trình CCS C cho VDK Pic

CCS C là một công cụ giúp lập trình c cho vdk khá mạnh,CCS C tích hợp trình biên dịch bên trong,rất tiện cho việc lập trình và dịch files hex cho vdk

Mô tả nội dung chương trình

#include 16f877a.h : Đi kèm chương trình dịch, chứa khai báo về các thanh ghi trong mỗi con PIC, dùng cho việc cấu hình cho PIC

#include <KhaiBao_16F877A.h>: Files do người lập trình tạo ra, chứa khai báo về các thanh ghitrong PIC giúp cho viêc lập trình được dễ dang hơn ví dụ ta co thể gán PORTB =0xAA (chi tiết files này sẽ trình bày trong phần dưới đây)

#device *=16 ADC = 8: Khai báo dùng con trỏ 8 hay 16 bit, bộ ADC là 8 hay 10 bit

#FUSES NOWDT, HS: Khai báo về cấu hình cho PIC

#use delay(clock=20000000): Tần số thạch anh sử dụng

#use rs232 (baud=9600,…): Khai báo cho giao tiếp nối tiếp RS232

Trang 13

#use i2c(master, SDA=PIN_C4,…): Khai báo dùng I2C, chế độ hoạt động

#include <tên_file.c>:Khai báo các files thư viện được sử dụng ví dụ LCD_lib_4bit.c

#INT_xxx : Khai báo địa chỉ chương trình phục vụ ngắt

Void tên_chương_trình (tên_biến) {}: Chương trình chính hay chương trình con

5 Thiết kế mạch bằng phần mềm Proteus

Proteus là phần mềm mô phỏng trực quan ,giúp người học tiếp cận nhanh chóng khi chưa có điều kiện tiến hành trên linh kiện thật,là công

cụ tốt để kiểm tra ý tưởng của mình.Mạch mô phỏng vẽ bằng proteus như hình trên

6 Viết code và mô phỏng

//****************************************************

// Author : Nguyen Quoc Su

// Mssv:07117055

// Phone:0914.114.338

// Date : 25/11/2010

// Hardware: PIC16F877A

//****************************************************

#include <16F877a.h>

#include <KhaiBao_16F877A.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT

#byte PORTA = 0x05

#byte PORTB = 0x06

#byte PORTC = 0x07

Trang 14

#byte PORTD = 0x08

#byte PORTE = 0x09

#byte TRISA = 0x85

#byte TRISB = 0x86

#byte TRISC = 0x87

#byte TRISD = 0x88

#byte TRISE = 0x89

#device 16F877*=16 ADC=8

#use delay(clock=10000000)

#use fast_io(b)

#use fast_io(d)

//#define daochieu=~(portc&0x08)

Int8 i,tram=0,chuc=0,dvi=0;

int trangthai=0,chieuquay=0;

int8 duty=0,adc;

signed int16 adctam,ndo;

const unsigned char dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,

0x82,0xf8,0x80,0x90,0xbf};

// 0xbf : ma 7 doan tuong ung dau tru

/*

#int_AD

void interrupt_AD()

{

portc=(portc&0xf0)|0x0f;

}

*/

void hex_bcd(signed int16 value)

{

value=value-55;

if(value<0) // khi nhiet do am

{

tram=10; // tram se tuong ung voi ma 7 doan la dau tru

abs(value); // lay tri tuyet doi

}else tram=value/100; // khi nhiet do duong

Trang 15

value=value%100; // chuc + donvi

chuc=value/10; // gia tri nhiet do hang chuc

value=value%10; // gia tri nhiet do hang donvi

dvi=value;

}

void hienthi()

{

i=0;

while(i<10) // thuc hien vong lap 10 lan

{

portb=dig[dvi]; // lay gia tri ma 7 doan tuong ung cua dvi

portd=0x04; // chon led hang don vi

delay_ms(1);

portd=0x00; // chong lem

portb=dig[chuc]; // lay gia tri ma 7 doan tuong ung cua chuc

portd=0x02; // chon led hang chuc

delay_ms(1);

portd=0x00; // chong lem

portb=dig[tram]; // lay gia tri ma 7 doan tuong ung cua chuc

portd=0x01; // chon led hang tram

delay_ms(1);

portd=0x00; // chong lem

if(trangthai==0)

{

portb=0x0c; // r:0xaf p:0x0c

}else portb=0xc6;

portd=0x08; // chon led cuoi

delay_ms(1);

portd=0x00; // chong lem

i++;

}

}

Trang 16

void chaythuan(int16 x)

{

set_pwm1_duty(0);

set_pwm2_duty((620/100)*x);

}

void chaynghich(int16 y)

{

set_pwm1_duty((620/100)*y);

set_pwm2_duty(0);

}

Void main()

{ int8 k;

duty=0;

trisa=0xff;

trisb=0x00;

trisd=0x00;

//trisc=0x09;

trise=0x00;

TRISC1=1;

TRISC3=1;

TRISC4=0;

setup_adc(adc_clock_internal);

setup_adc_ports(AN0_VREF_VREF);

// enable_interrupts(global);

// enable_interrupts(int_AD);

// -setup cho Timer2 ,de su dung

setup_ccp1(CCP_PWM);

setup_ccp2(CCP_PWM);

setup_timer_2(t2_div_by_16,154,1); //Tpwm = 1ms

// set_pwm1_duty(duty);

// set_pwm2_duty(duty);

Trang 17

portb=0xff;

delay_ms(10);

set_adc_channel(0);

delay_us(50);

while(1)

{

adc=read_adc();

ndo=adctam=adc;

ndo-=55;

// portb=adc;

hex_bcd(adctam);

hienthi();

duty = (adc/2.05);

//chaythuan(duty);

if(ndo<0)porte=0x01;

else if (ndo<=45)porte=0x02;

else {porte=(~porte)&0x04;

////////////////////// xu ly hien thi nhiet do va Gia tri Bam xung///////////////// k=portc&0x01;

if (k==0) {

trangthai=0;

while(k==0)

{k=portc&0x01;

hex_bcd(duty+55);

hienthi();

}

}

else trangthai=1;

if(trangthai==1)

{

hex_bcd(adctam);

hienthi();

}

else {

Trang 18

hex_bcd(duty);

hienthi();

}

////////////////////// xu ly chieu quay dong co/////////////////

if((~portc&0x08)==0x08)

{

chieuquay=!chieuquay;

while(((portc&0x08)==0x08))

{

if(chieuquay==1)

chaythuan(duty);

else

chaynghich(duty);

}

}

if(chieuquay==1)

chaythuan(duty);

else

chaynghich(duty);

}

}

}

Ngày đăng: 11/09/2016, 13:06

HÌNH ẢNH LIÊN QUAN

SƠ ĐỒ KHỐI : - Báo Cáo VXL 2 – VDK Pic Quạt Tự Động
SƠ ĐỒ KHỐI : (Trang 2)
SƠ ĐỒ NGUYÊN LÝ: - Báo Cáo VXL 2 – VDK Pic Quạt Tự Động
SƠ ĐỒ NGUYÊN LÝ: (Trang 5)
Hình dạng vdk Pic 16F877A - Báo Cáo VXL 2 – VDK Pic Quạt Tự Động
Hình d ạng vdk Pic 16F877A (Trang 6)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w