Sử dụng chip 89S52 và ADC0804 để thiết kế bộ đo điện áp ở 3 dải 0-5V, 0-25V, 0-50V, hiển thị trên led 7 thanh. Sai số cho phép là ~10%
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA : ĐIỆN TỬ
ĐỒ ÁN MÔN HỌC
ĐỀ TÀI:
THIẾT KẾ
BỘ ĐO ĐIỆN ÁP
Ở 3 DẢI
ĐO 0-5V, 25V, 0-50V HIỂN THỊ TRÊN LED 7 THANH.
“Sai số cho phép là 10%”
Giáo viên hướng dẫn:
Nhóm sinh viên thực hiện:
1.Bùi Minh Đức 2.Nguyễn Viết Hưng 3.Hoàng Ngọc Anh
Mục lục
Trang
Mục lục………2 Lời nói đầu……… 2
Trang 2Chương I
Mô tả ý tưởng: mô hình ý niệm, xây dựng sơ đồ khối……… 4
I Sơ đồ khối,sơ đồ mạch nguyên lý và mạch in ……… 4
II Các vi mạch chính sử dụng trong từng khối và nguyên lý hoạt động của từng khối……….….6
Chương II
Quá trình thực hiện……… 17
I Code lập trình C cho vi điều khiển……….……… 18
II Hình dạng sản phẩm thưc tế hoàn thành……… 19
III.Tóm tắt bản báo cáo, những vấn đề chưa làm được……….…… 20
LỜI NÓI ĐẦU
Trang 3Sự ra đời của các bộ vi xử lí nói chung,các bộ vi điều khiển nói riêng đã tạo ra một bước
ngoặt lớn trong việc thiết kế các hệ thống xử lí thông tin,đo lường điều khiển và truyền thông.Kết quả là đã tạo ra được những sản phẩm như máy ảnh số,máy chơi nhạc
MP3,đầu dĩa DVD,các bộ biến tần,PLC…ngày càng rẻ hơn,nhỏ gọn hơn,thông minh hơn
và tiện dụng hơn.
Hơn nữa ,kỹ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều lĩnh vực khác nữa So với kỹ thuật số thì kỹ thuật vi điểu khiển nhỏ gọn hơn rất nhiều do nó được tích hợp lại và có khả năng lập trình được để điều khiển Nên rất tiện dụng và cơ động
Với tính ưu việt của vi điều khiển thì trong phạm vi đồ án nhỏ này, chúng em chỉ dùng vi đi ều hiển để đo đi ện áp ở ba dải đo 0-5V , 0-25 , 50V , đồng thời cho hiển thị lên LED 7 thanh.
Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệm những ứng dụng của vi điều khiển trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứng dụng khác trong đời sống hằng ngày cần đến.
Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách tham khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót Vì vậy nhóm rất mong được sự góp ý của thầy cô và các bạn.
Chương I
Trang 4Mô tả ý tưởng,mô hình ý niệm,xây dựng sơ đồ khối
I Sơ đồ khối tổng quát,sơ đồ nguyên lý và mạch in
1.Sơ đồ khối tổng quát:
2 Sơ đồ nguyên lý:
KHỐI TÍN
HIỆU VÀO
KHỐI XỬ LÝ TRUNG TÂM: 8051
KHỐI
CHUYỂN ĐỒI
TƯƠNG TỰ
SANG SỐ:
ADC0804
KHỐI NGUỒN
ỔN ÁP SỬ DỤNG IC7805
KHỐI HIỂN THỊ:
SỬ DỤNG LED 7 THANH
ĐẦU RA ỨNG DỤNG
(đo điện áp ở ba thang đo: 5 V, 0-25V và 0-50V)
Trang 53 sơ đồ mạch in :
II Các vi mạch chính sử dụng trong từng khối và nguyên lý hoạt động của từng khối
1 Các vi mạch chính sử dụng trong từng khối
Trang 61 Khối xử lý trung tâm: AT89C52
2 Khối tín hiệu vào:
3 Khối chuyển đổi: ADC 0804
4 Khối hiển thị: LED 7 thanh
5 Khối ổn áp: IC7805
2 Cấu tạo và nguyên lý hoạt động cơ bản của từng vi mạch
2.1 Vi điều khiển AT89C52:
2.1.2 cấu tạo và chức năng các khối của AT89S52.
CPU( CPU centralprocessing unit) bao gồm:
Thanh ghi tích lũy A
Thanh ghi tích lũy phụ B
Đơn vị logic học (ALU)
Thanh ghi từ trạng thái chương trình
Bốn băng thanh ghi
Con trỏ ngăn xếp
Bộ nhớ chương trình( ROM) gồm 8Kbyte Flash
Bộ nhớ dữ liệu( RAM) gồm 256 byte
Bộ UART, có chức năng truyền nhận nối tiếp
3 bộ Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện
Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong
Bộ lập trình( ghi chương trình lên Flash ROM) cho phép người sử dụng có thể nạp các chương trình cho chíp mà không cần các bộ nạp chuyên dụng
Bộ chia tần số với hệ số chia là 12
4 cổng xuất nhập với 32 chân
b, chức năng các chân của AT89C52
Port 0( P0.0=>P0.7)
Port 0 gồm 8 chân, ngoài chức năng xuất nhập, port 0 còn là bus đa hợp dữ liệu và địa chỉ( AD0-AD7), chức năng này sẽ được sử dụng khi 89c52 giao tiếp với các thiết bị ngoài có kiến trúc Bus như các vi mạch nhớ, mạch PIO…
Port 1( P1.0=>P1.7)
Chức năng duy nhất của Port 1 là chức năng xuất nhập cũng như các Port khác Port1 có thể xuất nhập theo bit và theo byte
Port 2( P2.0=>P2.7)
Port 2 ngoài chức năng là cổng vào/ra như Port 0 và 1 còn là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài
Port 3
Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một chức năng riêng, cụ thể như sau:
Trang 7Bit Tên Chức năng
Chân /PSEN : là chân điều khiển đọc chương trình ở bộ nhớ ngoài
Chân ALE
ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điều khiển Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như 7473
Chân /EA
Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hay ngoài EA=1 thì thực hiện chương trình trong RAM nội EA=0 thực hiện ở RAM ngoài
RST( reset)
Ngõ vào reset trên chân số 9 khi RST=1 thì bộ vi điều khiển sẽ được khởi động lại thiết lập ban đầu
XTAL1, XTAL2
2 chân này được nối song song với thạch anh tần số max=33 Mhz Để tạo dao động cho bộ vi điều khiển
Vcc, GND : cung cấp nguồn nuôi cho bộ vi điều khiển cấp qua chân 20 và 40
2.1.3 nguyên lý hoạt động
+Chân 9 được nối với mạch reset Khi nhấn SW1 thì bộ vi điều khiển sẽ được khởi động lại từ đầu
+điện trở băng U1: có tác dụng làm điện trở kéo lên nguồn
+ chân 18-19 được nối // với thạch anh 12Mhz mạch có nhiệm vụ tạo dao động cho vi điều khiển
+chân P3.5, P3.6, P3.7: 3 chân này được nối với lần lượt 3 chân của ADC (chân RD (Read), chân
WR (Write) và chân Ngắt INTR (Interupt)): Nhiệm vụ điều khiển hoạt động của bộ chuyển
đổi số - tương tự
+ chân P1.0=>P1.7 giao tiếp với ADC0804 Cổng P1 này có nhiệm vụ đọc điện áp thu được từ
bộ chuyển đổi
+P0.0=>P0.6: Lần lượt được nối với các chân a,b,c,d,e,f,g của LED Và các chân P2.3 => P2.7: nối với các chân dig1=>dig 4 và chân dp của LED nhằm mục đích điều khiển hiển thị LED +P3.0=>P3.2 : được nối với switch kép để điều khiển chọn thang đo phù hợp
2.2 Khối tín hiệu vào:
Đây là khối làm nhiệm vụ nhận tín hiệu điện áp vào , chia thang đo điện áp trước khi tiến hành chuyển đổi
a, Sơ đồ cấu tạo
Trang 8b Công tắc chuyển mạch
- Làm nhiệm vụ chọn thang đo ở 3 mức: 0-5V; 0-25V; 0-50V
- Các giá trị phân áp:
+ Mức 1 (0-5V):
Phân áp bởi 2 điện trở R12=R16=10K
Ur = Uv.R16/(R12+R16) = 10Uv/(10+10) => Ur = 0,5Uv
+ Mức 2 (0-25V):
Phân áp bởi 2 điện trở R14= 47K và R16=10K
Ur = Uv.R16/(R14+R16) = 10Uv/(47+10) => Ur ≈ 0,1754Uv
+ Mức 3 (0-50V):
Phân áp bởi 2 điện trở R15=220K và R16=10K
Ur = Uv.R16/(R15+R16) = 10Uv/(100+10) => Ur ≈ 0,0909Uv
c IC LM358
LM358 gồm có 2 con khuếch đại thuật toán:
Con thứ 1: chân 2 ,3 vào, chân 1ra
Con thứ 2: chân 5,6 vào, chân 7 ra
Công dụng trong mạch: làm bộ đệm tín hiệu trước khi vào ADC, nhằm mục đích bảo vệ ADC
Trang 9
2.3 Bộ chuyển đổi tương tự-số: ADC 0804:
a Cấu tạo:
ADC 0804 là một bộ chuyển đổi tương tự số Gồm có 20 chân
DB0-DB7: là 8 chân ra dữ liệu
RD: lối vào đọc
WR :lối vào ghi
INTR: lối ra ngắt
CLKR/CLKIN: các lối vào điều khiển xung nhịp
VIN: lối vào analog dương
b sơ đồ:
Chip ADC0804 là bộ chuyển đổi tương tự số thuộc họ ADC08xx của hãng National
Semiconductor Chip này cũng được nhiều hãng khác sản xuất Chip có điện áp nuôi +5V và độ phân giải 8 bit Ngoài độ phân giải thì thời gian chuyển đổi cũng là một tham số quan trọng khi đánh giá bộ ADC Thời gian chuyển đổi được định nghĩa là thời gian mà bộ ADC cần để chuyển một đầu vào tương tự thành một số nhị phân Đối với ADC0804 thì thời gian chuyển đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK và CLK IN và không bé hơn 110s Các chân khác của ADC0804 có chức năng như sau:
Chân số 1, là chân chọn Chip, đầu vào tích cực mức thấp được sử dụng để kích hoạt
Chip ADC0804 Để truy cập ADC0804 thì chân này phải ở mức thấp
Chân số 2, là một tín hiệu vào, tích cực ở mức thấp Các bộ chuyển đổi đầu vào tương
tự thành số nhị phân và giữ nó ở một thanh ghi trong RD đ ược sử dụng để có dữ liệu
đã được chyển đổi tới đầu ra của ADC0804
Khi CS = 0 nếu có một xung cao xuống thấp áp đến chân RD thì dữ liệu ra dạng số 8
bit được đưa tới các chân dữ liệu (DB0 – DB7)
Chân số 3, đây là chân vào tích cực mức thấp được dùng để báo cho ADC biết bắt đầu
quá trình chuyển đổi Nếu CS = 0 khi WR tạo ra xung thấp lên cao thì bộ
ADC0804 bắt đầu quá trình chuyển đổi giá trị đầu vào tương tự Vin về số nhị phân 8
bit Khi việc chuyển đổi hoàn tất thì chân INTR được ADC hạ xuống thấp
CLK IN (chân số 4), là chân vào nối tới đồng hồ ngoài được sử dụng để tạo thời gian
Trang 10Tuy nhiên ADC0804 cũng có một bộ tạo xung đồng hồ riêng Để dùng đồng hồ riêng
thì các chân CLK IN và CLK R (chân số 19) được nối với một tụ điện và một điện trở
(như hình vẽ) Khi ấy tần số được xác định bằng biểu thức:
f = 1/(1,1RC)
Với R=10 k, C=150pF và tần số f=606 kHz và thời gian chuyển đổi là 110 s
Chân số 5, là chân ra tích cực mức thấp Bình thường chân này ở trạng thái cao và khi
việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ liệu chuyển đổi
sẵn sàng để lấy đi Sau khi INTR xuống thấp, cần đặt CS = 0 v à gửi một xung cao
xuống thấp tới chân RD để đưa dữ liệu ra
Chân số 6 và chân số 7, đây là 2 đầu vào tương tự vi sai, trong đó Vin = Vin (+) – Vin (-) Thông thường Vin (-) được nối tới đất và Vin (+) được dùng làm đầu vào tương tự và sẽ được chuyển đổi về dạng số
Vcc
Chân số 20, là chân nguồn nuôi +5V
Chân số 9, là chân điện áp đầu vào được dùng làm điện áp tham chiếu Nếu chân này
hở thì điện áp đầu vào tương tự cho ADC0804 nằm trong dải 0 - +5V Tuy nhiên, có
nhiều ứng dụng mà đầu vòa tương tự áp đến Vin khác với dải 0 - +5V Chân Vref/2
được dùng để thực hiện các điện áp đầu ra khác 0 - +5V
Bảng quan hệ điện áp Vref/2 với Vin
Trang 110.5 0 – 1 1/256 = 3.90
D0 - D7
D0 - D7, chân số 18 – 11, là các chân ra dữ liệu số (D7 là bit cao nhất MSB và D0 là
bit thấp nhất LSB) Các chân này được đệm ba trạng thái và dữ liệu đã được chuyển
đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức thấp
.CÁC BƯỚC CỦA QUÁ TRÌNH CHUYỂN ĐỔI
Đặt WR =RD=1;
Bắt đầu biến đổi Đặt WR=0, trễ( )ms
Đặt lại WR=1;
Phát hiện điểm kết thúc của quá trình biến đổi khi INTR xuống mức thấp (được
sử dụng bởi ngắt) Đặt RD=0 và đọc dữ liệu từ DB0=>DB7
Đặt RD=1 => kết thúc chu trình
2.4 khối hiển thị LED 7 thanh:
a Led 7 thanh
Led 7 đoạn bao gồm nhiều led tích hợp bên trong, các led được nối chung nhau mộtchân Trong thực tế có hai loại led 7 đoạn là led 7 đoạn anod chung và led
7 đoạn katotchung Trong bài này ta sử dụng led 7 đoạn anod chung
b LED quét 7x4
LED quét 7x4 là LED tích hợp 4 LED 7 đoạn trong một linh kiện duy nhất:
Trang 122.5 Khối ổn áp dùng IC 7805:
LED đơn D2 làm nhiệm vụ báo hiệu có nguồn điện vào mạch
Trang 13
Chương II Quá trình thực hiện
I Lập trình cho vi điều khiển:
#include<reg52.h>
#include<math.h>
sbit INTR_ADC = P3^7;
sbit RD_ADC = P3^5;
sbit WR_ADC = P3^6;
sbit muc1 = P3^0;
sbit muc2 = P3^1;
sbit muc3 = P3^2;
unsigned char M[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
int chuc,dvi,pchuc,ptram;
long int k;
float volt,x;
void delay(int j)
{
int i;
for (i=0;i<j;i++);
}
void hienthi(unsigned long int V)
{
V=(int)(volt*100); // ep tu kieu float sang kieu int de chia dong thoi nhan voi 100 de lay 2 so sau dau phay
chuc=V/1000;
dvi=(V/100)%10;
pchuc=((V%100)/10);
ptram=V%10;
for (k=0;k<100;k++)
{
P2=0xBF; // do da noi chan P2.7 voi dau cham len chi co o hang don vi moi ko co so 1 dang sau
P0=M[chuc];
delay(100);
P0=0xFF;
P2=0xF7;
P0=M[ptram];
delay(100);
P0=0xFF;
P2=0xEF;
P0=M[pchuc];
delay(100);
P0=0xFF;
Trang 14
P2=0x5F;
P0=M[dvi];
delay(100);
P0=0xFF;
}
}
void main()
while (1) { INTR_ADC = 1;
RD_ADC = 0;
WR_ADC = 0;
delay(3);
WR_ADC = 1;
delay(3);
while (!INTR_ADC);
x = P1;
volt = (float)((x)*5/255);
x = P1;
if (muc3 == 0)
{ volt =(float)(((x*5)/256)*11); // do bi phan ap lam 11 lan
hienthi(volt);
else
{if (muc2 == 0)
{volt =(float)(((x*5)/256)*5.65);
hienthi(volt);
} else
{volt =(float)(((x*5)/256)*2);
hienthi(volt);
} }
} }
2 sản phẩm sau khi hoàn thành
3 những vấn đề chưa làm được
- chưa có báo hiệu khi đo quá áp (vd đầu vào 6V trong khi thang đo ở mức 0-5V)
4 Hướng cải tiến, nâng cấp sản phẩm
- Bằng cách sử dụng thêm diode lắp thêm vào mạch thì có thể đo được cả dòng điện xoay chiều
- Ta cũng có thể lập trình bằng ngắt ngoài để tín hiệu chân INTR của ADC báo cho vi điều khiển biết quá trình biến đổi dã hoàn tất thay vì hỏi vòng tin hiệu INTR liên tục
- lắp thêm led báo để cảnh báo khi mạch đo quá áp của thang đo