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

发布者:InspiredDreamer最新更新时间:2024-07-12 来源: elecfans关键字:控制器  控制命令 手机看文章 扫描二维码
随时随地手机看文章

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

■ 说明


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


▲ 拆解前的机械变阻电位器

01设计原理

机械变阻器

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

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


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

pIYBAF_jCimAHYUQAAU-oj2aAGA816.png

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

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


控制命令

控制命令的说明文档:
DesignCenterMyResearch202机械可变电阻


控制命令在软件SerialText.C中表示:如下面代码所示:

//------------------------------------------------------------------------------

void SerialDebugProcessBuffer(void) {

SerialDebugBuffer2Argument();

if(g_ucSDANumber == 0) return;


if(strcmp('hello', (char *)STD_ARG[0]) == 0)

printf('%s is ready !rn', 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 %drn', 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 %xr'%bit)


def jpgagetstatus():

    if ccloadSerial.inWaiting() > 0:

        ccloadSerial.read(ccloadSerial.inWaiting())


    ccloadSerial.write(b'varistorgetstatusr')


    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 %xr'%bit)



def jpgarun1(step, speed=20):

    ccloadSerial.write(b'varistorcount1 %d %dr'%(step, speed))


def jpgarun2(step, speed=20):

    ccloadSerial.write(b'varistorcount2 %d %dr'%(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:tempres.gif', 50, 3000)


jpgarun2(5500, 50)


关键字:控制器  控制命令 引用地址:机械变阻器的控制器设计原理及控制命令

上一篇:如何利用外部中断和定时器测量信号频率?
下一篇:基于LabVIEW软件设计的调试平台在工业控制中的应用

推荐阅读最新更新时间:2024-11-11 18:54

全自主安全气囊控制器方案CCL1600B+CCFC2012BC+CMA2100B | 国芯科技确认申报2024金辑奖
申请技术丨车载支付和出行服务 申报领域丨车规级芯片 独特优势: 安全气囊点火驱动芯片CCL1600B,是国内首款自主研发的安全气囊点火专用芯片,在芯片设计定义阶段充分考虑了主机厂客户对系统成本及安全的需求,将电源模块、触发回路模块、传感器接口模块、通讯模块和复杂的安全模块集成在一个芯片上,从而最大限度降低系统BOM成本、提升异常工作条件的监测和处理能力,为客户提供性价比更优的解决方案;CCL1600B可以对垄断市场的国外产品系列的完全替代,实现国内汽车安全气囊的零突破,是国内汽车安全气囊领域实现自主可控的高可靠、高安全的里程碑产品,为国内车企的供应链安全提供重要的支持。
[汽车电子]
全自主安全气囊<font color='red'>控制器</font>方案CCL1600B+CCFC2012BC+CMA2100B | 国芯科技确认申报2024金辑奖
基于ATMEGA16的电热锅炉温度控制器的开发研制
  引言   电热锅炉是可将电能直接转化成热能,具有热效率高、体积小、无污染、噪声小、运行安全可靠、供热稳定、自动化程度高等优点,是理想的节能环保型的供暖设备。   本控制器主要针对过程控制实验室的控制装置而设计的,对浙大中控的AE2000B过程控制实验装置中电热锅炉的温度进行控制、显示,具有手动、自动功能,带有漏电、超温、超压及缺水保护和报警系统。   智能仪表的研制开发   智能仪表是以单片机为核心的仪表,其设计要点大致有两点,即模块化设计和模块的连接。   ● 模块化设计   依据仪表的功能、精度要求等,自上而下按仪表功能层次把硬件和软件分成若干个模块,分别进行设计与调试,然后把它们连接起来,进行总调,这是设计仪
[单片机]
基于ATMEGA16的电热锅炉温度<font color='red'>控制器</font>的开发研制
电器密码控制器电路图
电器密码控制器电路图 电器密码控制器电路适用于重要电器设备的电源控制,可有效地防止他人对策是要设备的随意使用。
[模拟电子]
电器密码<font color='red'>控制器</font>电路图
罗姆旗下LAPIS开发出超低功耗LED照明用微控制器
LAPIS Semiconductor开发出实现丰富色彩与亮度的全彩LED照明用低功耗微控制器 ~精细控制且节能,无限演绎不同生活场景下的照明效果~ ROHM旗下的LAPIS Semiconductor开发出可通过精细控制实现丰富色彩与亮度的全彩LED照明用8位低功耗微控制器“ML610Q111/ML610Q112”。 该LSI搭载了 LED照明控制所必需的6通道PWM端口,可控制多个LED,不仅可将白色和暖黄色的单色LED独立控制,而且还可同时控制RGB三色LED,因此,可实现丰富多彩的色彩表现。通过精细控制光源,可无限演绎不同生活场景与内饰的照明效果。 该LSI现样品出售中,预计从2013年12月份开始量产销售。 另外
[单片机]
罗姆旗下LAPIS开发出超低功耗LED照明用微<font color='red'>控制器</font>
凌力尔特推出具有低DCR检测功能的双通道相位同步降压型从属控制器
凌力尔特公司 (Linear Technology Corporation) 推出双通道相位同步降压型从属控制器 LTC3874,当与一个伙伴主控制器配对使用时,其可通过扩展多相应用中的相位数目产生高达 300A 的电流。与 LTC3874 相兼容的主控制器包括 LTC3866、LTC3875 和 LTC3774,这些器件均具有真正的电流模式控制功能,并可使用低 (0.2mΩ) DC 电阻 (DCR) 功率电感器而无需任何检测电阻器,以最大限度地提高转换器效率并增加功率密度。   LTC3874 补充了凌力尔特的低 DCR 峰值电流模式控制器,并可提供多相从属设计所需的所有功能,包括准确的相位至相位均流 (即使对于动态负载也不例外
[电源管理]
新太行为XX直升机配套研发的充放电控制器通过装机质量评审
  2015年6月17日,由中航工业602所、中航工业一飞院、陆航军代表、河师大等方面组成的专家组,对我公司研制开发的某型号充放电控制器设计改进及装机质量”进行评审;经过专家们的论证,认为该产品具备装机条件。
[新能源]
基于Atmega48单片机的太阳能路灯控制器的设计
太阳能控制器是太阳能路灯系统中的核心部分,设计了一种基于Atmega48 单片机 的太阳能路灯控制器。该控制器采用PWM脉冲调制控制技术通过对蓄电池电压、充电电流等参数进行检测,控制开关管的关断,来实现充放电控制和保护功能。测试表明,该控制器运行稳定、可靠性高、性价比高,具有良好的市场前景。 作为一种新兴的绿色能源,太阳能具有取之不尽、用之不竭、清洁安全的特点,是理想的可再生能源。而太阳能光伏发电技术作为太阳能利用的一个重要组成部分,被认为是目前最具发展潜力的一种发电技术。太阳能光伏发电系统的研究对于缓解能源危机,减少环境污染和温室效应具有重要的意义。 太阳能路灯就是典型的太阳能光伏发电应用产品之一,它是以太阳能作为电
[单片机]
基于Atmega48单片机的太阳能路灯<font color='red'>控制器</font>的设计
台湾旺玖BL8810完全替代GL823K|USB 2.0单LUN读卡器控制器
创惟GL823K是一款USB 2.0单LUN读卡器控制器,可支持SD/MMC/MSPRO闪存卡。它支持USB 2.0高速传输,将Digital TM(SD)、SDHC、SDXC、Mini DTM、Micro DTM(T-Flash)、Multi Media Card TM(MMC)、RS Multi Media Card TM(RS MMC)、MMC micro、HS-MMC、MMC mobile、Memory Stick PROTM(MS PRO)、Memory Stick PROTM Duo(MS PRO Duo)、Memory Stick PRO-HGTM(MS PRO-HG)、MS Micro(M2)安全保护在一块芯片上。
[嵌入式]
台湾旺玖BL8810完全替代GL823K|USB 2.0单LUN读卡器<font color='red'>控制器</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved