# Stepper motor closed loop control **Repository Path**: sjzer/Stepper-motor-closed-loop-control ## Basic Information - **Project Name**: Stepper motor closed loop control - **Description**: 基于 imx6ull 的步进电机闭环控制项目 - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-01-22 - **Last Updated**: 2025-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 步进电机闭环控制 ## 简介 · 基于 imx6ull 的步进电机闭环控制项目,含 Linux 步进驱动、qt界面测试 ## 软件架构 · 基于 arm Linux 架构的项目开发 · 基于 qt 的应用层开发 ## 项目思路 · 采用42步进电机的闭环控制方案 · 采用 TB67H450FNG ic 做电机驱动方案 · 一共控制 3 个双相电机,需要有 12(4 * 3)个引脚做 GPIO 功能,通过 TB67H450FNG 间接的控制各个电机的相电压 · 一共控制 3 个双相电机,需要有 3(1 * 3)个引脚做 PWM 功能,通过 TB67H450FNG 间接的控制各个电机的电流,从而间接控制电机的扭矩 · 采用 MT6816 磁反馈 ic 做电机角度的捕获方案 · MT6816 采用的是 4 线的 SPI 通讯的方案 · 采用一路 spi 总线通过片选引脚分别与 3 个 MT6816 进行通讯 ## 内核模块设计思路 · 电机相电压控制模块 · 主要实现底层的 ioctl 函数,用户层传入对应的命令控制电机正方运行至下一步 · 具体细节在目录 motor/README 中 · 电机电流控制模块 · 主要实现底层的 ioctl 函数,用户层传入对应的命令控制 pwm 的极性、周期以及占空比 · 具体细节在目录 power_pwm/README 中 · 磁编码 ic 通讯模块 · 主要使 spi 的内核驱动模块,获取到磁编码 ic 的数据后,进行数据的校验并处理数据后发送伴随磁角度的信号以及电机运行的下一步的时间伴随信号供用户层捕获 · 实现底层的 ioctl 函数,用户层传入对应的命令设置电机到下一步的间隔超时时间。若超时内核模块发送信号供用户层捕获 · 具体细节在目录 ecspi2/README 中 ## 引脚详情 · GPIO · GPIO2_IO2 · GPIO2_IO3 · GPIO2_IO6 · GPIO2_IO7 · GPIO1_IO24 · GPIO1_IO25 · GPIO1_IO26 · GPIO1_IO27 · GPIO4_IO25 · GPIO4_IO26 · GPIO4_IO27 · GPIO4_IO28 · PWM · PWM3 -> GPIO1_IO4 · PWM7 -> GPIO4_IO19 · PWM8 -> GPIO4_IO20 · ECSPI2 · MOSI -> GPIO4_IO23 · MISO -> GPIO4_IO24 · SCLK -> GPIO4_IO21 · SS0 -> GPIO4_IO22 · GPIO -> GPIO4_IO18 · GPIO -> GPIO4_IO17