问题标签 [motordriver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
41 浏览

controller - 电机矢量控制与标量控制驱动中的 V/f 比?

在标量控制的 VFD 中,V/f 比保持恒定,以避免过通量/不足通量。

因此,如果额定为 460V/60Hz 的电机以 30Hz 旋转,那么在标量控制 VFD 的情况下,电压基本上下降到 230V,如下所示:https: //www.motioncontroltips.com/what-用于交流电机的 vfd 控制的方法/

在此处输入图像描述

但是,在矢量控制 VFD 的情况下,三相电流被分解为两相电流,以独立控制转矩和励磁磁场。在这种情况下,如果使额定为 460V/60Hz 的电机以 30Hz 运行,那么电压是否仍保持在 460V?

简而言之,矢量控制变频驱动的 V/f 是否仍然保持不变?

0 投票
2 回答
113 浏览

python - 如何使用 Tkinter 为步进电机系统实现停止按钮?

我有一个关于在 中使用停止按钮的问题Tkinter

对于一个实验,我必须设置一个使用两个步进电机工作的 X/Y 平台。arduino 程序完美运行。唯一的问题是,当我激活将舞台驱动到各种坐标的启动功能时,它会冻结。现在的问题是它必须连续运行数周,并且需要一个停止按钮来应对紧急情况并停止步进电机。停止按钮必须做两件事:它必须停止步进驱动器电机,它必须打破tkinter.after循环。但是,由于冻结,无法单击该按钮。

这是我的代码:

最后的 after 命令将引入 60 分钟的暂停,这将使程序冻结 60 分钟。希望有一个简单的解决方案来中断该功能!

先感谢您!

0 投票
1 回答
78 浏览

python - TypeError:“_asyncio.Future”对象不可下标,使用 mongodb 的异步电机驱动程序

我有一个代码,每当他发布新消息时,我都会尝试更新用户的数据:

但是,当它被激活时,我得到一个 TypeError:

如何修复此 TypeError?

0 投票
0 回答
39 浏览

python - 运行两个电机的树莓派

我在树莓派上使用两个直流电机,一个带有 L298N,第二个带有 BTS 驱动器。我创建了一个单独的文件并创建了单独的函数来启动和停止单个电机。我已经通过单独调用它们以及一起调用它们来运行两个电机来测试该功能。现在问题来了。我在我的主文件中调用 L298N 电机驱动器的函数。但它不起作用。这是我的电机代码将 RPi.GPIO 导入为 GPIO

GPIO.setwarnings(False)
从时间导入睡眠

导入库

从 RpiMotorLib 导入 rpiservolib

myservotest = rpiservolib.SG90servo("servoone", 50, 2, 12)

rPwm = 24
lPwm = 23
rEn = 25
lEn = 22

这些引脚用于新的 BTS 而不是 L298N 驱动器

rPwm2 = 6
lPwm2 = 5
rEn2 = 16
lEn2 = 12

用于主直流电机移动臂

GPIO.setmode(GPIO.BCM)
GPIO.setup(rPwm, GPIO.OUT)
GPIO.setup(lPwm, GPIO.OUT)
GPIO.setup(rPwm2, GPIO.OUT)
GPIO.setup(lPwm2, GPIO.OUT)

GPIO.setup(rEn, GPIO.OUT)
GPIO.setup(lEn, GPIO.OUT)
GPIO.setup(rEn2, GPIO.OUT)
GPIO.setup(lEn2, GPIO.OUT)

GPIO.output(rPwm, GPIO.LOW)
GPIO.output(lPwm, GPIO.LOW)
GPIO.output(rEn, GPIO.HIGH)
GPIO.output(lEn, GPIO.HIGH)

GPIO.output(rPwm2, GPIO.LOW)
GPIO.output(lPwm2, GPIO.LOW)
GPIO.output(rEn2, GPIO.HIGH)
GPIO.output(lEn2, GPIO.HIGH)

rSpeed = GPIO.PWM(rPwm, 1000)
rSpeed2 = GPIO.PWM(rPwm2, 1000)
lSpeed = GPIO.PWM(lPwm, 1000)
lSpeed2 = GPIO.PWM(lPwm2, 1000)
rSpeed.start(100)
lSpeed.start( 100)

用于第 2 直流电机

GPIO.setup(rPwm2, GPIO.OUT)
GPIO.setup(lPwm2, GPIO.OUT)
GPIO.setup(rEn2, GPIO.OUT)
GPIO.setup(lEn2, GPIO.OUT)

GPIO.output(rPwm2, GPIO.LOW)
GPIO.output(lPwm2, GPIO.LOW)
GPIO.output(rEn2, GPIO.HIGH)
GPIO.output(lEn2, GPIO.HIGH)

rSpeed2.start(100)
lSpeed2.start(100)

def backwardFullSpeedBTS():
'''这个函数将在正向全速移动 BTS 电机'''
rSpeed.ChangeDutyCycle(10)
lSpeed.ChangeDutyCycle(0)
# GPIO.output(rPwm,GPIO.HIGH)
# GPIO.output (lPWM,GPIO.LOW)

def forwardFullSpeedBTS():
'''这个函数将使 BTS 电机向后全速移动'''
rSpeed.ChangeDutyCycle(0)
lSpeed.ChangeDutyCycle(10)
# GPIO.output(rPwm,GPIO.LOW)
# GPIO.output (lPWM,GPIO.HIGH)

def stopBTSMotor():
'''这个函数将停止 BTS 电机'''
# GPIO.output(rPwm,GPIO.LOW)
# GPIO.output(lPwm,GPIO.LOW)
rSpeed.ChangeDutyCycle(0)
lSpeed.ChangeDutyCycle(0 )

def backwardAtSpeedBTS(speed):
'''这个函数将在正向全速移动 BTS 电机'''
rSpeed.ChangeDutyCycle(speed)
lSpeed.ChangeDutyCycle(0)
# GPIO.output(rPwm,GPIO.HIGH)
# GPIO.输出(lPwm,GPIO.LOW)

def forwardAtSpeedBTS(speed):
'''这个函数将在向后方向全速移动 BTS 电机'''
rSpeed.ChangeDutyCycle(0)
lSpeed.ChangeDutyCycle(speed)
# GPIO.output(rPwm,GPIO.LOW)
# GPIO。输出(lPwm,GPIO.HIGH)


def start2ndMotor():
'''此函数将在正向全速移动第二个 BTS 电机'''
rSpeed2.ChangeDutyCycle(80)
lSpeed2.ChangeDutyCycle(0)

def stop2ndMotor():
# 停止连接在 BTS 的第二个直流电机
rSpeed2.ChangeDutyCycle(0)
lSpeed2.ChangeDutyCycle(0)


def closeServo():
'''这个函数将关闭手臂来捡球'''
# 将伺服从 120 移动到 60
myservotest.servo_move(7, 11, 1, False, 1)

def openServo():
# 将伺服从 90 移动到 120
myservotest.servo_move(7, 7, 1, True, 1)
<\code>

这就是我导入函数的
方式 **from motorFunction import * ** from MotorBTS import *
def onStart():
global motorPosition
print("On Start")
root.update()
closeServo()
while GPIO.input(gpio_ButtonMStop) != 0:
"""将手臂向外移动直到按下停止按钮"""
forwardAtSpeedBTS(20)
pass
# 按下停止按钮后停止移动直流电机
stopBTSMotor() # 停止电机
cTime = float(time.time())
*** start2ndMotor()***
while checkDelay(cTime, 0.5):
# 等待 0.5 秒
通过
stop2ndMotor()
while GPIO.input(gpio_ButtonPuckMotor) != 0:
"""将圆盘电机移动到零位置"""
motorPuck.motor_go(False, # True=顺时针, False=逆时针
"Full", # Step type (Full,Half ,1/4,1/8,1/16,1/32)
100, # 步数
.0005, # step delay [sec]
False, # True = print verbose output
.05) # initial delay [sec]
print (“完成”)
当我调用 **start2ndMotor()** 在启动时它不会运行电机,只有第一个被称为 **forwardAtSpeedBTS(20)** 的电机工作。
0 投票
0 回答
42 浏览

python - 在 python 中控制直流电机

我使用树莓派控制两个带有 BTS 驱动器的直流电机。在一个文件中,我有这个:

在下一个文件中,我调用前面的函数:

只有它总是只称我为第一个引擎,而从不叫我 start2ndMotor。问题是它只导入第一个引擎,而不是第二个。我尝试将引擎拆分为自己的文件,但它仍然没有调用第二个引擎。你有没有其他方法来调用它或如何解决它?

0 投票
0 回答
60 浏览

python - 步进电机通电,但不转动

我是使用步进电机和 micropython 的新手。我无法让我的步进电机转动。我正在使用树莓派 pico 和 tmc 2208 驱动器来控制我的步进电机。我可以听到线圈通电和断电的声音,但我没有动静。

这是一个接线图 在此处输入图像描述

这是我的脚本

0 投票
0 回答
23 浏览

wpf - wpf mvvm:是否有一种可接受的模式将动画与模型更改同步?

我有一些硬件(这个例子是一个旋转的盘片),我没有为其编写固件。我可以命令它旋转 12 度,大约需要 1 秒。该命令是同步的,除了收到命令外,我没有立即得到反馈。在大约 1 秒内,我可以查询盘片的位置。几乎所有时间,它都按照要求进行。同时,我想在我的 xaml 上展示一个基于 ViewModel 中的属性更改旋转的旋转盘(我正在使用 MVVM)。我想在向固件发送命令后立即启动 GUI 盘片旋转。但是,当然,我真的不知道真正的盘子正在移动,或者它会完成它的移动。我很乐意移动 GUI 盘片,就好像真正的盘片要完成它的移动一样,

当您没有实时信息时,是否有显示动画的标准模式?

你能指出我的例子或 MSDN 文章吗?

我想过拥有“SetPostion”或“DesiredPosition”属性并将它们用于绑定。在动画结束时加上一小段时间,我可以检查模型(检查固件)。DesiredPosition 可以设置为实际位置。在大多数情况下,这不会导致额外的动画。如果真正的盘片没有移动或移动到错误的位置,我会很高兴 GUI 盘片旋转到实际的物理位置并显示 Toast 消息(“未达到位置”)。然而,“DesiredPosition”这个想法似乎不太理想。在重复 12 度移动的情况下,我可以看到发生碰撞的可能性。看起来这应该是一个常见的场景。肯定有很多情况下电机会移动,但你不会

如果有更好的组(固件组?),请告诉我。如果我能提供清晰的信息,请告诉我。在这种情况下,我正在努力寻找正确的词汇。如果我知道的话,我可能可以谷歌搜索答案!

0 投票
0 回答
11 浏览

compilation - 任何人都有使用迈来芯电机驱动器的经验

希望一切都好我问是否有人以前使用过melexis 81330板并且可以推荐一个编译器,或者如果有人有板的编程手册,任何信息都会有所帮助