【热情开源】MPQ6547A驱动+MA900磁编让我的桌面智能机器人丝滑转圈圈!情绪丰富,竟然还知道生气!(文末彩蛋)

之前在论他开源过关于如何用MPQ6547A驱动+MA900磁编控制无刷电机的详细教程,细心的网友也许能猜到,这只是女娲造机器人的第一步!

最近,我做了一个桌面机器人。

我没有写一行代码,就做出了智能程度非常高的桌面机器人。

先看效果:

它可以跟随人脸转动,转的非常丝滑,而且响应非常快。而且眼球还一直盯着你。

还能听懂我们的命令:向左转3圈,向右转10圈。

我们问:你都会干什么啊?

机器人答:……..

再问它一个问题,比如:飞机飞这么高为什么不会撞到星星?

机器人回答:…..。

而且在你触摸它的时候还知道生气:你礼貌吗。

接下来分享一下这个小机器人制作的全流程。
完整的视频大家可以点这里:(马上补视频!朋友们蹲一下)

整个项目我都采用了非常简单的开发方式,再加上 AI 的帮助,同时我还会把整个项目用到的所有程序分享出来,所以整体复刻难度并不高。整个系统主要由四部分组成:屏幕、摄像头、电机和主控。

先说屏幕,它用的是 ESP32-S3,刷的是小智 AI。官方已经做好了适配,下载源码直接烧录就能运行。

我们说:你好小智!

不过这时候,它还只是一个 AI 助手,并不是我想要的机器人。比如界面不是机器人表情,也不能控制硬件,例如”向左转三圈”这样的指令他不知道怎么做。

如果不借助Ai,即使是在小智Ai的基础上加这几个简单的功能,那也将是非常艰巨的任务,先不说小智的FreeRTOS实时操作系统,就单单是小智Ai如此庞大的代码量就让人望而却步了。

如果自己去改这些功能,如果你不精通就很难下手。但有了 AI,门槛都没有了。

我使用的是 VS Code,安装了 Codex 插件,相当于直接把 GPT版的小龙虾放进了编程软件里。

比如修改小智的界面,直接描述一下,就完全能得到想要的界面。

还有就是转几圈,我让它把我们所说的圈数信息通过串口发给主控Arduino R4,然后Arduino再控制转几圈。这样就实现了语音控制硬件的操作。

摄像头用的是 OpenMV N6,负责人脸识别,并把人脸坐标发送给 Arduino。它使用 MicroPython 开发,代码也基本都是让 GPT 或豆包直接生成。

最后,Arduino 根据人脸坐标控制电机转动,实现人脸跟踪。同时,摄像头也会把人脸坐标发送给屏幕,让机器人的眼球始终盯着人看

整个项目里,稍微有点难度的就是无刷电机控制。

为此,我专门设计了一块主控板,用 KiCad 画的 PCB。它主要负责接收屏幕和摄像头的信息,同时控制无刷电机。

主控用的是 Arduino Nano R4。它体积小,很容易集成到控制板上,而且自带完善的电源系统,输入 12V,就能直接输出 5V 和 3.3V,整个电路设计也简单很多。

电机控制采用的是开源的 SimpleFOC。借助它,我们可以很方便地控制无刷电机,比如转多少度、转几圈,基本都能实现。
后面的人脸追踪的程序是让Ai写的,因为要设计非常复杂的算法,这个需要花费大量的时间,因为硬件并不一定100%按照我们的意愿转,这个得需要大量的调试和反反复复的编程。

相比传统舵机,无刷电机没有减速齿轮,所以理论上能做到更安静、更顺滑。

但无刷电机也不是接上电就能顺滑转动。

不过,无刷电机并不是接上电就能转得很顺。除了驱动芯片控制三相电流,还需要角度传感器实时反馈电机的位置,这样才能实现精准控制。

所以,我选择了 MPS 的两颗核心芯片:MPQ6547A 无刷电机驱动芯片和 MA900 高精度磁角度传感器。

MPQ6547A 可以理解成电机的动力控制器。它内部集成了六个 MOSFET,能够直接驱动三相无刷电机,主控只需要输出 PWM 信号,它就能完成三相换相控制。虽然体积很小,但最高支持 32V、3A 输出,同时还集成了过流、过温、短路等保护功能。

有了这些保护之后,整个系统调试起来会更安心,也更可靠。

