一.所需的硬件和使用的器件
Pico开发板、扩展板、电脑、USB数据线、声音传感器模块、继电器模块、步进电机、电机驱动模块、2根公对母杜邦线、11根母对母杜邦线。
二.实验现象
制作一个声音控制继电器开关,从而控制步进电机转动的小实验,用对着声音传感器模块吹气,或者鼓掌等方式发出声音,声音超过一定阈值时,继电器模块会打开开关,从而步进电机转动起来,再一次接收到声音超过阈值,则关闭开关。
三.各元件的连接
四.代码的编写
from machine import Pin
import utime
import _thread
led = Pin(25,Pin.OUT)
sound = Pin(10,Pin.IN)#声音传感器引脚初始化
relay = Pin(4,Pin.OUT)#继电器引脚初始化
#步进驱动模块的引脚初始化
in1 = Pin(16,Pin.OUT)
in2 = Pin(15,Pin.OUT)
in3 = Pin(14,Pin.OUT)
in4 = Pin(13,Pin.OUT)
delay = 1
ROUND_VALUE = 509
#四相八拍步进电机的顺序值
STEP_VALUE = [
[0,0,0,1],
[0,0,1,1],
[0,0,1,0],
[0,1,1,0],
[0,1,0,0],
[1,1,0,0],
[1,0,0,0],
[1,0,0,1],
]
def led_on():
led.value(1)
def led_off():
led.value(0)
#读取声音模块的状态
def sound_state():
if sound.value() == 0:
return True
return False
#引脚输出低电平
def reset():
in1(0)
in2(0)
in3(0)
in4(0)
#单步运行,当count为正整数时是顺时针转,负整数则逆时针转
def step_run(count):
direction = -1
if count < 0:
direction = 1
count = -count
for x in range(count):
for bit in STEP_VALUE[::direction]:
in1(bit[0])
in2(bit[1])
in3(bit[2])
in4(bit[3])
utime.sleep_ms(delay)
reset()
#步进电机转动的角度,a是正整数则顺时针转,是负整数则逆时针转
def step_angle(a):
step_run(int(ROUND_VALUE*a/360))
#继电器的开关设置
def relay_on():
relay(1)
def relay_off():
relay(0)
#运行步进电机的任务
def task_1():
while True:
step_run(1)
# 由于步进电机驱动需要耗时等待,所以放进子线程里运行
def main():
_thread.start_new_thread(task_1,())
time_point = utime.ticks_ms()
motor_state = False
# 循环,检测声音模块,接收到声音切换继电器输出状态,从而改变电机运动状态。
while True:
if sound_state() == True:
if utime.ticks_ms() - time_point >=300: # 声音过滤300毫秒,避免重复检测
print("get sound")
time_point = utime.ticks_ms()
motor_state = not motor_state
if motor_state:
relay_on()
led_on()
else:
relay_off()
led_off()
try:
main()
except KeyboardInterrupt:
thread.exit()
五.给大家补充亿点小知识
(1)步进电机
步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机,每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比,因此,步进电动机又称脉冲电动机。
(2)步进电机驱动模块
步进电机驱动器是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速和定位的目的。
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度,驱动器相当于开关的组合单元。通过上位机的脉冲信号有顺序给电机相序通电使电机转动。。
(3)继电器
继电器是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。