基于WiFi控制的可变功率电阻

基于WiFi的功率可变电阻

 

01 率电阻


一、前言

  昨天制作的基于ZigBee通讯的可变功率电阻其的继电器控制板,  很可惜, 在实际使用过程中, 发现 ZigBee控制该变阻器动作十分不稳定。 现在通过WiFI通讯模块将控制器接入局部网络,  这样可以提高通讯的可靠性。 下面给出修改后的方案和调试的结果。 不过在这个过程中也发现了, 电路板上的3.3V的稳压电源对通讯模块的影响。  最终, 还是选择了 AS1117 给通讯模块提供电源才保证了最终的通讯的稳定性。

G6M1716253767_1920_1080.MP4|_-6

二、设计电路

  对于电路的修改是在昨天设计的基础上进行的。  只是将原来的ZigBee通讯模块修改成了 WiFi通讯模块。  驱动继电器仍然使用的是ULN2003。  这部分电源电路是否看起来有点奇怪了? 实际上这也是昨天晚上, 我花费时间最多的地方。 一开始使用的 LM2937 3.3V对应的稳压模块。 谁知, 在此模块供电的情况下, WiFi模块始终无法正常工作。 请注意, 昨天基于 ZigBee通讯的版本也是使用的 LM2937 线性稳压模块供电的, ZigBee 通讯模块也是非常不稳定。  后来就直接将其修改成 AS1117, 为了降低在12V工作电源下, AS1117上的功耗太大, 所以前面又加上了一个功率替罪羊, 使用了 带有散热片的 7805 先将12V电压降低到5V, 再给 AS1117供电。  基于这个设计方案,  设计单面电路板,  一分钟之后得到测试电路板, 焊接清洗调试。  这还是早期基于 LM2937稳压的电路板。  经过几次改变之后, 最终确定了现在的方案。  置于为何在LM2937提供 3.3V下电路无线通讯不稳定的问题, 以后再进行细查。

G12M1716254347_1920_1080.MP4|_-12

AD\Test\2024\May\POWERRESF103.SchDoc

ARM\Keil\STM32\Test\2024\May\RelayCNTF103\MDK

▲ 图1.2.1 电路原理图

▲ 图1.2.1 电路原理图

▲ 图1.2.2 PCB 版图

▲ 图1.2.2 PCB 版图

三、测量结果

  这是实际电路能够正常工作的状态。  下面对于组装后的系统再次测量继电器设定数值与端口电阻之间的关系。  查看一下电阻变化是否与设定数值之间呈现线性关系。
G3M1716254573_1920_1080.MP4|_-3

  测量结果显示, 实际电阻与继电器状态设置数值之间呈现非常好的线性关系。  使用线性拟合,  可以得到设定值与实际电阻之间线性函数的参数。  计算线性拟合误差, 可以看到误差在正负2.5欧姆之内。 这说明功率电阻在整个设定数值之间具有很好的精度。
G4M1716253547_1920_1080.MP4|_-4

▲ 图1.3.1 设置参数与实际电阻

▲ 图1.3.1 设置参数与实际电阻

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY                     -- by Dr. ZhuoQing 2024-05-21
#
# Note:
#============================================================

from headm import *
import socket
from tsmodule.tsvisa        import *

#------------------------------------------------------------
UDP_HOST  = '192.168.0.180'
UDP_PORT  = 8899
UDP_BUFSIZE = 0x1000
upn = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
upn.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, UDP_BUFSIZE)
upn.settimeout(0.2)


def upnsend(data):
    ADDR = (UDP_HOST, UDP_PORT)
    if type(data) != str:
        data = str(data)
    data = bytes(data, 'gbk')
    upn.sendto(data, ADDR)

def upnrecv():
    try:
        data, ADDR = upn.recvfrom(UDP_BUFSIZE)
    except socket.timeout:
        printf('Meter time out.')
        data = ''
    if len(data) > 0:
        return data.decode('utf-8')
    else: return ''

def upnval():
    upnsend('MEMOS')
    splitstr = upnrecv().split(' ')
    data = []
    for val in splitstr:
        if len(val) > 0:
            data.append(eval(val))
    return data

#------------------------------------------------------------
dm3068open()

sdim = list(range(128))
rdim = []

for s in sdim:
    upnsend('relay %x\r'%s)
    time.sleep(1.5)
    r = dm3068res()
    printff(s, r)
    rdim.append(r)

    tspsave("measure", sdim=sdim, rdim=rdim)

plt.plot(sdim, rdim, lw=3)

plt.xlabel("Set")
plt.ylabel("Resistance(Ohm)")
plt.grid(True)
plt.tight_layout()
plt.show()



