恒力机构控制器

直流电机8874驱动

在这里插入图片描述

在这里插入图片描述
各引脚说明:

  • EN:使能引脚。接GPIO的输出

  • PH:PWM信号引脚,当占空比>50%时转动一个方向,小于50%时转动另一个方向,等于50%时不转。接TIM的PWM输出

  • SLEEP:为低电平时进入低功耗模式。接GPIO的输出

  • FAULT:故障指示灯输出。在故障状况期间下拉为低电平。连接一个外部上拉电阻器以执行开漏操作。接GPIO的输入

  • VREF:外部基准电压输入至所设置的内部电流调节极限。接单片机的模拟输出,输出值经过计算得出
    在这里插入图片描述

  • IPROPI:电流感测。接控制器的ADC口。接单片机的的ADC输入

关于VREF和IPROPI引脚:这个属于比较高级的功能,如果用不到的话,最后定型可以不接单片机,直接用电阻固定下来。不用的话,VREF你直接接3.3V IPROPI悬空就行

用的是PH/EN控制模式,EN作为使能IO口,PH接控制器的PWM输出,OUT1和OUT2分别接电机的两端
在这里插入图片描述
注意:

直流电机GA24-370,24V

淘宝链接
电机型号为:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步进电机42STH49-2004ASC

步距角:1.8°
在这里插入图片描述

步进电机HR4988驱动

在这里插入图片描述
在这里插入图片描述
引脚说明:

  • EN:。当其为逻辑高电平时,输出关断。当其为逻辑低电平时,内部控制使能起作用。
  • SLEEP:当 SLEEP 引脚输入为低电平时,器件将进入休眠模式,从而大大降低器件空闲的功耗;当其输入翻转为高电平时,系统恢复到正常的操作状态并将器件的输出预置到 HOME 状态,为了内部电荷泵恢复稳定工作,在 SLEEP 恢复高电平并延时1ms 后 STEP 信号才能起作用。
  • STEP:STEP 信号上升沿触发有效,通过TRANSLATOR 控制,每个 STEP 上升沿触发使得电机有一个步进的变化。TRANSLATOR 控制 DAC 的输入和流过线圈的电流方向;每一步进的电流大小和转动角度由MS1、 MS2 和 MS3 输入逻辑电平控制。
  • DIR:DIR 输入控制马达的转动方向,在 STEP 信号上升沿触发到来之前,任何 DIR上的变动都对电路不产生影响;
  • KF:此为归零引脚,接单片机的IO输入引脚。
    在这里插入图片描述
    机械接近开关接到p6
    在这里插入图片描述
    按照图示接法即可,开关断开的时候,KF是高电平;开关闭合的时候,KF是低电平,以此来判断是否归零。

单片机引脚分配

测试采用STM32F103ZET6单片机,共需单片机引脚如下:

  • 直流电机1:

    1. EN使能——IO输出 PA12
    2. PH——PWM输出 PA0
    3. SLEEP——IO输出 PA11
    4. FAULT报警——IO输入 PA8 上拉
    5. VREF——3.3V电源输出(若要测试可根据计算调整,使用DAC) PA4
    6. IPROPI——模拟输入ADC PA1
    7. 编码器线1——外部中断 PC8
    8. 编码器线2——外部中断 PC9
      (一般DAC远比PWM昂贵,PWM速度慢,但是线性好。)
  • 直流电机2:

    1. EN使能——IO输出
    2. SLEEP——IO输出
    3. PH——PWM输出
    4. FAULT报警——IO输入
    5. VREF——3.3V电源输出(若要测试可根据计算调整,使用DAC)
    6. IPROPI——模拟输入ADC
    7. 编码器线1——IO输入
    8. 编码器线2——IO输入
  • 步进电机:

    1. EN使能——IO输出 PG6
    2. SLEEP——IO输出 PG5
    3. STEP——IO输出 PG4
    4. DIR——IO输出 PG3
    5. FK——IO输入 PG2
  • 串口通讯 异步通讯

    1. 发送引脚——TX PA9
    2. 接收引脚——RX PA10
  • 其他

    1. 运行指示灯——PA8 TIM1_CH1 1s翻转一次
    2. LED运行指示灯 PB5
    3. 测试电位计ADC——PA2 ADC1_IN2

