wordpress 免插件实现,张家港网站推广优化,做老师讲课视频的教育网站,手机上能安装微信网页版对于BPI-CanMV-K230D-Zero开发板来讲#xff0c;其主要的应用方向是视觉识别处理。而在视觉处理方面#xff0c;除了AI方面的处理#xff0c;也离不开辅助工具的配合#xff0c;即常言所说红花还需绿叶配。舵机云台就是这样的绿叶#xff0c;它可以帮助摄像头进行大范围的…对于BPI-CanMV-K230D-Zero开发板来讲其主要的应用方向是视觉识别处理。而在视觉处理方面除了AI方面的处理也离不开辅助工具的配合即常言所说红花还需绿叶配。舵机云台就是这样的绿叶它可以帮助摄像头进行大范围的摆动从而运行地扩展摄像头的视野使处理的对象更多样也更全面。1. 舵机云台舵机云台是一种由舵机和相应的机械结构所组成见图1所示。由于它配有2个舵机故可对水平方向和垂直方向的两个维度进行转动。图1 舵机云台对于舵机来讲它是一种位置伺服性驱动器主要适用于需要对角度进行调节的变化环境。其工作原理是控制信号由接收机的输入通道进入信号调制芯片从而获得直流偏置电压。因其内部有一个基准电路可产生周期为20ms宽度为1.5ms的基准信号。经直流偏置电压与电位器的电位比较从而获得电压差的输出。在该电压差的正负输出到达电机驱动芯片后就决定了电机的正反转。在电机转速一定时通过级联减速齿轮可带动电位器旋转使得电压差为0来使电机停止转动而获得相应的摆角。对于不同的舵机来讲有着不同的角度范围如90、180及360度。对于180度的舵机其导通时间与摆角的关系为0.5ms----------------0度1ms -----------------45度1.5ms----------------90度2ms -----------------135度2.5ms ---------------180度由于舵机的工作周期为20ms换算成频率来说就50Hz。通过对PWM占空比的调节就可产生相应的摆角。2. PWM调节对于PWM脉冲来讲它是由BPI-CanMV-K230D-Zero开发板来提供其程序的基本框架为复制from machine import PWMfrom machine import FPIOA# 实例化FPIOAfpioa FPIOA()# 设置PIN60为PWM通道0fpioa.set_function(60, fpioa.PWM0)# 实例化PWM通道0频率为50Hz占空比可调x: 2 ~ 13默认使能输出x2pwm0 PWM(0, 50, x, enable True)# 关闭通道0输出pwm0.enable(0)# 调整通道0频率为50Hzpwm0.freq(50)# 调整通道0占空比为40%pwm0.duty(40)# 打开通道0输出在不同的占空比下舵机的摆角会处于不同的状态。3. 五向导航按键模块为在良好的随动情况下控制云台的摆动可采用五向导航按键模块来进行人机交互即通过左右键来控制水平方向的摆动控制而上下键则控制垂直方向的摆动控制中心键则是让云台复位到中心位置。在摆动控制过程中每触动一次按键就会发出一个沿转动方向的摆角移动脉冲。向导航按键模块的外观如图2所示相应引脚的作用见图3所示。图2 五向导航按键模块图3引脚作用图4 器件连接在BPI-CanMV-K230D-Zero开发板上实现云台的随动性操控。1按键状态检测五向导航按键模块的引脚连接关系为LEF------GPIO3RHT------GPIO4UP ------GPIO5DWN------GPIO6MID------GPIO2将所用引脚设置为输入模式的语句为复制fpioa.set_function(3, FPIOA.GPIO3)Pin1 Pin(3,Pin.IN, pullPin.PULL_UP, drive7) //Lfpioa.set_function(4, FPIOA.GPIO4)Pin2 Pin(4,Pin.IN, pullPin.PULL_UP, drive7) //Rfpioa.set_function(5, FPIOA.GPIO5)Pin3 Pin(5,Pin.IN, pullPin.PULL_UP, drive7) //Ufpioa.set_function(6, FPIOA.GPIO6)Pin4 Pin(6,Pin.IN, pullPin.PULL_UP, drive7) //Dfpioa.set_function(2, FPIOA.GPIO2)Pin4 Pin(2,Pin.IN, pullPin.PULL_UP, drive7) //Mprint(pin1.value())2占空比调节与舵机控制实现键控舵机运动的程序为复制from machine import Pinfrom machine import FPIOAfrom machine import PWMimport time# 实例化FPIOAfpioa FPIOA()# 设置Pin2为GPIO2# 设置Pin6为GPIO6fpioa.set_function(3, FPIOA.GPIO3)fpioa.set_function(4, FPIOA.GPIO4)fpioa.set_function(5, FPIOA.GPIO5)fpioa.set_function(6, FPIOA.GPIO6)fpioa.set_function(2, FPIOA.GPIO2)# 实例化Pin2~Pin6为输入key1 Pin(3, Pin.IN, pullPin.PULL_UP, drive7)key2 Pin(4, Pin.IN, pullPin.PULL_UP, drive7)key3 Pin(5, Pin.IN, pullPin.PULL_UP, drive7)key4 Pin(6, Pin.IN, pullPin.PULL_UP, drive7)key5 Pin(2, Pin.IN, pullPin.PULL_UP, drive7)H0V0fpioa FPIOA()# 设置PIN60为PWM通道0fpioa.set_function(60, fpioa.PWM0)# 设置PIN61为PWM通道1fpioa.set_function(61, fpioa.PWM1)# 实例化PWM通道0频率为50Hz占空比可调x: 2 ~ 13默认使能输出x2pwm0 PWM(0, 50, x, enable True)pwm1 PWM(1, 50, x, enable True)def mov_h(n) :# 关闭通道0输出pwm0.enable(0)# 调整通道0占空比为n%pwm0.duty(n)# 打开通道0输出pwm0.enable(1)def mov_v(m) :# 关闭通道1输出pwm1.enable(0)# 调整通道0占空比为m%pwm1.duty(m)# 打开通道0输出pwm1.enable(1)while True:if key1.value()0 :print(k1,key1.value())if H13 :HH1print(H)mov_h(H)if key2.value()0 :print(k2,key2.value())if H3 :HH-1print(H)mov_h(H)if key3.value()0 :print(k3,key3.value())if V13 :VV1print(V)mov_v(V)if key4.value()0 :print(k4,key4.value())if V3 :VV-1print(V)mov_v(V)if key5.value()0 :print(k5,key5.value())H8V8print(H)print(V)mov_h(H)mov_v(V)time.sleep(0.5)经测试键控操作下其输出信息如图5所示说明按键的判别处理是正确的。图5 输出信息图6 运行状态该云台控制程序除适用于云台控制外也适用于基于舵机驱动的各种机械臂、麦克纳姆轮智能车方向控制和调速等其用途是非常广泛的。演示视频。---------------------作者jinglixixi链接https://bbs.21ic.com/icview-3466666-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。