- 2025-04-13
-
回复了主题帖:
【STM32N6570-DK评测】03 快速实现AI视觉类应用
Jacktang 发表于 2025-4-13 15:06
本帖慢慢的经验干货之谈,
从用双向的USB-C 线将开发板从 STLINK-V3EC USB-C 端口连接到电脑,连接简单 ...
谢谢大佬夸奖
单片机里面我比较喜欢用ST的,资料、开发工具、配套服务都很好。尤其是英文论坛,回复速度和准确率真的很赞。
- 2025-04-12
-
发表了主题帖:
【STM32N6570-DK评测】03 快速实现AI视觉类应用
[localvideo]754594fd2d2dcae325a63fbd3bc09b1c[/localvideo]
上一贴介绍了测试STM32N6570-DK开发板在各种应用下的功耗情况,本帖进行第一个选做任务:使用 STM32N6 快速实现一个AI视觉类应用。
按照题目是快速实现一个应用,那我就选用stm32ai-modelzoo里面训练好的模型进行设计。这个官方提供的模型库涉及的种类较多,覆盖常规的大部分应用,使用起来还是很方便的。我本次实验规划如下:
1、搭建模型开发部署环境,安装相关软件和依赖库。
2、部署flowers分类模型到开发板。
3、搭建电路,修改代码,实现用语音播报识别结果。
一、环境安装和配置
按照官方提供的教程,我需要准备以下软件工具。
1、Python3.10:官方提供的模型转换工具均是Python源代码文件,同时还要安装相关依赖库。
2、STEdgeAI:根据tflite/onnx模型,生成神经网络C代码。
3、STM32CubeIDE:用于修改代码和编译工程。
4、STM32CubeProgrammer:用于编译完成的固件烧录。
这里强烈建议按照软件默认路径安装它们,自己修改安装路径的话,可能导致后面使用Python工具部署时不能成功烧录。Python建议是3.10,用最新的会出现跟模型训练用的依赖库不兼容。
以上程序安装好后检查环境变量,如果没有,需要自己搞上去,不然后面问题多多。
以上都弄好后下载资源包:
1、STM32N6 Getting Started V1.0.0:官方提供的示例工程。
2、STM32 model zoo services:提供了模型微调、量化、基准测试、预测和评估,以及自动代码生成一条龙服务。
3、stm32ai-modelzoo:提供大量的预训练模型,可供重新训练和直接部署,需搭配stm32ai-modelzoo-services一起使用。
将下载的STM32N6 Getting Started V1.0.0解压至stm32ai-modelzoo-services目录,这样其中的application_code目录下才会有STM32N6的示例工程,否则这个目录是空的。
最后进入stm32ai-modelzoo-services目录并安装相应的依赖库,此处建议使用国内的镜像源,否则能慢的到下个世纪。
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
以上全搞定后,开发环境就全都准备好了。所有路径上注意不要有中文。
二、模型部署
我这里选用了ST官方提供的STM32模型库中训练好的如下模型,该模型用于识别五种花种类。
stm32ai-modelzoo\image_classification\mobilenetv2\ST_pretrainedmodel_public_dataset\flowers\mobilenet_v2_0.35_128_fft\mobilenet_v2_0.35_128_fft_int8.tflite
该模型对应的部署配置文件是这个。
stm32ai-modelzoo-services\image_classification\src\config_file_examples\deployment_n6_mobilenet_v2_config.yaml
先把这个配置文件复制一份到如下目录:
stm32ai-modelzoo-services\image_classification\src
然后再改名为:
user_config.yaml
接下来修改该配置文件,可以参考如下教程。
stm32ai-modelzoo-services/image_classification/src/README.md
图片是对应章节的截图,我使用了浏览器自动翻译。这里推荐装一个Markdown浏览器插件,看MD文件很方便。
更详细的教程可以参考如下文件。
stm32ai-modelzoo-services/image_classification/deployment/README_STM32N6.md
下面介绍配置文件中各字段的含义。
设置模型和作模式:填写模型路径,设置为部署模式
general:
# path to a `.tflite` or `.onnx` file.
model_path: ../../../stm32ai-modelzoo/image_classification/mobilenetv2/ST_pretrainedmodel_public_dataset/flowers/mobilenet_v2_0.35_128_fft/mobilenet_v2_0.35_128_fft_int8.tflite
operation_mode: deployment
数据集配置:填写数据集信息和预处理信息
dataset:
name: flowers_dataset
class_names: [daisy, dandelion, roses, sunflowers, tulips]
preprocessing:
resizing:
interpolation: bilinear
aspect_ratio: crop
color_mode: rgb # rgb, bgr
其中配置预处理参数注释如下图:
用到的软件工具配置:其中STEdgeAI将模型转换为C代码,STM32CubeIDE 编译并烧录程序。
tools:
stedgeai:
version: 10.0.0
optimization: balanced
on_cloud: False # Not Available For STM32N6
path_to_stedgeai: C:/Users/<XXXXX>/STM32Cube/Repository/Packs/STMicroelectronics/X-CUBE-AI/<*.*.*>/Utilities/windows/stedgeai.exe
path_to_cubeIDE: C:/ST/STM32CubeIDE_<*.*.*>/STM32CubeIDE/stm32cubeide.exe
开发板信息配置:
deployment:
c_project_path: ../../application_code/image_classification/STM32N6/
IDE: GCC
verbosity: 1
hardware_setup:
serie: STM32N6
board: STM32N6570-DK
其他字段默认即可。
然后把开发板设置成开发模式,插上USB线。这里我要说明两个注意事项。
其一,官方教程有误,进入开发模式是把boot1设成1,即把对应开关拨到右边,而不是boot0,参见下图。
其二,也是官方教程多次强调的,一定要用 USB-C 转 USB-C 电缆,将开发板从 STLINK-V3EC USB-C 端口连接到电脑,否则极有可能因为供电不足造成各种各样的问题。我因此专门从京东买了一条双端Type-C的全功能数据线,才能保证每次都好用。
以上工作都准备好后,在stm32ai-modelzoo-services\image_classification\src目录打开命令行窗口,运行以下命令:
python stm32ai_main.py
如果一切都配置正常,就能按照预期,先转化模型为C文件,然后编译,最后烧录到板卡。
然而,不出意外,我这出了意外。每次运行到如下图时,就卡住了。搞了好几个晚上都没找到原因。
如果用Ctrl+C中断运行,截图如下:
后面自己实在搞不明白了,就去ST论坛求助,我在中文论坛和英文论坛都发了求助帖,没成想英文论坛不到半小时就给我解决办法了,这里大赞ST英文技术支持,记得以前用TouchGFX遇到问题,也是英文论坛很快给解决的,具体原因如下:
https://community.st.com/t5/edge-ai/deploying-the-image-classification-model-on-the-stm32n6570-dk/m-p/792248#M4410
按照这个工程师说的单独命令行运行一下STEdgeAI,把这个确认过程执行完成,就好了。然后再次运行以下命令:
python stm32ai_main.py
这把就真的搞定啦!由上图可见,运行完成后对应的工程文件也都配置好了,模型固件不改的话,以后修改应用只需重新编译,烧录STM32N6_GettingStarted_ImageClassification.bin就行了。
自动烧录完成后,将boot1开关拨到左边,复位一下,程序就能成功跑起来了。从显示屏上能看到推理结果和耗时信息。
由上图可见,运行图像分类模型,识别速度超级快。模型部署工作就完成了。
三、实现一个具体应用
本次目标是实现用语音播报识别结果。这里我选了一个以前测评用的音频模块:DFR0745语音录放模块,实物如下图:
这个模块采用5V供电,通过串口跟单片机连接,使用AT指令就能控制播放预存好的指定音频文件。
我把它跟STM32N6570-DK开发板连接好后如下图。
然后就是用STM32CubeIDE打开之前配置好的工程修改代码。
我的思路是这样的:将开发板的串口COM2设置为log端口,链接到printf函数,然后程序将模型识别结果进行处理,大致原则是识别结果成功率大于90%并且和上一次结果不一样的时候,就通过printf函数给语音录放模块发命令,播放对应的音频。
修改串口初始化代码细节如下图,参见程序注释内容:
然后是具体功能实现,详见如下图:
代码全部改好后,可以在开发模式(boot1拨到右边)debug一下,此时是在RAM中运行,效果是一样的,如果有问题随时再修改,避免反复签名和烧录过程。确定没问题了,就对最终的固件进行签名。
STM32_SigningTool_CLI -bin STM32N6_GettingStarted_ImageClassification.bin -nk -t ssbl -hv 2.3 -o STM32N6_GettingStarted_ImageClassification_sign.bin
使用STM32CubeProgrammer进行烧录。
最后将boot1拨回左边,按复位,就能看到开头视频的运行结果了。至此,本次AI应用实验就完成了。
四、总结
通过以上操作可以看到,ST已经把整个AI开发流程标准化,工具化,让开发者很容易上手。实际应用中,让用户更关注模型的训练和最终的应用,而不用在模型转化和部署上花费太大精力。从演示视频我们也能看到,STM32N6的AI功能还是很强大的,有NPU加成,未来在一些要求低功耗的边缘AI应用中必将大放异彩。
- 2025-04-11
-
回复了主题帖:
【STM32N6570-DK测评】4.交通标志识别
大佬太厉害了。问一下这个训练数据集有多少张图片?
另外,烧录不成功可能跟STM32CubeIDE和STM32_Programmer默认安装路径以及环境变量有关。
- 2025-04-08
-
回复了主题帖:
【STM32N6570-DK测评】3.快速实现AI目标检测应用
waterman 发表于 2025-4-8 16:11
是的,但是云端目前针对STM32N6只能生成神经网络C代码和bin文件,还需要自己在本地进行工程项目的配置。
...
工程项目的配置也挺繁琐
-
回复了主题帖:
【STM32N6570-DK测评】3.快速实现AI目标检测应用
如果在云端进行模型转换,生成c文件,是不是不用配置Python环境,也不用装那一堆依赖库?
- 2025-04-05
-
回复了主题帖:
【STM32N6570-DK评测】01 开箱
zyb329321151 发表于 2025-4-5 14:15
接到电脑端口显示出问题,应该就是USB口供电不足的问题。电脑USB口供电能力只有600mA左右,STM32N6部分场景 ...
的确是供电的问题,我后来买了一条全功能Type-C to Type-C的数据线,换上就好了。应该是stlink那个单片机检测到电压降低,直接把电源给断开了。
- 2025-04-02
-
回复了主题帖:
【STM32N6570-DK评测】#3 录制视频并显示
你这个是在RAM内运行的还是在flash运行的?
- 2025-03-31
-
发表了主题帖:
【STM32N6570-DK评测】02 测功耗
上一贴介绍了开箱过程,并进行了简单测试,本帖进行功耗测试,评估一下STM32N6570-DK开发板在各种应用下的功耗情况。
最开始准备用手头的万用表测功耗,然后发现我这个表毫安电流档只有200mA,而且下一档就直接是20A档了,精度就差很多了。这怎么办呀?只好开动脑筋,工具不够,技术来凑。我决定自己做一个电流表来测试。而且还要能实时显示功率,方便记录。
为制作电流表,我找了两个开发板,一个是INA229EVM,这个是20bit精度的多功能评估版,可以测试电压,电流,功率,温度,还有能量和充电相关的参数计算,和单片机是SPI接口。另一个是微雪RP2040双核开发板,该板具有一个1.28英寸圆形LCD屏,有全套供电系统,具备一组可用的SPI接口。看来平时多参加活动是有好处的,随便找找就能凑齐合适的材料。
接下来就是焊接电路,将电源,接口都做好。一通忙乎后,成果如下。
INA229EVM精度是调好的,直接连上RP2040开发板就可以调试程序了。在ArduinoIDE里面添加TFT_eSPI和INA229两个库,直接用库例程分别调试好界面和数据采集,最后汇总就完成了电流表的程序设计,如下图。
我这次为了方便,只做了一个超级简单的界面,显示电压,电流和功率。有了这三个,就满足这次测试任务使用了。
准备好了测试工具,就开始正式测试。首先是测试点选取。通过官方提供的原理图可以找到JP2就是用来切换不同供电路径的跳线,把电流表接到这个跳线1-2两端代替跳线端子,就能实现板子除了STLINK电路以外的所有部分供电电流,同时采集该点电压就能计算出耗电功率,局部原理图如下。
我把电流表 按照跳线端子接入电路,具体接线如下图。
搞定以上硬件连接后,就可以开始开发板的功耗测试了。官方原带的演示程序功能比较齐全,我就测试运行不同演示程序时的功耗,并总结对比。
上电后,是一个待机界面,可以选各种应用运行,此界面下,测得电流0.52824A,功率2.4791W。此界面滑动很流畅,应该是开启了GPU加速。
选择AI识别演示程序,开启摄像头,这个应用用于演示识别人体姿势。此界面下,测得电流0.57563A,功率2.70444W。整体运行帧率在25以上,比较流畅。
接下来测试视频播放功耗。在GPU开启的情况下,测得电流0.53003A,功率2.50347W。整体运行帧率稳定在60,比较流畅。在GPU关闭的情况下,测得电流0.52311A,功率2.46206W。运行帧率最低的时候只有15,明显卡顿。可见GPU在稍微增加功耗的情况下,得到的实际体验明显要好很多。
然后是文本动态显示。在GPU开启的情况下,测得电流0.52669A,功率2.48271W。整体运行帧率稳定在60,比较流畅。在GPU关闭的情况下,测得电流0.52056A,功率2.45031W。运行帧率最低的时候只有29,明显卡顿。开GPU的情况下实际体验明显要好很多。
下一个是指南针的演示应用。在GPU开启的情况下,测得电流0.54991A,功率2.58022W。整体运行帧率稳定在60,比较流畅。在GPU关闭的情况下,测得电流0.53813A,功率2.52028W。运行帧率最低的时候只有18,卡顿明显。开GPU的情况下实际体验明显要好很多,和上面的演示情况一致。
下一个是过场动画的演示。在GPU开启的情况下,测得最高电流0.55828A,功率2.59448W。整体运行帧率稳定在60,比较流畅,CPU占用百分比是个位数。在GPU关闭的情况下,测得电流0.52462A,功率2.45257W。运行帧率最低的时候只有18,在帧率高的时候CPU偶尔占用百分之九十多,轻微卡顿。此界面效果看起来不使用GPU也能勉强接受。
接下来是一个电动车控制接界面的应用。该演示应用分为多个界面,既有文字显示,也有天气预报,还有动态的图标效果,整体运行非常流畅,应该是开启了GPU。在各个界面下,功耗比较稳定,测得电流0.51002A,功率2.37829W。相对于其他演示界面,这个功耗整体较小。
最后一个是SVG图片演示。在这个界面下,功耗也比较稳定,测得电流0.52698A,功率2.47171W。整体运行帧率稳定在60,比较流畅,CPU占用在图片切换时偶尔会到百分之二十。
通过以上测试,可看出STM32N6570-DK开发板即使在点亮屏幕情况下整体功耗还是很低的。以上测试最高功耗出现在AI那个演示程序,此演示程序除了使用屏幕、GPU外,还开启了摄像头和NPU,可谓是功率全开,也仅有2.7W,非常适用于一些低功耗的场景应用。
下表是我做的一个功耗统计。由表可见,使用STM32N6单片机时,开启GPU只需不到0.1W的功耗就能得到体验好得多的流畅画面,还是非常划算的。
项目
开GPU
关GPU
差值
电流(A)
功率(W)
电流(A)
功率(W)
电流(A)
功率(W)
待机
0.52824
2.4791
AI测试
0.57563
2.70444
视频
0.53003
2.50347
0.52311
2.46206
0.00692
0.04141
文本显示
0.52669
2.48271
0.52056
2.45031
0.00613
0.0324
指南针
0.54991
2.58022
0.53813
2.52028
0.01178
0.05994
过场动画
0.55828
2.59448
0.52462
2.45257
0.03366
0.14191
电动车显示
0.51002
2.37829
SVG图片
0.52698
2.47171
最后是本次测试的完整视频。
[localvideo]58c6947da9fcc358be9467030a27ce12[/localvideo]
- 2025-03-25
-
回复了主题帖:
【STM32N6570-DK评测】#2 不同负载下的功耗测试
有没有办法刨除屏幕的功耗,单看板子的耗电量呢?
- 2025-03-23
-
回复了主题帖:
【STM32N6570-DK评测】01 开箱
jobszheng5 发表于 2025-3-23 11:14
看着倒是也没有啥特别的呀
整体上,感觉STM32N6配套的工具、脚本、范例还没完善,搞起来还是不是很流畅。
- 2025-03-22
-
发表了主题帖:
【STM32N6570-DK评测】01 开箱
【STM32N6570-DK评测】01 开箱
非常荣幸入选走近 AI 重磅新品 STM32N6,解锁在 MCU 部署高性能、节能型边缘 AI 的活动,获得评测STM32N6570-DK这款开发板的机会。
打开包装,首先看到说明书、排线和固定螺丝在最上面,下面分别是主板,传感器扩展板和摄像头扩展板,采用纸皮子裹起来,比以前气泡袋环保。
拆开内包装,可以看到很大一只主板,采用的5英寸的触摸屏,看起来还是很霸气的。
这块开发板配置如下图,资源非常丰富,跑起各种应用还是很轻松地。
这块开发板采用的CPU是STM32N657X0H3Q,是该系列最高配。外围还配了1Gbit Octo-SPI flash和256Mbit SPI PSRAM。可谓是性能、功能拉满。
由下图可以看出,STM32N6X7系列是迄今为止性能最强悍的单片机了,没有之一。
我看到官方做的测试,这个单片机算力比树莓派4B还要强悍。以至于openmv在这个单片机刚发售不久,就开始在kickstarter上面众筹下一代硬件OpenMV N6,感兴趣的朋友可以去下面网站凑个热闹。
https://www.kickstarter.com/projects/openmv/openmv-n6-and-ae3-low-power-python-programmable-ai-cameras
这个板子内置了STLINK-V3EC,调试起来非常方便。
上电后运行demo程序非常流畅,我尝试了多重情况下的操作,开GPU运算效果明显比CPU强悍太多,跟官方宣传视频演示的一模一样。
不过我玩着玩着就遇到一个问题,如下视频所见,采用ST-link接口供电,当该口接适配器只作为电源接口时,AI演示程序能正常工作。如果把该口接到电脑上,刚一进入程序就死机了,而且连单片机电源都断开了。我使用带供电接口的USB hub排除了供电不足问题。
视频1:[localvideo]1e2086e3968a2aebcba4ca8bf14915b2[/localvideo]
从ST-link枚举出来的虚拟串口可以看到如下调试信息,看样子AI演示程序是独立于其他应用的一段单独代码,再细节的原因我还没有找到,如果一起测评的朋友们也遇到此问题并解决,烦请能告诉我一下解决办法,不胜感谢。
玩板子,第一个肯定就是点灯啊,打开官方例程,按照README.md里面的操作,就能让小灯闪呀闪。这里要注意两点,一个是STM32N6为了安全和灵活,引入一个FSBL机制,如果只在RAM中测试还好,要是在flash中调试,需要对生成的固件做一些签名操作,很是繁琐,跟以往单片机差异较大。另一个就是debug写入代码如果不成功,考虑设置问题,比如ST-link时钟频率,复位方式等,官方例程默认配置有时候不好使。下面是点灯效果。
视频2:
[localvideo]09cc06633170cab0f9b71240b802d5c1[/localvideo]
- 2025-03-10
-
发表了主题帖:
【2024 DigiKey大赛参与奖】开箱帖
非常有幸参加2024 DigiKey“感知万物,乐享生活”创意大赛。本次获得参与奖的代金券购买了一块NVME SSD硬盘,为了凑够300元,还选了一颗LED灯珠凑单。这块SSD硬盘只有128GB,容量再大的价格会贵不少。不过这块硬盘计划是装在我的绿联NAS上用于装docker文件的,这个容量足够用了,我先用SSD硬盘盒测试了一下,没有问题。以下是清晰大图。
- 2025-03-03
-
加入了学习《2024digikey多功能旋钮》,观看 2024digikey多功能旋钮
-
加入了学习《led立方体》,观看 led立方体
- 2025-02-21
-
回复了主题帖:
>>征集 | 晒电机控制痛点与难题,一起寻求最优解!
作为一名刚入行的电机控制工程师,我在实际项目开发中深刻体会到这个领域的复杂性和挑战性。以下是我总结的几个典型痛点和难点并结合ADI的TMC9660芯片谈谈它的解决方案: ### 一、算法开发门槛高,调试周期长 刚接触电机控制时,FOC(磁场定向控制)算法让我头疼不已。数学建模、坐标变换、PI参数整定…每一步都需要深厚的理论功底和大量实验验证。传统方案中,工程师需要从零开始编写代码实现这些算法,光是电流环和速度环的调试就可能耗费数周时间。 **TMC9660的突破**: 它直接用硬件实现了FOC算法和伺服控制环路(包括位置/速度/扭矩环),甚至内置了8点加减速轨迹规划器。通过TMCL-IDE软件,只需配置电机参数和勾选预置算法模式,就能跳过底层代码开发,直接进入功能验证阶段。 ### 二、硬件设计复杂度爆炸 设计电机驱动板时,我需要同时考虑栅极驱动、电源管理、信号调理、保护电路等多个模块。光是MOSFET驱动电路的设计就涉及死区时间优化、EMI抑制、短路保护等细节,稍有不慎就会烧毁器件。 **TMC9660的集成优势**: 这颗芯片将70V智能栅极驱动、同步降压电源(支持7.7 - 70V宽压输入)、4通道高精度电流采样(15MHz带宽CSA + 1MSps ADC)、过流/短路/热保护等功能全部集成在9x9mm的封装内。外部只需搭配MOS管和少量被动元件,PCB面积比传统方案减少60%以上。 ### 三、系统稳定性与实时性难以兼顾 在调试伺服电机时,遇到过编码器信号干扰导致位置漂移、PWM频率不足引发转矩脉动等问题。传统MCU方案中,软件处理延迟可能达到微秒级,难以满足高速伺服控制的实时性需求。 **TMC9660的硬核性能**: 其硬件运动控制单元(MCC)支持100kHz的FOC运算和SVPWM输出,时钟分辨率高达120MHz。编码器接口直接支持双路绝对值/增量式反馈,配合硬件实现的实时Ramp动态计算,确保位置控制精度可达±1个脉冲计数。 ### 四、跨学科知识要求高 电机控制涉及电力电子、自动控制、嵌入式软件等多个领域。作为新人,我常因对某一方面理解不足导致设计缺陷——比如未考虑电机电感参数对电流环的影响,或是电源瞬态响应导致控制失稳。 **TMC9660的智能化设计**: 芯片内置AI自学习功能,可自动识别电机电阻/电感参数,匹配负载惯量和控制带宽。甚至能通过机械特性分析优化PID参数,大幅降低了对工程师经验的要求。 ### 五、开发工具链碎片化 以往项目中,我需要同时使用示波器、逻辑分析仪、MATLAB仿真、Keil编译环境等多套工具,数据同步和调试效率低下。 **TMC9660的生态支持**: 配套的TMCL - IDE软件整合了参数配置、实时曲线监控、故障诊断等功能。通过USB连接评估板后,可直接在图形化界面中观察电流环响应曲线,甚至自动生成优化建议,让调试过程像“调游戏画质”一样直观。 ### 总结:TMC9660如何改变新人工程师的体验 这款芯片通过**硬件算法固化**(省去代码开发)、**全栈集成**(减少外围电路设计)、**智能自整定**(降低经验依赖)三大特性,将原本需要数月迭代的电机控制系统开发缩短到几天。例如在BLDC电机控制案例中,从硬件搭建到完成FOC闭环调试仅需3步:连接电机→配置参数→运行自检,真正实现了“让电机控制像点亮LED一样简单”。对于像我这样的新人而言,这种高集成度方案不仅能快速交付项目,更提供了一个理解电机控制原理的“透明沙箱”——通过观察预设算法在真实硬件中的运行效果,加速了理论知识的实践转化。 作为一名刚入行的电机控制工程师,我在实际项目开发中深刻体会到这个领域的复杂性和挑战性。以下是我总结的几个典型痛点和难点并结合ADI的TMC9660芯片谈谈它的解决方案: ### 一、算法开发门槛高,调试周期长 刚接触电机控制时,FOC(磁场定向控制)算法让我头疼不已。数学建模、坐标变换、PI参数整定…每一步都需要深厚的理论功底和大量实验验证。传统方案中,工程师需要从零开始编写代码实现这些算法,光是电流环和速度环的调试就可能耗费数周时间。 **TMC9660的突破**: 它直接用硬件实现了FOC算法和伺服控制环路(包括位置/速度/扭矩环),甚至内置了8点加减速轨迹规划器。通过TMCL-IDE软件,只需配置电机参数和勾选预置算法模式,就能跳过底层代码开发,直接进入功能验证阶段。 ### 二、硬件设计复杂度爆炸 设计电机驱动板时,我需要同时考虑栅极驱动、电源管理、信号调理、保护电路等多个模块。光是MOSFET驱动电路的设计就涉及死区时间优化、EMI抑制、短路保护等细节,稍有不慎就会烧毁器件。 **TMC9660的集成优势**: 这颗芯片将70V智能栅极驱动、同步降压电源(支持7.7 - 70V宽压输入)、4通道高精度电流采样(15MHz带宽CSA + 1MSps ADC)、过流/短路/热保护等功能全部集成在9x9mm的封装内。外部只需搭配MOS管和少量被动元件,PCB面积比传统方案减少60%以上。 ### 三、系统稳定性与实时性难以兼顾 在调试伺服电机时,遇到过编码器信号干扰导致位置漂移、PWM频率不足引发转矩脉动等问题。传统MCU方案中,软件处理延迟可能达到微秒级,难以满足高速伺服控制的实时性需求。 **TMC9660的硬核性能**: 其硬件运动控制单元(MCC)支持100kHz的FOC运算和SVPWM输出,时钟分辨率高达120MHz。编码器接口直接支持双路绝对值/增量式反馈,配合硬件实现的实时Ramp动态计算,确保位置控制精度可达±1个脉冲计数。 ### 四、跨学科知识要求高 电机控制涉及电力电子、自动控制、嵌入式软件等多个领域。作为新人,我常因对某一方面理解不足导致设计缺陷——比如未考虑电机电感参数对电流环的影响,或是电源瞬态响应导致控制失稳。 **TMC9660的智能化设计**: 芯片内置AI自学习功能,可自动识别电机电阻/电感参数,匹配负载惯量和控制带宽。甚至能通过机械特性分析优化PID参数,大幅降低了对工程师经验的要求。 ### 五、开发工具链碎片化 以往项目中,我需要同时使用示波器、逻辑分析仪、MATLAB仿真、Keil编译环境等多套工具,数据同步和调试效率低下。 **TMC9660的生态支持**: 配套的TMCL - IDE软件整合了参数配置、实时曲线监控、故障诊断等功能。通过USB连接评估板后,可直接在图形化界面中观察电流环响应曲线,甚至自动生成优化建议,让调试过程像“调游戏画质”一样直观。 ### 总结:TMC9660如何改变新人工程师的体验 这款芯片通过**硬件算法固化**(省去代码开发)、**全栈集成**(减少外围电路设计)、**智能自整定**(降低经验依赖)三大特性,将原本需要数月迭代的电机控制系统开发缩短到几天。例如在BLDC电机控制案例中,从硬件搭建到完成FOC闭环调试仅需3步:连接电机→配置参数→运行自检,真正实现了“让电机控制像点亮LED一样简单”。对于像我这样的新人而言,这种高集成度方案不仅能快速交付项目,更提供了一个理解电机控制原理的“透明沙箱”——通过观察预设算法在真实硬件中的运行效果,加速了理论知识的实践转化。
作为一名电机控制工程师,我在实际项目开发中深刻体会到这个领域的复杂性和挑战性。以下是我总结的几个典型痛点和难点并结合 ADI 的 TMC9660 芯片谈谈它的解决方案:
一、算法开发门槛高,调试周期长
刚接触电机控制时,FOC(磁场定向控制)算法让我头疼不已。数学建模、坐标变换、PI 参数整定… 每一步都需要深厚的理论功底和大量实验验证。传统方案中,工程师需要从零开始编写代码实现这些算法,光是电流环和速度环的调试就可能耗费数周时间。
TMC9660 的突破:
它直接用硬件实现了 FOC 算法和伺服控制环路(包括位置 / 速度 / 扭矩环),甚至内置了 8 点加减速轨迹规划器。通过 TMCL-IDE 软件,只需配置电机参数和勾选预置算法模式,就能跳过底层代码开发,直接进入功能验证阶段。
二、硬件设计复杂度爆炸
设计电机驱动板时,我需要同时考虑栅极驱动、电源管理、信号调理、保护电路等多个模块。光是 MOSFET 驱动电路的设计就涉及死区时间优化、EMI 抑制、短路保护等细节,稍有不慎就会烧毁器件。
TMC9660 的集成优势:
这颗芯片将 70V 智能栅极驱动、同步降压电源(支持 7.7 - 70V 宽压输入)、4 通道高精度电流采样(15MHz 带宽 CSA + 1MSps ADC)、过流 / 短路 / 热保护等功能全部集成在 9x9mm 的封装内。外部只需搭配 MOS 管和少量被动元件,PCB 面积比传统方案减少 60% 以上。
三、系统稳定性与实时性难以兼顾
在调试伺服电机时,遇到过编码器信号干扰导致位置漂移、PWM 频率不足引发转矩脉动等问题。传统 MCU 方案中,软件处理延迟可能达到微秒级,难以满足高速伺服控制的实时性需求。
TMC9660 的硬核性能:
其硬件运动控制单元(MCC)支持 100kHz 的 FOC 运算和 SVPWM 输出,时钟分辨率高达 120MHz。编码器接口直接支持双路绝对值 / 增量式反馈,配合硬件实现的实时 Ramp 动态计算,确保位置控制精度可达 ±1 个脉冲计数。
四、跨学科知识要求高
电机控制涉及电力电子、自动控制、嵌入式软件等多个领域。作为新人,我常因对某一方面理解不足导致设计缺陷 —— 比如未考虑电机电感参数对电流环的影响,或是电源瞬态响应导致控制失稳。
TMC9660 的智能化设计:
芯片内置 AI 自学习功能,可自动识别电机电阻 / 电感参数,匹配负载惯量和控制带宽。甚至能通过机械特性分析优化 PID 参数,大幅降低了对工程师经验的要求。
五、开发工具链碎片化
以往项目中,我需要同时使用示波器、逻辑分析仪、MATLAB 仿真、Keil 编译环境等多套工具,数据同步和调试效率低下。
TMC9660 的生态支持:
配套的 TMCL - IDE 软件整合了参数配置、实时曲线监控、故障诊断等功能。通过 USB 连接评估板后,可直接在图形化界面中观察电流环响应曲线,甚至自动生成优化建议,让调试过程像 “调游戏画质” 一样直观。
总结:TMC9660 如何改变新人工程师的体验
这款芯片通过硬件算法固化(省去代码开发)、全栈集成(减少外围电路设计)、智能自整定(降低经验依赖)三大特性,将原本需要数月迭代的电机控制系统开发缩短到几天。例如在 BLDC 电机控制案例中,从硬件搭建到完成 FOC 闭环调试仅需 3 步:连接电机→配置参数→运行自检,真正实现了 “让电机控制像点亮 LED 一样简单”。对于像我这样的新人而言,这种高集成度方案不仅能快速交付项目,更提供了一个理解电机控制原理的 “透明沙箱”—— 通过观察预设算法在真实硬件中的运行效果,加速了理论知识的实践转化。
- 2025-01-22
-
回复了主题帖:
祝福2025!回帖即有奖!选取最有心的送5块国产开发板!
期待2025越来越好,开发版越来越多,知识越来越高,技能越来越强!祝大家新的一年里技术更牛,工作一流!!
- 2024-12-05
-
评论了课程:
【2024 DigiKey 应用说】第三期:大模型时代的智能汽车
AI赋能汽车,产品想象力无限。
- 2024-11-17
-
加入了学习《【2024 DigiKey创意大赛】+智慧焊接工作台》,观看 智慧焊接工作台
- 2024-11-02
-
发表了主题帖:
【DigiKey创意大赛】便携生命探测仪07+作品提交
便携生命探测仪
作者:sipower
一、作品简介
现在越来越多业余驴友喜欢户外冒险,但是随之而来的就是遇到危险的情况时有发生,因此我想到做一个便携生命探测仪,在发生危险时,能帮助救援人员方便找到遇险者。此方案主要采用热敏式图像传感器MLX90640ESF-BAB-000-TU检测人体红外信号,采用BME680气体,湿度,压力,温度传感器评估板记录环境信息,配合一个带屏幕的评估板,显示热成像图片。再额外添加一个心电采集模块,当发现遇险者后,能立即给遇险者采集心电图和心率并在屏幕上显示,方便救援人员判断生命体征状态,好制定下一步救援计划。下图是最终的作品照片,我用纸壳做成一个手枪形态的样子。
本次作品从得捷电子采购的器件:
序号
型号
名称
用途
1
MLX90640ESF
热敏式图像传感器
检测人体红外信号
2
3660
BME680评估板
采集气体,湿度,压力,温度参数
3
DFR1075
ESP32-C6评估板
转换心电数据格式
4
JB2835AWT-W
白色发光管
用于探测仪照明
本次作品自备的器件:
序号
型号
名称
用途
1
DFR0975
ESP32-S3评估板
主控板实现数据处理和现实功能
2
MSP3520
3.5英寸480*320分辨率触摸屏
显示热成像图像和心电波形
3
LH001-91
心电评估板
采集心电数据
二、系统框图
整个系统框图如下图。
如上图所示,ESP32-S3评估板作为主控板,通过SPI接口连接一片480*320分辨率的触摸屏,用来显示各个检测数据、图像、心电波形。通过串口连接一片ESP32-C6评估板。ESP32-C6负责通过串口从LH001-91心电评估板接收字符串数据,然后选择心电波形、心率、导联脱落数据转换成浮点数,再从另外一个串口发给主控板。通过I2C接口连接热敏式图像传感器MLX90640ESF-BAB-000-TU检测人体红外信号,转换成热成像实时图片刷新到显示屏。通过I2C接口连接BME680气体,湿度,压力,温度传感器评估板记录环境信息,并显示在屏幕上。
三、各部分功能说明
所有板子,传感器,屏幕等器件焊接好,并打胶加固后的效果如下图。
热成像传感器MLX90640
该传感器分辨率为32H x 24V阵列,封装是TO-39,本次大赛两个必选料之一。焊接好的图片如下。和主控板之间采用I2C接口。该传感器软件驱动我这里参考Adafruit_MLX90640的库,再结合显示屏特点进行了调色板处理,通过差值将32*24点阵放大到320*240点阵,可以在屏幕上均匀显示,祛除颗粒感。
主控板
选的是以前做评测攒下的一块ESP32-S3开发板,由DFRobot设计的FireBeetle-ESP32-S3,如下图。该评估板提供非常丰富的IO接口,可以满足大部分DIY的需求。这个板卡的程序我在VScode+PlatformIO平台开发,使用体验非常好,强烈推荐没用过的同行们尝试一下。
显示屏
选了一块480*320的TFT,如下图,也是以前做评测攒下的。该屏幕采用SPI接口,带电阻式触摸屏,使用该屏幕可以省掉按键,配合开源显示驱动库TFT_eSPI,可以非常方便的实现各种显示功能。这里需要特别说明一下,由于该屏幕使用的驱动IC ILI9488是18bit数据,TFT_eSPI是不支持DMA的,我这使用了一些技巧,最终实现DMA写屏,使得热成像刷新率显著提高,具体的细节可以参考我分享的第三贴。
BME680传感器
该传感器具有SPI和I2C两种接口,由于我用的这个ESP32-S3开发板引出的SPI口接屏了并且SPI占IO口比较多,我择使用I2C接口连接BME680小板,最开始为了省事我把它和MLX90640挂在同一个I2C总线上了。但是我发现一个问题,就是每次读取BME680时候,热成像刷新都会卡顿一下,体验不好,原因就是共用总线造成的。好在ESP32-S3有多个I2C,并且还有一个巨牛掰的GPIO交换矩阵,可以让外设使用任意IO口。于是我从引脚分配表上找了2个闲置的IO口A4和A5配置成了I2C总线,完美解决卡顿问题。采集数据显示如下图。
心电采集部分
本次作品为了实现心电采集,我选用了领慧立芯推出的医疗级模拟前端心电采集方案。具体实现采用的是领慧立芯的心电采集评估板,该评估板基于LH001-91设计。
LH001-91是专门针对心电信号采集而开发的医疗级模拟前端,集成了24位Σ-Δ ADC,可编程增益放大器,右腿驱动,导电脱落监测等功能。更详细资料见如下链接:
http://www.legendsemi.com/hyyy_2/4.html
下图是我申请到的LH001-91的评估板,主要由AFE(LH001-91),通用MCU和两侧的三个电极组成。
为了降低主控端的软件复杂度,我还选用了一块ESP32-C6开发板做心电数据解析,该开发板由DFRobot设计研发,型号是FireBeetle 2 ESP32-C6。如下图所示。
FireBeetle 2 ESP32-C6采用较新的RISC-V内核,在官方VScode+PlatformIO平台还不支持Arduino架构,最后采用ArduinoIDE做的程序开发。详细程序见作品源代码。
在本次作品中主要是用到了ESP32-C6的两个串口做协议转换。原理框图如下图。
我在PC端用了一个能显示串口数据波形的软件,ESP32-C6负责从LH001-91评估板接收字符串数据,然后转换成上位机软件能识别的协议,再从另外一个串口发出去。最后由主控板接收数据并显示在屏幕上。心电显示效果如下图。
照明部分
考虑到这个探测仪会在黑暗环境下工作,我在作品最前端加了2个高亮白光LED发光管。在最终的手枪状扳机处粘了一个按键,可以控制发光管的亮灭。局部照片如下图。
四、作品源码
ESP32-S3程序采用VScode+PlatformIO平台开发。
ESP32-C6程序采用ArduinoIDE开发。
便携生命探测仪源代码
https://download.eeworld.com.cn/detail/sipower/634850
五、作品功能演示视频
[localvideo]ec5c9ffb1ee98e05de790da3423d6055[/localvideo]
六、项目总结
感谢EEWorld和得捷电子提供的这次机会,让我体验了热敏式图像传感器MLX90640和环境检测传感器BME680。然后做出这个有意义的作品。在开发过程中,感觉到ESP32单片机生态系统很完善,不但有非常好用的Arduino平台,还有更强大的VScode+PlatformIO开发平台,让程序开发更加高效稳健。
下面链接是本次作品开发过程中的经验分享贴,本文中没有详细介绍的内容,在下面帖子中都能找到。
https://bbs.eeworld.com.cn/thread-1290207-1-1.html
https://bbs.eeworld.com.cn/thread-1291434-1-1.html
https://bbs.eeworld.com.cn/thread-1292207-1-1.html
https://bbs.eeworld.com.cn/thread-1294411-1-1.html
https://bbs.eeworld.com.cn/thread-1294434-1-1.html
https://bbs.eeworld.com.cn/thread-1296592-1-1.html
七、其他
无。
-
发表了日志:
【DigiKey创意大赛】便携生命探测仪07+作品提交