注意:步进电机刹车连线

测试板注意事项

  1. 拿板子拿侧面,目前还没有喷三防,容易短路
  2. 建议调一下步进细分,转动会更顺滑
  3. 开关电源调整24V,先把开关电源的正极线拿下来,先把开关电源和测试板连接好,等开关电源稳定后再接上正极。

阶段性总结

启明云端旋钮屏部分

因硬件需在5月份做好,并且较为复杂的直流电机控制部分从方案中取消,现在对这一个月的学习进行总结。
首先学习了FreeRtos嵌入式操作系统的基本工作原理,对队列,任务机制进行了系统了解。
启明云端的旋钮屏开发:
开发流程如下:

  1. 在电脑上安装ESP-IDF4.4集成开发环境,建议安装官网的离线安装包,因为旋钮屏的SDK是依赖于IDF的版本的,所以如果不兼容的话,编译不能通过。
  2. 安装VSCode,并且在里面安装Expressif插件。
    视频安装教程
    在这里插入图片描述
  3. 用VSCode的原因:代码编辑非常方便,如果使用乐鑫的开发板的话,可以直接安装这个就可以实现编译和烧录,省去第一步。但是对于启明云端的旋钮屏来说,它的SDK里的对应这款旋钮屏的例程,用VSCode烧录总会出现开发板不匹配的问题,目前还没解决,所以本人采用的是ESP-IDF加VSCode的方式,用ESP-IDF4.4命令行进行编译和烧录,用VSCode进行代码编辑。在编译之前先点击SDK文件夹里的load_windows.bat文件,选择旋钮屏的型号,然后再idf.py build 、 idf.py flash
    在这里插入图片描述
  4. 旋钮屏开发是采用8ms+ESP32-s2的方式,8ms是一个图形化的UI开发平台,其本质也就是其生成的代码还是使用的LVGL图形库,LVGL全称LittleVGL,是一个轻量化的,开源的,用于嵌入式GUI设计的图形库,8ms平台下载的源码中将qmsd_ui替换掉SDK里的相应开发板的对应部分。这里需要注意:在8ms平台中,可以用blockly积木拼接的方式编写控件实现逻辑,但是这些逻辑的触发方式都是针对触摸屏的,对于这款无触摸方式的旋钮屏+按键的方式来说,这个blockly的逻辑是不能直接用的,都要结合旋钮和按键重新编写逻辑,blockly生成的代码存放在qmsd_internal_ui_cb.c文件中,其中有各个控件编好的回调函数,只需要调用即可触发编写好的对应逻辑。
  • 各个控件相应的触发事件用旋钮+按钮编写的部分在main->qmsd_control.c的qmsd_control_init()函数中,此函数的功能为发送事件;然后事件所对应的逻辑实现在main.c的__qmsd_got_encoder_func函数里面写,此函数的功能为接收事件,并进行处理。
  • 首先判断处于那一页,然后判断是什么事件,然后再写触发的逻辑。这里我将旋钮编码器一周分为6个事件,结合每个页面的控件数量,对每个控件进行事件分配, scr = lv_scr_act()能获得当前位于哪个界面。通过改变控件的颜色来表示进入选中状态。

目前尚未解决的问题:编码器的读取函数有问题,数据总是飘,需要自己重新写
此问题已解决,原因为:再找到源码后,编译时,需要fullclean后再build,这样才会生效

STM32CubeMX

本次STM32开发用的STM32CubeMX软件结合keil5,熟练CubeMX基本操作,并使用了GPIO、定时器中断来转换LED运行灯、配置时钟、DAC模拟输出、ADC的DMA模式读取电位计的模拟输入、外部中断来获取编码器脉冲、printf重写、串口通讯。

目前尚未解决的问题:直流电机的正反转不对称问题,以及和旋钮屏实现串口通讯。

附录:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值