Funpack3-5 基于BeagleBone® Black的步进电机控制
该项目使用了BeagleBone Black开发板,实现了步进电机调速控制系统的设计,它的主要功能为:本项目实现的功能是使用 BeagleBone Black硬件接口功能实现步进电机控制,如 调速、正反转等功能。。
标签
嵌入式系统
Funpack活动
ADC
TI 公司 AM3358 处理器
小屁孩06
更新2025-01-13
52

一、项目介绍

本项目基于Funpack第三季第五期活动完成,硬禾学堂联合DigiKey为电子爱好者提供实践机会的共享平台。本项目使用的硬件平台是BeagleBone Black开发板一款面向开发人员和业余爱好者的低成本、高扩展性且有社区支持的开发平台。处理器选用了TI AM3358芯片,基于ARM Cortex-A8架构。该开发板配备了丰富的扩展资源,包括HDMI接口、以太网、SD卡槽,并预留了足够多的管脚用于AD转换、LCD显示屏、PWM输出、I2C、串口等。板卡可以运行完整的Linux系统,且支持多种编程语言。


本项目实现的功能是使用 BeagleBone Black硬件接口功能实现步进电机控制,如 调速、正反转等功能。


二、设计思路与项目整体框架

为了实现通过旋钮控制步进电机旋转速度,使用BBB开发板的ADC功能,基于"AIN0"模拟输入功能读取模拟电压值,根据旋转电阻器基于3.3V供电分得的电压值大小来控制步进电机控制输出时间间隔,从而控步进电梯转速。使用P8_14端口的外部中断功能进行上升沿中断注册,经过电阻连接按键上拉到3.3V,捕获按键输入进行电机旋转方向控制。


按键检测:使用P8_14端口作为按键输入,检测按键状态;
ADC输入:使用P9_39作为ADC输入IO,根据旋转变阻器分得ADC采样电压进行步进等待时延控制,进而控制电机转速;
步进电机驱动:采用达林顿管通过四步驱动控制输出,本项目使用"P8_9", "P8_10", "P8_11", "P8_12"四个GPIO端口;
逻辑控制:ADC采样和电机驱动控制必须同步进行,因此采用两个独立线程进行相关任务执行,否则ADC采样时延会对步进等待时延产生严重干扰影响。


通过上述设计,可以实现通过按键控制步进电机转动方向,通过旋转变组器实驱步进电机转速调节等功能,项目整体框架如下图所示:

三、硬件介绍

BeagleBone Black 是一款面向开发人员和业余爱好者的低成本、高扩展性、社区支持的开发平台。板卡处理器选用的是 TI 公司 AM3358 芯片,处理器集成了高达 1GHz 的 ARM Cortex-A8 内核,具有强大的处理能力并提供了丰富的外设接口。

特性

  • 处理器:TI Sitara 处理器 AM3358BZCZ100

- 1GHz ARM Cortex-A8 处理器

- GX 3D 图形引擎

- NEON 浮点加速器

- 2 x 32位 200MHz 可编程实时单元 (PRU)

  • 内存:

- SDRAM: 512MB DDR3L 800MHz

- 板载闪存:4GB,8位嵌入式 MMC (eMMC)

  • 电源管理:使用 TPS65217C PMIC 和单独的 LDO 为系统供电
  • 调试支持:可选板载 20 引脚 CTIJTAG、串行接头
  • 电源:

- miniUSB 接口或直流插孔

- 通过扩展头提供 5VDC 外部电源

  • 接口:

- 高速 USB 2.0 客户端端口:通过 miniUSB 访问 USBO,客户端模式

- 高速 USB 2.0 主机端口:访问 USB1,A 型插座,500mA L S/FS/HS

- 串行端口:UARTO 通过 6 针 3.3V TTL 接头访问。接头已填充

- 10/100M 以太网接口 (RJ45)

  • 用户输入/输出:

- 复位按钮

- 启动按钮

- 电源按钮

- LED 电源指示灯

- 4 个用户可配置的 LED

  • 视频/音频接口:

- HDMI D 型接口


四、功能实现及相关代码

1. 环境配置与连接:

要通过SSH登录系统以执行命令,最简便的方式是使用GateOne SSH。您只需在浏览器窗口中输入以下内容即可轻松访问GateOne:http://beaglebone.local, 页面加载成功后,即点击新建tab建立一个ssh连接,以通过命令行对板卡进行命令行控制:

