这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 2025let'sdo第4期基于单片机的直流电机控制过程帖

共1条 1/1 1 跳转至

2025let'sdo第4期基于单片机的直流电机控制过程帖

菜鸟
2026-01-22 23:06:30     打赏

    从上次发布开箱帖,到今天。过去了一个月的时间了。我在这一个月的时间在做什么呢?在完成自己的工作之外,熟悉全新的开发工作。平时在厂里,我会编一些机械手的自动化程序,那些主要是逻辑上的控制,和一些握手信号。转到单片机来,就是另一个思维过程。之前也做过单片机的编程,用的编译器是ADS,KEIL ,MPLAB 。在做每一个单片机开发之前,首先要面临的一个问题,就是用什么样的编译器,怎么获得例程,例程会把工程中用到的配置,初始化,工程结构都给提供出来。当然,如果通过阅读编译器帮助手册,阅读芯片数据手册,一点点的自己动手写的话,每天进步一点点,相信多花些时间,自己也能写出来。从脚踏实地说,是该这样去写,但无疑要花费很多的时间。时间太长的话,会消耗掉我们身上的耐性。所以先搞个例程,在例程的基础上,实现我们的逻辑,是做工程的首选。等我们用的功能,慢慢地都实现了,再去慢慢探索底层的逻辑,会更容易一些。

       为了做这个板子,我首先在得捷电子网上根据提供的资料链接,下载了板子的原理图,电机驱动板的芯片资料,熟悉板子上有多少跳线,我该不该短接,都是什么用法。有多少外接口。怎么供电,怎么下载,我发现板子竟然集成了下载口,有一个单片机专门管这事,还能升级驱动。确实这样很方便,没有下载调试器的就可以直接上手了。并且还虚拟了一个串口,方便调试时传送信息。确实挺方便。

       看了电机驱动板后,我就思考,我该用什么样的电机来进行实验,用普通的直流电机还是步进电机,用多大电压的电机,多大功率的,最终我选了两个电机 ,一个5伏供电就可以,方便我在不清楚程序是否正确的情况下进行调试。还有一个12伏供电的,在5伏的能转动后,再用这个。提高安全性。这两个我都选的步进电机,都是双相步进电机。

       之前我做过STM的芯片,做过LPC 芯片,知道所有的端口要进行使能,配置,有些还要开中断,还要注意对应的特殊功能寄存器的赋值。要想搞清楚这些,翻阅芯片的数据手册是不可缺少的。我一看数据手册1600多页,哎呀,这要看到啥时候,怎么办,只能先找要用到的看。先搞个例程下来吧。我下载了MCUXPRESSO IDE,下载了套件例程,从中选了一个LED反转的例程,尝试修改。

      TB6612芯片要想控制电机,单片机最少也要有四个管脚控制电机的转向,其余几个可以暂时上拉到高电平。所以当务之急,是怎么配置这四个管脚,用那四个管脚。我看了下例程,依葫芦画瓢,做了以下管脚的配置。

#define PWM_AIN2_ON() \
GPIO_PinWrite(BOARD_INITPINS_PWM_B0_GPIO,BOARD_INITPINS_PWM_B0_GPIO_PIN,LOGIC_LED_ON)
#define PWM_AIN2_OFF() \
GPIO_PinWrite(BOARD_INITPINS_PWM_B0_GPIO,BOARD_INITPINS_PWM_B0_GPIO_PIN,LOGIC_LED_OFF)
#define PWM_AIN1_ON() \
GPIO_PinWrite(BOARD_INITPINS_PWM_B1_GPIO,BOARD_INITPINS_PWM_B1_GPIO_PIN,LOGIC_LED_ON)
#define PWM_AIN1_OFF() \
GPIO_PinWrite(BOARD_INITPINS_PWM_B1_GPIO,BOARD_INITPINS_PWM_B1_GPIO_PIN,LOGIC_LED_OFF)
#define PWM_BIN1_ON() \
GPIO_PinWrite(BOARD_INITPINS_PWM_A1_GPIO,BOARD_INITPINS_PWM_A1_GPIO_PIN,LOGIC_LED_ON)
#define PWM_BIN1_OFF() \
GPIO_PinWrite(BOARD_INITPINS_PWM_A1_GPIO,BOARD_INITPINS_PWM_A1_GPIO_PIN,LOGIC_LED_OFF)
#define PWM_BIN2_ON() \
GPIO_PinWrite(BOARD_INITPINS_PWM_A0_GPIO,BOARD_INITPINS_PWM_A0_GPIO_PIN,LOGIC_LED_ON)
#define PWM_BIN2_OFF() \
GPIO_PinWrite(BOARD_INITPINS_PWM_A0_GPIO,BOARD_INITPINS_PWM_A0_GPIO_PIN,LOGIC_LED_OFF)

    我定义了四个管脚的开关,不结合上下文,这里确实不容易看懂,看着容易犯困,我在看到一些不容易懂的东西的时候,是想困的。如果你也有一块这样的板子,你能看到这些例程,那看起来还好一点,也不是复制过去就能用,因为还有一些是在芯片管脚配置的时候自动根据你起的名字,自动定义的。所以,有些东西,只能自己去经历,你才能明白是怎么回事。只听别人说,是怎么也体会不真切的。

       我对步进电机的转动控制,也不是很了解。我查了一些资料,现在查资料,确实比以前更简单一些。以前根据关键词,我们要不断调整,也不一定能找到自己想找的内容。现在有了类似DEEPSEEK这样的智能搜索,确实能比较好的搜出我们想知道的。单片机控制双极步进电机是一个经典项目,核心在于理解其驱动逻辑,并使用单片机生成正确的时序脉冲序列来控制H桥电路。

      

步序A相B相合成磁场方向(相对于水平轴)转子动作






1A+ (→)B+ (↑)↗ (45°)转子被吸引到45度位置
2A- (←)B+ (↑)↖ (135°)磁场旋转90度,转子跟随到135度位置
3A- (←)B- (↓)↙ (225°)磁场再转90度,转子到225度位置
4A+ (→)B- (↓)↘ (315°)磁场再转90度,转子到315度位置

       搜索了怎么区分电机四根线的正负极,两个GND接到一块,会不会有风险。这些问题,都排出了就到了实现转动的时候。 allowfullscreen="true">

      


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]