- Máy cân Arduino hoạt động
- Các thành phần cần thiết cho Máy cân dựa trên Arduino
- Máy cân dựa trên Arduino - Sơ đồ mạch
- Tạo mạch trên một tấm đục lỗ có chấm
- Xây dựng một vỏ bọc cho máy cân dựa trên Arduino
- Máy cân Arduino - Mã
Cân tải kỹ thuật số là một phép màu khác của thiết kế và kỹ thuật hiện đại. Vâng, chúng ta đang nói về chiếc cân mà chúng ta thường thấy ở hầu hết các cửa hàng tạp hóa và những nơi khác, nhưng bạn đã bao giờ tự hỏi cân trọng lượng hoạt động như thế nào chưa? Để trả lời câu hỏi đó, trong dự án này, chúng ta sẽ xem xét cảm biến lực và hoạt động của nó. Cuối cùng, chúng tôi sẽ xây dựng một cân tải dựa trên Arduino di động với Cảm biến trọng lượng HX711, có thể đo trọng lượng lên đến 10kg.
Máy cân này hoàn hảo cho các cửa hàng địa phương, nơi họ đóng gói các mặt hàng với số lượng lớn. Giống như các sản phẩm thương mại, cân trọng lượng của chúng tôi sẽ có một nút số 0 cho phép cân. Ngoài ra, Nó có một tùy chọn để đặt trọng lượng cho phép đo, khi trọng lượng đo đạt đến trọng lượng đã đặt, một tiếng bíp bíp nhanh và dừng khi trọng lượng đặt bằng với trọng lượng đo. Bằng cách này, người dùng có thể đóng gói nó chỉ bằng cách nghe thấy âm thanh và không cần phải nhìn vào màn hình. Vì đây là một dự án rất đơn giản, chúng tôi sẽ xây dựng nó rất dễ dàng bằng cách sử dụng các thành phần như Arduino và cảm biến lực đo biến dạng. Vì vậy, không chần chừ thêm nữa, hãy bắt tay ngay vào nó.
Trong bài viết trước, chúng tôi đã thực hiện các dự án như Cảm biến trọng lượng dựa trên Raspberry Pi và Hộp chứa thông minh IoT với Cảnh báo qua email và Giám sát web bằng cách sử dụng mô-đun khuếch đại cảm biến lực HX711 phổ biến. Vì vậy, hãy kiểm tra nếu đó là yêu cầu của bạn.
Máy cân Arduino hoạt động
Các thành phần chính của dự án này là một tế bào tải và HX711 tải mô-đun bộ khuếch đại tế bào. Như bạn thấy, một mặt được đánh dấu bằng mười kilôgam. Ngoài ra, bạn có thể nhận thấy một số loại keo bảo vệ màu trắng phủ trên cảm biến lực và bốn màu sắc khác nhau của dây đang chảy ra, sẽ khám phá bí mật bên dưới lớp keo bảo vệ màu trắng và chức năng của các loại dây bốn màu này trong phần sau của bài viết.
Cảm biến lực là một bộ chuyển đổi biến đổi lực hoặc áp suất thành điện năng. Nó có hai mặt, giả sử là mặt phải và mặt trái, và nó được làm từ các khối nhôm. Như bạn có thể thấy ở giữa vật liệu được làm mỏng bằng cách đặt một lỗ lớn. Đó là lý do tại sao đó là điểm bị biến dạng khi có tải trọng đặt lên mặt giá đỡ. Bây giờ hãy tưởng tượng rằng ô bên phải được gắn vào đế và bên trái là nơi đặt tải, cấu hình này làm biến dạng cảm biến lực của máy đo biến dạng vì có lỗ khổng lồ ở giữa.
Khi một tải được đặt lên phía tải của cảm biến lực, phần trên cùng sẽ chịu lực căng và phần dưới cùng sẽ bị nén. Đó là lý do tại sao thanh nhôm lệch xuống phía bên trái. Nếu chúng ta đo độ biến dạng này, chúng ta có thể đo lực tác dụng lên khối nhôm và đó chính xác là những gì chúng ta sẽ làm.
Bây giờ, câu hỏi vẫn là bên trong lớp keo bảo vệ màu trắng là gì? Bên trong lớp keo bảo vệ này, chúng ta sẽ tìm thấy một thành phần đàn hồi rất mỏng được gọi là máy đo biến dạng. Máy đo biến dạng là một thành phần được sử dụng để đo biến dạng. Nếu chúng ta xem xét kỹ hơn thành phần này, chúng ta có thể thấy hai miếng đệm kết nối, và sau đó chúng ta có một mẫu dây dẫn điện với độ lệch lặp đi lặp lại. Dây dẫn này có điện trở xác định. Khi chúng ta uốn cong nó, giá trị điện trở sẽ thay đổi? Vì vậy, một mặt của máy đo biến dạng được lắp và cố định tại một chỗ, nếu chúng ta đặt một quả nặng vào mặt còn lại của thanh nhôm, điều này sẽ làm cho máy đo biến dạng bị uốn cong, điều này sẽ gây ra sự thay đổi điện trở. Làm thế nào điều này xảy ra thực sự? Dạng dẫn điện của máy đo biến dạng được làm bằng đồng, dây này sẽ có diện tích và chiều dài nhất định, do đó hai đơn vị này sẽ cho ra điện trở của dây. Điện trở của một dây chống lại dòng điện. Bây giờ rõ ràng là nếu diện tích của dây này nhỏ hơn,ít electron hơn có thể đi qua nghĩa là một dòng điện thấp hơn. Bây giờ nếu chúng ta tăng diện tích, nó sẽ làm tăng điện trở của một vật dẫn. Nếu một lực nào đó được tác dụng lên dây này, thì diện tích này sẽ giãn ra và đồng thời nó sẽ nhỏ lại, điện trở tăng lên. Nhưng biến thể kháng này là rất thấp. Nếu chúng ta kéo căng thiết bị đo biến dạng, sức cản sẽ tăng lên và nếu chúng ta nén nó, sức cản sẽ thấp hơn. Để đo lực, ta cần đo điện trở. Việc đo điện trở trực tiếp không phải lúc nào cũng thực tế, bởi vì sự thay đổi là rất nhỏ. Vì vậy, thay vì đo điện trở, chúng ta có thể đo điện áp một cách dễ dàng. Vì vậy, trong trường hợp này, chúng ta cần chuyển đổi đầu ra của máy đo từ giá trị điện trở sang giá trị điện áp.Nếu một lực nào đó được tác dụng lên dây này, thì diện tích này sẽ giãn ra và đồng thời nó sẽ nhỏ lại, điện trở tăng lên. Nhưng biến thể kháng này là rất thấp. Nếu chúng ta kéo căng thiết bị đo biến dạng, sức cản sẽ tăng lên và nếu chúng ta nén nó, sức cản sẽ thấp hơn. Để đo lực, ta cần đo điện trở. Việc đo điện trở trực tiếp không phải lúc nào cũng thực tế, vì sự thay đổi là rất nhỏ. Vì vậy, thay vì đo điện trở, chúng ta có thể đo điện áp một cách dễ dàng. Vì vậy, trong trường hợp này, chúng ta cần chuyển đổi đầu ra của máy đo từ giá trị điện trở sang giá trị điện áp.Nếu một lực nào đó được tác dụng lên dây này, thì diện tích này sẽ giãn ra và đồng thời nó sẽ nhỏ lại, điện trở tăng lên. Nhưng biến thể kháng này là rất thấp. Nếu chúng ta kéo căng thiết bị đo biến dạng, sức cản sẽ tăng lên và nếu chúng ta nén nó, sức cản sẽ thấp hơn. Để đo lực, ta cần đo điện trở. Việc đo điện trở trực tiếp không phải lúc nào cũng thực tế, vì sự thay đổi là rất nhỏ. Vì vậy, thay vì đo điện trở, chúng ta có thể đo điện áp một cách dễ dàng. Vì vậy, trong trường hợp này, chúng ta cần chuyển đổi đầu ra của máy đo từ giá trị điện trở sang giá trị điện áp.sức đề kháng sẽ thấp hơn. Để đo lực, ta cần đo điện trở. Việc đo điện trở trực tiếp không phải lúc nào cũng thực tế, vì sự thay đổi là rất nhỏ. Vì vậy, thay vì đo điện trở, chúng ta có thể đo điện áp một cách dễ dàng. Vì vậy, trong trường hợp này, chúng ta cần chuyển đổi đầu ra của máy đo từ giá trị điện trở sang giá trị điện áp.sức đề kháng sẽ thấp hơn. Để đo lực, ta cần đo điện trở. Việc đo điện trở một cách trực tiếp không phải lúc nào cũng thực tế, vì sự thay đổi là rất nhỏ. Vì vậy, thay vì đo điện trở, chúng ta có thể đo điện áp một cách dễ dàng. Vì vậy, trong trường hợp này, chúng ta cần chuyển đổi đầu ra của máy đo từ giá trị điện trở sang giá trị điện áp.
Chúng tôi có thể làm điều này với sự trợ giúp của cầu Wheatstone. Chúng tôi đặt máy đo biến dạng vào cầu Wheatstone nếu cầu cân bằng, điện áp ở điểm giữa phải bằng 0 (trước đây chúng tôi đã xây dựng một dự án mà chúng tôi đã mô tả cách hoạt động của cầu Wheatstone, bạn có thể kiểm tra nếu muốn biết thêm về chủ đề). Khi máy đo biến dạng thay đổi điện trở của nó, nó sẽ làm mất cân bằng cầu, và điện áp cũng sẽ thay đổi. Vì vậy, đây là cách cầu Wheatstone chuyển đổi các biến thể điện trở thành các giá trị điện áp.
Nhưng sự thay đổi điện áp này vẫn còn rất nhỏ, vì vậy để tăng điều đó, chúng ta cần sử dụng mô-đun HX711. HX711 là một ADC vi sai 24 bit, bằng cách này, chúng tôi có thể đo những thay đổi điện áp rất nhỏ. nó sẽ cho các giá trị từ 0 đến 2 theo cấp số nhân 24.
Các thành phần cần thiết cho Máy cân dựa trên Arduino
Để làm cho dự án này đơn giản nhất có thể, chúng tôi đã sử dụng các thành phần rất chung chung mà bạn có thể tìm thấy trong bất kỳ cửa hàng sở thích nào tại địa phương. Hình ảnh dưới đây sẽ cung cấp cho bạn một ý tưởng về các thành phần. Hơn nữa, chúng tôi có Bảng kê nguyên vật liệu (BOM) được liệt kê bên dưới.
- Cảm biến lực (Chúng tôi đang sử dụng cảm biến lực 10 kg)
- Mô-đun khuếch đại HX 711
- Arduino Nano
- I2C LCD 16X2 - Tương thích I2C
- 1k điện trở -2 Nos
- Đèn LED -2Nos
- Buzzer
- PCB thông thường
- Pin 7.4V (nếu bạn muốn nó di động)
- Bộ điều chỉnh điện áp LM7805
Máy cân dựa trên Arduino - Sơ đồ mạch
Cảm biến lực có bốn dây màu đỏ, đen, xanh lá cây và trắng. Màu này có thể thay đổi tùy theo nhà sản xuất, vì vậy tốt hơn hết bạn nên tham khảo bảng dữ liệu. Kết nối màu đỏ với E + của bảng HX711, kết nối màu đen với E-, kết nối màu trắng với A +, và kết nối màu xanh lá cây với A-, Dout, và đồng hồ của bảng kết nối với D4 và D5 tương ứng. Kết nối một đầu của các nút nhấn với D3, D8, D9 và các đầu khác với đất. Chúng tôi có I2C LCD, vì vậy hãy kết nối SDA với A4 và SCL với A5. Kết nối mặt đất của LCD, HX711 và Arduino với mặt đất, cũng kết nối các VCC với chân 5V của Arduino. Tất cả các mô-đun hoạt động trên 5V, vì vậy chúng tôi đã thêm một bộ điều chỉnh điện áp LM7805. Nếu bạn không muốn nó di động, bạn có thể cấp nguồn trực tiếp cho Arduino bằng cáp USB.
Tạo mạch trên một tấm đục lỗ có chấm
Chúng tôi đã hàn tất cả các thành phần trên một tấm đục lỗ thông thường. Chúng tôi đã sử dụng các tiêu đề nữ để hàn Arduino và ADC với bảng mạch, chúng tôi cũng đã sử dụng dây để kết nối tất cả các nút nhấn và đèn LED. Sau khi tất cả quá trình hàn kết thúc, chúng tôi đã đảm bảo rằng nguồn 5V thích hợp sẽ ra khỏi LM7805. Cuối cùng, chúng tôi đã đặt một công tắc để bật / tắt nguồn mạch. Khi tất cả chúng ta đã hoàn thành, nó trông giống như hình ảnh bên dưới.
Xây dựng một vỏ bọc cho máy cân dựa trên Arduino
Như bạn có thể thấy, cảm biến lực có một số ren vít, vì vậy chúng tôi có thể gắn nó trên một tấm đế. Chúng tôi sẽ sử dụng một bảng PVC cho cơ sở của quy mô của chúng tôi, để làm điều đó, trước tiên chúng tôi cắt hình vuông 20 * 20 cm và bốn hình chữ nhật 20 * 5 từ bảng PVC. Sau đó, sử dụng keo cứng, chúng tôi dán từng mảnh và tạo thành một vỏ bọc nhỏ.
Hãy nhớ rằng, chúng tôi không sửa một bên, vì chúng tôi cần đặt các nút bấm, đèn LED và màn hình LCD trên đó. Sau đó, chúng tôi sử dụng một bảng nhựa cho đầu cân. Trước khi thực hiện thiết lập này vĩnh viễn, chúng tôi cần đảm bảo rằng chúng tôi có đủ không gian từ mặt đất đến cảm biến lực, để nó có thể uốn cong, vì vậy chúng tôi đã đặt vít và đai ốc giữa cảm biến lực và đế, chúng tôi cũng bổ sung một số miếng đệm bằng nhựa ở giữa cảm biến lực và phần trên cùng. chúng tôi đã sử dụng một tấm nhựa tròn làm sự cân bằng thông minh hàng đầu.
Sau đó, chúng tôi đặt màn hình LCD, đèn LED và các nút nhấn vào bảng điều khiển phía trước và mọi thứ được kết nối bằng dây dài cách điện. Sau khi kết thúc quá trình đấu dây, chúng tôi dán mặt trước vào đế chính với một số độ nghiêng, vì vậy chúng tôi có thể đọc các giá trị từ màn hình LCD rất dễ dàng. cuối cùng, chúng tôi gắn công tắc chính vào bên cạnh của cân và thế là xong. Đây là cách chúng tôi tạo ra cơ thể cho cân nặng của mình.
Bạn có thể thiết kế theo ý tưởng của mình nhưng hãy nhớ đặt cảm biến lực như trong hình.
Máy cân Arduino - Mã
Khi chúng ta đã hoàn thành quá trình xây dựng cho quy mô kỹ thuật số của mình, chúng ta có thể chuyển sang phần lập trình. Để lập trình dễ dàng, chúng ta sẽ sử dụng thư viện HX711, Thư viện EEPROM và thư viện LiquidCrystal. Bạn có thể tải xuống thư viện HX711 từ kho lưu trữ chính thức của GitHub, hoặc vào công cụ > bao gồm thư viện > quản lý thư viện, sau đó tìm kiếm thư viện bằng từ khóa HX711, sau khi tải xong thư viện, hãy cài đặt nó vào Arduino Ide.
Đầu tiên, chúng ta cần hiệu chỉnh cảm biến lực và lưu trữ giá trị đó trên EEPROM, truy cập tệp> ví dụ> HX 711_ADC, sau đó chọn mã hiệu chuẩn. Trước khi tải mã lên, hãy đặt cân trên một bề mặt phẳng ổn định. Sau đó tải mã lên Arduino và mở màn hình nối tiếp. Sau đó, thay đổi tốc độ truyền thành 572600. Bây giờ giám sát yêu cầu lấy trọng lượng, chúng ta cần nhấn t và enter.
Bây giờ, chúng ta cần đặt trọng lượng đã biết lên cân, trong trường hợp của tôi, đó là 194gm. Sau khi đặt trọng lượng đã biết, nhập trọng lượng lên màn hình nối tiếp và nhấn enter.
Bây giờ, màn hình nối tiếp hỏi bạn có muốn lưu giá trị trong EEPROM hay không, vì vậy hãy nhập Y để chọn có. Bây giờ chúng ta có thể thấy trọng lượng trên màn hình nối tiếp.
Mã chính của dự án này, chúng tôi đã phát triển từ bản phác thảo ví dụ của thư viện HX711. Bạn có thể tải xuống mã của dự án này từ bên dưới.
Trong phần mã hóa, đầu tiên, chúng tôi đã thêm cả ba thư viện. Thư viện HX711 dùng để lấy các giá trị của cảm biến lực. EEPROM là thư viện có sẵn của Arduino Id, được sử dụng để lưu trữ các giá trị trong EEPROM và thư viện LiquidCrystal dành cho Mô-đun LCD l2C.
#include
Sau đó xác định các số nguyên cho các chân khác nhau và các giá trị được gán. Chức năng loadcell HX711_ADC dùng để thiết lập Dout và chân đồng hồ.
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; dài t; const int Up_buttonPin = 9; const int Down_buttonPin = 8; float buttonPushCounter = 0; float up_buttonState = 0; float up_lastButtonState = 0; float down_buttonState = 0; float down_lastButtonState = 0;
Trong phần thiết lập, đầu tiên, chúng tôi khởi động màn hình nối tiếp, phần này chỉ để gỡ lỗi. Sau đó, chúng tôi xác định các chế độ pin, tất cả các nút nhấn được xác định là đầu vào. Với sự trợ giúp của chức năng Arduino PULL UP, chúng tôi đặt các chân ở mức cao logic bình thường. Vì vậy, chúng tôi không muốn sử dụng bất kỳ điện trở bên ngoài nào cho việc đó.
pinMode (tpin, INPUT_PULLUP); pinMode (6, OUTPUT); pinMode (12, OUTPUT); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Các dòng mã sau đây là để cài đặt I2C LCD. Đầu tiên, chúng tôi hiển thị văn bản chào mừng bằng cách sử dụng hàm LCD.print () , sau hai giây, chúng tôi xóa màn hình bằng cách sử dụng lcd.clear () . Tức là, lúc đầu, màn hình hiển thị ARDUINO BALANCE dưới dạng văn bản chào mừng, và sau hai giây, nó sẽ xóa và hiển thị các trọng lượng đo.
lcd.init (); LCD đèn nền(); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("hãy đo"); chậm trễ (2000); lcd.clear ();
Sau đó bắt đầu đọc các giá trị từ loadcell bằng cách sử dụng hàm loadCell.begin () , sau đó, chúng tôi đọc EEPROM cho các giá trị đã được hiệu chỉnh, chúng tôi thực hiện điều đó bằng cách sử dụng hàm EEPROM.get () . Đó là, chúng tôi đã lưu trữ giá trị bằng cách sử dụng bản phác thảo hiệu chuẩn trong địa chỉ EEPROM, chúng tôi chỉ cần lấy lại giá trị đó.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
Trong phần vòng lặp, trước tiên, chúng tôi kiểm tra xem có dữ liệu nào từ cảm biến lực không bằng cách sử dụng LoadCell.update (), nếu có, chúng tôi đọc và lưu trữ dữ liệu đó, vì điều đó, chúng tôi đang sử dụng LoadCell.getData () . Tiếp theo, chúng ta cần hiển thị giá trị được lưu trữ trong LCD. Để làm điều đó, chúng tôi đã sử dụng hàm LCD.print () . ngoài ra, chúng tôi in trọng lượng đặt. Đặt trọng lượng được thiết lập với sự trợ giúp của bộ đếm Nút ấn. Điều đó đã giải thích trong phần cuối cùng.
if (LoadCell.update ()) newDataReady = true; if (newDataReady) { if (millis ()> t + serialPrintInterval) { float i = LoadCell.getData (); lcd.setCursor (0, 0); lcd.print ("set wei:"); lcd.setCursor (9, 0); lcd.print (buttonPushCounter); lcd.setCursor (14, 0); lcd.print ("GM"); lcd.setCursor (0, 1); lcd.print ("trọng lượng:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
Tiếp theo, chúng ta đặt giá trị bì, trước tiên, chúng ta đọc trạng thái của nút ấn bì bằng hàm digitalRead () , nếu trạng thái thấp, chúng ta xé khối lượng đó bằng không. Chức năng Tare của cân trọng lượng này là đưa các kết quả đọc về không. Ví dụ, nếu chúng ta có một cái bát trong đó các thứ được tải, thì trọng lượng tịnh sẽ là trọng lượng của cái bát + trọng lượng của đồ vật. Nếu chúng ta nhấn nút bì với bát trên cảm biến lực trước khi chất hàng, trọng lượng của giỏ sẽ được phủ định và chúng ta có thể đo trọng lượng của một mình.
if (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
Bây giờ, chúng ta cần đặt các điều kiện cho các chỉ báo khác nhau như đặt độ trễ của bộ rung và trạng thái đèn led. Chúng tôi đã làm điều đó bằng cách sử dụng điều kiện if , chúng tôi có tổng cộng ba điều kiện. Đầu tiên, chúng tôi tính toán sự khác biệt giữa trọng lượng đặt và trọng lượng đo, sau đó lưu trữ giá trị đó trong biến k.
float k = buttonPushCounter-i;
1. Nếu chênh lệch giữa trọng lượng đặt và trọng lượng đo lớn hơn hoặc bằng 50gms, còi sẽ phát ra tiếng bíp với độ trễ 200 mili giây (chậm).
if (k> = 50) { digitalWrite (6, HIGH); chậm trễ (200); digitalWrite (6, THẤP); chậm trễ (200); }
2. Nếu sự khác biệt giữa trọng lượng đặt và trọng lượng đo nhỏ hơn 50 và lớn hơn 1 gam, còi sẽ phát ra tiếng bíp với độ trễ 50 mili giây (nhanh hơn).
if (k <50 && k> 1) { digitalWrite (6, HIGH); chậm trễ (50); digitalWrite (6, THẤP); chậm trễ (50); }
3. Khi trọng lượng đo bằng hoặc lớn hơn giá trị cài đặt, điều này sẽ bật đèn led xanh và tắt còi và đèn led đỏ.
if (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, CAO); }
Chúng ta có thêm hai hàm void () để đặt trọng lượng đã đặt (để đếm số lần nhấn nút).
Chức năng tăng giá trị cài đặt thêm 10gms cho mỗi lần nhấn. Điều này được thực hiện bằng cách sử dụng chức năng digitalRead của Arduino nếu pin ở mức thấp có nghĩa là nút được nhấn và điều đó sẽ tăng giá trị thêm 10gms.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
Tương tự, kiểm tra để giảm giá trị cài đặt đi 10gms cho mỗi lần nhấn.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
Điều này đánh dấu sự kết thúc của phần lập trình.
Cân điện tử dựa trên Arduino này hoàn hảo để đo các trọng lượng lên đến 10kg (chúng tôi có thể tăng giới hạn này bằng cách sử dụng loadcell được đánh giá cao hơn). Điều này chính xác đến 99% so với các phép đo ban đầu.
Nếu bạn có bất kỳ câu hỏi nào liên quan đến mạch máy cân bằng màn hình LCD dựa trên Arduino này, xin vui lòng đăng ở phần bình luận, xin cảm ơn!