怎样把电机电流转化为DC4~20ma信号?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样把电机电流转化为DC4~20ma信号?相关的知识,希望对你有一定的参考价值。
如果你有变频器的话,那就取变频器的一个模拟口子,设置好模拟输出为电流并且定义输出信号为4-20mA即可。但是我估计你是直接启动或者软启动的控制,没有模拟输出口子。那么在电机输出端,取其中一相装上电流互感器,然后加一个电流变送器(0-5A/4-20mA)的这么一个东西,把互感器的输出信号(0-5A)连到变送器上,这样变送器输出就可以得到4-20mA的信号了。追问对,是用软启动控制的。有没有可以用软启动显示电流的?
追答有可以显示电流也就是有模拟口子输出4-20mA信号的软起,但是这是国产的,绝大部分的软启动器是没有这样的模拟输出口子的。
追问能不能推荐一个牌子!~
追答这种东西很多,我经常用上海的维盛还有四川绵阳产的韦博,型号在我笔记本儿上才有,你只要找输入时0-5A AC,输出是4-20mA DC的就可以了,供电一般选24VDC的就可以了。
参考技术A 需要有电流互感器和电流变送器,电流互感器将电机电流转换成0-5A,输入到电流变送器,
电流变送器将0-5A的电流转换成4-20mA输出。 参考技术B 一个电流互感器和一个电流变送器就可以办到你说的问题了。说明一下,你要把它们的规格型号与你的要求相对应。
Beaglebone Black GPIO控制运行步进电机的速度非常慢。我怎样才能提高速度?
我为Beaglebone Black编写了一个设备驱动程序,只需旋转通过ULN2003A板连接的28BJY-48步进电机。一切正常,电机旋转,但我发现在每个引脚切换到HIGH后电机“捕获”信号后需要使用msleep(1)
。如果我让循环运行没有任何睡眠时间电机没有任何反应。
我想做的是加快电机旋转。
我的逻辑是信号太快而电机无法响应。我知道正在发送信号,因为与电机线圈串联的LED亮起。
我已阅读Elegoo found here for referene提供的数据表和说明。
为了便于理解,我附上了接线图:
我已将P8的以下GPIO指定为控件:
GPIO11 - IN1 - BLUE wire (coil 4)
GPIO12 - IN2 - PINK wire (coil 3)
GPIO15 - IN3 - YELLOW wire (coil 2)
GPIO16 - IN4 - ORANGE wire (coil 1)
我控制GPIO的方式是使用ioremap()
。
以下是控制电机的代码部分:
static ssize_t motor_rotate(int i) { //0 rotates right, 1 rotates left
int c = 0;
motor_stop();
while(c < 2000)
{
*gpio_dataout_addr |= PIN11;
//msleep(1);
*gpio_dataout_addr &= (0xFFFFFFFF ^ PIN16);
*gpio_dataout_addr |= PIN12;
//msleep(1);
*gpio_dataout_addr &= (0xFFFFFFFF ^ PIN11);
*gpio_dataout_addr |= PIN15;
//msleep(1);
*gpio_dataout_addr &= (0xFFFFFFFF ^ PIN12);
*gpio_dataout_addr |= PIN16;
//msleep(1);
*gpio_dataout_addr &= (0xFFFFFFFF ^ PIN15);
c++;
}
motor_stop();
return 0;
}
static ssize_t motor_stop(void){
*gpio_dataout_addr &= (0xFFFFFFFF ^ (PIN11 | PIN12 | PIN15 | PIN16));
return 0;
}
我的电机连接到独立于Beaglebone的5v电源。任何有关正确方向的帮助或指示都会受到赞赏。
另外,有没有办法同时将2个引脚设置为LOW,2个设置为HIGH?在设置另一个高电平之前,我的代码将一个引脚设我想知道我是否可以一步到位。我似乎无法弄清楚这一点。
经过进一步的审查和研究后,我发现问题不在于电压,电机或电路板,而在于我的代码本身。
As per this link我发现msleep的最小限制约为20ms。任何低于20毫秒(在我的情况下,1毫秒)的任何东西都将在20毫秒运行。因此,实现<20ms延迟的正确功能将是以下之一:
usleep_range()
,使用1000-2000的范围,通过更快的旋转使我获得了良好的结果。然而,在握住马达的同时,我觉得它跳了几步,虽然看不见。我认为这可能是电压故障或电机限制。需要进一步分析以排除导致跳绳的原因。
我仍在使用此范围来确定最佳非跳跃范围范围。
udelay()
也可以工作,但是系统似乎在一些永久循环中冻结并且需要硬重启。需要进一步分析以确定在完成旋转循环后究竟导致系统挂起的原因。
以上是关于怎样把电机电流转化为DC4~20ma信号?的主要内容,如果未能解决你的问题,请参考以下文章