Simulink 自动代码生成电机控制:硬件开发板系统介绍

news2024/9/21 11:14:01

目录

 

前言

电源电路

 MCU电路

开发板接口

关于电流采样和过流保护

 驱动部分

 总结


 

前言

   在介绍开发板之前突然有感而发想多说两句,本人从事电控行业也是有一些年头了,除了刚刚毕业就接触的电机控制外,就是电源控制相关的,像三相PFC,DCDC啥的。虽然赶不上业内大佬,但是也是有了些许心得,也算是勉强入了个门。在这里总结一点点自己的经历和踩过的坑。毕业接触FOC控制是用芯片公司提供的电机库进行二次开发,老实说就是调参加一些特殊应用的系统功能开发,对电机控制部分来讲就是一个黑盒子,参数整定也是参考官方的使用说明,真正去看代码有些是封装成库,有些则是开源了但是代码看起来难以理解。尤其刚刚开始接触的时候很多都是定点化标幺好的,对于标幺的电机库,对电机的兼容性比较高,基本都能跑,像ST的电机库这些芯片公司提供的参考。我相信接触过的都知道这代码看起来不是一般的难以理解,但是想让一个电机跑起来很容易。

   再后来接触到了基于模型的快速原型开发,自己尝试摸索自动代码生成后就像是打开了一扇新的大门,软件开发的速度成几何倍的上涨。有理论支撑的情况下不需要花太多时间在调参上面,也不需要花太多时间在码代码反复调试上。于是就想着自己设计一个控制器来做些实验玩玩。开始设计控制器的时候考虑的是MCU要支持浮点,毕竟Simulink生成的代码是浮点的,虽然可以定点化,不过浮点可以快速的验证算法的可靠性,不用考虑定点带来的不确定因素,因此就有了下面的这小块开发板。初学者建议先用浮点MCU更好理解各个物理量的传递而不用考虑标幺后公式和计算的复杂和难以理解,等对理论理解后再去考虑定点标幺,这样完整的体系就成了。板子设计出来后,我先后实现了有感霍尔FOC自动代码生成,有感Encoder编码器FOC控制,还有一个有感磁编的FOC控制,无感磁链,高阶/低阶滑模观测器,扩展卡尔曼滤波,龙伯格观测器,高频注入等。另外也实现了DTC的有感和无感控制,死区补偿,谐波抑制,单电阻FOC,六步方波控制等。通过对这些观测器和优化控制策略的实现也进一步对电机控制有了更深的理解,对比各个观测器的特性也有一些了解,加之开发板的设计和调试对硬件的理解也感觉到了一些提升。市面上的电机各种各样,有感的有需求,无感的也有需求,应对不同的工况,对于电机控制来讲没有最完美的算法,只有最合适应用的算法。根据电机特性和应用需求,芯片算力,成本等综合考虑,合适的才是最好的!电机控制是应用的基础,在电机控制的基础上还有各种像风机,泵,洗衣机,冰箱,空调,电动车等等的复杂的系统应用,对于控制提出了各种不同的需求。

电源电路

通过稳压电源输入12V-24V的电压,采用两级的DCDC,第一级的DCDC完成24V到12V的转换,12V给驱动芯片供电,12V再通过一个DCDC得到3.3V给MCU和运放等供电。红色测试点方便对各个环节的电压进行测试以判断硬件是否能正常工作。另外,开发板防反接功能也加进去了,接反了也没事。

91e332ea183246bdba0e39ad742fbfac.png

 MCU电路

官方参考设计,MCU最小系统,照抄就行了,没有谁比官方更懂MCU,其他部分引脚按需求设计即可。现在的小板子已经测试兼容STM32F401 64PIN, STM32F103, 105 64PIN, PIN to PIN兼容,模型生成的代码也能跑,想跑103直接换芯片,据说有些国产芯片兼容STM32F103, PIN to PIN的,是不是就可以。。。有机会试试。

e358afe3692a4ebab983cd0eb4bdb9e3.png

 

开发板接口

开发板大小8cm*10cm, 可以运行安全电压下的各种永磁无刷电机,当然负载要考虑在安全负载范围,支持SWD,调试可以直接用Stlink或者Jlink, 上位机可以使用USB/UART进行通信,UART的通信支持2M的速度,配合DMA可以采样到实时性更高的数据。通过电位器可以调速,也可以通过上上位机通信调速。另外有两个DAC通道也可以辅助调试,显示电机运行过程中的实时状态。另外霍尔端口和Encoder端口兼容,可更好的去做有感控制。

627f5215036d431e821c929ef05b0987.png

