Trên cơ sở đó, nhằm để có thể phát huy những kiến thức đã học cũng như tích luỹ thêm kinh nghiệm trong thiết kế mạch chúng em đã chọn đề tài: “ Mạch đếm sản phẩm sử dụng PIC”.. Đồ án đượ
Trang 1VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CN ĐIỆN TỬ- THÔNG TIN
Thiết kế : Mạch đếm sản phẩm dùng Timer của PIC16F877A
Sinh viên thực hiện : Nguyễn Tiến Đạt
Nguyễn Thị Huyền Trang
Lê Đức Anh
Lớp : K23C
Nghành: Tự động hóa
Giảng viên hướng dẫn: Hoàng Anh Dũng
Hà Nội, 2022
Trang 2LỜI NÓI ĐẦU
Ngày nay khoa học kỹ thuật đã có những bước tiến rất nhanh chóng ở các quốc gia trên toàn thế giới nói chung và Việt Nam nói riêng Ngành tự động hóa đã, đang và sẽ tiếp tục có những đóng góp to lớn cho tình hình phát triển chung đó Một trong những thành tựu của ngành tự động hóa là việc cho ra đời các hệ thống sản xuất tự động thay thế con người Điều này đã giúp tăng hiệu suất lao động và tăng năng suất sản xuất cho các nhà máy, xí nghiệp Các hệ thống tự động được xây dựng nhằm mục đích phục vụ cho lĩnh vực sản xuất đặc biệt là sản xuất với số lượng lớn và ngay khi vừa mới đưa vào thử nghiệm thì nó đã chứng tỏ được ưu thế của mình thông qua các con số thống
kê về số lượng thành phẩm mà dây chuyền tự động thực hiện được so với số thành phẩm do nhân công tạo ra
Trên cơ sở đó, nhằm để có thể phát huy những kiến thức đã học cũng như tích luỹ thêm kinh nghiệm trong thiết kế mạch chúng em đã chọn đề tài: “ Mạch đếm sản phẩm sử dụng PIC” Mục đích chính của đồ án là thiết kế một hệ thống tự động có thể cho biết năng suất của dây chuyền sản xuất trong một nhà máy Đồ án được thực hiện Trên cơ
sở đó, nhằm để có thể phát huy những kiến thức đã học cũng như tích luỹ thêm kinh nghiệm trong thiết kế mạch chúng em đã chọn đề tài: “ Mạch đếm sản phẩm sử dụng PIC” Mục đích chính của đồ án là thiết kế một hệ thống tự động có thể cho biết năng suất của dây chuyền sản xuất trong một nhà máy Đồ án được thực hiện dựa trên 3 yêu cầu là mạch phải đơn giản, rẻ và có tính khả thi Từng công đoạn thực hiện cũng như giới thiệu về cơ sở lý thuyết để thiết kế nên mạch sẽ lần lượt được giới thiệu cụ thể trong những phần sau của đồ án
Việc làm đồ án đã giúp cho chúng em có thêm được nhiều kiến thức bổ ích về thực tế,
bổ sung những kiến thức đã được học ở nhà trường
Tuy nhiên, do còn hạn chế về kinh nghiệm thực tế, tài liệu tham khảo, thời gian thực hiện, nên đồ án không thể tránh khỏi những thiếu sót, kính mong giáo viên hướng dẫn góp ý xây dựng để đồ án được hoàn thiện hơn
Trang 3CHƯƠNG 1 : GIỚI THIỆU VỀ ĐỀ TÀI
1 Tóm tắt đề tài môn học
1.1 : Giới thiệu
Đề tài đồ án môn học của nhóm em là : “ Đếm sản phẩm dùng Timer của PIC16F877A” Với yêu cầu của đề tài như trên , hướng thực hiện đề tài của
chúng em như sau :
*Tóm tắt hướng thực hiện đề tài
- Sử dụng vi điều khiển Pic 16F877 làm chíp điều khiển trung tâm
- Dùng chương trình PIC-C lập trình code
- Sử dùng phần mềm protues mô phỏng mạch
- Xây dựng các nút nhấn :
+ Nút nhấn RESET
+ Nút nhán BUTTON
- Sử dụng LED để làm tín hiệu cho các thiết bị điện
- Sử dụng LCD để làm màn hình hiển thị
- Đối tượng điều khiển là các thiết bị điện trong mạch
- Ngoài ra , trên mạch còn có các linh kiện khác để thực hiện truyền tín hiệu giữa vi điều khiển trung tâm với các thiết bị nói trên
Tất cả các module mạch trên sẽ được chúng em trình bày rõ trong ccs phần tiếp theo của đề tài
1.2 : Sơ đồ nguyên lý kết nối các module trong mạch
1.3 Cách vận hành mạch
Trang 4CHƯƠNG 2 : GIỚI THIỆU LINH KIỆN
1 Giới thiệu về vi điều khiển PIC 16F877A
PIC là tên viết tắt của “Programmable Intelligent computer” do hãng General Instrument đặt tên cho con vi điều khiển đầu tiên của họ Hãng Micrchip tiếp tục phát triển sản phẩm này và cho đến hàng đã tạo ra gần 100 loại sản phẩm khác nhau PIC16F877A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu hết tất
cả các ứng dụng thực tế Đây là dòng PIC khá dễ cho người mới làm quen với PIC có thể học tập và tạo nền tảng về họ vi điều khiển PIC của mình.Cấu trúc tổng quát của PIC16F877A
như sau:
- 8K Flash Rom
- 368 bytes Ram
- 256 bytes EFPROM
- 5 port vào ra với tín hiệu điều khiển độc lập 6
- 2 bộ định thời :
Timer0 : bộ nhớ 8 bit bộ chia tần số 8 bit
Timer2 : bộ đếm 8 bit với bộ chia tần số
- 1 bộ định thời Timer1 16 bit có thể hoạt động ở cả chế độ tiết kiệm năng lượng với nguồn xung clock ngồi
- 2 bộ Capture/Compare/ PWM
- 1 bộ biến đổi Analog -> Digital 10 bit, 8 ngõ vào
- 2 bộ so sánh tương đương
- 1 bộ định thời giám sát
- 1 cổng song song 8 bit với các tín hiệu điều khiển
-1 cổng nối tiếp
Trang 5-15 nguồn ngắt
PIC là một họ vi điều khiển RISC của MICROCHIP
PIC: Programmable Intelligent Computer
Hình 1.1 : Sơ đồ cơ cấu của PIC16F877A
Hình 1.2 : Sơ đồ chân của PIC 16F877A
Trang 6Hình 1.3 : Sơ đồ thực tế
* Chức năng của các ports:
RA0-5 : Cổng giao tiếp 2 chiều A RB1-7 : Cổng giao tiếp 2 chiều B
RBO/INT : Cổng giao tiếp 2 chiều Chân ngắt ngoài ( External Interrup Pin)
RC0-7 : Cổng giao tiếp 2 chiều C RD0-7 : Cổng giao tiếp 2 chiều D REO-2 : Cổng giao tiếp 2 chiều E AN0-7 : Cổng giao tiếp tương tự V : Chân mass
Vp: Chân nguồn.( +2.0V > +5.5V)
OSC1/CLKIN : Chân nối với dao động thạch anh (Oscillator Crystal Input)
OSC2/CLKOUT : Chân nối với dao động thạch anh (Oscillator Crystal Output) MCLR : Chân reset mức thấp (Active low reset)
*Điều kiện hoạt động
VDD : 5VDC
RESET: Tích cực mức thấp
Thạch anh : 4/8/12/20MHz
Cổng ghi chương trình : JTAG
2 Giới thiệu về các linh kiện trong mạch
2.1 Led 7 đoạn
Có thể hiểu một cách vô cùng đơn giản về LED 7 đoạn như sau:
LED 7 đoạn hay LED 7 thanh (Seven Segment display) là 1 linh kiện rất phổ dụng, được dùng như là 1 công cụ hiển thị đơn giản nhất
Trang 7- Trong LED 7 thanh bao gồm ít nhất là 7 con LED mắc lại với nhau, vì vậy mà có tên
là LED 7 đoạn là vậy ,7 LED đơn được mắc sao cho nó có thể hiển thị được các số từ 0
- 9, và 1 vài chữ cái thông dụng, để phân cách thì người ta còn dùng thêm 1 led đơn để hiển thị dấu chấm (dot) Các led đơn lần lượt được gọi tên theo chữ cái A-
B-C-D-E-F-G, và dấu chấm dot (DP)
- 8 led đơn trên led 7 thanh có Anode (cực +) hoặc Cathode (cực -) được nổi chung với nhau vào một điểm và được đưa chân ra ngoài để kết nối với mạch điện 7 cực còn lại trên mỗi led đơn của led 7 đoạn và 1 cực trên led đơn ở góc dưới, bên phải của led 7 đoạn được đưa thành 8 chân riêng để điều khiển cho led sáng tắt theo ý muốn Nếu led 7 đoạn có Anode (cực +) chung, đầu chung này được nối với +Vcc, các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 0
Hình 2.1 Sơ đồ chân của Led 7 thanh
2.2 Điện trở:
Điện trở là linh kiện thụ động có tác dụng cản trở cả dòng và áp Điện trở được sử dụng rất nhiều trong các mạch điện tử
R=
Trong đó: p là điện trở suất của vật liệu , S là thiết diện của dây , l là chiều dài của dây Điện trở là đại lượng vật lí đặc trưng cho tính chất cản trở dòng điện của một vật thể dẫn điện Nó được định nghĩa là tỉ số của hiệu điện thế giữa hai đầu vật thể đó với cường độ dòng điện đi qua nó:
R=
Trong đó
U : là hiệu điện thế giữa hai đầu vật dẫn điện, đo bằng vôn (V)
Trang 8I: là cường độ dòng điện đi qua vật dẫn điện, đo bằng ămpe (A).
R : là điện trở của vật dẫn điện, đo bằng Ohm (Ω)
a Thạch anh 8MHz
Tạo tần số hoạt động cho PIC 16F877
Đặc tính vật lý : độ bền cơ học ít , ít chịu ảnh hưởng của nhiệt độ và tác dụng hóa học
Hình 2.2: Hình và kí hiệu thạch anh Giá trị thạch anh thường dùng là 8MHz , 12MHz ,20MHz
b Tụ điện :
Tụ điện là một linh kiện thụ động cấu tạo của tụ điện là hai bản cực bằng kim loại ghép cách nhau một khoảng 1 ở giữa hai bản tụ là dung dịch hay chất điện mỗi cách điện có điện dung C Đặc điểm của tụ là cho dòng điện xoay chiều đi qua, ngăn cản dòng điện một chiều
Hình 2.3: kí hiệu tụ điện
Giá trị của tụ điện là điện dung
Trang 9Đơn vị của đại lượng điện dung là Fara [F] Trong thực tế đơn vị Fara là trị số rất lớn,
do đó thường dùng các đơn vị đo nhỏ hơn như micro Fara (1uF=106F), nano Fara
(InF-10 °F), picoFara (1pF=(InF-10-12F)
Công thức tính điện dung của tụ : =ℰ
Trong đó : là hằng số điện môi ℰ
S là điện tích mựt tụ m2
d là bề dày chất điện môi
2.3 Nút nhấn BUTTON
Button là nút nhấn
Nút nhấn có 2 trạng thái :
Dẫn điện ( thường dùng để tạo mức LOW cho vi điều khiển )
Không dẫn ( thường dùng để tạp múc HIGHT cho vi điều khiển )
2.4 Ic 7805
IC điều chỉnh điện áp dương đầu ra 5V Nó là IC của dòng ổn áp dương LM78xx, được sản xuất trong gói TO-220 và các gói khác IC này được sử dụng rộng rãi trong các thiết bị thương mại và giáo dục Nó cũng được sử dụng bởi nhiều người đam mê điện tử và thợ mày mò do giá rẻ, dễ sử dụng và không cần nhiều linh kiê “n bên ngoài
IC có nhiều tính năng tích hợp lý tưởng để sử dụng trong nhiều ứng dụng điện tử như dòng điện đầu ra 1.5A, chức năng bảo vệ quá tải, bảo vệ quá nhiệt, dòng điện tĩnh thấp, v.v
Trang 10Hình 2.5 : ic 7805
Bảng thông số kĩ thuật :
Ứng dụng cho IC7805
IC 7805 được sử dụng trong nhiều loại mạch Những điều chính là:
Bộ điều chỉnh đầu ra cố định
Bộ điều chỉnh điện áp dương trong cấu hình điện áp âm
Bộ điều chỉnh đầu ra có thể điều chỉnh
Điều chỉnh dòng điện
Bộ điều chỉnh điện áp một chiều có thể điều chỉnh
Nguồn cung cấp kép được điều chỉnh
Mạch bảo vệ đảo cực-đảo chiều đầu ra
Mạch chiếu phân cực ngược
Trang 11Bộ điều chỉnh điện áp 7805 cũng được sử dụng trong các mạch xây dựng cho đồng hồ
đo điện cảm, bộ sạc điện thoại , đầu đĩa CD di động, phần mở rộng điều khiển từ xa hồng ngoại và các mạch cung cấp điện của UPS
2.5 Diode
Diode là một linh kiện điện tử bán dẫn chỉ cho phép dòng điện đi qua nó theo một chiều duy nhất mà không chạy ngược lại Điốt bán dẫn thường đều có nguyên lý cấu tạo chung là một khối bán dẫn loại P ghép với một khối bán dẫn loại N và được nối với
2 chân ra là anode và cathode
Mối tiếp xúc P – N => Cấu tạo của Diode
* Ở hình trên là mối tiếp xúc P – N và cũng chính là cấu tạo của Diode bán dẫn
Ký hiệu và hình dáng của Diode bán dẫn 2.6 Giới thiệu về lập trình PIC CCS
Cài đặt chương trình biên dịch C dùng phần mềm CCS
Cửa số CCS
Trang 12Tạo mới một source file : File -> source file
Biên chương trình :
Kiểu biên Giá trị • Ý nghĩa
Intl True hay False (0 hay 1) số 1 bit
int8 0 đến 255 Số nguyên 1 byte ( 8 bit) int16 0 đến 65,535 Số nguyên 2 byte int32 0 đến 4,294,967,295 Số nguyên 4 byte Char -128 đến 127 Ký tự 8 bit
Float 3,4-38 đến 3,438 Số thực 32 bit
short Mặc định như kiểu int Byte Mặc định như kiểu int 8 Int Mặc định như kiểu int8 Long Mặc định như kiểu int 16 Lưu ý: có thể sử dụng signed hoặc unsigned trước các kiểu để chỉ cho trường hợp có dấu và không có dấu
Trang 13
CHƯƠNG 3 : TÍNH TOÁN THIẾT KẾ
3.1 : Sơ đồ khối của hệ thống
Khối nguồn : Nhiệm vụ cung cấp nguồn điện 1 chiều cho mạch
Khối xử lý : IC xử lý tin hiệu theo code chương trình nạp sẵn
Khối hiển thị : LED 7 đọan hiển thị theo mã code được lập trình trong khối xử
lý
3.2 : Sơ đồ nguyên lý
Trang 143.3 : Lưu đồ thuật toán
3.4 : Code vi điều khiển
#include <Dem san pham 2 LED 7 doan.h>
void main() // chuong trinh chinh
{
so_dem=read_eeprom(0); // doc so dem cu duoc luu trong eeprom tai dia chi 0
Trang 15setup_adc_ports(AN0); // thiêt lap kenh ADC AN0 lam ngo vao ADC dung de doc tin hieu tu mat thu hong ngoai
setup_adc(ADC_CLOCK_INTERNAL); // thiet lap xung cap cho ADC là xung noi
set_adc_channel(0); // dat kenh cho ADC là kenh 0 (AN0) while(TRUE) // vong lap vo han
{
output_b(ma7doan[so_dem/10%10]&cham); // xuât ma LED 7 doan hang chuc ra port B
output_c(ma7doan[so_dem%10]); // xuât ma LED 7 doan hang don vi ra port
C
delay_us(25); // tao thoi gian tre us
ty_le_cb=read_adc()*0.39; // doc ty lê % tín hieu tu mat thu hông ngoai (0-100); gia tri adc max=255; 0,39=100/255;
if(ty_le_cb>70) // khi ty le dan cua mat thu lon hon nguong (70) th¡ do là muc
1, tuc khong co vat can
{
muc=1; // xac dinh muc 1;
cham=0xff; // tat LED bao co vat can
}
if(ty_le_cb<30) // khi ty le dan cua mat thu nho hon nguong (30) th¡ do là muc
0, tuc co vat can
{
muc=0; // xac dinh muc 0;
cham=0x7f; // bat led bao co vat can
co_vat=1; // bao co vat can
}
if(muc==1&&co_vat==1) // neu muc = 1 và co vat can // tuc vat can da di qua cam bien
{
co_vat=0; // bao khong co vat
Trang 16so_dem++; // tang so dem
if(so_dem>99) // gioi han so dem den 99
{
so_dem=0; // dat lai so dem = 0 khi so dem > 99
}
write_eeprom(0, so_dem); // ghi so dem vao EEPROM tai dia chi 0 }
// -
if(input(pin_d2)==0) // khi nút reset so dem duoc nhan
{
while(input(pin_d2)==0); // tao vong lap chowf nut duoc nha
so_dem=0; // dat so dem ve 0;
write_eeprom(0, so_dem); // ghi so dem vao EEPROM tai dia chi 0 }
if(input(pin_d0)==0) // khi nut giam duoc nhan
{
while(input(pin_d0)==0); // tao vong lap chowf nut duoc nha
so_dem ; // giam gia tri so dem
if(so_dem>99) // neu so dem > 99
{
so_dem=99; // nap lai so dem = 99
}
write_eeprom(0, so_dem); // ghi so dem vao EEPROM tai dia chi 0 }
if(input(pin_d1)==0)
{
while(input(pin_d1)==0); // tao vong lap chowf nut duoc nha
so_dem++; // tang gia tri so dem
Trang 17if(so_dem>99) // neu so dem > 99
{
so_dem=0; // nap lai so dem = 0
}
write_eeprom(0, so_dem); // ghi so dem vao EEPROM tai dia chi 0 }
}
}
CHƯƠNG 4 : THI CÔNG MÔ PHỎNG
4.1 : Mô phỏng bàng protues
4.2 Mạch in
Trang 184.3 : Ảnh 3d boad mạch
4.4 : Thực hiện
Thi công in mạch , rửa mạch và hàn linh kiện
4.5 : Nạp code