diy无感无刷电机霍尔安装_51 MCU,BLDC有感无感全开源,轻松实践直流无刷电机控制(程序+电路详解)...
上封帖子介绍了51单片机,JMT18F003PLUS,提供了芯片例程和资料,链接如下:
JMT18F003PLUS单片机芯片手册,例程等资料下载
http://www.51hei.com/bbs/dpj-148985-1.html
(出处: 51hei)
这里把这款芯片用于直流无刷电机控制的demo程序,有感和无感源代码,一并开源,希望对学习者有帮助。
BLDC demo板是这样的:
芯片资料,bldc控制板简要说明,原理图,有感和无感的开源软件等等,请点击下载:
JMT18F003 PLUS BLDC DEMO 板应用笔记
1. 简介
本应用笔记讨论了使用 JMT18F003 PLUS 控制芯片对无刷直流电机(Brushless Direct Current Motor, BLDC)进行方波算法的控制。
2. JMT18F003 PLUS 芯片特点
8位MCU,兼容 MCS51指令集;
内核运行最高频率 24.576MHz;
8K字节Flash、1K字节外部 RAM、128 字节内部RAM;
2个高性能 16位 PWM 模块,最高运行频率 73.728MHz,其中 PWM0支持3路互补加 1路独立PWM, PWM1支持 1路互补PWM;
1 个 12 通道的 10 位 ADC、1 个可编程运算放大器(4 组差分输入) 、1个模拟比较器(4组可切换) 、3个 Timer、1个蜂鸣器输出;
通信接口:SPI总线、 I2C总线、 UART总线接口;
支持 JTAG 调试。
3. 电机开发板使用说明
3.1 电机板如下图 1 所示,包括以下资源:
控制芯片:JMT18F003 PLUS芯片;
24V-DC电源接口:为电机板提供24V直流电;
电机U/V/W 接口:连接电机的3根控制线;
电机霍尔接口:连接电机霍尔信号的五根控制线,从左至右依次为: HC、HB、HA、VDD、GND;
串口:用于程序下载和打印调试信息;
滑阻:通过改变滑阻的大小,实现对电机转速的控制;
采样电阻:0.05欧;
排针J5、J6、J7:通过跳线帽选择电机运行方式为无感或有感;
按键S1、S2:用户自定义。
3.2 电机板使用注意点
由于下载串口的 RX管脚与滑阻管脚复用,在使用的时候只能二选一;
电机控制方式选择如图 2 所示,排针 J5、J6、J7 按图 2 左边方式短接则表示选择的电机控制方式为无感控制方式,按图 2右边方式短接则表示选择的电机控制方式为有感控制方式。
JMT18F003 PLUS BLDC DEMO板原理图如下:
4.1JMT18F003 PLUS主控芯片电路如下图所示
4.2 供电模块电路
电压为24V供电,经过如下电路转为5V 电压,给芯片供电。
4.3 PWM MOS 管及驱动电路
4.4 电机反电动势采样电路
4.5 电机霍尔信号输入电路
4.6 电流采样电路
电机板默认采用内部放大电路对电流进行 AD采样。
5. 软件参数设置
电机控制方式选择 SENSORMODE、极对数 POLE_PAIRS、转速范围、电压保护
参数、电流保护参数等参数都位于MotorPara.h文件中。示例如下图所示。
电机控制方式选择SENSORMODE选择为0时,表示选择无感控制电机的方式,主板需要按图 2 左边的排针接法连接;SENSORMODE 选择为 1 时,表示选择有感控制电机的方式,主板需要按图2右边的排针接法连接。
注意:
1、除 PWM 外的其他模块的时钟由片内 24.576MHz(由片内 73.728MHz 高频振荡器产生的时钟经过 3 分频得到)或外部晶振(最高 24MHz)或片内低频振荡器产生的32.768KHz 时钟提供
2、由于滑阻VSP与RXD共用引脚,故调速是RXD不可接串口
3、UVW:红黄黑 HCHBHA:黄白蓝 HUHVHW:CW-326451;CCW-623154
单片机源程序如下:
#include "main.h"
/*****************************************************************************
函 数 名 : main
功能描述 : 主函数
输入参数 : 无
输出参数 : void
*****************************************************************************/
void main()
{
StartParaInit();
WDT_Init();
Crpm_Init();
Port_Init();
UART_Init();
Interrupt_Init();
ADC_Init();
CMP_Init();
Pss("V0.1", NONE);
PWM_Init();
#if(SENSORMODE)
PWM1_Init();
#else
Timer0_Init();
#endif
while(1)
{
switch(MasterState)
{
case Startup:
Ps("Start", NONE);
Fault_InitOverUnderVoltage(); // 电源电压判断
UserSpeedControlInit(); //滑阻判断
MasterState = Operation;
mcState = mcInit;
break;
case Operation:
MotorControl();
if(ADCIntProtectCnt >= 5) // 250us
{
Fault_OverCurrent();
Fault_OverUnderVoltage();
UserSpeedControl();
ADCIntProtectCnt = 0;
}
break;
default:
MotorStop();
break;
}
}
}
复制代码
#include "common.h"
MasterState_T MasterState;
MotorState_T mcState;
volatile u8 xdata Phase = 0; // 相位
volatile u8 xdata NextPhase = 0;
volatile u8 xdata MotorRotation = CW; // 电机转动方向
volatile u8 xdata TuneDutyRatioCnt = 0; // 调整转速占空比的周期计数
volatile u16 xdata PWMDutyCycle = 0; // PWM占空比
volatile u16 xdata CurrentPgaSample = 0;
volatile u16 xdata CurrentSample = 0; // 电流采样值
volatile u16 xdata VoltageSample = 0; // 电压采样值
volatile u16 xdata UserSpeedSample = 0; // 用户调速采样值
volatile u8 xdata ADCIntProtectCnt = 0; // ADC中断计数保护
volatile u8 xdata flag_ADCSample = 0; // AD采样时的通道切换标志
volatile u8 xdata flag_ErrorException = 0; // BIT0:Timer2计数超时 BIT1:比较器中断异常 BIT2:长短波启动超时 BIT3:长短波电流采样过流 BIT4:ADC采样换相异常 BIT5:CMP换相异常
volatile u8 xdata LastPhase = 0;
volatile u8 xdata SamePhaseCnt = 0;
// 电转速60度时间
volatile bit flag_SpeedTime = 0;
volatile u8 xdata SpeedTimeCnt = 0;
volatile u16 xdata SpeedTime = 0;
volatile u16 xdata SpeedTimeTemp = 0;
volatile u32 xdata SpeedTimeSum = 0;
volatile u16 xdata MotorSpeed = 0;
volatile u16 xdata UserRequireSpeed = 0; // 用户请求转速
volatile u8 xdata RheostatCnt = 0; // 调速信号
// 保护计数
volatile u8 xdata VoltageProCnt = 0;
volatile u8 xdata CurrentPgaProCnt = 0;
volatile u8 xdata CurrentProCnt = 0;
#if(SENSORMODE)
volatile u8 xdata NowHallState = 0; // HALL当前位置
volatile u8 xdata PreHallState = 0; // 前次HALL位置
volatile bit flag_HallStateRight = 0;
volatile u16 xdata OverflowCnt = 0; // PWM1捕获上溢中断计数
#else
volatile u16 xdata NeutralPoint = 0;
volatile u16 xdata UBemf = 0;
volatile u16 xdata VBemf = 0;
volatile u16 xdata WBemf = 0;
volatile u8 xdata BlankingCnt = 0;
volatile u8 xdata CheckZeroCrossState = 0;
volatile u8 xdata Timer0OutCnt = 0; // 换相超时
volatile u16 xdata ADCTimeCnt = 0; // ADC中断计数
volatile u16 xdata DragTime = 0;
#endif
/*****************************************************************************
函 数 名 : Common_Init
功能描述 : 全局变量初始化
输入参数 : 无
输出参数 : void
*****************************************************************************/
void Common_Init()
{
Phase = 0;
NextPhase = 0;
TuneDutyRatioCnt = 0;
PWMDutyCycle = PWM_DUTYCYCLE_05;
CurrentPgaSample = 0;
CurrentSample = 0; // 电流采样值
VoltageSample = 0; // 电压采样值
UserSpeedSample = 0;
ADCIntProtectCnt = 0;
flag_ADCSample = 0;
flag_ErrorException = 0;
LastPhase = 0;
SamePhaseCnt = 0;
flag_SpeedTime = 0;
SpeedTimeCnt = 0;
SpeedTime = 0;
SpeedTimeTemp = 0;
SpeedTimeSum = 0;
MotorSpeed = 0;
UserRequireSpeed = 0; // 用户请求转速
RheostatCnt = 0;
VoltageProCnt = 0;
CurrentPgaProCnt = 0;
CurrentProCnt = 0;
#if(SENSORMODE)
NowHallState = 0;
PreHallState = 0;
flag_HallStateRight = 0;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
JMT18F003 BLDC资料.rar(6.03 MB, 下载次数: 268)
diy无感无刷电机霍尔安装_51 MCU,BLDC有感无感全开源,轻松实践直流无刷电机控制(程序+电路详解)...相关推荐
- java.exe 安装程序_java实现可安装的exe程序实例详解
java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格 ...
- BLDC有感无刷电动车控制器方案,基于STC12/STM32开发
BLDC有感无刷电动车控制器方案,基于STC12/STM32开发61299616684285144工控助手0101
- BLDC有感无刷电动车控制器方案
BLDC有感无刷电动车控制器方案,基于STC12/STM32开发. 编号:31299616684285144工控助手0101
- diy无感无刷电机霍尔安装_新型无感无刷电机驱动的制作方法
本实用新型涉及,具体为新型无感无刷电机驱动. 背景技术: 无刷直流电机由电动机主体和驱动器组成,是一种典型的机电一体化产品.无刷电机是指无电刷和换向器(或集电环)的电机,又称无换向器电机.早在十九纪诞 ...
- diy无感无刷电机霍尔安装_霍尔传感器常见的有那几个类别
对霍尔元件有研究的应该都知道,霍尔电势是关于I.B.θ三个变量的函数,即: E= Kq IBcosθ利用这个关系可以使其中两个量不变,将第三个量作为变量,或者固定其中一个量,其余两个量都作为变量.这使 ...
- diy无感无刷电机霍尔安装_从工作原理来了解意大利Brusatori无刷电机
2020年12月16日 15:39 来源: 东莞索菲特自动化设备有限公司 >>进入该公司展台 意大利Brusatori无刷电机工作原理介绍如下: 无刷直流电动机是采用半导体开关器 ...
- diy无感无刷电机霍尔安装_无刷电机之无感方案控制难点解析
无刷无感控制在实际应用中极为广泛,人们对它的研究也尤为以久,它的控制难点主要有两点:第一,电机的启动:第二,转子位置的检测. 对于高压无感方案来讲,除了软件上的难点之外,硬件设计也不容忽视,如硬件设计 ...
- diy无感无刷电机霍尔安装_无刷直流电机霍尔传感器安装方法研究
无刷直流电机霍尔传感器安装方法研究 常亚辉 ; 王莎莎 ; 李建春 ; 郭立杰 [期刊名称] <导航与控制> [年 ( 卷 ), 期] 2015(014)004 [摘要] 针对有位置传感器 ...
- java mysql settings_Java中使用MySQL从安装、配置到实际程序测试详解
By zieckey(zieckey@yahoo.com.cn) All Rights Reserved! 这里假设你的Java开发环境已经搭建好了. 一.准备工作: 下载MySQL:mysql-5. ...
最新文章
- 把数学函数印在T恤上却被告侵权,这位程序员怒了
- windows下redis 和 hiredis的编译与使用
- 碘类滴眼液相关资料(国内+国外)
- js中关于Blob对象的介绍与使用
- RUNOOB python练习题5
- 音视频应用驶入快车道 开发者如何快速追赶这波技术红利?
- 3-4笔刷的详细设定
- mysql 键缓冲区_mysql:键缓存
- unsupported major.monor version 51.0 (unable to load *.servlet)………………
- AI速查表:神经网络、机器学习、深度学习与数据科学一览
- 组态软件MCGS(昆仑通态)初识
- bootstrap日期插件的使用
- php源雄武,8个新鲜的PHP常用代码
- python中take函数_Python Pandas Series.take()用法及代码示例
- Typora崩溃 与 设置备份
- Mapgis 到ArcGis 双向转换
- 计算机科学家李蕴瑶,青年科学家:跨学科研究是粘合剂 更是捷径
- 低代码行业未来如何?
- [转载]综合运用:我的错题本(八3班吴潇同同学找供)
- excel两个表格数据对比_Excel如何对比两列数据