C语言基于FOC控制算法和STM32主控芯片的双路直流无刷电机控制器源码

news2024/11/26 2:52:44

【FOC+STM32】双路直流无刷电机矢量控制器-使用文档

📕 介绍

控制器主控芯片采用STM32F405RGT6,控制器底层基于HAL库和FreeRTOS实时操作系统,预留CAN、USART、SWD、USB接口各一,便于通信和控制的工程应用。该控制器提供双路无刷电机控制,同时分别预留编码器接口与电压采样接口,适合于有感FOC与无感FOC的控制应用或算法验证。同时该控制板还可以适合于异步电机的矢量控制。

代码下载 地址:C语言基于FOC控制算法和STM32主控芯片的双路直流无刷电机控制器源码

注意:此项目为硬件设计与算法验证项目,当前正处于设计和验证阶段,未进行完善的工程应用测试和极限参数的压力测试,请勿直接使用,以避免出现安全问题和财产损失,后续的验证情况会同步更新

演示图片

在这里插入图片描述
在这里插入图片描述

什么是FOC

FOC,即Field Oriented Control的缩写,可以译为磁场定向控制或矢量控制。是一种针对异步电机或直流无刷电机的变频调速方式,具有以下几个特点:

  • 调速范围宽,具有良好低速特性与高速特性
  • 机械特性硬,转速稳定性好
  • 速度可以在整个调速范围内连续控制,平滑性好,可以实现无级调速
  • 可以实现力矩控制与力矩反馈
  • 结构复杂,算法复杂,贵

✨ 参数

  • 规格

    • 体积: 99.0mm × 71.5mm × 8.8mm
  • 性能

    • 额定电压 12V - 36V
    • 双路直流无刷电机驱动
    • 最大持续电流 2 × 15A
    • 支持三相霍尔编码器(可根据需要选择性焊接上拉电阻)
    • 支持最大不超过3PIN的数字编码器或其他编码器(如PWM信号的AS5600)
    • 不支持需要ADC采样的模拟编码器
  • 功能

    • 一个可编程LED灯,一个电源指示灯,四个电机状态指示灯
    • 板载 OLED 屏显(基于带片选的SPI通信)
    • 基于 2 × DRV8303 的双路电机驱动(与OLED共用SPI总线)
    • 提供 2 x 3 的UVW电压采样
    • 提供 2 x 2 的电流采样,分别为V相和W相
  • 接口

    • CAN x 1
    • USART x 1
    • TYPE-C USB接口 x 1 (FS全速接口,不支持OTG,不支持供电)

📄 BOM表

FOC_Controller_BOM