其实,仅靠 MPQ6547A,就已经能让无刷电机平稳地转起来。

但它还有一个问题:电机并不知道自己转到了哪里,也不知道离目标角度还有多远。

所以,想让机器人精准地跟随人脸,还需要第二个核心器件—MPS 的 MA900 磁角度传感器。

你可以把它理解成电机的“眼睛”。它通过检测电机轴上磁铁的位置,实时输出转子的绝对角度,分辨率高达 14 位,一圈可以细分成 16384 个位置,所以即使电机转动很小的角度,它也能准确感知。

有了角度反馈,SimpleFOC 就能不断修正电机输出,让机器人转得更稳、更准、更顺滑。

而且,MA900 即使在 10 万转每分钟的高速下,依然能够稳定输出角度数据。放在我这个桌面机器人上,多少有点“大材小用”,但也正因为性能足够强,所以整个转头动作才会这么细腻、自然。

最后就是外壳设计

别看现在这么简单,其实前前后后改了很多版。因为每次打印出来都有你不满意的地方,然后就尝试更加完美的一版。

就拿机器人的肚子来说吧,最开始我是把外壳一分为二,但中间的缝隙太明显;后来又把胳膊单独打印粘接在肚子上,虽然外观好了,但是就无法再拆。

最后我把胳膊和前壳设计成一体,并加入卡扣结构,既没有明显缝隙,又方便拆装。包括脑袋和底座,也都采用了卡扣设计,后续调试和维护都会方便很多。

当外壳组装好之后,我发现了一个致命的缺陷。屏幕和摄像头都需要和主控板接线通讯,我起初想图省事,直接把线材从电机中空位置穿线走线。可实际使用才发现,只要顶部壳体转动,线缆就会不断缠绕,根本没法正常工作。

此时就只能限定电机的角度了,但这样和舵机就没什么区别了,那我费这么大力气做这个无刷电机的意义何在。
就在我一筹莫展、以为项目要卡在这一步时,通过Ai了解到滑环这个种东西。它可以在旋转状态下稳定传导信号与电力,抱着试试看的心态,我买了最小的滑环,令我没有想到的是这个滑环可以和我的电机无缝连接,电机是中空的,而这个滑环刚刚好能通过,而且高度也完全一致,就像专门为这个项目准备的一样。
如果没有这个滑环我的项目真就难产了。

做完这个桌面机器人,我最大的感受就是:AI 真的把创作门槛降低了很多。以前很多需要写大量代码才能完成的功能,现在借助 AI,一个人也能完成。

还有就是,3D 打印虽然很折腾,但看着外壳一点点变得更精致、更好拆装、更像一个真正的产品,那种成就感真的很强。

当然,这个项目能够做得这么顺利,也离不开 MPS 的 MA900 磁角度传感器。它提供了稳定、精准的角度反馈,让整个机器人在转动和跟随时更加自然、顺滑,也让我少踩了不少坑。

接下来,进入疯狂下载文件环节,希望我的项目对您有帮助。

整个项目的连接图,关于具体的原理图、PCB工程和外壳还有程序和用到的数据手册都在附件里
面,

请自行下载。
1.PCB.zip (78.4 MB)
2.程序.zip (61.9 MB)
3.外壳.zip (16.5 MB)
4.文档.zip (31.0 MB)

接下来还有些细节提示,想复刻交作业的朋友可以看看:


注意,中间板子之间的连线就是通过导电滑环自带的连线。
同款导电滑环的购买链接:
【淘宝】7天无理由退货 https://e.tb.cn/h.RyVeptTc3ZcbCnz?tk=Bi8ogN1x6x7 CZ193 「微型胶囊滑环小型帽式电滑环360电旋转电接头可视锚鱼机器人配件」
点击链接直接打开 或者 淘宝搜索直接打开。

无刷电机是在淘宝店铺M创动工坊买的,型号是2804!
注意,导电滑环和电机之间虽然严丝合缝,为了使用的更安全一些,最好是在电机的导电滑环之间

固定一下,可以在导电滑环上缠一些胶带,或者用胶水粘上。

驱动芯片和磁角度传感器

用到的两颗芯片分别为MPS的无刷电机驱动芯片MPQ6547A,和高精度此角度传感器MA900A。

电机驱动MPQ6547A的数据手册:https://www.monolithicpower.cn/cn/mpq6547a-aec1.html

