01studio的k230到手几天了,用来学习一下实现个人的一些小想法。
如题:k230+42步进电机(带闭环驱动)实现按键控制正反转。
‘’’
实验名称:PWM与按键控制控制42步进电机
版本:v1.0
作者:01Studio
实验平台:01Studio CanMV K230
说明:通过按键控制42步进电机的正反转,并在每次按下按键时改变方向,持续输出脉冲信号以实现360度转动。
‘’’
from machine import Pin, PWM
from machine import FPIOA
import time
配置引脚42为PWM0功能(step脉冲)
fpioa = FPIOA()
fpioa.set_function(42, FPIOA.PWM0)
配置引脚43为PWM1功能(dir方向)
fpioa.set_function(43, FPIOA.PWM1)
构建步进电机PWM对象,通道0,频率为2000Hz,占空比为50%,默认使能输出
Step = PWM(0, 2000, 50, enable=True)
构建方向控制PWM对象,通道1,频率为2000Hz,占空比为50%,默认使能输出
Dir = PWM(1, 1, 50, enable=True)
将GPIO52、GPIO21配置为普通GPIO模式
fpioa.set_function(52, FPIOA.GPIO52) # LED
fpioa.set_function(21, FPIOA.GPIO21) # KEY
LED = Pin(52, Pin.OUT) # 构建LED对象, 开始熄灭
KEY = Pin(21, Pin.IN, Pin.PULL_UP) # 构建KEY对象
state = 0 # LED引脚状态
direction = True # 步进电机方向
while True:
if KEY.value() == 0: # 按键被按下
time.sleep_ms(10) # 消除抖动
if KEY.value() == 0: # 确认按键被按下
state = not state # 使用not语句而非~语句
LED.value(state) # LED状态翻转
print(‘KEY’)
# 改变步进电机方向
direction = not direction
Dir.duty(50 if direction else 0) # 设置方向
while not KEY.value(): # 检测按键是否松开
pass
# 持续输出脉冲信号以实现360度转动
Step.freq(2000)
time.sleep_ms(10) # 控制转动速度
每按一次KEY键,42步进电机改变一下转动方向,同时LED随动。
简单记录一下,望大佬指正完善。