接线图如下,像SWD和UART的接线都是比较常见的通用接口,只需要注意有些USB转UART供电是可选的,有些不行,需保证电压是3.3V,而不是5V,以前吃过亏,芯片莫名其妙的坏掉了。。。至于霍尔接口的话按照程序设定的接就行了,如果顺序接错了,一般电机是不能转起来的。三相线和霍尔顺序都需要对应好。如果是无感控制的话三相接反了只是会反转而已。

876cd34cf2b64c62b56adced0156e501.jpeg

 霍尔和Encoder接口设计兼容3.3V和5V的系统,毕竟有些霍尔或者编码器需要5V供电3bf5175d021d4ae0b63a3b23bc2d03be.png

 

关于电流采样和过流保护

设计了可以兼容三电阻采样,两电阻采样和单电阻采样,只需要把R75和R76去掉,焊上R77和R78就可以实现单电阻采样。运放的增益是5。过流保护通过比较器触发PWM判断,完全用硬件的方式实现。通过调比较器参考输入完成过流的限制。一共用到两颗双通道的轨对轨运放,相当于四个运放,其中三个用来采样电流,剩下一个通道用来设计成比较器。

3d24e92d405949c8861d40f9840a8bd4.png

 至于运放增益计算,直接虚短虚断,或者仿真一下电路,对比输入输出。或者偷懒直接用ST的Motor Control Workbench. 也可以根据需要自己配增益。对于不同负载的电机,运放和采样电阻的选取也是有讲究的。即要考虑采样精度,又要考虑功耗,一切取决于电机的负载大小和相电流。

aea4febe540c4465ae278df7598b1b53.png

 另外也添加了对三相电压的采样,目前通过ADC完成了三相电压采样,但是并没有用到,等以后有时间了再利用下。eafcbac6e5f84030b3ca062d3a1befc9.png

 驱动部分

驱动和MOS管部分的电路也完成了,MOS是在板子背面。想想以前在学校里买的一个套件,驱动和MCU控制板分开的,各两大块,而只是用来跑一个几十W的小电机,简直是。。。77ab19152d204e6eb94bd208f2d0ed03.png

 

 总结

就简单介绍到这里,小板子的设计虽然随心所欲,不过也能满足学习的需求了,也做了不少实验。对于作为一块小巧的学习板,也算是及格了。由于精力有限,还有很多想法只能后面一步一步的去验证实现了。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/440841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Point-to Analysis指针分析(2)

https://blog.csdn.net/qq_43391414/article/details/111046505 下面介绍一种新的指针分析的算法Steensgaard算法,并将其与上一篇文章介绍 Steensgaard算法 不同于Andersen算法,Steensgaard在前者的基础上,再次对问题进行了简化,从而指针分析…

远程访问及控制

目录 一、SSH远程管理 1)SSH的简介 2)SSH的优点 3)常用的SSH软件的介绍 4)SSH 的组成 5)SSH的密钥登录 密钥登录的过程: 二、SSH的运用 1 )SSH配置文件信息 2)存放ssh服务…

JAVA 进程CPU过高排查

1. top命令看一下JAVA进程: 占用500%多,非常恐怖,程序卡得动不了了。 2. 使用命令top -H -p PID 此处PID就是上一步获取的进程PID,我的PID是13342,通过此命令可以查看实际占用CPU最高的的线程的ID,此处几位…

ChatGPT+Ai绘图【stable-diffusion实战】

ai绘图 stable-diffusion生成【还有很大的提升空间】 提示词1 Picture a planet where every living thing is made of light. The landscapes are breathtakingly beautiful, with mountains and waterfalls made of swirling patterns of color. What kind of societies m…

【学习笔记】unity脚本学习(五)【常用的方法函数Destroy、Instantiate 、SendMessage、invoke 、Coroutine】

目录 常用的方法函数Object体系结构MonoBehaviour复习继承的变量 继承自Object的方法Destroy 物体的销毁DestroyImmediate 立即销毁对象(强烈建议您改用 Destroy)Object.DontDestroyOnLoadObject.Instantiate 物体的生成类子弹生成案例 继承自Component的…

八股+面经

文章目录 项目介绍1.不动产项目数据机器学习算法调研图像提取算法调研数据集-ImageNetXceptionVGGInceptionDensenetMobilenet 2.图书项目技术栈面试问题 Java基础MapHashMap v.s Hashtable(5点)ConcurrentHashMap v.s Hashtable(2点)代理模式1. 静态代理2. 动态代理2.1 JDK 动…

