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

Điều khiển hệ thống đèn dùng quang trở và IC thời gian thực

44 602 2

Đ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 44
Dung lượng 2,01 MB

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

Nội dung

Điều khiển hệ thống đèn dùng quang trở và IC thời gian thực

Trang 1

Báo cáo đồ án môn học một

Tên đề tài:

Điều khiển hệ thống đèn dùng quang trở và IC thời gian thực

Đề tài:

Lập trình với vi điều khiển cho ứng dụng điều khiển hệ thống đèn,tương ứng với

3 chế độ,theo thứ tự ưu tiên như sau:

-Chế đô 1:Bật tắt hệ thống đèn bằng tay

-Chế đô 2:Bật tắt hệ thống đèn tùy theo cường độ sáng ngoài trời

-Chế độ 3:Bật tắt hệ thống đèn theo thời gian

1) Mục đích thực hiện đề tài

2) Phương án thực hiện đề tài và sơ đồ khối phần cứng

3) Lý thuyết liên quan

1.2) Ở một số địa phương trồng thanh long cần có hệ thống đèn để sưởi ấm

cho thanh long vào ban đêm,nhằm tăng năng suất thu hoạch thanh long…

Trang 2

2) Phương án thực hiện đề tài

Phương án thực hiện đề tài như sau:

*) Một đặc điểm nữa là đặt mức ưu tiên cho ba chế độ kể trên

Chế độ bằng tay đươc ưu tiên cao nhất,sau đó đến chế độ tự động bằng

quang trở,và ưu tiên sau cùng dành cho chế đọ tự động bằng IC thời gian thực

Sơ đồ khối thực hiện phần cứng:

Giải thích sơ đồ khối:

- Việc bật hay tắt tải thông qua điều khiển TRIAC

Trang 3

- Có 2 cách điều khiển TRIAC: Bằng tay (MANUAL) và tự động thông qua lập trình cho PIC

- Việc đọc ADC từ 2 quang trở về được thực hiện ỏ chân RA0 và RA1 của PIC

- Việc đọc dữ liệu thời gian về từ khối REALTIME,thông qua giao tiếp I2C (với 2 dây SCL và SDA) được thực hiện ở chân RC3 và RC4 của PIC

3) Lý thuyết liên quan

Bố cục trình bày:

3.1) Lý thuyết về ADC và module ADC trong PIC 16F887

3.2)Lý thuyết về I2C và module I2C trong PIC 16F887

3.1) Lý thuyết về ADC và module ADC trong PIC 16F887

3.1.1)Tổng quan về quá trình chuyển đổi A/D

3.1.2) Các bước của quá trình chuyển đổi A/D

3.1.3) Module ADC trong PIC 16F887

3.1.1) Tổng quan về quá trình chuyển đổi A/D

Bộ chuyển đổi ADC là bộ chuyển đổi tín hiệu tương tự thành tín hiệu số

Trang 4

Nhờ các sensors mà ta định lượng được các đại lượng phi điện như nhiệt độ,độ ẩm…từ đó kết hợp sensors với các bộ ADC để chuyển đổi sự thay đổi liên tục của các đại lượng phi điện này thành các bước nhảy của tín hiệu digital(qua quá trình lấy mẫu vàlượng tử hóa).Một khi đã chuyển đổi được các đại lượng phi

điện thành tín hiệu digital,ta dễ dàng lập trình với vi điều khiển sao cho phù hợp với từng ứng dụng cụ thể

3.1.2) Các bước của quá trình chuyển đổi A/D

a) Quá trình lấy mẫu và nhớ mẫu (sample và sample hold)

 Quá trình lấy mẫu

 Định lý lấy mẫu cho ta chặn dưới của tần số lấy mẫu fs,còn chặn trên ta phải

dựa vào giới hạn về phương diện dung lượng bộ nhớ và tốc độ xử lý của phần cứng,ngoài ra còn phải tùy vào ứng dụng để xác định chặn trên của f

Trang 5

 Quá trình nhớ mẫu

Mỗi lần chuyển đổi từng mẫu đều tốn một khoảng thời gian nhất định,mà các mẫu lại xuất hiện liên tục theo chu kì lấy mẫu,do đó cần thiết phải có yếu tố nhớ mẫu (sample hold) để chắc chắn rằng ta không bỏ sót mẫu nào

Mạch nhớ mẫu(hold sample) đơn giản

Trang 6

