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”.
Mục lục TỔNG QUAN VỀ MÁY LẤY NƯỚC TỰ ĐỘNG I ĐẶT VẤN ĐỀ II TÍNH TỐN THIẾT KẾ HỆ THỐNG 2.1 Các thành phần hệ thống 2.1.1 Phần cứng 2.1.2 Phần mềm 2.2 Mơ hình đề xuất III THIẾT KẾ PHẦN MỀM ĐIỀU KHIỂN 3.1 Lập trình giao diện 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 Kết đạt được: .13 Hạn chế: .13 TÀI LIỆU THAM KHẢO 13 PHỤ LỤC 14 Hà Nội, ngày 10 tháng 03 năm 2023 TỔNG QUAN VỀ MÁY LẤY NƯỚC TỰ ĐỘNG Lấy ý tưởng từ máy bán nước tự động 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 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 hệ thống thực theo bước sau: Người dùng chọn loại đồ uống lượng nước giao diện hệ thống sau đặt cốc lên đầu vào băng tải Băng tải chuyển động mang cốc đến vị trí có vịi bơm Ở vị trí có vịi bơm lắp đặt cảm biến hồng ngoại để phát vật thể gửi tín hiệu cho điều khiển dừng băng tải Sau băng tải dừng máy bơm nước kích hoạt bơm lượng nước loại nước chọn Khi bơm xong, điều khiển truyền tín hiệu để băng tải tiếp tục hoạt động đưa cốc bơm nước ngồi Tính sản phẩm: - Có thể chọn loại nước - Có thể chọn lượng nước - Có thể ghi lại số lượng loại nước chọn I ĐẶT VẤN ĐỀ Dưới sức ép mạnh mẽ nhu cầu sử dụng người tiêu dùng, với phát triển ngành khoa học công nghệ, dây truyền sản xuất thiết bị tự động đời để thay cho lao động người, góp phần nâng cao suất hiệu Ngày khơng khó để bắt gặp thiết bị hay hệ thống tự động Lấy ý tưởng từ máy bán nước tự động dây truyền triết giọt tự động chúng em làm sản phẩm mang tên “Máy lấy nước tự động” II TÍNH TỐN THIẾT KẾ HỆ THỐNG 2.1 Các thành phần hệ thống 2.1.1 Phần cứng Băng tải: hay gọi băng chuyền 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 vị trí Cấu tạo: Nguồn động lực băng tải, tạo chuyển động động cơ, động kết nối với trục quay gọi tang (rulo) chủ động thông qua hộp số, dây curoa Cuối băng tải cịn có tang quay gọi tang bị động Hai tang chủ động tang bị động bố trí hai đầu kéo căng băng tải (thường cao su) Toàn băng tải đặt phần khung băng tải, nâng đỡ, cố định thiết bị Step motor Step Motor loại động chấp hành đặc biệt, thường sử dụng cho hệ truyền động rời rạc Step Motor thực chất động đồng dùng để biến đổi tín hiệu điều khiển dạng xung điện rời rạc thành chuyển động góc quay chuyển động Rotor có khả cố định Rotor vào vị trí cần thiết Step Motor làm việc nhờ có chuyển mạch điện tử đưa tín hiệu điều khiển vào stato theo thứ tự tần số định Tổng số góc quay roto tương ứng với số lần chuyển mạch, chiều quay tốc độ quay roto, phụ thuộc vào thứ tự chuyển đổi tần số chuyển đổi Khi xung điện áp đặt vào cuộn dây stato (phần ứng) động bước roto (phần cảm) động quay góc định, góc bước quay động Khi xung điện áp đặt vào cuộn dây phần ứng thay đổi liên tục roto quay liên tục (Nhưng thực chất chuyển động theo bước rời rạc) Ưu điểm: - Không chổi than - Tạo 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à bo mạch vi điều khiển nhóm giáo sư sinh viên nước Ý thiết kế đưa vào năm 2005 Mạch Arduino sử dụng để cảm nhận điều khiển nhiều đối tượng khác Nó thực nhiều nhiệm vụ lấy tín hiệu từ cảm biến đến điều khiển đèn, động cơ, nhiều đối tượng khác Ngoài mạch cịn có khả liên kết với nhiều module khác module đọc thẻ từ, ethernet shield, sim900A,… để tăng khả ứng dụng mạch Cấu tạo Arduino Thông số Arduino Uno R3 Vi điều khiển Atmega 328 (họ bit) Điện áp hoạt động 5V – DC Tần số hoạt động 16MHZ Dòng tiêu thụ 30mA Điện áp khuyên dùng – 12 – DC Điện áp vào giới hạn – 20V – DC Số chân Digital I/O 14 (6 chân PWM) Số chân Analog Dòng tối đa chan I/O 30mA Dòng tối đa (5V) 500mA Dòng tồi đa (3.3V) 50mA Bộ nhớ flash 32KB SRAM 2KB EEPROM 1KB Cảm biến hồng ngoại Là một thiết bị điện tử có khả đo phát xạ hồng ngoại 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 phát ra bức xạ hồng ngoại phản xạ trở lại - Điện trở - Dây điện Driver L293d L293D IC trình điều khiển hay điều khiển động Nó có hai mạch cầu H tích hợp điều khiển đồng thời hai động DC theo chiều kim đồng hồ ngược chiều kim đồng hồ Nó hoạt động khuếch đại dịng cao lấy tín hiệu dịng điện thấp đầu vào cung cấp tín hiệu dịng điện cao đầu để điều khiển tải khác nhau, ví dụ động bước động DC Các tính 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 lớn, Các ứng dụng thực tế phổ biến bao gồm trình điều khiển động bước, trình điều khiển relay, trình điều khiển động DC, Thơng số kĩ thuật: - Có thể sử dụng để chạy hai động DC với IC - Có thể kiểm sốt tốc độ hướng - Điện áp động Vcc2 (Vs): 4,5V đến 36 - Dòng động cao tối đa: 1.2A - Dòng động 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 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 tải lên bo mạch Arduino Đây môi trường đa tảng, hỗ trợ loạt bo mạch Arduino nhiều tính độc đáo Ứng dụng lập trình có giao diện xếp hợp lý, phù hợp với người dùng chuyên nghiệp lẫn không chuyên Arduino IDE mơi trường phát triển tích hợp đa tảng, hỗ trợ cho loạt bo mạch Arduino Arduino Uno, Nano, Mega, Esplora, Ethernet, Fio, Pro hay Pro Mini LilyPad Arduino Các tính Arduino IDE: - Viết code cho bo mạch Arduino - Hỗ trợ nhiều loại bo mạch Arduino - Giao diện xếp hợp lý - Bộ sưu tập ví dụ mẫu - Mảng thư viện hỗ trợ phong phú Visual studio winform Winform thuật ngữ mô tả ứng dụng viết dùng NET FrameWorrk có giao diện người dùng Windows Forms Mỗi hình windows cung cấp giao diện giúp người dùng giao tiếp với ứng dụng Giao diện gọi giao diện đồ họa (GUI) ứng dụng Là ứng dụng windows chạy máy tính – mã lệnh thực thi máy tính: Microsoft, Word, Excel, Access, Calculator, Yahoo, Mail… là ứng dụng Windows Form Vì dễ code, cần kéo thả, lại có nhiều component có sẵn, WinForm phù hợp để làm phần mềm quản lý, tính tiền, thống kê… Đây loại ứng dụng mà công ty/doanh nghiệp vừa nhỏ cần Ngoài ra, cần sử dụng component TelerikUI DevExpress (Ở Việt Nam, dùng crack nên component hồn tồn miễn phí), WinForm tạo giao diện đại, đẹp - Tốc độ xử lý liệu nhanh chóng - Đảm bảo an tồn, bảo mật thơng tin - Có thể chạy phiên Windows khác - Thao tác nhiều giao diện 2.2 Mơ hình đề xuất III 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 nút điều khiển, tùy chọn loại nước lượng nước nút để dừng toàn hệ thống - Vùng đếm số lượng loại nước: Đếm số lượng cốc nước loại 3.2 Lập trình Arduino 3.2.1 Sơ đồ đấu nối 3.2.2 Lưu đồ thuật tố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ấu chấp hành Nguyên lý: - Sau khởi tạo đối tượng arduino nhận tín hiệu bắt đầu cho chạy băng tải - Cảm biến quang phát vật thể, có cho dừng băng tải cho bơm nước hoạt động - Bơm nước hoạt động xong, băng tải nhận lệnh tiếp tục quay 10 11 IV THỰC NGHIỆM VÀ ĐÁNH GIÁ Mơ hình thực tế Đánh giá: - Mơ hình chạy loại nước lượng nước chọn - Băng tải vận hành mượt mà 12 - Cảm biến tiếp nhận chưa thực nhạy, tượng delay V KẾT LUẬN Kết đạt được: - Biết cách thiết kế hệ thống điện tử đơn giản - Biết cách lập trình, thiết kế giao diện hệ thống - Kết nối phần cứng với nhau, phần mềm, hiểu phương thức giao tiếp - Biết làm việc nhóm Hạn chế: - Phần cấu chấp hành hạn chế, đơn giản - Chỉ đếm số loại nước chọn, chưa đếm riêng size khác - Vịi bơm chưa hồn tồn xác, bơm với loại cốc có kích thước miệng lớn TÀI LIỆU THAM KHẢO Arduino Docs | Arduino Documentation | Arduino Documentation Bài giảng Kĩ thuật lập trình điện tư – ĐHBKHN ( slide) Windows Forms Designer tutorial - Visual Studio (Windows) | Microsoft Learn 13 PHỤ LỤC Full code arduino #include 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); 14 amountwater++; } 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(); 15 delay(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(); 16 delay(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(); 17 delay(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() { 18 belt.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); } 19