可以通过克隆git仓库来安装Adafruit_BBIO。以下命令可以帮助您完成安装(注意使用python3进行安装):

2. ADC功能:

ADC输入通过旋钮变组器加上电阻分压实现,电路图如下图所示:

根据官方文档对beaglebone Black板卡硬件介绍,P9_39端口为AIN0功能,这里直接初始化ADC模块功能后直接调用ADC语取函数读取调节得到的电压模拟量,更改电机速度控制变量:

3. 外部中断步进电机转向控制功能:

外部中断引脚 P8_14端口初始化后,监听外部上升沿中断,开关电路通过电阻连接到3.3V引脚,如下图所示:

4. 步进电机旋转控制功能:

本项目使用的步进电机是28BYJ-48是一种常见的单极性五线四相减速步进电机,步距角5.625度减速比1/64,因此演示过程过种中电机转速较慢,电机如下图所示:

四拍驱动:这是最简单的步进电机驱动方式。这种方式,电机在每个瞬间只有一个线圈导通,按顺序给相应引脚拉高(1)拉低(0)。 一个拉高,其他三个拉低。

五线四相步进电机驱动模块ULN20003驱动板,该模块使用ULN2003大功率达林顿芯片驱动步进电机。A、B、C、D发光二极管指示四相步进电机工作状态,配有步进电机的标准接口,使用时可直接插拔。


由于28BYJ-48步进电机消耗大量功率,因此无法直接BBB开发板直接驱动控制。为了控制电机,需要使用ULN2003等驱动IC;因此,该电机通常配备基于 ULN2003 的驱动板。

ULN2003是一个单片高电压(最高可达50V)、高电流(单个额定输出500mA)的达林顿晶体管阵列集成电路。 它是由7对NPN达林顿晶体管组成的,它的高电压输出特性和阴极钳位二极管可以转换感应负载。每个晶体管对可驱动高达 500mA 和 50V 的负载,达林顿管并联可以承受更大的电流。

ULN2003可以作为继电器驱动器,字锤驱动器、灯驱动器、显示驱动器(LED气体放电),线路驱动器和逻辑缓冲器。ULN2003的每一对达林顿晶体管的基极都有一个2.7k的串联电阻,可以直接和TTL或者5V的CMOS装置连接。它实际上就是一个功率放大器,输出端具有较大的驱动能力(电流较大),电路如下所示:


电机驱动代码即实现最简单的四拍驱动即可,一个拉高,其他三个拉低,代码实现如下所示:

5. 总体代码实现:

初始化GPIO,定义"P8_9", "P8_10", "P8_11", "P8_12"为输入功能引脚进行初始化工作,并同时初始化ADC模型和"P8_14"引脚外部中断监听,相关代码如下图所示:

初始化GPIO后,总体定义两个执行线程任务,一个是ADC读取模似输入电压,更新全局时延变量,另一个电机运行任务执行,改变电机转向与速度,在PYTHON主进程中执行两个任务线程,代码如下图所示:

五、功能演示及注意事项

通过ADC读取模似电压输入,实现步进等待时延的调节,进而实现步进电机的调速,通过狗板GPIO引脚外部中断功能上升沿触发,从而改变电机的转动方向,基本功能实现如下图所示,由于静态图片无法显示动态过程详见视频演示:

注意:ADC模拟电压输入不得高于1.8V,否则有损坏开发板风险,ADC读取过程与步进电机控制需要多线程执行,否则影响速度时延控制。


六、 活动心得与体会

在参与FuncPack3-5期活动的过程中,我深刻体会到了BeagleBone Black开发板的强大功能和灵活性。通过使用其丰富的扩展资源,如HDMI接口、以太网、SD卡槽等,结合TI AM3358芯片的高性能ARM Cortex-A8架构,我们成功实现了步进电机的精确控制,包括调速和正反转等功能。项目过程中,我学习到如何利用ADC功能读取模拟电压值来控制电机速度,以及外部中断功能实现电机旋转方向的控制。通过多线程编程,确保了ADC采样和电机驱动控制的同步进行,有效避免了时延干扰的问题。这次活动不仅提升了我的硬件操作技能,也加深了我对嵌入式系统编程的理解。


七、引用:

1. https://blog.csdn.net/weixin_44887565/article/details/142656430

2. https://docs.beagle.cc/boards/beaglebone/black/ch07.html

3. https://www.eetree.cn/project/detail/3383


附件下载
step_motor.py
代码:
BBB Python编程手册.pdf
文档手册:
团队介绍
本人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号