基于Arduino&ros的温度控制器

以arduino为下位机,控制加热器和传感器。将读取的传感器数据上传到上位机。上位机是安装了ros的电脑或树莓派,通过获取到温度的变化情况控制加热器。


0.代码

github:https://github.com/zhangjiali1201/temp_control

arduino_exercise是感热灯的代码。

arduino_ntc是ros_arduino_bridge对应的下位机代码。

1.前言

使用ros开源包ros_arduino_bridge进行ros和arduino之间的通信。关于ros_arduino_arduino相关的实验,见之前的博客ros_arduino_bridge控制舵机

使用热敏电阻的热敏灯实验,见之前的博客arduino学习笔记6 感热灯

2.传感器

将热敏电阻用于测温控温装置是很常见的用法。热敏电阻本身范畴也比较大,从狭义上的热敏电阻NTC PTC,热电偶TC到薄膜电阻RTD等都算。

我手头也没有多少可用的元器件,只有好久以前买arduino组件的时候附带的两个负温度系数热敏电阻,具体型号不可考,也没有附带应用文档。

NTC热敏电阻会随着温度升高而减小电阻。

3.加热器

加热器暂时无可用器件,待定。暂时以输出1代表加热,输出0表示停止加热。

4.下位机代码

按常理,下位机部分代码应该根据传感器的技术手册所标明的控制方式编写和获取数据。

这里缺少参考,就只简单的获取一下数据。接线方式和传感器控制部分代码与之前的博客arduino学习笔记6 感热灯相同。

下位机代码比较简单,主要就是三部分,主程序、传感器和串口通信。具体见代码,不复杂。

5.上位机代码

首先下载一下ros_arduino_bridge,并切换到对应的分支,我这里系统用的是kinetic,所以切换到kinetic-devel.

$ git clone https://github.com/hbrobotics/ros_arduino_bridge.git
$ git checkout kinetic-devel

检查一下分支。

zjl@zjl-X550ZE:~/temp_control/ros_arduino_bridge$ git branch
  indigo-devel
* kinetic-devel

然后是修改主节点node.py(ros_arduino_bridge/ros_arduino_python/nodes)

在八十行左右添加一个获取温度的服务。

# A service to get temperature
        rospy.Service('~getTemperature', GetTemperature, self.GetTemperatureHandler)

440行左右添加:

def GetTemperatureHandler(self, req):
        value = self.controller.get_temperature()
        return GetTemperatureResponse(value)

修改驱动代码arduino_driver.py(ros_arduino_bridge/ros_arduino_python/src/ros_arduino_python)

340行左右增加:

def get_teperature(self): #获取温度传感器的结果
        return self.execute_ack('t')

380行左右:

rospy.loginfo("Now print temperature sensors value:")
    values = myArduino.get_temperature()
    distances = np.array([values[0]])
    rospy.loginf(distances)

创建srv文件

---
float32 temp

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangjiali12011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值