b) Quá trình lượng tử hóa và mã hóa

 Tín hiệusau khi lấy mẫu không những rời rạc về mặt thời gian mà còn rời rạc về mặt giá trị.Do đặc điểm này mà ta cần quá trình lượng tử hóa,đó là quá trình mà

ta bắt điện áp lấy mẫu hóa thành bội số nguyên lần giá trị đơn vị

 Như vậy,quá trình lượng tử hóa thực chất là quá trình làm tròn đến một giá trị thích hợp,gần nhất

 Việc làm tròn này làm xuất hiện sai số trong quá trình lượng tử.Nếu độ phân giải không đủ(số bít để lượng tử nhỏ) thì sai số càng lớn

 Độ phân giải n bít nghĩa là ADC có thể biểu diễn được 2n giá trị của tín hiệu sau lấy mẫu

 Việc dùng mã nhị phân biểu thị giá trị tín hiệu số là mã hóa Mã nhị phân có

được sau quá trình trên chính là tín hiệu đầu ra của chuyên đổi A/D

Trang 7

3.1.3) Module ADC trong PIC 16F887

3.1.3.1) Tổng quan về module ADC trong PIC 16F887

3.1.3.2) Cấu hình cho module ADC trong PIC 16F887

3.1.3.1) Tổng quan về module ADC trong PIC 16F887

 Module ADC trong PIC 16F887 có độ phân giải 10 bít

 Module ADC trong PIC 16F887 có 14 kênh chuyển đổi A/D từ AN0 đến AN13

 Sau khi lấy mẫu và giữ,tín hiệu ở dạng xung được đưa vào bộ chuyển đổi.Kết quả của quá trình chuyển đổi trên ở dạng 1 chuỗi bít gồm 10 bít,được lưu trong 2 thanh ghi ADC result gồm ADRESL và ADRESH

 Có thể chọn điện áp tham khảo nội hoặc điện áp tham khảo ngoại.Việc lựa chọn này được thực hiện bằng phần mềm

 Module ADC trong PIC 16F887 có thể tạo ngắt khi một chuyển đổi được thực hiện xong

3.1.3.2) Cấu hình cho module ADC trong PIC 16F887

a) Cấu hình PORT

b) Chọn kênh chuyển đổi

c) Chọn điện áp tham khảo

d) Chọn nguồn clock cho việc chuyển đổi

e) Điều khiển ngắt trong ADC

f) Định dạng kết quả chuyển đổi

Trang 8

a) Cấu hình PORT

 Module ADC trong PIC 16F887 có thể được dùng để chuyển đổi cả tín hiệu analog và digital.Bằng cách cấu hình PORT cho 2 thanh ghi ANSEL và ANSELH ta sẽ lựa chọn được 1 trong 2 chế độ trên

 Cách cấu hình:

 TRIS ANSEL=0xFF ; //Chọn chuyển đổi tín hiệu Analogtừ AN0 đến AN7

 TRIS ANSELH= 0xFF ; // Chọn chuyển đổi tín hiệu Analog từ AN8 đến AN13

 TRIS ANSEL= 0x03 ; // Chọn chuyển đổi tín hiệu Analog 2 kênh AN0 và AN1

b) Chọn kênh chuyển đổi

 4 bít CHS <3:0> trong thanh ghi ADCON0 xác định kênh nào được đọc ADC

Ví dụ: CHS <3:0>=0011 => Kênh AN3 đang được chọn

Trang 9

c) Chọn điện áp tham khảo

-Điện áp tham khảo phải là nguồn áp rất ổn định

-Chọn điện áp tham khảo bằng cách cấu hình cho 2 bít VCFG<1:0> trong thanh ghi ADCON0

Ví dụ: VCFG1=0;VCFG0=0; // Chọn điện áp tham khảo nội

VCFG1=1;VCFG0=1; // Chọn điện áp tham khảo ngoại(điện

áp tham khảo ngoại phải đưa vào 2 chân RA2 và RA3)

d) Chọn nguồn clock cho việc chuyển đổi

 Chọn nguồn clock cho việc chuyển đổi được thực hiện thông qua việc cấu hình cho 3 bít ADCS<2:0>

 Việc cấu hình trên phai quan tâm đến định lý lấy mẫu

e) Điều khiển ngắt trong ADC

 Bít ADIF là cờ báo ngắt

 Để cho phép ngắt,ta cần đặt: PEIE=1;GIE=1

