Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 68 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
68
Dung lượng
3,05 MB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GTVT KHOA CÔNG NGHỆ THÔNG TIN Nguyễn Đức Thành THIẾT KẾ CÂN ĐIỆN TỬ VÀ HIỂN THỊ TRÊN MÁY TÍNH ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: CNKT Điện tử Viễn thơng Cán hướng dẫn: ThS Nguyễn Thu Hiền h TÓM TẮT Tóm tắt: Cân trọng lượng nhu cầu cần thiết thiếu đời sống xã hội, từ người nông dân đến khu chế xuất, nhà máy, xí nghiệp, Xuất phát từ nhu cầu thực tế ứng dụng công nghệ vi điều khiển nhà khoa học nghiên cứu loại cân điện tử hiển thị số cân trọng lượng từ mg đến hàng trăm mà loại cân học bình thường khơng thể thực Trên thực tế siêu thị, nơi trao đổi hàng hóa, nhà máy sản xuất muốn biết khối lượng hàng hóa, sản phẩm hay nguyên liệu cách nhanh chóng xác, kể cho lĩnh vực khác khoáng sản, bến cảng, trạm cân xe giao thông, sử dụng cân điện tử Từ khóa: Load cell, HX711, Arduino Hà Nội, ngày tháng năm 2018 Xác nhận GVHD h LỜI CAM ĐOAN Em xin cam đoan đồ án tốt nghiệp với đề tài “Thiết kế cân điện tử hiển thị máy tính” cơng trình nghiên cứu riêng em, không chép người khác Các số liệu, kết đồ án trung thực chưa công bố công trình khác Nếu khơng nêu trên, em xin hoàn toàn chịu trách nhiệm đề tài Hà Nội, ngày tháng năm 2018 Người cam đoan h MỤC LỤC Danh mục hình ảnh Danh mục bảng biểu MỞ ĐẦU Chương Tổng quan Cân điện tử 1.1 Tìm hiểu loại cân điện tử thường dùng 1.2 Lựa chọn phương án thi công Chương Giới thiệu linh kiện sử dụng 2.1 Cảm biến Loadcell 2.1.1 Loadcell .9 2.1.2 Giới thiệu Loadcell sử dụng mạch 15 2.1.3 Thành phần cấu tạo cân điện tử 16 2.1.4 Module HX711 17 2.2 LCD .18 2.2.1 Thông số kĩ thuật LCD 19 2.2.2 Bộ nhớ LCD 21 2.2.3 Các chân điều khiển LCD 23 2.3 Các linh kiện khác 24 Arduino Uno R3 24 2.3.1 Một số loại Arduino 25 2.3.2 Arduino Uno R3 .29 2.3.3 Atmega328 .33 2.3.4 Lập trình cho Arduino Uno 37 2.4 Giao tiếp với máy tính 45 Chương Thiết kế thi công .47 3.1 Sơ đồ khối 47 3.2 Sơ đồ nguyên lý .47 3.3 Nguyên lý hoạt động 49 Kết luận hướng phát triển đề tài 52 h PHỤ LỤC .53 Chương trình .53 Lập trình cho giao diện 56 TÀI LIỆU THAM KHẢO .59 h Danh mục hình ảnh Hình 1.1 Cân bàn điện tử Hình 1.2 Cân sàn điện tử Hình 1.3 Cân phân tích điện tử Hình 1.4 Cân đếm vật liệu Hình 1.5 Cân vàng điện tử Hình 1.6 Cân khối lượng tính thành tiền Hình 1.7 Cân dùng để đo khối lượng oto Hình 1.8 Sơ đồ khối cân điện tử Hình 2.1 Loadcell kiểu điện trở Hình 2.2 Strain gauge .10 Hình 2.3 Điện trở tỉ lệ với lực tác động 11 Hình 2.4 Các strain gauge bố trí loadcell 11 Hình 2.5 Strain gauge biến dạng theo thân loadcell 12 Hình 2.6 Loadcell strain gauge 12 Hình 2.7 Cầu điện trở Wheatstone 13 Hình 2.8 Loadcell cân 14 Hình 2.9 Loadcell thay đổi 14 Hình 2.10 Loadcell dạng kéo chữ S 14 Hình 2.11 Loadcell dạng uốn 14 Hình 2.12 Loadcell dạng nén bề mặt thấp .15 Hình 2.13 Loadcell dạng nén hình 15 Hình 2.14 Module HX711 17 Hình 2.15 Sơ đồ chân Module HX711 18 Hình 2.16 Sơ đồ chân Wheatstone (loadcell) 18 Hình 2.17 LCD 1604 19 Hình 2.18 LCD 12864 19 Hình 2.19 LCD 2004 19 Hình 2.20 LCD 1602 19 h Hình 2.21 Màn hình LCD 1602 xanh 19 Hình 2.22 Sơ đồ chân LCD 1602 20 Hình 2.23 Vùng nhớ DDRAM 21 Hình 2.24 Vùng nhớ CGROM 22 Hình 2.25 Hoạt động chân RS 23 Hình 2.26 Arduino Due 25 Hình 2.27 Arduino Mega 2560 R3 25 Hình 2.28 Arduino UNO R3 26 Hinh 2.29 Arduino Leonardo 26 Hình 2.30 Arduino Uno R3 SMD 27 Hình 2.31 Arduino Nano 27 Hình 2.32 Arduino Pro Micro 28 Hình 2.33 Arduino Pro Mini 28 Hình 2.34 Board USB-UART 28 Hình 2.35 Sơ đồ cấu trúc board Arduino Uno 30 Hình 2.36 Sơ đồ chân Arduino Uno 31 Hình 2.37 Các chân Analog Digital board 32 Hình 2.38 Một số linh kiện sử dụng cho board Arduino Uno 33 Hình 2.39 Atmega328 .34 Hình 2.40 Sơ đồ chân Atmega328 34 Hình 2.41 Chức bit ghi SREG .36 Hình 2.42 Giao diện Arduino IDE 37 Hình 2.43 Một số ký hiệu chức Arduino IDE 38 Hình 2.44 Vùng thông báo Arduino IDE .38 Hình 2.45 Menu File Arduino IDE 39 Hình 2.46 Kết nối Arduino Uno R3 với máy tính 41 Hình 2.47 Arduino Uno R3 kết nối với COM3 42 Hình 2.48 Chọn board Arduino Uno IDE 42 Hình 2.49 Chọn cổng COM cho Arduino IDE 43 Hình 2.50 Xác nhận cổng COM 43 h Hình 2.51 Cửa sổ thiết kế dòng lệnh 44 Hình 2.52 Nạp chương trình xuống Arduino Uno R3 .44 Hình 2.53 Visual Studio 45 Hình 2.54 Ví dụ Visual Basic 45 Hình 2.55 Ví dụ Visual Basic 46 Hình 3.1 Sơ đồ khối tổng quát 47 Hình 3.2 Sơ đồ nguyên lý mạch 47 Hình 3.3 Mô mạch .49 Hình 3.4 Chỉnh sửa giao diện 50 Hình 3.5 Hồn thành giao diện .50 Hình 3.6 Hồn thành thi cơng mạch 51 h Danh mục bảng biểu Bảng 1.1 Thông số cân bàn điện tử Bảng 1.2 Thông số cân sàn điện tử Bảng 1.3 Thơng số cân phân tích điện tử Bảng 1.4 Thông số cân đếm vật liệu .4 Bảng 1.5 Thông số cân vàng điện tử .5 Bảng 1.6 Thông số cân khối lượng tính tiền Bảng 1.7 Thông số cân khối lượng oto Bảng 2.1 Thông số kỹ thuật Loadcell 5Kg 15 Bảng 2.2 Thông số kỹ thuật module HX711 17 Bảng 2.3 Thông số kỹ thuật LCD 1602 19 Bảng 2.4 Chức chân LCD 20 Bảng 2.5 Thông số kỹ thuật board Arduino Uno 29 Bảng 2.6 Thơng số Atmega328 34 Bảng 2.7 Một số câu lệnh, cấu trúc thường gặp 40 Bảng 2.8 Bảng so sánh với cân thực tế 51 h MỞ ĐẦU Ngày nay, với phát triển công nghệ vi điện tử, kỹ thuật số hệ thống điều khiển dần tự động hóa Với kỹ thuật tiên tiến vi xử lý, vi mạch số ứng dụng vào lĩnh vực điều khiển, hệ thống điều khiển khí thơ sơ, với tốc độ xử lí chậm chạp xác thay hệ thống điều khiển tự động với lệnh chương trình thiết lập trước Cân điện tử nhu cầu cần thiết xã hội Do có tốc độ đo khối lượng nhanh xác, cân khối lượng nhỏ từ vài gam hàng Từ ưu điểm mà cân điện tử ứng dụng phổ biến nhiều loại ngành nghề như: xây dựng – đo vật liệu, vận tải – kiểm tra trọng lượng xe, khoáng sản – đong đếm khoáng sản thu được, hay siêu thị, nhà hàng dùng loại cân nhỏ để kiểm tra nguyên vật liệu đầu vào đầu ra, … h Giới thiệu chung giao diện máy tính cho cân điện tử Phần mềm Visual Studio phần mềm cơng ty phần mềm Mycrosoft cung cấp Phần mềm giúp để lập trình tạo giao diện (phần mềm máy tính) cách dễ dàng tiện lợi Hình 2.53 Visual Studio Microsoft Visual Studio mơi trường phát triển tích hợp (IDE) từ Microsoft Được sử dụng để phát triển chương trình máy tính cho Microsoft Windows, trang web, ứng dụng web dịch vụ web Visual Studio sử dụng tảng phát triển phần mềm Microsoft Windows API, Windows Forms, Windows Presentation Foundation, Windows Store Microsoft Silverlight Microsoft Visual Studio sản xuất hai ngơn ngữ máy mã số quản lý Hình 2.54 Ví dụ Visual Basic 45 h Visual Studio bao gồm trình soạn thảo mã hỗ trợ IntelliSense cải tiến mã nguồn Trình gỡ lỗi tích hợp hoạt động trình gỡ lỗi mức độ mã nguồn gỡ lỗi mức độ máy Công cụ tích hợp khác bao gồm mẫu thiết kế hình thức xây dựng giao diện ứng dụng, thiết kế web, thiết kế lớp thiết kế giản đồ sở liệu Nó chấp nhận plug-in nâng cao chức hầu hết cấp bao gồm thêm hỗ trợ cho hệ thống quản lý phiên (như Subversion) bổ sung thêm công cụ biên tập thiết kế trực quan cho miền ngôn ngữ cụ thể công cụ dành cho khía cạnh khác quy trình phát triển phần mềm Hình 2.55 Ví dụ Visual Basic Visual Studio hỗ trợ nhiều ngơn ngữ lập trình khác cho phép trình biên tập mã gỡ lỗi để hỗ trợ (mức độ khác nhau) ngơn ngữ lập trình Các ngơn ngữ tích hợp gồm có C, C++ C++/CLI (thơng qua Visual C++), VB.NET (thông qua Visual Basic.NET), C# (thông qua Visual C#) F# (như Visual Studio 2010) Hỗ trợ cho ngôn ngữ khác J++/J#, Python Ruby thơng qua dịch vụ cài đặt riêng rẽ Nó hỗ trợ XML/XSLT, HTML/XHTML, JavaScript CSS Trong đề tài này, giao diện cân điện tử viết phần mềm Visual Studio ngôn ngữ Visual Basic 46 h CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG 3.1 Sơ đồ khối Hình 3.1 Sơ đồ khối tổng quát 3.2 Sơ đồ nguyên lý Hình 3.2 Sơ đồ nguyên lý mạch 47 h Lưu đồ thuật toán: Bắt đầu Khởi tạo liệu Đọc tín hiệu từ HX711 Chuyển đổi giá trị Xử lý trung tâm Nút bấm Bấm nút Khơng bấm nút Hiển thị LCD Hiển thị máy tính 48 h 3.3 Ngun lý hoạt động Hình 3.3 Mơ mạch Cấp nguồn cho mạch điện tử thông qua cổng USB board Arduino Dùng vật (nhỏ 5kg) đặt lên bàn cân, loadcell bị biến dạng, HX711 đọc liệu từ loadcell, qua chân DT SCK đưa chân D5 D6 board Arduino Sau đó, Arduino xử lí liệu, thơng qua chân D7, D8, D9, D10, D11, D12, D13, trả kết lên hình LCD Đồng thời, giao diện máy tính kết nối với board Arduino hiển thị giá trị đo tương ứng LCD Ngồi ra, mạch cịn sử dụng thêm nút bấm để reset giá trị Ví dụ sử dụng đĩa để đựng loại hạt muốn cân, đặt đĩa lên mặt cân nhấn nút reset, giá trị hiển thị trở 0, sau cho loại hạt lên cân khối lượng bình thường Lưu ý: không sử dụng đĩa cân nữa, ta ấn nút reset lần 49 h Thiết kế giao diện hiển thị lên máy tính Hình 3.4 Chỉnh sửa giao diện Hình 3.5 Hồn thành giao diện Board Arduino Uno sử dụng dây cáp board để kết nối với giao diện Cân điện tử thông qua cổng COM máy tính (PC/ Laptop) Giao diện Cân điện tử có bố cục hình 2.61, có khung chọn cổng COM phù hợp với cổng kết nối, nút Kết nối – Ngắt kết nối với board 50 h Hình 3.6 Hồn thành thi công mạch Bảng 2.8 Bảng so sánh với cân thực tế Mạch cân tự thiết kế Cân tự động có sẵn Smartphone 159g 159g Chai dầu gội 559g 557g 10 truyện tranh 1430g 1727g Laptop 2260g 2255g Kết so sánh cho thấy mạch cân điện tử tự thiết kế có sai số khoảng từ kg đến kg 51 h Kết luận hướng phát triển đề tài Trong ngành công nghiệp khác nhau, cân điện tử ngày trở nên cần thiết để đo lường tin học hóa trọng lượng (khối lượng) sản phẩm để nâng cao chất lượng suất giảm chi phí Do tính linh hoạt xử lý, tuỳ theo mục đích cụ thể mà chương trình viết cho xử lý khác Do đó, hệ thống cân ứng dụng nhiều lĩnh vực có liên quan đến việc đo khối lượng Với yêu cầu đặt như trình bày trước Các phần thực hoạt động kể sau: Mơ hình cân có gắn Loadcell, nguồn cung cấp ổn định, hình hiển thị kết rõ Quá trình thiết kế thi cơng mạch cân điện tử hồn thành cịn nhiều tính mà cân điện tử khơng có nên phát triển thêm như: cân khối lượng cao hơn, đổi đơn vị cân nặng, giao diện hiển thị lên máy tính xuất file excel, …cho mạch ổn định, hiển thị kết LCD máy tính Để nâng cao tính cho phần mạch dùng vi xử lý thiết kế thêm nút nhấn để chỉnh bước cân (span) nhằm cài đặt hệ số cho vi xử lý tính tốn giá trị cân xác theo khối lượng chuẩn quy định, chọn dấu chấm thập phân cách thay đổi nút nhấn,… Một số chức đầu cân thực tế có thể thực sử dụng nhớ nguồn ni cho dùng linh kiện có chất lượng cao 52 h PHỤ LỤC Chương trình Chương trình nạp vào board Arduino Uno: #include "HX711.h" #include #include LiquidCrystal lcd(13,8,9,10,11,12); #define rw HX711 scale(6,5); unsigned char check_e=0; unsigned char temp_e=0; int temp; float calibration_factor = 2230; load cell int units; int ounces; void setup() { check_e=EEPROM.read(0); if(check_e!=1) { EEPROM.write(0,1); EEPROM.write(10,0); EEPROM.write(11,0); } 53 h temp_e=EEPROM.read(10); temp=temp_e*256 + EEPROM.read(11); pinMode(rw, OUTPUT); pinMode(4, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); digitalWrite(rw,0); lcd.begin(16,2); lcd.backlight(); Serial.begin(9600); scale.set_scale(); scale.tare(); long zero_factor = scale.read_average(); lcd.setCursor(0,1); lcd.print("FIX="); lcd.print(temp); lcd.print(" G "); } void loop() { scale.set_scale(calibration_factor); units = scale.get_units(), 10; units=units*10 - temp; if (units < 0) { 54 h units = 0.00; } Serial.print(units); lcd.setCursor(0,0); lcd.print(units); lcd.print(" G "); lcd.setCursor(0,1); lcd.print("FIX="); lcd.print(temp); lcd.print(" G "); if(digitalRead(4)==LOW) { delay(20); while(digitalRead(4)==LOW); temp=(int)units; EEPROM.write(10,temp>>8); EEPROM.write(11,temp&0x00FF); } if(digitalRead(3)==LOW) { delay(20); while(digitalRead(3)==LOW); temp=0; EEPROM.write(10,0); EEPROM.write(11,0); } delay(500); } 55 h Lập trình cho giao diện Vì ngơn ngữ Visual Basisc ngơn ngữ mà chương trình học khơng có, qua q trình tự tìm hiểu mà lập trình lên phần mềm, nên giao diện cịn đơn giản, mục đích hiển thị kết cân đo Chương trình lập trình cho giao diện cân điện tử: using using using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; System.IO.Ports; System.Threading; namespace LoadCell { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void label1_Click(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { Com_khoitao(); } public void Com_khoitao() { string[] ComList = SerialPort.GetPortNames(); int[] ComNumberList = new int[ComList.Length]; for (int i = 0; i < ComList.Length; i++) { ComNumberList[i] = int.Parse(ComList[i].Substring(3)); 56 h } Array.Sort(ComNumberList); foreach (int ComNumber in ComNumberList) { cbxComlist.Items.Add("COM" + ComNumber.ToString()); } } private void button1_Click(object sender, EventArgs e) { if (cbxComlist.Text == "") { MessageBox.Show("Vui lòng chọn cổng com", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (serialPort.IsOpen) { serialPort.Close(); button1.Text = "Kết nối"; cbxComlist.Enabled = true; } else { serialPort.PortName = cbxComlist.Text; try { serialPort.Open(); button1.Text = "Ngắt kết nối"; cbxComlist.Enabled = false; } catch { serialPort.Close(); button1.Text = "Kết nối"; } } } delegate void SetTextCallback(string text); private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { try { string noidung; 57 h Thread.Sleep(300); noidung = serialPort.ReadExisting(); xuli(noidung); } catch { MessageBox.Show("Không thể mở cổng " + serialPort.PortName, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error); } } public void xuli(string text) { if (this.textBox1.InvokeRequired) { SetTextCallback d = new SetTextCallback(xuli); this.Invoke(d, new object[] { text }); } else { textBox1.Text = text + " G"; } } private void textBox1_TextChanged(object sender, EventArgs e) { } } } 58 h TÀI LIỆU THAM KHẢO Tiếng Việt [1] TS Phan Đình Duy, “Vi điều khiển”, Đại học Quốc gia Tp HCM, 2016 [2] ThS Trần Thu Hà, “Điện tử bản”, Đại học Quốc gia Tp HCM, 2013 [3] Nguyễn Đình Phú, “Vi xử lý”, Đại học Sư phạm Kỹ thuật Tp HCM, 2014 Website [1] https://sharecode.vn [2] http://doc.edu.vn [3] http://arduino.vn [4] http://loadcell.com.vn 59 h