Professional Documents
Culture Documents
Loadcell CBtrongDK
Loadcell CBtrongDK
Nô ̣i dung
BÁO CÁO MÔN ............................................................................................................ 1
I.Tìm hiểu cân định lượng............................................................................................... 1
II.Mạch ứng dụng load cell trong cân định lượng .......................................................... 1
III.Chương trình cân định lượng ..................................................................................... 3
IV.Kết quả thực tế ........................................................................................................... 6
I.Tìm hiểu cân định lượng
- Nguyên lí: Cân định lượng có lắp cảm biến lực ( load cell ). Loadcell gồm 4
strain gauge và được lắp thành cầu wheatstone. Khi có lực tác dụng lên load
cell các strain gauge sẽ thay đổi giá trị điện trở làm thay đổi giá trị Vout của cầu
wheatstone.
Do điện áp ra của loadcell rất nhỏ nên chúng ta cần khuếch đại điện áp tín hiệu
ra của load cell lên nhiều lần qua mạch khuếch đại và bộ chuyển đổi ADC. Sau
đó hiểu thị lên LCD.
- Mạch nguyên lí của load cell:
1
Hình 2. Mạch nguyên lí khuếch đại ina128
- Mạch kết nối Arduino
2
III.Chương trình cân định lượng
- Chương trình code Arduino chính
#include <TimerOne.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
3
lcd.clear();
Serial.begin(9600);
analogReference(INTERNAL);
}
void loop() {
float Khoiluong=kl();
if ( Khoiluong <=0){
Khoiluong =0;
}
lcd.setCursor(0,0);
lcd.print(" Khoi luong do: ");
lcd.setCursor(1,2);
lcd.print(Khoiluong,2);
lcd.println(" gr");
Serial.print(" Khoi luong do: "); Serial.print(Khoiluong,2); Serial.println(" gr");
delay(1000);
}
static long loadA=0;
static int analogA=4;
static long loadB=152;
static int analogB=16;
float kl(){
const int max =200;
unsigned int AnalogValueTotal = 0;
unsigned int AnalogValueAverage = 0;
analogRead(A0);
for (int i = 0;i<max;i++){
AnalogValueTotal = AnalogValueTotal + analogRead(A0);
4
delay(1);
}
AnalogValueAverage = (AnalogValueTotal)/max;
Serial.println(AnalogValueAverage);
return map(AnalogValueAverage,analogA,analogB,loadA,loadB);
- }Giải thích chương trình cân định lượng:
Do tín hiệu analog do Arduino đọc được từ load cell không ổn định. Vì vậy, lấy
trung bình giá trị analog. Ở đây, lấy giá trị đọc trung bình trong 300 lần.
for (int i = 0;i<max;i++){
AnalogValueTotal = AnalogValueTotal + analogRead(A0);
delay(1);
}
AnalogValueAverage = (AnalogValueTotal)/max;
Chuyển đổi tín hiệu analog đọc từ arduino ra khối lượng:
Load cell 5kg có thang đo: 1mV/V. Ở đây cấp nguồn nuôi loadcell 5V. Sử dụng
điện áp tham chiếu nội của Arduino 1.1V.
5mV/5V-------- 5kg
???-------------- 10g
??? = 5*10/(5000) = 0.01 mV
Do dùng điện áp tham chiếu 1.1 V: mV/step = 1.1*1000/1024 = 1.074 mv/step
Tìm hệ số khuếch đại cho ina 128:
𝑚𝑉/𝑠𝑡𝑒𝑝
𝐺=
𝑚𝑉/𝑉
1.074
= = 107.4
0.01
5
analogReference(INTERNAL);
}