Trang 10

 Khi một quá trình chuyển đổi được thực hiện xong,cờ báo ngắt ADIF

được set lên 1,để bắt đầu một quá trình chuyển đổi mới,ta cần clear ADIF bằng phần mềm

f) Định dạng kết quả chuyển đổi

 Bít ADFM điều khiển việc định dạng kết quả chuyển đổi

3.2) Lý thuyết về I2C và module I2C trong PIC 16F887

3.2.1) Đặc điểm của giao tiếp I2C

3.2.2) Cách thức truyền dữ liệu theo giao tiếp I2C

3.2.3) Module I2C trong PIC 16F887

3.2.1) Đặc điểm của giao tiếp I2C

Trang 11

 Là một chuẩn giao tiếp nối tiếp rất hữu dụng cho các ứng dụng giao tiếp của các thiết bị vi điều khiển và các thiết bị ngoại vi.Các ngoại vi có thể

là các Serial EEPROM,các thanh ghi dịch,các bộ hiển thị,A/D Converter,các cảm biến nhiệt độ…

 Nguồn dùng cho giao tiếp I2C thường là 3.3V hoặc 5V ,đây là các nguồn thông dụng dùng cho vi điều khiển

 Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL)

 Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua một điện trở kéo lên (pull‐up resistor)Đối với giao tiếp I2C giá trị của các điện trở này nên có giá trị từ 1,8kΩ đến 47kΩ,trong đó có 3 giá trị điện trở sau đã được thực nghiệm xác nhận là tốt nhất cho đường truyền I2C,đó là 1.8kΩ; 4.7kΩ và 10kΩ;

 Có thể cónhiều thiết bị ngoại vi cùng được kết nối vào một bus

I2C, nhưng sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết

bị sẽ được nhận ra bởi một địa chỉ duy nhất của nó Có 2 cách định địa chỉ: Định địa chỉ 7 bít và 10 bít

 Các mode hoạt động và tốc độ của đường truyền I2C

3.2.2) Cách thức truyền dữ liệu theo giao tiếp I2C

1) Phân tích sơ đồ thời gian truyền nhận dữ liệu trên bus I2C

2) Định dạng dữ liệu truyền

3) Định dạng địa chỉ thiết bị ngoại vi

4) Ví dụ phân tích quá trình “Read 1 byte “và “Write 1 byte”

1) Phân tích sơ đồ thời gian truyền nhận dữ liệu trên bus I2C

Trang 12

 Trong giao tiếp I2C,chế độ rỗi ứng với SDA=SCL=1,điều này đạt được bởi 2 điện trở pull-up kéo lên nguồn

 Để bắt đầu quá trình truyền nhận dữ liệu,ta cần khởi tạo đường truyền bằng một tìn hiệu Start-đó là lúc SDA bị kéo xuống 0,trong khi SCL vẫn bằng 1(xem hình trên)

 Một thời gian ngắn sau thì bít SCL cũng bị kéo xuống 0,kể từ thời điểm này bắt đầu truyền nhận dữ liệu(Transfer data)trên bus I2C

 Bước vào quá trình truyền dữ liệu,cứ mỗi bit dữ liệu được truyền đi,dữ liệu trên SCL sẽ được kích thêm 1 xung

 Để kết thúc việc truyền dữ liệu,thì ta cần một tín hiệu Stop được gửi đi,bằng cách cho SDA đuợc kéo lên mức cao trong lúc SCL vẫn ở mức cao

 Cả hai điều kiện START và STOP đều được tạo ra bởi thiết bị chủ

Sau tín hiệu START,bus I2C coi như đang trong trang thái làm việc

Sau tín hiệu STOP Bus I2C sẽ rỗi, sẵn sàng cho một giao tiếp mới

2) Định dạng dữ liệu truyền

 Dữ liệu được truyền đi theo từng bít,bít dữ liệu được truyền đi tại sườn

dương của xung clock SCL,quá trình thay đổi bít dữ liệu trên SDA xảy ra

khi SCL ở mức thấp

Trang 13

 Sau 8 xung clock trên dây SCL, 8 bit dữ liệu đã được truyền đi

 Thiết bị nhận, sau khi đã nhận đủ 8 bít dữ liệu sẽ kéo SDA xuống mức thấp

tạo một xung ACK

 Thiết bị truyền khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình truyền

hoặc kết thúc

