通过MQTT在node-red平台上显示电机电流曲线

通过MQTT在node-red平台上显示电机电流曲线

  • 环境准备
  • 采集电流并通过MQTT传入云服务器
  • 配置电流曲线显示界面
  • 结果如下
  • 结果分析

今天到手了一块电流传感器模式(ACS712),量程为+/- 5安培。测量精度为1.5%。
废话少说,设备连接图如下:
通过MQTT在node-red平台上显示电机电流曲线_第1张图片
看看乱成一团的实物图

环境准备

(1)把万用表和ACS7132串入电机控制回路中
(2)Arduino与笔记本连接正常
(3)笔记本和云服务连接正常(本次采用腾讯云作为实验平台)
(4)云服务器已经安装node-red和MQTT

采集电流并通过MQTT传入云服务器

from LogCfg import LogCfg
import logging
import paho.mqtt.client as mqtt
import datetime
import random
import json
import time
from pyfirmata import Arduino,util
APP_NAME = 'mqtt-test'
LogCfg(APP_NAME)  # 日志配置
logger = logging.getLogger('default')
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    client.subscribe('/Smart_home')
def on_message(client, userdata, msg):
    print("topic:" + msg.topic + " " + str(msg.payload.decode('utf-8')))
def on_publish(client, userdata, mid):
    print("message" + str(mid) + ' success')
if __name__ == "__main__":
    logger.info('program start!!!')    
    try:
        client = mqtt.Client(client_id="client3")
        client.on_connect = on_connect
        client.on_message = on_message
        client.on_publish = on_publish
        client.connect("49.233.183.129", 1884, 60)
        board = Arduino('COM4')
        it = util.Iterator(board)
        it.start()
        analog_0 = board.get_pin('a:0:i')
        analog_1 = board.get_pin('a:1:i')
        time.sleep(1)
        while True:
            solar_battery_voltage = analog_0.read()*5
            print(analog_1.read())
            solar_battery_current =  (analog_1.read() -0.5)*10  #(2.5-analog_1.read())*5
            data = {
                'voltage':solar_battery_voltage,
                'current':round(solar_battery_current,2)
            }
            client.publish("/solar_battery",payload=json.dumps(data))
            logger.debug(f"{data}")
            time.sleep(0.5)
        pass
    except KeyboardInterrupt :
        pass
    logger.info('program exit!!!')

配置电流曲线显示界面

通过MQTT在node-red平台上显示电机电流曲线_第2张图片

结果如下

通过MQTT在node-red平台上显示电机电流曲线_第3张图片

结果分析

电流和万用表比较,精度不是太高,跳动比较大,不过总体趋势是正确的。后续可以做一些平均,以及滤波等算法,看看效果是否有改善。

你可能感兴趣的:(物联网)