CommentValueDesignatorQuantityFootprintLibRefDescriptionPrice/pcsPrice
Cap1μF“C1, C4, C7, C30, C43, C44, C61, C62”8C 0603_LCapCapacitor0.00310.0248
Cap Pol1100μFC21C 1206_MCap Pol1Polarized Capacitor (Radial)0.20.2
Cap Pol122μFC31CD A(3216)Cap Pol1Polarized Capacitor (Radial)0.7490.749
Cap10μFC51C 0603_MCapCapacitor0.08530.0853
Cap Pol147μFC61C 1206_MCap Pol1Polarized Capacitor (Radial)0.20.2
Cap100nF“C8, C15, C17, C18, C19, C32, C51, C52, C87”9C 0603_LCapCapacitor0.01340.1206
Cap0.01μFC91C 0603_LCapCapacitor0.01310.0131
Cap0.1μF“C10, C11, C14, C16, C22, C23, C24, C29, C38, C40, C42, C50, C56, C58, C60, C66”16C 0603_LCapCapacitor0.01340.2144
Cap2.2μF“C12, C13, C26, C39, C57”5C 0603_LCapCapacitor0.1860.93
Cap20pF“C20, C21”2C 0603_LCapCapacitor0.0250.05
Cap4.7μF 16V X7RC251C 0603_LCapCapacitor0.10.1
Cap1μF 16V X5RC271C 0603_LCapCapacitor0.0310.031
Cap4.7μF“C28, C34, C49, C65”4C 0603_LCapCapacitor0.10.4
Cap1μF 16VC311C 0603_LCapCapacitor0.0310.031
Cap47nFC331C 0603_LCapCapacitor0.0250.025
Cap0.022μF“C41, C59”2C 0603_LCapCapacitor0.0250.05
Cap1000pF“C45, C46, C67, C68”4C 0603_LCapCapacitor0.0250.1
Cap2200pF“C47, C48, C63, C64”4C 0603_LCapCapacitor0.0250.1
Cap100μF“C69, C70, C71, C72, C73, C74, C75, C76, C77, C78, C79, C80, C81, C82, C83, C84, C85, C86”18C 1206_MCapCapacitor0.23.6
BLUE_LEDD11LED 0603BLED2“Typical RED, GREEN, YELLOW, AMBER GaAs LED”0.070.07
SS56D21SMCDiode BAS70Silicon AF Schottky Diode for High-Speed Switching0.48470.4847
GREEN_LEDD31LED 0603GLED2“Typical RED, GREEN, YELLOW, AMBER GaAs LED”0.040.04
YELLOW_LED“D4, D6”2LED 0603YLED2“Typical RED, GREEN, YELLOW, AMBER GaAs LED”0.0450.09
RED_LED“D5, D7”2LED 0603RLED2“Typical RED, GREEN, YELLOW, AMBER GaAs LED”0.0450.09
USB-CJ11USB-C-SMD_TYPE-C-USB-5USB-C/SUSB-C型母接口0.48440.4844
OLED 128*64J21OLED 0.96’’ 128x64Header 30“Header, 30-Pin”9.759.75
三相连接器-插座“J3, J4”2MR30PW-M三相连接器-插座2.14.2
Inductor47μH/3AL11L-SMD-0630InductorInductor0.75790.7579
USARTP11SIPA04Header 4“Header, 4-Pin”0.040.04
M0_EncoderP21SIPB05Header 5“Header, 5-Pin”0.060.06
CANP31SIPA03Header 3“Header, 3-Pin”0.030.03
M1_EncoderP41SIPB05Header 5“Header, 5-Pin”0.060.06
STLINKP51SIPA03Header 3“Header, 3-Pin”0.030.03
KIA50N03BD“Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12”12TO252 - 3N-MOSFET0.5746.888
Res21K“R1, R35, R36, R50, R51”5R 0603_LRes2Resistor0.0060.03
Res212KR21R 0603_LRes2Resistor0.0060.006
Res222Ω“R3, R5”2R 0603_LRes2Resistor0.0059740.011948
Res24.7K“R4, R24, R25, R26, R29, R30, R31, R41, R45, R56, R57, R68, R69”13R 0603_LRes2Resistor0.0060.078
Res243K“R6, R9, R13, R15, R19, R21, R27”7R 0603_LRes2Resistor0.0060.042
Res23.3ΩR71R 0603_LRes2Resistor0.0095720.009572
Res23.9K“R8, R11, R14, R16, R20, R22, R28”7R 0603_LRes2Resistor0.0060.042
Res2“R10, R12”2R 0603_LRes2Resistor0.0060.012
Res2910KΩR231R 0603_LRes2Resistor0.0060.006
Res260Ω“R32, R33”2R 0603_LRes2Resistor0.0102540.020508
Res24.7KΩ“R34, R67”2R 0603_LRes2Resistor0.0060.012
Res2“R37, R52”2R 0603_LRes2Resistor0.0062070.012414
Res210“R38, R39, R40, R42, R43, R44, R53, R54, R55, R58, R59, R60”12R 0603_LRes2Resistor0.0067360.080832
Res256Ω“R46, R47, R61, R62”4R 0603_LRes2Resistor0.0067780.027112
Res20.005Ω 4W“R48, R49, R63, R64, R65, R66”6R 2512_MRes2Resistor0.0060.036
SW-PBS11TSW SMD-6*6*5SW-PBSwitch0.26790.2679
XL2011U11SOP8_NXL20115V/2.1A DC-DC Buck电源芯片(<50V)1.97281.9728
CJT1117-3.3U21SOT223_NVolt RegVoltage Regulator0.68730.6873
STM32F405RGT6U31LQFP64-10x10mmSTM32F405RGT6No Description Available4545
TJA1040U41SOP8_NTJA1040CAN收发器9.029.02
DRV8303“U5, U6”2DCA48_4P42X3P48DRV8303“THREE PHASE PRE-DRIVER WITH DUAL CURRENT SHUNT AMPLIFIERS, DCA0048A”2040
8MHzY11OSC 3225-4PXTALCrystal Oscillator1.99891.9989
Total129.472486

