Dưới sức ép mạnh mẽ về nhu cầu sử dụng của người tiêu dùng, cùng với sự phát triển của các ngành khoa học công nghệ, các dây truyền sản xuất và các thiết bị tự động lần lượt được ra đời để thay thế cho lao động con người, góp phần nâng cao năng suất và hiệu quả. Ngày nay không khó để có thể bắt gặp một thiết bị hay một hệ thống tự động nào đó. Lấy ý tưởng từ máy bán nước tự động và dây truyền triết giọt tự động chúng em đã làm ra sản phẩm mang tên “Máy lấy nước tự động”.
Trang 1Mục lục
TỔNG QUAN VỀ MÁY LẤY NƯỚC TỰ ĐỘNG 2
I ĐẶT VẤN ĐỀ 3
II TÍNH TOÁN THIẾT KẾ HỆ THỐNG 3
2.1 Các thành phần cơ bản của hệ thống 3
2.1.1 Phần cứng 3
2.1.2 Phần mềm 7
2.2 Mô hình đề xuất 9
III THIẾT KẾ PHẦN MỀM ĐIỀU KHIỂN 9
3.1 Lập trình giao diện 9
3.2 Lập trình Arduino 10
3.2.1 Sơ đồ đấu nối 10
3.2.2 Lưu đồ thuật toán 10
IV THỰC NGHIỆM VÀ ĐÁNH GIÁ 12
V KẾT LUẬN 13
1 Kết quả đạt được: 13
2 Hạn chế: 13
TÀI LIỆU THAM KHẢO 13
PHỤ LỤC 14
Trang 2TỔNG QUAN VỀ MÁY LẤY NƯỚC TỰ ĐỘNG
Lấy ý tưởng từ máy bán nước tự động và dây truyền triết giọt tự động để hình thành ý tưởng “Máy lấy nước tự động” Cấu tạo của máy gồm băng tải, động cơ, cảm biến, mạch điều khiển,…
Nguyên lý hoạt động của hệ thống thực hiện theo các bước sau:
1 Người dùng chọn loại đồ uống và lượng nước trên giao diện hệ thống sau đó đặt cốc lên đầu vào băng tải
2 Băng tải chuyển động mang cốc đến vị trí có vòi bơm
3 Ở vị trí có vòi bơm được lắp đặt cảm biến hồng ngoại để phát hiện vật thể và gửi tín hiệu cho bộ điều khiển dừng băng tải
4 Sau khi băng tải dừng máy bơm nước được kích hoạt và bơm lượng nước cùng loại nước đã được chọn
5 Khi đã bơm xong, bộ điều khiển sẽ truyền tín hiệu để băng tải tiếp tục hoạt động và đưa cốc đã được bơm nước ra ngoài
Tính năng của sản phẩm:
- Có thể chọn được loại nước
- Có thể chọn được lượng nước
- Có thể ghi lại số lượng và loại nước đã được chọn
Trang 3I ĐẶT VẤN ĐỀ
Dưới sức ép mạnh mẽ về nhu cầu sử dụng của người tiêu dùng, cùng với
sự phát triển của các ngành khoa học công nghệ, các dây truyền sản xuất và các thiết bị tự động lần lượt được ra đời để thay thế cho lao động con người, góp phần nâng cao năng suất và hiệu quả Ngày nay không khó để có thể bắt gặp một thiết bị hay một hệ thống tự động nào đó Lấy ý tưởng từ máy bán nước tự động và dây truyền triết giọt tự động chúng em đã làm ra sản phẩm mang tên “Máy lấy nước tự động”
II TÍNH TOÁN THIẾT KẾ HỆ THỐNG
2.1 Các thành phần cơ bản của hệ thống
2.1.1 Phần cứng
Băng tải: hay còn gọi băng chuyền là một thiết bị dùng vận chuyển,
chuyền tải vật liệu, hàng hóa từ vị trí này đến vị trí kia
Cấu tạo: Nguồn động lực chính của băng tải, tạo ra chuyển động chính là
động cơ, động cơ được kết nối với một trục quay gọi là tang (rulo) chủ động thông qua hộp số, dây curoa Cuối băng tải còn có một tang quay nữa gọi là tang bị động Hai tang chủ động và tang bị động bố trí ở hai đầu kéo căng bản băng tải (thường là bản cao su) Toàn bộ băng tải được đặt trên phần khung băng tải, nâng đỡ, cố định các thiết bị
Trang 4 Step motor
Step Motor là loại động cơ chấp hành đặc
biệt, thường được sử dụng cho các hệ truyền
động rời rạc Step Motor thực chất là một động
cơ đồng bộ dùng để biến đổi các tín hiệu điều
khiển dưới dạng các xung điện rời rạc kế tiếp
nhau thành các chuyển động góc quay hoặc các
chuyển động của Rotor và có khả năng cố định
Rotor vào những vị trí cần thiết
Step Motor làm việc được là nhờ có bộ
chuyển mạch điện tử đưa các tín hiệu điều khiển vào stato theo một thứ tự và một tần số nhất định Tổng số góc quay của roto tương ứng với số lần chuyển mạch, cũng như chiều quay và tốc độ quay của roto, phụ thuộc vào thứ tự chuyển đổi và tần số chuyển đổi Khi một xung điện áp đặt vào cuộn dây stato (phần ứng) của động cơ bước thì roto (phần cảm) của động cơ sẽ quay
đi một góc nhất định, góc ấy là một bước quay của động cơ Khi các xung điện áp đặt vào các cuộn dây phần ứng thay đổi liên tục thì roto sẽ quay liên tục (Nhưng thực chất chuyển động đó vẫn là theo các bước rời rạc)
Ưu điểm:
- Không chổi than
- Tạo được momen giữ
- Độc lập với tải
Máy bơm mini
- Vật liệu: nhựa cứng cao cấp
- Màu sắc: trắng ngà
- Điện áp: 1.5VDC - 6VDC
Kit Arduino Uno R3
Arduino là một bo mạch vi điều khiển do một nhóm giáo sư và sinh viên nước Ý thiết kế và đưa ra đầu tiên vào năm 2005 Mạch Arduino được sử dụng để cảm nhận và điều khiển nhiều đối tượng khác nhau Nó có thể thực
Trang 5hiện nhiều nhiệm vụ lấy tín hiệu từ cảm biến đến điều khiển đèn, động cơ, và nhiều đối tượng khác Ngoài ra mạch còn có khả năng liên kết với nhiều module khác nhau như module đọc thẻ từ, ethernet shield, sim900A,… để tăng khả ứng dụng của mạch
Cấu tạo Arduino
Thông số cơ bản của Arduino Uno R3
Trang 6EEPROM 1KB
Cảm biến hồng ngoại
Là một thiết bị điện tử có khả năng
đo và phát hiện được bức xạ hồng ngoại
trong môi trường xung quanh
Cấu tạo:
- Đèn led hồng ngoại: Nguồn phát
- Máy dò hồng ngoại: Nguồn nhận
tín hiệu và phát hiện ra bức xạ hồng
ngoại phản xạ trở lại
- Điện trở
- Dây điện
Driver L293d
L293D về cơ bản là một IC trình điều khiển hay bộ điều khiển động cơ
Nó có hai mạch cầu H tích hợp có thể điều khiển đồng thời hai động cơ DC theo cả chiều kim đồng hồ và ngược chiều kim đồng hồ Nó hoạt động như một bộ khuếch đại dòng cao vì nó lấy tín hiệu dòng điện thấp ở đầu vào và cung cấp tín hiệu dòng điện cao hơn ở đầu ra để điều khiển các tải khác nhau,
ví dụ động cơ bước và động cơ DC Các tính năng của nó bao gồm phạm vi điện áp nguồn đầu vào lớn, tín hiệu đầu vào chống nhiễu cao dòng điện đầu
Trang 7ra lớn, Các ứng dụng thực tế phổ biến của nó bao gồm trình điều khiển động cơ bước, trình điều khiển relay, trình điều khiển động cơ DC,
Thông số kĩ thuật:
- Có thể được sử dụng để chạy hai động cơ DC với cùng một IC
- Có thể kiểm soát tốc độ và hướng
- Điện áp động cơ Vcc2 (Vs): 4,5V đến 36
- Dòng động cơ cao nhất tối đa: 1.2A
- Dòng động cơ liên tục tối đa: 600mA
- Điện áp cung cấp cho Vcc1 (vss): 4,5V đến 7V
- Thời gian chuyển tiếp: 300ns (ở 5V và 24V)
- Tự động tắt nhiệt
2.1.2 Phần mềm
Arduino IDE
Arduino IDE cung cấp đến môi trường lập trình tích hợp mã nguồn mở hỗ trợ người dùng viết code và tải nó lên bo mạch Arduino Đây là môi trường
đa nền tảng, hỗ trợ một loạt các bo mạch Arduino cùng rất nhiều tính năng độc đáo Ứng dụng lập trình này có giao diện được sắp xếp hợp lý, phù hợp với cả những người dùng chuyên nghiệp lẫn không chuyên
Trang 8Arduino IDE là môi trường phát triển tích hợp đa nền tảng, hỗ trợ cho một loạt các bo mạch Arduino như Arduino Uno, Nano, Mega, Esplora, Ethernet, Fio, Pro hay Pro Mini cũng như LilyPad Arduino
Các tính năng chính của Arduino IDE:
- Viết code cho bo mạch Arduino
- Hỗ trợ nhiều loại bo mạch Arduino
- Giao diện được sắp xếp hợp lý
- Bộ sưu tập các ví dụ mẫu
- Mảng thư viện hỗ trợ phong phú
Visual studio winform
Winform là thuật ngữ mô tả một ứng dụng được viết dùng .NET FrameWorrk và có giao diện người dùng Windows Forms
Mỗi màn hình windows cung cấp một giao diện giúp người dùng giao
tiếp với ứng dụng Giao diện này được gọi là giao diện đồ họa (GUI) của ứng
dụng
Trang 9Là các ứng dụng windows chạy trên máy tính – mã lệnh thực thi ngay trên máy tính: Microsoft, Word, Excel, Access, Calculator, Yahoo, Mail… là các ứng dụng Windows Form
Vì dễ code, chỉ cần kéo thả, lại có nhiều component có sẵn, WinForm rất phù hợp để làm các phần mềm quản lý, tính tiền, thống kê… Đây cũng là loại ứng dụng mà các công ty/doanh nghiệp vừa và nhỏ cần Ngoài ra, chỉ cần sử dụng component như TelerikUI hoặc DevExpress (Ở Việt Nam, hầu như chúng ta đều dùng crack nên các component này hoàn toàn miễn phí), WinForm có thể tạo ra các giao diện hiện đại, đẹp
- Tốc độ xử lý dữ liệu nhanh chóng
- Đảm bảo an toàn, bảo mật thông tin
- Có thể chạy trên các phiên bản Windows khác nhau
- Thao tác trên nhiều giao diện
2.2 Mô hình đề xuất
Trang 10III THIẾT KẾ PHẦN MỀM ĐIỀU KHIỂN
3.1 Lập trình giao diện
Giao diện hệ thống
- Vùng điều khiển: chứa các nút điều khiển, tùy chọn loại nước và lượng
nước và nút để dừng toàn bộ hệ thống
- Vùng đếm số lượng các loại nước: Đếm số lượng cốc nước mỗi loại.
Trang 113.2 Lập trình Arduino
3.2.1 Sơ đồ đấu nối
3.2.2 Lưu đồ thuật toán
Vi xử lí nhận tín hiệu từ giao diện điều khiển gửi xuống cho arduino điều khiển cơ cấu chấp hành
Nguyên lý:
- Sau khi khởi tạo đối tượng arduino nhận được tín hiệu bắt đầu cho chạy băng tải
- Cảm biến quang phát hiện vật thể, nếu có cho dừng băng tải và cho bơm nước hoạt động
- Bơm nước hoạt động xong, băng tải sẽ nhận được lệnh tiếp tục quay
Trang 13IV THỰC NGHIỆM VÀ ĐÁNH GIÁ
Đánh giá:
- Mô hình có thể chạy đúng loại nước và lượng nước đã được chọn
- Băng tải vận hành mượt mà
Mô hình thực tế
Trang 14- Cảm biến tiếp nhận chưa thực sự nhạy, vẫn còn hiện tượng delay
V KẾT LUẬN
1 Kết quả đạt được:
- Biết cách thiết kế một hệ thống cơ điện tử đơn giản
- Biết cách lập trình, thiết kế giao diện một hệ thống
- Kết nối được các phần cứng với nhau, cũng như các phần mềm, hiểu được các phương thức giao tiếp
- Biết các làm việc nhóm
2 Hạn chế:
- Phần cơ cấu chấp hành vẫn còn hạn chế, đơn giản
- Chỉ đếm được số loại nước được chọn, chưa đếm được riêng từng size khác nhau
- Vòi bơm chưa hoàn toàn chính xác, chỉ bơm được với các loại cốc có kích thước miệng lớn
TÀI LIỆU THAM KHẢO
1 Arduino Docs | Arduino Documentation | Arduino Documentation
2 Bài giảng Kĩ thuật lập trình trong cơ điện tư – ĐHBKHN ( slide)
3 Windows Forms Designer tutorial - Visual Studio (Windows) | Microsoft Learn
Trang 15PHỤ LỤC
Full code arduino
#include <AFMotor.h>
AF_DCMotor waterpump ( 4 ) , cocapump ( 3 ) ;
AF_Stepper belt ( 200 , 1 ) ;
int sensor= 2 ;
char sig;
int t;
int amountcoca= 0 ,amountwater= 0 ;
void setup () {
Serial begin ( 9600 ) ;
pinMode ( sensor,INPUT ) ;
}
void loop () {
t = digitalRead ( sensor ) ;
char readValue = Serial read () ;
if ( readValue== 'L' || readValue == 'M' || readValue == 'H'|| readValue == 'l'||readValue
== 'm' ||readValue == 'h'||readValue == 'S' ){
sig = readValue;
}
if ( sig=='L' )
{
if ( t==LOW )
{
stopbelt () ;
pumpwater ( 6000 ) ;
stopwater () ;
delay ( 1000 ) ;
runbelt ( 1000 ) ;
Trang 16amountwater++;
}
else if ( t==HIGH )
{
runbelt ( 100 ) ;
}
}
else if ( sig=='M' )
{
if ( t==LOW )
{
stopbelt () ;
pumpwater ( 10000 ) ;
stopwater () ;
delay ( 1000 ) ;
runbelt ( 1000 ) ;
amountwater++;
}
else if ( t==HIGH )
{
runbelt ( 100 ) ;
}
}
else if ( sig=='H' )
{
if ( t==LOW )
{
stopbelt () ;
pumpwater ( 15000 ) ;
stopwater () ;
Trang 17delay ( 1000 ) ;
runbelt ( 1000 ) ;
amountwater++;
}
else if ( t==HIGH )
{
runbelt ( 100 ) ;
}
}
else if ( sig == 'S' )
{
stopwater () ;
stopcoca () ;
stopbelt () ;
Serial print ( "Coca: " ) ;
Serial print ( amountcoca ) ;
Serial print ( " " ) ;
Serial print ( "Water: " ) ;
Serial println ( amountwater ) ; amountcoca= 0 ;
amountwater= 0 ;
}
else if ( sig=='l' )
{
if ( t==LOW )
{
stopbelt () ;
pumpcoca ( 4000 ) ;
stopcoca () ;
Trang 18delay ( 1000 ) ;
runbelt ( 1000 ) ;
amountcoca++;
}
else if ( t==HIGH )
{
runbelt ( 100 ) ;
}
}
else if ( sig=='m' )
{
if ( t==LOW )
{
stopbelt () ;
pumpcoca ( 7000 ) ;
stopcoca () ;
delay ( 1000 ) ;
runbelt ( 1000 ) ;
amountcoca++;
}
else if ( t==HIGH )
{
runbelt ( 100 ) ;
}
}
else if ( sig=='h' )
{
if ( t==LOW )
{
stopbelt () ;
pumpcoca ( 10000 ) ;
stopcoca () ;
Trang 19delay ( 1000 ) ;
runbelt ( 1000 ) ;
amountcoca++;
}
else if ( t==HIGH )
{
runbelt ( 100 ) ;
}
}
}
void pumpwater (int n)
{
waterpump setSpeed ( 255 ) ;
waterpump run ( FORWARD ) ;
delay ( n ) ;
}
void pumpcoca (int n)
{
cocapump setSpeed ( 255 ) ;
cocapump run ( FORWARD ) ;
delay ( n ) ;
}
void runbelt (int n)
{
belt setSpeed ( 50 ) ;
belt step ( n,BACKWARD,DOUBLE ) ;
}
void stopbelt ()
{
Trang 20belt setSpeed ( 100 ) ;
belt step ( 0 ,FORWARD,DOUBLE ) ;
delay ( 200 ) ;
}
void stopcoca ()
{
cocapump setSpeed ( 255 ) ;
cocapump run ( RELEASE ) ;
delay ( 200 ) ;
}
void stopwater ()
{
waterpump setSpeed ( 300 ) ;
waterpump run ( RELEASE ) ;
delay ( 200 ) ;
}