Tải bản đầy đủ (.docx) (27 trang)

Thiết kế máy bán nước tự động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (713.11 KB, 27 trang )

Đề tài: “Thiết kế máy bán nước tự động”


MỤC LỤC



Đồ án thiết kế hệ thống số

LỜI MỞ ĐẦU
Dưới sức ép mạnh mẽ về nhu cầu sử dụng của người tiêu dùng đã thúc
ép các nhà chế tạo không ngừng nghiên cứu, tích hợp và hoàn thiện chúng hàng năm
để cho phù hợp với hầu hết các điều kiện và nhu cầu của xã hội hiện đại ngày nay đó
là một thiết bị phải ngày càng nhỏ gọn, tính công nghệ và tính thẩm mỹ ngày
càng phải cao lên. Những chiếc máy bán hàng tự động gần đây nhất được chế tạo
mang trong nó đầy đủ những tính năng của một chiếc máy thông minh, khả năng xử lý
nhanh chóng chính xác, sử dụng đơn giản, gần gũi và thân thiện hơn với người sử
dụng.
Trong những năm gần đây tại Việt Nam máy bán hàng tự động xuất hiện ở
nhiều nơi. Có loại nhập khẩu từ nước ngoài, có loại trong nước chế tạo. Nhưng gần
gũi và dễ thấy nhất đối với chúng ta là máy bán nư ớc tự động dạng lon có
mặt ở nhiều nơi như trường học, siêu thị…Vì vậy nhóm chúng em với niềm đam mê
các thiết bị tự động chọn đề tài tìm hiểu về máy bán nước tự động.
Nhưng vì thời gian và kiến thức có hạn nên nhóm chúng em chỉ thiết kế một
máy bán nước với chức năng đơn giản và đây cũng là đồ án tạo tiền đề cho chúng em
thực hiện tốt các đồ án sau này.


Đồ án thiết kế hệ thống số

CHƯƠNG I: CƠ SỞ LÝ THUYẾT


1.1.
Kit coolRunner-II
1.1.1. Giới thiệu kit coolRunner-II

CoolRunner-II được cung cấp bởi hãng Xilinx
Xilinx là nhà phát triển hàng đầu hiện nay trong lĩnh vực chip khả trình, là nhà phát
triển FPGA, CPLD được sử dụng rộng rãi trong những ứng dụng truyền thông, tự
động hóa, mật mã và các lĩnh vực khác.
CoolRunner-II là thiết bị được thết kế cho việc hoạt động với hiệu suất cao và sử
dụng năng lượng thấp. Điều này cho phép tiết kiệm năng lượng khi truyền thông tốc
độ cao với các thiết bị hoạt động bằng pin. Do sử dụng điện năng thấp và năng động
nên độ tin cậy của hệ thống được cải thiện.
CoolRunner-II bao gồm 16 khối chức năng được liên kết với nhau thông qua ma
trận điện kết nối trong nâng cao. Ma trận điện kết nối trong là nguồn cung cấp dữ liệu
40 đầu vào và bổ sung cho mỗi khối chức năng. Mỗi khối chức năng bao gồm 40 đầu
vào và 16 macrocells chứa các bit cấu hình cho phép tổ hợp hoặc thiết lập phương
thức hoạt động. Ngoài ra chúng ta có thể thiết lập hoặc cài đặt trước và cấu hình như
là một flip flop D hoặc T.
CoolRunner-II được phát triển và hoàn thành trên nền tảng USB-powered. Bảng
mạch này bao gồm hiệu quả năng lượng cao, tiết kiệm năng lượng, khả lập trình và hỗ
trợ một số thiết bị vào ra chung. Ngoài ra nó cũng có 5 kết nối mở rộng cho phép kết
nối với 64 CPLD sẵn có ở bên ngoài.


Đồ án thiết kế hệ thống số

Hình 1.1.1: Kit coolRunner-II

1.1.2. Sơ đồ khối


Hình 1.1.2: Sơ đồ khối
Tính năng:






