đề tài: thiết kế cân điện tử qua ARM STm32f103C8t6 giao tiếp PC

#21
anh Hung ơi cho e hỏi 1 lần nữa về vấn đề sai số của cân loadcell á ạ
giờ minh tạo thêm 1 nút nhân để reset cán cân khi chưa đặt vật lên là về 0
ở đây e muốn a tự vấn thêm về cac vấn đề lien quan đến nó ạ như tính toan trừ sai số the nào đê hien gam thực tế mà minh đặt lên đại loại vậy ạ, mong a cho e xin kinh nghiệm từ anh ạ
e cảm ơn a
Sai số bạn gặp phải sẽ chủ yếu từ 02 phần tử: Load cell và ADC.
Load cell về lí thuyết sẽ cho ra tín hiệu tuyến tính với độ biến dạng, độ biến dạng lại theo tỉ lệ nào đó với trọng lực. Trọng lực chia cho gia tốc tự nhiện tại chỗ (~9.8m/s^2) thì ra khối lượng. Do vậy, thực tế đầu ra của tín hiệu load cell không hoàn toàn tuyến tính với khối lượng đặt vào. Ngoài ra nhiệt độ làm việc tại mỗi thời điểm cũng ảnh hưởng tới phần cơ khí và cảm biến biến dạng, dẫn tới tín hiệu ngõ ra không ổn định. Hai yếu tố non-linear và drift trên là hai yếu tố ảnh hưởng đến chất lượng cũng như giá thành của load cell. Tại sao có con đắt và có con lại rẻ hơn nhiều. Các thống số của Load cell bạn phải có đầy đủ thì mới tính được sai số, hoặc đặt ra sai số mong muốn rồi chọn lại loại load cell phù hợp.
Thứ hai là sai số của ADC, cái này đã nói qua ở bài trước.

Như vậy kết quả hiển thị sẽ có hai loại sai số chính: sai số analog do phần analog không đảm bảo tuyến tính, và sai số do số hóa khâu ADC & sai số do giới hạn của số hiển thị.

Về yêu cầu offset của bạn về 0 gr thì đơn giản, trong kết quả hiển thị bạn luôn có một biến lưu là offset_output, khi bạn ấn nút thì giá trị offset_output được gán bằng đúng giá trị output, sau đó giá trị output sẽ được tính lại là: output = output (ADC) - offset_output. Tất nhiên, việc đo và tính này được thực hiện sau khi kết quả đo đã thực hiện việc lọc, lấy trung bình để có kết quả ổn định.
 

lmc98cddt16c

Học sinh phổ thông
#22
Sai số bạn gặp phải sẽ chủ yếu từ 02 phần tử: Load cell và ADC.
Load cell về lí thuyết sẽ cho ra tín hiệu tuyến tính với độ biến dạng, độ biến dạng lại theo tỉ lệ nào đó với trọng lực. Trọng lực chia cho gia tốc tự nhiện tại chỗ (~9.8m/s^2) thì ra khối lượng. Do vậy, thực tế đầu ra của tín hiệu load cell không hoàn toàn tuyến tính với khối lượng đặt vào. Ngoài ra nhiệt độ làm việc tại mỗi thời điểm cũng ảnh hưởng tới phần cơ khí và cảm biến biến dạng, dẫn tới tín hiệu ngõ ra không ổn định. Hai yếu tố non-linear và drift trên là hai yếu tố ảnh hưởng đến chất lượng cũng như giá thành của load cell. Tại sao có con đắt và có con lại rẻ hơn nhiều. Các thống số của Load cell bạn phải có đầy đủ thì mới tính được sai số, hoặc đặt ra sai số mong muốn rồi chọn lại loại load cell phù hợp.
Thứ hai là sai số của ADC, cái này đã nói qua ở bài trước.

Như vậy kết quả hiển thị sẽ có hai loại sai số chính: sai số analog do phần analog không đảm bảo tuyến tính, và sai số do số hóa khâu ADC & sai số do giới hạn của số hiển thị.

Về yêu cầu offset của bạn về 0 gr thì đơn giản, trong kết quả hiển thị bạn luôn có một biến lưu là offset_output, khi bạn ấn nút thì giá trị offset_output được gán bằng đúng giá trị output, sau đó giá trị output sẽ được tính lại là: output = output (ADC) - offset_output. Tất nhiên, việc đo và tính này được thực hiện sau khi kết quả đo đã thực hiện việc lọc, lấy trung bình để có kết quả ổn định.
e cảm ơn a ạ
 

lmc98cddt16c

Học sinh phổ thông
#23
anh ơi cho e hỏi phát là cai code này
khi e nhấn nút nhấn thì nó hiệu chỉnh về 0 rồi nhưng khi thả ra nó vẫn chạy hiển thi vat can nang binh thương mà k quy về 0 trước khi đo vật được á ,đại loại như 2 đứa nó k liên quan đến nhau vậy nên e mong anh giúp e với ạ
cảm ơn anh nhiều lăm!
p/s:e lập rinh trên con arm qua phần mềmcubemx-kelc 5
(thiet ke LoadCell qua STM32 ạ)
1542206545527.png
 
#24
anh ơi cho e hỏi phát là cai code này
khi e nhấn nút nhấn thì nó hiệu chỉnh về 0 rồi nhưng khi thả ra nó vẫn chạy hiển thi vat can nang binh thương mà k quy về 0 trước khi đo vật được á ,đại loại như 2 đứa nó k liên quan đến nhau vậy nên e mong anh giúp e với ạ
cảm ơn anh nhiều lăm!
p/s:e lập rinh trên con arm qua phần mềmcubemx-kelc 5
(thiet ke LoadCell qua STM32 ạ)
Xem đính kèm 81897
Em lập trình ra kết quả như vậy là chương trình thực hiện đúng như mô tả rồi.
Em cần gán/asign tên các biến một cách tường minh để sau này tiện theo dõi chúng. Nhất là sau này các dự án lớn, bao gồm nhiều file và nhiều ngoại biến - external.
temp = là từ viết tắt kiểu biến tạm
zero = tức là 0
adc = chung chung
Ép kiểu từ float về unsigned int32 = anh không biết kết quả sẽ chuyển về ntn :?
Về phần code em chỉ xử lí kết quả khi trạng thái nút nhấn = '1' nên dẫn tới vấn đề trên, hiện tại em đang dùng chồng pinb6 port B.
Em phải chỉ rõ, khi ấn nút thì là đo hay calib về zero?
Việc thực thi calib chỉ nên thực hiện 01 lần, và quá trình đo tiếp tục được lặp.
Em nên copy code vào đây để dễ quan sát thay vì chụp hình, code copy có thể được nhúng html để hiển thị màu như trình biên dịch.
 

Quảng cáo Google