#------------------------------------------------------------
#        END OF FILE : TEST2.PY
#============================================================
sdim=[0.00,1.00,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.00,11.00,12.00,13.00,14.00,15.00,16.00,17.00,18.00,19.00,20.00,21.00,22.00,23.00,24.00,25.00,26.00,27.00,28.00,29.00,30.00,31.00,32.00,33.00,34.00,35.00,36.00,37.00,38.00,39.00,40.00,41.00,42.00,43.00,44.00,45.00,46.00,47.00,48.00,49.00,50.00,51.00,52.00,53.00,54.00,55.00,56.00,57.00,58.00,59.00,60.00,61.00,62.00,63.00,64.00,65.00,66.00,67.00,68.00,69.00,70.00,71.00,72.00,73.00,74.00,75.00,76.00,77.00,78.00,79.00,80.00,81.00,82.00,83.00,84.00,85.00,86.00,87.00,88.00,89.00,90.00,91.00,92.00,93.00,94.00,95.00,96.00,97.00,98.00,99.00,100.00,101.00,102.00,103.00,104.00,105.00,106.00,107.00,108.00,109.00,110.00,111.00,112.00,113.00,114.00,115.00,116.00,117.00,118.00,119.00,120.00,121.00,122.00,123.00,124.00,125.00,126.00,127.00]
rdim=[469.35,467.05,462.84,460.48,455.42,453.11,448.83,446.46,439.49,437.17,432.96,430.59,425.51,423.20,418.93,416.55,410.91,408.59,404.38,402.01,396.95,394.65,390.39,388.06,380.86,378.44,374.22,371.88,366.81,364.52,360.24,357.88,350.41,348.09,343.87,341.50,336.42,334.11,329.83,327.46,320.53,318.20,313.98,311.60,306.50,304.19,299.90,297.53,291.78,289.45,285.23,282.86,277.79,275.48,271.19,268.82,261.77,259.44,255.22,252.85,247.73,245.42,241.13,238.76,233.48,231.16,226.94,224.57,219.48,217.17,212.89,210.52,203.48,201.15,196.93,194.55,189.44,187.12,182.83,180.46,174.66,172.34,168.12,165.75,160.65,158.34,154.06,151.69,144.53,142.21,137.98,135.61,130.49,128.18,123.89,121.52,113.79,111.48,107.25,104.88,99.78,97.46,93.18,90.80,83.62,81.30,77.08,74.70,69.58,67.26,62.97,60.60,54.65,52.34,48.12,45.75,40.64,38.33,34.05,31.68,24.36,22.05,17.83,15.46,10.33,8.02,3.74,1.37]

▲ 图1.3.2 直线拟合

▲ 图1.3.2 直线拟合

拟合公式: R = -3.7023*x + 470.992

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST3.PY                     -- by Dr. ZhuoQing 2024-05-21
#
# Note:
#============================================================

from headm import *
from scipy.optimize        import curve_fit

sdim, rdim = tspload('measure', 'sdim', 'rdim')
def linefun(x, a, b):
    return a*x + b

param = (-4, 500)
param, conv = curve_fit(linefun, sdim, rdim, p0=param)
printf(param)

rfit = linefun(sdim, *param)

plt.plot(sdim, rdim, lw=3, label='Measure')
plt.plot(sdim, rfit, lw=2, label='Fit')


plt.xlabel("Set")
plt.ylabel("R(Ohm)")
plt.grid(True)
plt.legend(loc="upper right")
plt.tight_layout()
plt.show()






#------------------------------------------------------------
#        END OF FILE : TEST3.PY
#============================================================

▲ 图1.3.3 线性拟合误差

▲ 图1.3.3 线性拟合误差

 

  结 ※


  文记录了基于WiFi通讯模块的功率可变电阻器控制模块的制作。 它是在昨天Zigbee无线通讯模块的基础上修改而成。  在这个设计过程中, 碰到了一个令我感到非常奇怪的现象。  使用 LM2937 3.3V 稳压模块造成了无线通讯模块工作不稳定。  后面将其替换成 AS1117, 问题才算得到解决。  这其中的弯弯绕, 后面再进行详细检查。  不过,最终这个可以被无线程控的功率负载电阻总算可以工作正常了。  这为之后的电源测量提供了纯粹的电阻负载。  将来用于其他功率电源电路的测量。

G9M1716254971_1920_1080.MP4|_-9

重新测量

今天(2025-04-19)对于电阻重新进行了测量。 结果如下:
▲ 图2.1 重新修改后的测量结果

▲ 图2.1 重新修改后的测量结果

rdim=[477.3028,474.7174,470.7741,468.1281,463.3068,460.7195,456.6959,454.0483,447.1352,444.5426,440.5953,437.9456,433.1064,430.5169,426.4962,423.8473,417.1599,414.5734,410.6280,407.9834,403.1709,400.5834,396.5629,393.9175,386.9911,384.3984,380.4515,377.8037,372.9732,370.3828,366.3630,363.7136,357.0376,354.4512,350.5048,347.8593,343.0508,340.4626,336.4408,333.7926,326.8793,324.2844,320.3408,317.6910,312.8591,310.2691,306.2512,303.6017,296.8559,294.2667,290.3250,287.6789,282.8717,280.2834,276.2682,273.6194,266.7216,264.1252,260.1814,257.5326,252.7015,250.1108,246.0983,243.4454,235.8453,233.2615,229.3201,226.6750,221.8570,219.2709,215.2545,212.6065,205.7589,203.1612,199.2249,196.5751,191.7336,189.1444,185.1314,182.4811,175.7121,173.1237,169.1832,166.5370,161.7361,159.1471,155.1329,152.4842,145.5397,142.9465,139.0056,136.3566,131.5256,128.9363,124.9192,122.2697,115.5534,112.9668,109.0214,106.3754,101.5633,98.9750,94.9607,92.3122,85.4167,82.8222,78.8802,76.2303,71.4091,68.8165,64.7992,62.1485,55.3688,52.7792,48.8375,46.1915,41.3777,38.7901,34.7738,32.1258,25.1808,22.5911,18.6547,16.0060,11.1618,8.5739,4.5603,1.9121]


● 相关图表链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卓晴

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

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

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

打赏作者

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

抵扣说明:

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

余额充值