CoolRunner II TQ-144 bao gồm 256 macrocells.
Một cổng USB2 để lập trình JTAG và truyền dữ liệu.
Tần số cố định 8MHz và một ổ cắm cho tần số ngoại.
Mở rộng kết nối với 64 tín hiệu vào ra.
Một dây DS28E01Q EEPROM.


Đồ án thiết kế hệ thống số
CoolRunner-II có thể được cấp nguồn từ cổng USB tách rời của nó hoặc từ một
nguồn cung cấp bên ngoài gắn vào kết nối JP3, JP2 chọn xem bảng mạch sử dụng
nguồn USB hoặc nguồn điện bên ngoài. Nguồi điện bên ngoài, từ bất kỳ nguồn nào
được định tuyến thông qua một điều chế cơ bản LT3028 để tạo ra 2 nguồn cung cấp
điện áp 3.3V cho I/O và 1.8V cho lõi theo yêu cầu của CPLD.
CoolRunner-II cung cấp 2 nút bấmBTN0 và BTN1 hoạt động mức tích cực thấp,
2 thiết bị chuyển mạch trượt đầu vào là SW0 và SW1, 4 đèn led xanh và 4 led 7 đoạn
anode chung.
1.1.3. Môi trường lập trình bo mạch XC2C256TQ144

Sử dụng ngôn ngữ mô tả phần cứng Verilog
Verilog là một trong hai ngôn ngữ mô tả phần cứng chính (gồm VHDL và
Verilog HDL) được người thiết kế phần cứng sử dụng để mô tả, thiết kế các hệ thống
số, ví dụ như máy tính hay linh kiện điện tử.

VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là
một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho trương trình VHSIC
( Very High Speed Itergrated Circuit ) của bộ quốc phòng Mỹ. Mục tiêu của việc
phát triển VHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống
nhất cho phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa
các hệ thống đó vào ứng dụng trong thực tế.
Phần mền dùng để lập trình là Xilinx ISE 10.1


Đồ án thiết kế hệ thống số
Giao diện phần mềm lập trình:

Hình 1.1.3: Giao diện ISE 10.1

1.2.
Quang trở
1.2.1. Giới thiệu quang trở


Đồ án thiết kế hệ thống số
Là một loại điện trở, mà điện trở suất của nó giảm xuống rất nhanh khi có ánh
sáng chiếu vào, làm bằng CdS hoạt dộng trên hiện tượng quang dẫn.
Ứng dụng :Chế tạo các điện trở có giá trị thay đổi theo cường độ ánh sáng kích
thích
1.2.1. Cấu tạo và nguyên lý hoạt động

Hình 1.2.1: Hình ảnh về quang trở
Quang điện trở có cấu tạo gồm: một sợi dây (hoặc một màng) bằng chất quang
dẫn (1) gắn trên một đế cách điện (2).


Hình 1.2.2. Cấu tạo và ký hiệu quang trở
Một quang điện trở bằng CdS có điện trở vào khoảng 3. Ω khi không được chiếu
sáng, và có điện trở vào khoảng 20Ω khi được chiếu sáng.


Đồ án thiết kế hệ thống số
1.3. Opto PC817
1.3.1. Cấu tạo
Opto hay còn gọi là cách ly quang là linh kiện tích hợp có cấu tạo gồm 1 led và 1
photo diot hay 1 photo transitor. Được sử dụng để các ly giữa các khối chênh lệch
nhau về điện hay công suất như khối có công suất nhỏ với khối điện áp lớn.

Hình 1.3.1: Opto PC817
Opto PC817 có 4 chân





Chân 1: ANODE
Chân 2: CATHODE
Chân 3: EMITTER
Chân 4: COLLECTOR

Hình 1.3.2: Sơ đồ cấu tạo
1.3.2. Nguyên lý hoạt động
Khi có dòng nhỏ di qua 2 đầu của led có trong opto làm cho led phát sáng. Khi
led phát sáng làm thông 2 cực của photo diot, mở cho dòng điện chạy qua.
Tùy vào dòng qua led lớn hay nhỏ mà photo diot cho phép dòng khuyếch đại qua
nó lớn hay nhỏ.



