基于Arduinoros的温度控制器
以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 branchindigo-devel * kinetic-devel然后是修改主節點node.py(ros_arduino_bridge/ros_arduino_python/nodes)
在八十行左右添加一個獲取溫度的服務。
# A service to get temperaturerospy.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?
總結
以上是生活随笔為你收集整理的基于Arduinoros的温度控制器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MongoDB分片机制
- 下一篇: 秋天的枫叶