3) Định dạng địa chỉ thiết bị ngoại vi

Trang 14

 Khi thiết bị chủ muốn giao tiếp với ngoại vi nào trên bus I2C, nó sẽ gửi 7 bit địa chỉ của thiết bị đó ra bus ngay sau xung START ,điều đó có nghĩa là ta

có thể giao tiếp với 128 thiết bị ngoại vi

 Mỗi một thiết bị ngoại vi sẽ có một địa chỉ riêng do nhà sản xuất ra nó quy định

 Byte đầu tiên được gửi sẽ bao gồm 7 bit địa chỉ và một bít thứ 8 điều khiển hướng truyền (“0”- ghi, “1”- đọc)

4) Ví dụ phân tích quá trình “Read 1 byte “và “Write 1 byte”

 Khi chưa bắt đầu quá trình truyền dữ liệu thì bus I2C đang ở trạng thái rỗi

 Để bắt đầu quá trình truyền dữ liệu,Master phải gửi đi tín hiệu Start

 Sau đó Master gửi lên đường truyền 7 bít địa chỉ của Slave(tra trong

datasheet của nhà sản xuất thiết bị),kèm theo một bít Write(W)

Trang 15

 Sau khi nhận đủ byte,thì Slave tự động gửi về cho Mastre bít ACK để báo hiệu rằng Slave đã nhận đủ byte

 Master sau khi nhận được bít ACK,nó gửi tiếp cho Slave 8 bit địa chỉ thanh ghi của Slave mà nó muốn truy cập.Khi nhận xong 8 bít,Slave lại gửi về

ACK

 Để chuyển sang trạng thái đọc,Master cần gửi đi tín hiệu ReStart để khởi tạo lại đường truyền,sau đó gửi lại 7 bít đại chỉ của Slave một lần nữa,kèm theo bít Read (R) để báo hiệu cho Slave rằng nó cần đọc dữ liệu từ Slave về

 Slave gửi lại ACK để xác nhận,kèm theo 8 bít data chứa trong địa chỉ thanh ghi mà Master đã báo cho nó lúc trước

 Master nhận được một byte dữ liệu và nó điều khiển việc kết thúc truyền

nhận dữ liệu bằng tín hiệu NACK kèm theo bít Stop

 Cần lưu ý rằng,ta chỉ điều khiển được Master,còn những tín hiệu gửi đi từ Slave là tự động,ta không can thiệp được

 Việc phân tích truyền nhận dữ liệu trên bus I2C trong trường hợp ghi

hoàn toàn tương tự như đọc 1 byte

 Điểm khác nhau căn bản nhất giữa đọc 1 byte và ghi 1 byte chỉ là lúc kết thúc truyền nhận dữ liệu.Trong quá trình đọc,để kết thúc truyền nhận dữ liệu,Master cần gửi đi bít NAK trước khi gửi đi tín hiệu Stop,còn ở quá trình ghi,để kết thúc việc truyền nhận dữ liệu,Master chỉ cần gửi đi bít Stop là đủ

Trang 16

Sau đây là quá trình đọc nhiều byte và ghi nhiều byte,việc phân tích truyền

nhận dữ liệu là tương tự như trên

3.2.3) Module I2C trong PIC 16F887

 Module I2C nằm trong module MSSP của PIC 16F887

 Có 2 cách định địa chỉ thiết bị trên đường truyền:7 bít và 10 bít

Trang 17

 Dùng 2 chân RC3/SCL (truyền xung clock)và RC4/SDA(truyền dât) để truyền dữ liệu bằng giao thức I2C.Lưu ý người dùng phải cấu hình cho 2 chân này là input hoặc output

 Chức năng I2C được enable bằng cách set bít SSPEN trong thanh ghi SSPCON lên 1

 Có nhiều phương án để điều khiển bóng đèn theo cường độ ánh sáng môi trường và theo thời gian.Vì thế,chắc chắn sẽ có nhiều phương pháp khác hiệu quả hơn về mặt kinh tế và kỹ thuật,đòi hỏi người thực hiện phải cải tiến sản phẩm để sản phẩm tốt hơn

 Qua việc thực hiện đồ án,thu nhận thêm được những kiến thức sau:

 Các chuẩn giao tiếp như UART,I2C,SPI

 Kiến thức lập trình

 Kĩ năng phần cứng

 Giao tiếp giữa MCU và LCD

 Ưu điểm của sản phẩm

 Cho phép hiển thị thời gian

 Có 2 quang trở nên tạo tính tin cậy hơn cho sản phẩm

 Sản phẩm được hoạt động theo chế đọ ưu tiên

 Nhược điểm:

 Chưa có nút chỉnh thời gian cho khối real time

 Nếu muốn điều khiển nhiếu tải hơn,ta phải thay biến áp khác có khả năng chịu dòng lớn hơn,chẳng hạn như biến áp xung-vừa gọn nhẹ vừa có khả năng tải lớn

 Hướng phát triển:

 Tạo nút hẹn giờ cho khối Real time

 Cải tiến để sản phẩm gọn nhẹ hơn