Đồ án thiết kế hệ thống số
1.4. Động cơ
1.4.1. Cấu tạo
Cấu tạo của động cơ DC gồm 2 thành phần chính là phần tĩnh (Stato) và phần
động (Roto).
Stato của động cơ DC gồm nam châm vĩnh cử.
Roto : Phần ứng bao gồm một lõi hình trụ làm bằng các lá thép kỹ thuật điện
được gắn lên trục. Bề mặt ngoài của lõi có các rãnh để quấn dây, các đầu dây của phần
ứng được hàn vào cổ góp.

Hình 1.4.1: Motor DC

1.4.2. Nguyên lý hoạt động
Khi có một dòng điện một chiều chạy qua cuộn dây quấn xung quanh một lõi sắt
non, cạnh phía bên cực dương sẽ bị tác động bởi một lực hướng lên, trong khi cạnh
đối diện lại bị tác động bằng một lực hướng xuống theo nguyên lý bàn tay trái của
Fleming. Các lực này gây tác động quay lên cuộn dây, và làm cho roto quay.


Đồ án thiết kế hệ thống số

CHƯƠNG II: THIẾT KẾ MẠCH
2.1.

Yêu cầu đồ án
Thiết kế máy bán nước tự động dùng kít coolRunner-II.
Sử dụng quang trở làm cảm biến.


Giá một chai nước là 4000. Có 3 khe đưa tiền vào với mức giá là 1000, 2000,
3000. Có 1 khe đưa nước ra và 2 khe trả lại tiền thừa với 2 mức giá là 1000 và 2000.
2.2.

Sơ đồ khối hệ thống

Hiển thị

Cảm biến

XC2C256

Động cơ

TQ144

Nguồn cấp

Hình 2.1: Sơ đồ khối hệ thống
Khối cảm biến: Gồm 3 module quang trở.
Khối động cơ: Gồm 3 động cơ để điều khiển cho nước ra và trả lại tiền thừa.
Khối hiển thị: Hiển thị lên 2 led 7 đoạn ở trên kít, hiển thị số tiền thả vào và số
tiền thừa nếu có.
Khối nguồn: Gồm nguồn 5V và nguồn 12V cung cấp toàn bộ nguồn cho hệ
thống.


Đồ án thiết kế hệ thống số
2.3.


Lưu đồ thuật toán

Hình 2.2: Lưu đồ thuật toán


Đồ án thiết kế hệ thống số
2.4.

Mạch nguyên lý

Hình 2.3: Sơ đồ mạch nguyên lý
Nguyên lý hoạt động:
Khi có tiền được thả vào thì module quang trở cho mức điện áp 0V vào vi xử lý
ngược lại khi không có tiền thả vào thì module quang trở cho mức điện áp 3.3V vào vi
xử lý.
Giá của một chai nước là 4000, như vậy số tiền tối đa ta phải bỏ vào để có được
nước là 6000, số tiền tối thiểu là 4000.
Khi đủ số tiền 1 chai nước thì vi xử lý cho tín hiệu ra chân 9 với mức điện áp là
3,3V để điều khiển động cơ trả nước. Khi số tiền thả vào thừa 1 chai nước thì vi xử lý
cho tín hiệu ra chân 9 với mức điện áp là 3,3V để điều khiển động cơ trả nước và chân
6 hoặc 4 cũng với điện áp 3,3V để điều khiển động cơ trả tiền thừa 1000 hoặc 2000
tùy vào số tiền thừa khi thả vào.


Đồ án thiết kế hệ thống số
2.5.
Thiết kế phần cứng
2.5.1. Phần mạch điện
a. Kít coolRunner-II


Hình 2.4: Kit coolRunner-II
b. Mạch điều khiển động cơ

Hình 2.5: Mạch điều khiển động cơ
Khi có tín hiệu điện áp 3,3V đưa vào chân 1 của opto thì led phát sáng làm cho
photo transitor thông, khi photo transitor thông dẫn đến có điện áp 12V đặt trên động
cơ và làm động cơ quay. Ngược lại khi điện áp 0V đưa vào chân 1 của opto thì động
cơ không quay.


Đồ án thiết kế hệ thống số
c. Mạch module quang trở

