1年3个月前修改于 1年3个月前IP:湖南
945487
24楼
引用天启awa发表于20楼的内容
哈哈哈😁,原来是这样啊,那我的代码不就白写了但是各位kcer如果做出来发现串口数据乱跳可以采用我的代码,因为加了滤波算法

新版代码,加入卡尔曼滤波算法,滤波效果相对更加优秀,只需更改原版的hx711XXXXO.ino,其他步骤同文

不过lz说“然后加了一个TF卡检测”,我代码里不本来就有一个检测吗……

hx711XXXXO.ino:

#include <Arduino.h>

#line 1 "C:\\Users\\Acer\\Desktop\\HX711_5Kg\\HX711_5Kg.ino"

#include "HX711.h"

#include <SPI.h>

#include <SD.h>

float pretime = 0;

File sdcard;

const int cspin = 10;

#line 10 "C:\\Users\\Acer\\Desktop\\HX711_5Kg\\HX711_5Kg.ino"

void setup();

#line 42 "C:\\Users\\Acer\\Desktop\\HX711_5Kg\\HX711_5Kg.ino"

void loop();

#line 10 "C:\\Users\\Acer\\Desktop\\HX711_5Kg\\HX711_5Kg.ino"

void setup()

{

Init_Hx711(); //初始化 hx711

delay(3000);

Get_Maopi(); //初始化毛皮

Serial.begin(115200);

Serial.println("HX711 done.");

pinMode (cspin, OUTPUT);

if (!SD.begin (cspin)) { // SD 初始化并检测

Serial.println("SD card failed!");

}

else {

Serial.print("SD card done.\n");

sdcard = SD.open ("data.txt", FILE_WRITE);

if (sdcard) { // 文件读写测试

Serial.println("Opened data.txt!");

sdcard.println("---------------------------------");

sdcard.println("0.00 0.00");

sdcard.close();

} else {

Serial.println("Error opening data.txt!");

}

Serial.println("Start-----------------");

}

pretime = millis ();

Serial.println (pretime);

}

const double Q = 0.001, R = 0.5;

// 过程噪声方差 q(0.001~1),观测噪声方差 r(1~10)

// 根据不同传感器需要调整这两个参数

double p = 1, k, lastp = 1, ans = 0;

// p 初始估计误差方差,k 卡尔曼增益,lastp上次估计误差方差,ans 上次估计值

double kalman (double val) { // 卡尔曼滤波

// 预测

p = lastp + Q;

// 更新

k = p / (p + R);

ans = ans + k * (val - ans);

lastp = (1 - k) * p;

return ans;

}

void loop() {

float weight = Get_Weight ();

float now = (millis() - pretime) / 1000;

if (weight < 0)

weight = 0;

weight = kalman (weight); // 卡尔曼滤波

float force = weight / 1000 * 9.8;

Serial.print (now);

Serial.print (" ");

Serial.print (weight);

Serial.print ("g");

Serial.print (" ");

Serial.print (force);

Serial.println ("N");

sdcard = SD.open ("data.txt", FILE_WRITE);

sdcard.print (now);

sdcard.print (" ");

sdcard.println (force);

sdcard.close ();

}

评论
文号 / 945487

浪迹天涯
名片发私信
学术分 0
总主题 3 帖总回复 57 楼拥有证书:进士 机友
注册于 2024/08/22 17:46:04最后登录 2026/03/15 22:02:08
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:湖南

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的