Trang 18

PHẦN PHỤ LỤC

5.1) Sơ đồ khối và sơ đồ nguyên lý thực hiện phần cứng

5.2) Thi công mạch TRIAC và REALTIME CLOCK

5.3) Thi công mạch PIC 16F887

Trang 19

5.2) Thi công mạch TRIAC và REAL TIME CLOCK

5.3) Thi công mạch PIC 16F887

Trang 21

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

*

* Module : main_combine.c

* Description : Display the time on LCD16x2, using Real Time Clock

DS1307 & I2C protocol

Give ADC priority

* Tool : HI-TECH PIC

* Chip : 16F887

* History : 7/12/2011

*

* Author : Nguyen Van Hai, TNDVT08

* Hardware : PORTD<==>LCD16x2 ; [RC3,RC4]<==>DS1307 (I2C

protocol)

RA0 va RA1 la 2 chan doc ADC

* RB0 la chan dieu khien tai

Trang 22

#include <htc.h>

#include "lcd.h"

#include "i2c.h"

#include "rtc.h"

CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON &

CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF &

DEBUG_OFF); //1st config Word

CONFIG(BOR4V_BOR21V); //2st config Word

Trang 23

* SUBROUTINES

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

void delay10Tms(unsigned char T);

void time2LCD(RTCTime time);

void BCD2LCD(unsigned char val);

Trang 24

TimeNow = RTC_read(); // doc thoi gian vao bien,time no chua 7 byte trong ham RTC_read

Trang 25

//Cai dat thoi gian lam tai OFF khi quang tro chua lam tai OFF

if (TimeNow.hour == 0x08 && TimeNow.minute == 0x45 && TimeNow.second == 0x00)

Trang 26

} read_adc(); // Tiep tuc doc ADC,neu troi toi (RB4=1) thi RB5=0 lap tuc thoat ra ngoai vong lap while

TimeNow = RTC_read(); // doc thoi gian vao bien,time now chua 7 byte trong ham RTC_read

thi lcd

Trang 29

RB2 = 0;

GO_nDONE = 1; //Set GODONE bit to start a new AD conversion

}

delay_us(50); //delay between 2 AD conversions

// Select Input chanel: AN0

Trang 30

GO_nDONE = 1; //Set GODONE bit to start conversion }

Trang 31

ANSELH=0x00; //

TRISB=0; //PORT B la output

PORTB=0;

TRISA0 = 1; //RA0 phai la Input de doc ADC

TRISA1 = 1; //RA1 phai la Input de doc ADC

lcd_init(); // khoi dong lcd

i2c_init(); // khoi dong i2c

//RTC_init(); //chi set up o lan dau tien cua DS1307

lcd_puts("Real Time Clock");

Trang 32

// Result format: Right

// ADFM = 1 Right justified

// ADFM = 0 Left justified

Trang 34

unsigned char i[2];

i[1] = (val>>4) & 0x0f; //lay 4 bit cao

i[0] = val & 0x0f; //lay 4 bit thap

Trang 35

** Returned value: None

Trang 37

** Returned value: None

// - NAP THOI GIAN BAN DAU CHO I2C -//

//chi set thoi gian 1 lan duy nhat Sau do xoa' doan code nay`

//roi nap lai code 1 lan nua (doan code sau chi doc data ve,

//chu khong set thoi gian lai > ds1307 moi chay dung' thoi

//gian Neu khong lam nhu vay, cu sau moi lan reset, ds1307

//lai duoc set lai thoi gian

Ngày đăng: 20/03/2016, 12:15

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối thực hiện phần cứng: - Điều khiển hệ thống đèn dùng quang trở và IC thời gian thực
Sơ đồ kh ối thực hiện phần cứng: (Trang 2)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w