什么样的人适合学习网络安全?怎么学?

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题:什么样的人适合学习网络安全?我适不适合学习网络安全? 会产生这样的疑惑并不奇怪,毕竟网络安全这个专业在2017年才调整为国家一级学科,…

elasticsearch——数据同步

目录 数据同步思路分析 方案一:同步调用 方案二:异步通知 方案三:监听binlog 区别 关于elasticsearch与数据库数据同步 导入课前资料提供的hotel-admin项目,启动并测试酒店数据的CRUD 声明exchange、queue、RoutingKey 导…

Python列表和字典前面为什么会加星号(**)?

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 python 中,单星号*和双星号**除了作为“乘”和“幂”的数值运算符外, 还在列表、元组、字典的操作中有着重要作用。 一、列表(list)、元组(tuple&#xff09…

flac格式如何转换为mp3,这3个方法超好用

随着音频格式的不断创新和发展,每种格式对应不同的特点。比如像flac格式可以提供无损音质的体验,但它的文件大小却是相对较大,不太适合在普通设备上进行传输和使用。而mp3作为一种流行的音频格式,它的压缩率较高,不但可…

OceanBase 4.1解读:我们想给用户一个开箱即用的OceanBase部署运维工具

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/ 关于作者 肖磊 OceanBase 产品专家 负责 OceanBase 运维管控体系产品规划与设计,包括安装部署工具(OBD、OAT)、运维管控平台(OCP、OCP Express),致力…

MySQL安装步骤详解

MySQL环境搭建 MySQL的下载 MySQL的4大版本 MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于 大多数普通用户。 MySQL Enterprise Edition 企业版本,需付费,不能在线下载…

运行torch心得体会

遇到的问题: ①ModuleNotFoundError: No module named torch ②‘conda‘不是内部或外部命令,也不是可运行的程序或批处理文件。 ③import torch 提示找不到指定的模块visual C redistributable is not installed 过程: 用前一段时间就下…

流程图拖拽视觉编程--概述

一般的机器视觉平台采用纯代码的编程方式,如opencv、halcon,使用门槛高、难度大、定制性强、开发周期长,因此迫切需要一个低代码开发的视觉应用平台。AOI缺陷检测的对象往往缺陷种类多,将常用的图像处理算子封装成图形节点,如抓直…

「C/C++」C/C++强制类型转换

博客主页:何曾参静谧的博客 文章专栏:「C/C」C/C学习 目录 相关术语C语言中的强制类型转换C中的强制类型转换static_castdynamic_castreinterpret_castconst_cast 注意事项 相关术语 强制类型转换:是指将一个数据类型强制转换为另一个数据类型…

magic Grid

说明文档 A lightweight Javascript library for dynamic grid layoutshttps://vuejsexamples.com/a-lightweight-javascript-library-for-dynamic-grid-layouts/npm npm install magic-grid cnd <script src"https://unpkg.com/magic-grid/dist/magic-grid.cjs.js…

【C++ 七】类和对象:封装、继承、多态、友元、运算符重载

封装、继承、多态、对象的初始化和清理、C对象模型和this指针、友元、运算符重载 文章目录 封装、继承、多态、对象的初始化和清理、C对象模型和this指针、友元、运算符重载前言1 封装1.1 封装的意义1.1.1 封装意义一1.1.2 封装意义二 1.2 struct 和 class 区别1.3 成员属性设置…

数据结构——二叉树的修改与构造

数据结构——二叉树的修改与构造 一、修改二叉树226. 翻转二叉树1.前/后序递归2.广度优先搜索迭代3.拓展&#xff1a;修改中序遍历 / 中序统一迭代写法 114. 二叉树展开为链表 二、构造二叉树106. 从中序与后序遍历序列构造二叉树递归思路 105. 从前序与中序遍历序列构造二叉树…

Java day11

第11章 在用户界面上排列组件 11.1 基本的界面布局11.1.1 布置界面11.1.2 顺序布局11.1.3 方框布局11.1.4 网格布局11.1.5 边框布局 11.2 使用多个布局管理器11.3 卡片布局11.3.1 在应用程序中使用卡片布局11.3.2 单元格内边距和面板内边距 11.1 基本的界面布局 11.1.1 布置界…

瑞芯微rk3568移植openbmc(五)----关于novnc h265 webcodec硬解码

本章没有什么实质内容&#xff0c;其实在第四节调好了H264的webcodec以后&#xff0c;H265仅仅只需要改下参数&#xff0c;其他的都交给webgl去处理就行了&#xff0c;没有什么大的变化&#xff0c;vp8、vp9、h264、h265处理都一样&#xff0c;仅仅只是参数的变化&#xff0c;不…