0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机械变阻器的控制器设计原理及控制命令

电子设计 来源:csdn 作者:卓晴 2021-01-01 09:44 次阅读

虽然现在有很多可以用来当做变阻器的器件:比如场效应管、X9C103数字电位器,但是由于存在非线性、寄生电容,所以在很多测量场合还是需要机械变阻器来完成。

■ 说明

在2020/9/18日,由于外部机械碰撞,使得BLUETOOTH接口断裂,整个模块就报废掉了。

拆解前的机械变阻电位器

01设计原理

机械变阻器

机械变阻器的控制器是由STM32F103为核心,外部使用两个A4950做起小型直流电机驱动器。通过ZIGBEE串口模块接收控制命名。

在控制上还有八个IO端口,可以通过命令任意配置成OUT,IN。
八个IO口通过左右两个相同的六管脚插座输出,从左到右分配定义为:

另外一个端口与画面定义相同,只是BIT的序号从4到8.

pIYBAF_jCimAHYUQAAU-oj2aAGA816.png

变阻器的执行部件是由带有减速齿轮箱的直流电机。直流电机配有霍尔转速吗盘。

该电机通过软塑料管可以与多圈电位器相连,通过转动带动电位器转动。

控制命令

控制命令的说明文档:
DesignCenter\MyResearch\202\机械可变电阻