磁角度传感器MA900的数据手:https://www.monolithicpower.cn/cn/products/sensors/ma900.html

这两个芯片是真的非常省心,比如这种无刷电机在调试当中非常容易卡顿、死机、跑飞,瞬时间发热量巨大,但是这个电机驱动内置了过温、过压、过流等等的一系列保护,即使面对这种恶劣的状况,电机驱动芯片依旧能保证这个系统的安全,这样省心太多了,如果是自己用Mos管搭建电机驱动,不知道就烧了多少次了。

还有就是高精度磁传感器MA900A,给我的感觉就是非常稳,精度非常高,由于此项目是追踪人脸,所以就不能让其在转动的时候出错,一旦来一个错误数据,人脸检测就不可能顺滑,正好这个角度传感器内置了CRC校验,这样就能保证所接收到的数据几乎100%可靠,真的不需要我们在这个磁角度传感器上花费太多精力。

屏幕

屏幕的型号是微雪的1.46寸LCD触控屏,这个在淘宝上直接就就能搜索到。

屏幕默认情况下,如果通过电池口供电是需要长按开关的,我为了让它上电之后就能直接点亮屏幕,把它的PWR开关短接了,并且把它的程序也给改了,让这个按键对应的引脚不执行,这样只要给它上电它就能直接工作。

当然你也可以保留这个开关机功能,屏幕的原理图如下,到时候需要在外壳上留一个开关口,然后还需要改一下相应的程序。 按键引脚对应的是Key BAT,即引脚IO6,知道了这个就可以直接让AI修改程序

再来看一下它们是怎么通讯的。

主控板上只留了一个RX串口引脚,但是他需要接受两个串口信息,其中一个是摄像头N6识别到的人脸坐标信息,来控制电机跟随人脸;

除此之外,还需要接收小智屏幕的命令信息,比如让电机转几圈;为此,我让屏幕先把信息发给N6,因为N6上有足够多的串口引脚,然后把命令和人脸信息一并发到主控。

主控板

主控板上用的是官方的Arduino R4 Nano,如果是第三方的板子上的电源就不是官方所采用的电源芯片了,官方的这个芯片可以提供2A的电流,这样同时给摄像头和屏幕供电没有任何问题,他俩一共才消耗300毫安的电流。

控制电机的3个引脚需要带有PWM,本项目原来用的是567引脚来控制,但时候后来发现7号引脚没有PWM功能,不过这个也很好解决我把带有PWM功能的D9接到了D7,然后把D7悬空,这样虽然我们接的是D7引脚,但实际上是D9引脚在发挥作用,这个一定得注意。

摄像头

我购买的是OpenMV官方的N6,之前买的OpenMV H7买的是非官方的,但是便宜很多(100+),在使用上完全一样,无奈这个芯片的性能有限,N6现在只有官方版本,比较贵,如果你有替代方案也可以选,因为毕竟是DIY,能省则省,还有就是一定要选择超广角镜头,常规镜头丢脸太严重,稍微移动一下位置就丢脸了。

有一个办法可以让它不丢脸,那就是提高电机的响应速度,但是这样电机转的就比较生硬,不是那么顺滑,所以一定要选择超广角镜头,官方有配套的。

关于外壳的组装,直接打开外壳文件看看就知道是怎么组装的了,这个没什么好说的。

还有就是外壳的打印,我用的是拓竹的X2D,耗材是拓竹的PLA Basic,精度是0.02mm。

外壳的打印,可能谁的打印条件和谁的也不一样,难免打印出来会有些许误差,如果相差一点点,我一般的做法是用挫给打磨一下,如果你想要更好的效果,可以在这个基础上修改一下数据。

关于它们的更详细的信息,还有其它的本项目用到的直接下载附件吧。

最后再说一下关于本项目用到的软件:

3D建模Shapr 3D。(我导出的是STEP格式的文件,只要是支持这个格式的软件都可以)

电路板绘制:Kicad。

主控Arduino编程:Arduino IDE。

微雪屏幕:VScode。

摄像头OpenMV N6:OpenMV IDE。

最后关于本帖子如果你遇到任何问题,请第一时间向我反馈,在本帖子下方留言就可以。
我将和MPS论坛一起揪出20名参与讨论的幸运观众,送上超实用礼物!:wrapped_gift: (讨论有礼活动截止时间: 2026年8月2日)

品胜三合一充电器 (10个)
键盘吸尘器(10个)