Hình 2.6: Module quang trở
Khi quang trở có ánh sáng chiếu vào thì điện áp ra của LM358 là 3,3V tương
ứng với mức logic 1. Khi không có ánh sáng chiếu vào thì điện áp ra của LM358 là
0V tương ứng với mức logic 0.
d. Mạch nguồn

Hình 2.7: Mạch nguồn
Mạch nguồn cung cấp điện áp 5V cho hệ thống.


Đồ án thiết kế hệ thống số
2.5.2. Phần cơ
a. Một hộp kín làm vỏ máy bán nước.
b. Băng truyền trả nước.

Hình 2.8: Băng truyền trả nước
Nước sẽ được trả cho khách hàng bằng cách sử dụng động cơ điện một chiều

làm quay băng truyền, trên băng truyền có một thanh gạt, khi băng truyền quay thanh
gạt sẽ gạt nước ra và nước rơi vào hốc đựng nước.
c. 2 ống trả tiền thừa

Một máy bán hàng cần phải có cơ cấu trả lại tiền thừa cho người mua. Cơ cấu trả
tiền phải chính xác và nhanh, đảm bảo trả lại đúng tiền thừa cho khách hàng. Có thể
vận dụng nguyên lý mô tả trong hình dưới đây để thiết kế cơ cấu trả tiền.

Hình 2.9: Phần trả tiền thừa


Đồ án thiết kế hệ thống số
Nguyên lý hoạt động: Vì cơ cấu trả tiền độc lập với cơ cấu nhận dạng, nên số
tiền thừa để trả cho người mua phải được tích trữ sẵn trong ống chứa.
Khi có tín hiệu yêu cầu trả tiền, động cơ DC quay đẩy đồng tiền nằm dưới cùng
ra ngoài. Sau đó tiền sẽ được rơi vào máng nghiêng và rơi xuống hộc trả tiền. Kết thúc
phần trả tiền thừa.
Thời gian quay của motor DC trả tiền thừa được tính toán và được xử lý.
d. 3 ống thả tiền vào

Hình 2.10: Phần trả tiền vào
Cấu tạo:
1: khung đặt cảm biến.
2: khe thả tiền vào.

2.6.

Thiết kế phần mềm
Ngôn ngữ lập trình: ngôn ngữ VHDL
Phần mềm: Xilinx ISE 10.1

Code chương trình: Phụ lục


Đồ án thiết kế hệ thống số
Testbench:

Hình 2.11: Testbench

2.7.

Một số hình ảnh về máy bán nước tự động


Đồ án thiết kế hệ thống số

Hình 2.12: Một số hình ảnh về máy bán nước


Đồ án thiết kế hệ thống số

CHƯƠNG III: KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN
CỦA ĐỒ ÁN

3.1.

Đánh giá kết quả thực hiện đồ án

Đồ án “ THIẾT KẾ MÁY BÁN NƯỚC TỰ ĐỘNG “, như đã trình bày ở trên
là một đề tài có ứng dụng cao, cung cấp cho thị trường máy bán nước tự động có thể
đặt được ở mọi nơi nhăm đáp ứng nhu cầu của con người.

Vận dụng những kiến thức đã học cùng sự cố gắng của cả nhóm, nhóm em đã
thực hiện được những phần sau đây:





Nắm rõ được quang trở.
Tạo ra được module quang trở phù hợp với đồ án.
Thực hiện khối điều khiển động cơ.
Thiết kế được mạch công suất để cung cấp nguồn & điều khiển thiết bị.

Bên cạnh đó, hệ thống còn một số nhược điểm sau:
 Hệ thống máy bán nước được thiết kế còn khá đơn giản, chưa có nhiều

tính năng.
3.2.

Hướng phát triển của đồ án

Đồ án đã đạt được một số kết quả nhất định, song để đáp ứng cho một bài toán
thực tế còn chưa thật rối ưu. Sau đây là một số hướng phát triển mà nhóm em dự định
sẽ làm:
 Nâng cấp hệ thống nhận tiền, chỉ cần một đầu vào mà có thể nhận biết