🚀 快速上手

  1. 可使用AD软件打开 FOC_Controller.PcbDoc 文件,根据需要进行修改或生成Gerber文件发送给PCB板厂进行制作。工艺为四层板,建议外层铜厚1oz及以上,内层铜厚0.5oz及以上。
  2. 使用趁手的焊台进行焊接。
  3. 检查焊接与上电是否正常。
  4. 进行FOC控制代码的设计与验证。(或等我更新)

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

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

相关文章

2022年艺术品和古董投资策略研究报告

第一章 行业概况 艺术品是艺术家智力劳动成果的结晶。作为一种特殊商品流通于艺术市场&#xff0c;与其他商品相同的是&#xff0c;它也具备普通商品的基本属性&#xff1a;使用价值和价值。不同的是&#xff0c;艺术品的使用价值体现在精神层面而不是物质层面上&#xff0c;它…

RabbitMQ消息队列实战(1)—— RabbitMQ的体系

RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;用来在不同的应用之间共享数据。1983年&#xff0c;被认为是RabbitMQ的雏形的Teknekron创建&#xff0c;首次提出了消息总线的概念。中间经历过数个阶段的发展&#xff0c;一直到2004年&#xff0c;AMQP&#xff08;Advan…

02.指针的进阶

1.字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* ; 一般使用: int main() {char ch w;char *pc &ch;*pc w;return 0; } char * p---const char * p(因为常量字符串不能被修改) #include<stdio.h> int main() {const char * pstr "hel…

从汇编的角度了解C++原理——虚函数