控制命令在软件SerialText.C中表示:如下面代码所示:
//------------------------------------------------------------------------------
void SerialDebugProcessBuffer(void) {
	SerialDebugBuffer2Argument();
	if(g_ucSDANumber == 0) return;

	if(strcmp("hello",				(char *)STD_ARG[0]) == 0)
		printf("%s is ready !\r\n", VERSION_STRING);
 else IFARG0("11pwm1") {
     int nNumber;
     sscanf(SDA(1), "%d", &nNumber);
     SetPWM1(nNumber);
 }else IFARG0("11pwm2") {
     int nNumber;
     sscanf(SDA(1), "%d", &nNumber);
     SetPWM2(nNumber);

 } else IFARG0("11pwm12") {
     int nNumber;
     sscanf(SDA(1), "%d", &nNumber);
     SetPWM12(nNumber);

 } else IFARG0("varistorcount1") {
     int nNumber;
     sscanf(SDA(1), "%d", &nNumber);
     int nPWM = 20;
     if(STD_NUM > 2) {
         sscanf(SDA(2), "%d", &nPWM);
         if(nPWM > 50) nPWM = 50;
     }
     SetCount1(nNumber, nPWM);
 } else IFARG0("varistorcount2") {
     int nNumber;
     sscanf(SDA(1), "%d", &nNumber);
     int nPWM = 20;
     if(STD_NUM > 2) {
         sscanf(SDA(2), "%d", &nPWM);
         if(nPWM >= 50) nPWM = 50;
     }
     SetCount2(nNumber, nPWM);
 } else IFARG0("varistorsetbit") {
     int nNumber;
     sscanf(SDA(1), "%x", &nNumber);
     SetBit((unsigned char)nNumber);
 } else IFARG0("varistorclearbit") {
     int nNumber;
     sscanf(SDA(1), "%x", &nNumber);
     ClearBit((unsigned char)nNumber);
 } else IFARG0("varistorsetbitvalue") {
     int nNumber;
     sscanf(SDA(1), "%x", &nNumber);
     SetBitValue((unsigned char)nNumber);
 } else IFARG0("varistorgetstatus") {
     char szString[32];
     sprintf(szString, "%d %d %d\r\n", GetBitValue(), GetCount1(), GetCount2());
     printf("%s", szString);
     int nLength = strlen(szString);
     int i;
     for(i = 0; i < nLength; i ++) {
         UART2SendChar(szString[i]);
     }

 } else IFARG0("varistorsetbitoutin"){
     int nNumber;
     sscanf(SDA(1), "%x", &nNumber);
     SetBitOutIn((unsigned char)nNumber);
 }

在JPGA25DOP中带有Python调用命令程序函数,相应的命令见下面的代码:

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# JPGA25.PY                    -- by Dr. ZhuoQing 2020-01-26
#
# Note:
#============================================================

from head import *

from tsmodule.tshardware import *

def jpgasetbitoutin(bit):
    ccloadSerial.write(b'varistorsetbitoutin %x\r'%bit)

def jpgagetstatus():
    if ccloadSerial.inWaiting() > 0:
        ccloadSerial.read(ccloadSerial.inWaiting())

    ccloadSerial.write(b'varistorgetstatus\r')

    for i in range(100):
        if ccloadSerial.inWaiting() > 0: break
        time.sleep(0.01)

    time.sleep(0.01)

    return ccloadSerial.read(ccloadSerial.inWaiting())

def jpgasetbitvalue(bit):
    ccloadSerial.write(b'varistorsetbitvalue %x\r'%bit)


def jpgarun1(step, speed=20):
    ccloadSerial.write(b'varistorcount1 %d %d\r'%(step, speed))

def jpgarun2(step, speed=20):
    ccloadSerial.write(b'varistorcount2 %d %d\r'%(step, speed))

测试结果

通过以下代码,使得变阻器变动,通过DM3068数字万用表测量电阻。 变阻器的引脚三个,从右到左,分别是滑动端,固定端1,固定端2.

指令中,如果RUN的参数为正,则滑动端与固定端2的电阻减少,与固定端1的电阻增加。 移动总步数大约为4500。

由于使用ZIGBEE进行命令控制,其中会出现丢失命令数据包的情况,所以在移动过程中电阻的变化会出现暂留的情况。

pIYBAF_jCneAETVtAAA5-ybzhQ0630.png

下面是对于第二个电阻测试的结果。每移动一次,测量滑动端至固定端2 之间的电阻。

o4YBAF_jCoqAa1LoAAAyZy2LZe4498.png

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# EXE1.PY                      -- by Dr. ZhuoQing 2020-01-26
#
# Note:
#============================================================
from headm import *
from tsmodule.tsvisa import *
dm3068open()
from jpga25 import *
#------------------------------------------------------------
jpgarun2(5500, 50)

#exit()
time.sleep(2)
#------------------------------------------------------------
resdim = []
pltgif = PlotGIF()
for i in range(80):
    jpgarun2(-50, 20)
    time.sleep(.5)
    res = dm3068res()

    printff(i, res)
    resdim.append(res)

    plt.clf()
    plt.plot(resdim)
    plt.xlabel('Sample')
    plt.ylabel('Resistor(ohm)')
    plt.pause(.01)

    pltgif.append(plt)

pltgif.save(r'd:\temp\res.gif', 50, 3000)

jpgarun2(5500, 50)

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15165

    浏览量

    170971
  • 场效应管
    +关注

    关注

    45

    文章

    1063

    浏览量

    62663
  • 数字电位器
    +关注

    关注

    4

    文章

    258

    浏览量

    82902
  • 变阻器
    +关注

    关注

    0

    文章

    91

    浏览量

    16228
收藏 人收藏

    评论

    相关推荐

    国产自主可控工程机械控制器

    随着科技的飞速发展,工程机械控制器在工程中的作用日益凸显。而今,硕博电子的工程机械控制器已成为众多头部企业的信赖之选。这背后,究竟隐藏着哪些不为人知的秘密呢?1、更高的产品性价比硕博电
    的头像 发表于 02-01 11:24 156次阅读
    国产自主可控工程<b class='flag-5'>机械</b><b class='flag-5'>控制器</b>

    工程机械控制器 CAN控制器

    随着科技的飞速发展,工程机械控制器在工程中的作用日益凸显。而今,硕博电子的工程机械控制器已成为众多头部企业的信赖之选。这背后,究竟隐藏着哪些不为人知的秘密呢?硕博电子
    的头像 发表于 01-30 14:04 39次阅读
    工程<b class='flag-5'>机械</b><b class='flag-5'>控制器</b> CAN<b class='flag-5'>控制器</b>

    滑动变阻器的作用 滑动变阻器怎么看电阻变大变小

    如下: 电路调节:滑动变阻器能够调节电路中的电阻值,从而调节电路的参数,如电流、电压、功率等,实现电路的精确控制。 电路分压:滑动变阻器可以作为电路分压用,通过调节滑动变阻器的电阻值,
    的头像 发表于 01-30 11:35 845次阅读

    液晶显示控制器LCDC

    液晶显示控制器
    Piezoman压电侠
    发布于 :2024年01月23日 15:43:34

    内存显示控制器介绍

    内存显示控制器
    Piezoman压电侠
    发布于 :2024年01月23日 11:33:39

    控制器电路图分享

    控制器是指按照预定顺序改变主电路或控制电路的接线和改变电路中电阻值来控制电动机的启动、调速、制动和反向的主令装置。由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是
    的头像 发表于 01-10 15:58 549次阅读
    <b class='flag-5'>控制器</b>电路图分享

    ZMC运动控制器多任务编程一

    ,支持的具体任务数量,可连接控制器之后,在 ZDevelop 软件菜单栏“控制器状态”查看或在线命令发送?*max 指令查看,如下图,表示该控制器支持 22 个任务,任务编号范围为 0
    发表于 11-07 09:52

    Python+QT进行单轴回零运动控制开发# 正运动技术# 运动控制器# 边缘控制器

    控制器python
    正运动技术
    发布于 :2023年10月20日 14:18:49

    #控制器 #阀门# 无线传输# 脉冲阀门控制器灌溉控制器

    控制器无线传输
    pgz1234
    发布于 :2023年10月10日 11:03:13

    脉冲阀控制器 智慧农田传感 #三农# 控制器#

    传感控制器
    pgz1234
    发布于 :2023年09月15日 15:52:43

    全国产EtherCAT运动控制边缘控制器ZMC432H接口介绍

    控制器接口
    正运动技术
    发布于 :2023年08月18日 11:12:10

    全国产EtherCAT运动控制边缘控制器ZMC432H# 运动控制器# 运动控制卡# 正运动技术

    控制器运动技术
    正运动技术
    发布于 :2023年08月07日 10:43:12

    PLC与运动控制器的区别 运动控制器的工作原理

    运动控制器的工作原理是将预定的控制方案、规划指令转变成期望的机械运动,实现机械运动精确的位置(点位、运动轨迹、插补等)控制、速度
    发表于 06-25 10:44 2486次阅读
    PLC与运动<b class='flag-5'>控制器</b>的区别 运动<b class='flag-5'>控制器</b>的工作原理

    MCU控制器是什么?MCU控制器有哪些作用?

    mcu控制器是什么意思   MCU控制器是Microcontroller Unit的简称,中文名称为“单片机”,是一种集成了处理、存储、输入输出接口等多种功能模块于一体的小型计算机
    发表于 05-05 14:59

    基于MM32F0160微控制器机械键盘

    最近,为了配合新品推广,灵动的软件与系统工程SE团队,基于带有 USB 外设模块的 MM32F0160 微控制器,实现了一套低成本带RGB灯效的机械键盘。这里将设计机械键盘的全过程开源出来,感兴趣
    的头像 发表于 04-21 09:11 807次阅读