được nhiều loại tiền và phân biệt được tiền thật hay giả.
 Thiết kế máy có thể bán được nhiều loại nước.
 Kết nối máy tính để có thể quản lý được số lượng hàng được bán.



Đồ án thiết kế hệ thống số

PHỤ LỤC
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity dambn is
Port ( clk : in STD_LOGIc;
reset : in STD_LOGIC;
S1 : in STD_LOGIC;
S2 : in STD_LOGIC;
S3 : in STD_LOGIC;
coca : out STD_LOGIC;
P1 : out STD_LOGIC;
P2 : out STD_LOGIC;
seg : out STD_LOGIC_VECTOR(6 downto 0);
AN : out STD_LOGIC_VECTOR(1 downto 0)
);
end dambn;
architecture Behavioral of dambn is
type status is (T0,T1,T2,T3,T4,T5,T6);
signal cst,nst: status:=T0;
signal flag: STD_LOGIC;


Đồ án thiết kế hệ thống số
signal count1,count2,count3: integer range 0 to 99999999;
signal clk_an: STD_LOGIC:='0';
signal tien: STD_LOGIC_VECTOR(3 downto 0 );

signal mode2: STD_LOGIC_VECTOR(3 downto 0):=x"0";
signal temp: STD_LOGIC_VECTOR(3 downto 0);
signal repay: STD_LOGIC_VECTOR(3 downto 0);
signal clk_use: STD_LOGIC:='0';

begin
----main---process(reset,clk_use)
begin
if(reset='0') then cst<=T0;
elsif (clk_use'event and clk_use='1') then
cst<=nst;
end if;
end process;
------ cac trang thai---------process(cst,S1,S2,S3,flag)
begin
case cst is
when T0 => if(S1='0') then nst<=T1;tien<=x"1";repay<=x"0";
elsif(S2='0') then nst<=T2;tien<=x"2";repay<=x"0";
elsif(S3='0') then nst<=T3;tien<=x"3";repay<=x"0";
end if;


Đồ án thiết kế hệ thống số
when T1 => if(S1='0') then nst<=T2;tien<=x"2";repay<=x"0";
elsif(S2='0') then nst<=T3;tien<=x"3";repay<=x"0";
elsif(S3='0') then nst<=T4;tien<=x"4";repay<=x"0";
end if;
when T2 => if(S1='0') then nst<=T3;tien<=x"3";repay<=x"0";
elsif(S2='0') then nst<=T4;tien<=x"4";repay<=x"0";
elsif(S3='0') then nst<=T5;tien<=x"5";repay<=x"1";

end if;
when T3 => if(S1='0') then nst<=T4;tien<=x"4";repay<=x"0";
elsif(S2='0') then nst<=T5;tien<=x"5";repay<=x"1";
elsif(S3='0') then nst<=T6;tien<=x"6";repay<=x"2";
end if;
when T4 => if (flag='1') then nst<=T0;tien<=x"0";repay<=x"0";
end if;
when T5 => if (flag='1') then nst<=T0;tien<=x"0";repay<=x"0";
end if;
when T6 => if (flag='1') then nst<=T0;tien<=x"0";repay<=x"0";
end if;
end case;
end process;
-------- tra nuoc va tien thua ----------process(cst)
begin
if(cst=T4) then coca<='1'; P1<='0'; P2<='0'; flag<='1';
elsif(cst=T5) then coca<='1'; P1<='1'; P2<='0'; flag<='1';
elsif(cst=T6) then coca<='1'; P1<='0'; P2<='1'; flag<='1';


Đồ án thiết kế hệ thống số
else
coca<='0'; P1<='0'; P2<='0'; flag<='0';
end if;
end process;
-----chia tan clk_use----process(clk)
begin
if(clk'event and clk='1') then
if (count2=2199999) then count2<=0;
clk_use<='1';

else
count2<=count2+1;
clk_use<='0';
end if;
end if;
end process;
---chia tan quet---process(clk)
begin
if(clk'event and clk='1') then
if (count3=2499) then count3<=0;
clk_an<='1';
else
count3<=count3+1;
clk_an<='0';
end if;


×