文章目录1、虚函数1.1、虚函数储存结构1.2、子类重写虚函数1.3、在栈上调用虚函数1.4、在堆上调用虚函数(通过指针调用&#xff0c;多态)本文用到的反汇编工具是objconv&#xff0c;使用方法可以看我另一篇文章https://blog.csdn.net/weixin_45001971/article/details/12866064…

编译基于armV8架构的opencv,并在rock3a开发板上运行

近期在基于arm开发板做图像识别任务开发时&#xff0c;需要用到Opencv库 之前在做rknpu开发时&#xff0c;开发sdk里面已经集成了opencv 但是该opencv开发包不能实现imshow/VideoCapture等函数&#xff0c;经过调研&#xff0c;决定对opencv源代码进行编译&#xff0c;生成arm…

安科瑞能耗监测系统在新疆昌吉市政务中心项目的研究与应用

安科瑞 华楠摘要&#xff1a;大型公共建筑总面积不足城镇建筑总面积的4%&#xff0c;但总能耗却占全国城镇总耗电量的22%&#xff0c;大型公共建筑单位面积年耗电量达到70&#xff5e;300KWh&#xff0c;为普通居民住宅的10&#xff5e;20倍。公共建筑是节能大户和节能核心&…

Delphi 11.2 安装 CnWizards 组件包

官方网址&#xff1a;https://www.cnpack.org/showdetail.php?id900&langzh-cn 开源免费的组件包&#xff0c;大大提高了开发效率&#xff0c;再次感谢大佬们的无私奉献 这个组件包主要是为了实现一些delphi没有的便捷设置&#xff0c;以及能给delphi增加了一些好用的辅助…

惊艳的产品背后,是锐利的设计思维

缘起 几年前&#xff0c;我偶然用一个 叫 Zine 的小app 写了两篇文章&#xff0c;感觉非常好。 后来在网上认识 了Zine 团队的创始人 Louis&#xff0c;也喜欢上了他们的另一个 App&#xff1a;Varlens&#xff0c; 最近他们推出了记笔记的 App Lattics&#xff0c;一些功能也…

《 Unity Shader 入门精要》 第3章 Unity Shader 基础

第3章 Unity Shader 基础 3.1 Unity Shader 概述 材质与 Unity Shader 在 Unity 中我们通常需要将材质&#xff08;Material&#xff09; 和 Unity Shader 配合使用&#xff0c;常见流程如下&#xff1a; 创建一个材质创建一个 Unity Shader&#xff0c; 并将它赋给材质将材…

Android View类

布局定义了应用中的界面结构&#xff08;例如 Activity 的界面结构&#xff09;。布局中的所有元素均使用 View 和 ViewGroup 对象的层次结构进行构建。View 通常用于绘制用户可看到并与之交互的内容。ViewGroup 则是不可见的容器&#xff0c;用于定义 View 和其他 ViewGroup 对…

AppScan自定义扫描策略,扫描针对性漏洞

系列文章 AppScan介绍和安装 AppScan 扫描web应用程序 AppScan被动手动探索扫描 AppScan绕过登录验证码深入扫描 第五节-AppScan自定义扫描策略&#xff0c;扫描针对性漏洞 AppScan安全扫描往往速度是很慢的&#xff0c;有些场景下他的扫描项目又不是我们需要的&#xff0c;…

如何实现六轴机械臂的逆解计算?

1. 机械臂运动学介绍 机械臂运动学 机器人运动学就是根据末端执行器与所选参考坐标系之间的几何关系&#xff0c;确定末端执行器的空间位置和姿态与各关节变量之间的数学关系。包括正运动学&#xff08;Forward Kinematics&#xff09;和逆运动学&#xff08;Inverse Kinemati…

渔业养殖远程监控系统解决方案

传统的水产养殖依靠养殖者的经验进行观察&#xff0c;信息不准确&#xff0c;调控不及时&#xff0c;养殖规模扩大难&#xff0c;人工成本高。除此之外传统水产养殖以个户居多&#xff0c;生产管理方式粗放&#xff0c;个体生产能力不足&#xff0c;养殖产品的品质难以保障。 …

AppScan扫描报告

系列文章 AppScan介绍和安装 AppScan 扫描web应用程序 AppScan被动手动探索扫描 AppScan绕过登录验证码深入扫描 AppScan自定义扫描策略&#xff0c;扫描针对性漏洞 第六节-AppScan扫描报告 1.加载扫描结果 1.点击【打开】 2.选择之前保存过的扫描结果 3.等待加载完成 …

RK35XX(3568) Android WSL ubuntu22.04 编译环境配置

前言&#xff1a;装Ubuntu真机操作是很流畅但是没什么软件&#xff0c;装Vmware虚拟机操作卡顿配置也麻烦。那不如试一试wsl吧&#xff0c;命令行操作&#xff0c;流程又快捷wsl简介&#xff1a;适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大…

JAVA面试(如何进行有效面试)

1、什么是面试它是一种面试人与求职者之间相互交流信息的有目的的会谈。它使招聘方和受聘方都能得到充分的信息&#xff0c;以在招聘中作出正确的决定。面试是一个双方彼此考量和认知的过程。2、面试的目标从求职者那里获取与个人行为、工作有关的信息&#xff0c;以确定求职者…

c语言数组复习

1、一维数组 ----------&#xff08;1&#xff09;、键盘输入 10 个数&#xff0c;求最大值和最小值&#xff08;最简单的方法&#xff09; ----------&#xff08;2&#xff09;、数组的逆置 #include<stdio.h> void test01() {int arr[10] { 0 };int n sizeof(arr)…

【IoT】硬件选型:如何正确区分电子线的端子型号?

问题提出 笔者最近负责的一款重力传感器由于没有端子&#xff0c;需要在生产时自己压端子&#xff0c;这个时候就会涉及端子的选择。 端子介绍 一般来说&#xff0c;端子有多种不同的型号&#xff0c;在使用的时候&#xff0c;你必须要注意到每种型号之间的差别。 端子一般有XH…

权限管理---尚硅谷

1.项目基础 2.定义统一返回结果对象 3.Nodejs 4.前端内容编写 5.菜单详情 6.SpringSecurity权限管理 7.添加登录日志 8.操作日志 9.后端打包 10.前端打包 11.动态sql日期的判断 项目基础 定义统一返回结果对象定义全局统一返回结果类 import lombok.Data;/*** 全局统一返回结果…

小程序容器技术助力突破智能汽车瓶颈

作为一种综合系统&#xff0c;智能车辆集环境感知、规划决策、多等级辅助驾驶等功能于一体。近年来&#xff0c;智能车辆已经成为世界车辆工程领域研究的热点和汽车工业增长的新动力&#xff0c;很多发达国家都将其纳入到各自重点发展的智能交通系统当中。在共享经济兴起和汽车…