找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3109|回复: 3
打印 上一主题 下一主题
收起左侧

Arduino+LM35+卡尔曼滤波+i2C_lcd

[复制链接]
跳转到指定楼层
楼主
Arduino+LM35+kalman+i2C_lcd, 加入卡爾曼濾波显示温度比较度稳定,
可显示小数後三位。
  1. /*
  2. This sample code demonstrates how to use the SimpleKalmanFilter object.
  3. Use a potentiometer in Analog input A0 as a source for the reference real value.
  4. Some random noise will be generated over this value and used as a measured value.
  5. The estimated value obtained from SimpleKalmanFilter should match the real
  6. reference value.

  7. SimpleKalmanFilter(e_mea, e_est, q);
  8. e_mea: Measurement Uncertainty
  9. e_est: Estimation Uncertainty
  10. q: Process Noise
  11. https://github.com/denyssene/SimpleKalmanFilter
  12. */
  13. #include <SimpleKalmanFilter.h>
  14. SimpleKalmanFilter simpleKalmanFilter(1, 1, 0.1);

  15. #include <LiquidCrystal_I2C.h>
  16. LiquidCrystal_I2C lcd(0x3f,16,2); //(0x20,16,2)

  17. const long SERIAL_REFRESH_TIME = 100;
  18. long refresh_time;
  19. float tempC;
  20. int tempPin = A0;

  21. void setup(){
  22. Serial.begin(9600);
  23. lcd.begin();
  24. lcd.print("Temp =");
  25. lcd.setCursor(0, 1);
  26. lcd.print("TempKa=");
  27. }

  28. void loop(){

  29. if (millis() > refresh_time) { // 每100ms發送到串行輸出
  30. tempC=0;
  31. tempC = analogRead(tempPin); //从传感器读取值
  32. tempC += analogRead(tempPin);
  33. tempC += analogRead(tempPin);
  34. tempC += analogRead(tempPin);
  35. tempC =tempC/4;
  36. tempC = (5.0 * tempC * 100.0)/1024.0; //将模拟数据转换为温度

  37. // 用卡爾曼濾波器計算估計值
  38. float kal_tempC = simpleKalmanFilter.updateEstimate(tempC);

  39. Serial.print(tempC); // 使用串行繪圖儀進行良好的可視化
  40. Serial.print(",");
  41. Serial.println(kal_tempC);
  42. //将结果到lcd显示
  43. lcd.setCursor(7, 0);
  44. lcd.print(tempC,3);
  45. lcd.print(" C");

  46. lcd.setCursor(7, 1);
  47. lcd.print(kal_tempC,3);
  48. lcd.print(" C");

  49. refresh_time = millis() + SERIAL_REFRESH_TIME;
  50. }
  51. }
复制代码


002.jpg (18.55 KB, 下载次数: 104)

卡爾曼濾波显示温度比较

卡爾曼濾波显示温度比较
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:328014 发表于 2019-10-22 18:04 | 只看该作者
好东东 能分享下源程序吗?
回复

使用道具 举报

板凳
ID:234938 发表于 2019-11-26 19:14 | 只看该作者
感谢楼主分享!有个问题,楼主能否帮着解决一下?程序上传到Mega2560上运行正常,温度显示正常22度左右;上传到MICRO上,温度却显示为483度,请问楼主,这是什么原因?接线都反复检查了,对着呢。谢谢!
回复

使用道具 举报

地板
ID:687881 发表于 2020-6-17 15:40 | 只看该作者
试了一下卡尔曼滤波来测温度,果然 不错。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表