上封帖子介绍了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有感无感全开源,轻松实践直流无刷电机控制(程序+电路详解)...相关推荐

  1. java.exe 安装程序_java实现可安装的exe程序实例详解

    java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格 ...

  2. BLDC有感无刷电动车控制器方案,基于STC12/STM32开发

    BLDC有感无刷电动车控制器方案,基于STC12/STM32开发61299616684285144工控助手0101

  3. BLDC有感无刷电动车控制器方案

    BLDC有感无刷电动车控制器方案,基于STC12/STM32开发. 编号:31299616684285144工控助手0101

  4. diy无感无刷电机霍尔安装_新型无感无刷电机驱动的制作方法

    本实用新型涉及,具体为新型无感无刷电机驱动. 背景技术: 无刷直流电机由电动机主体和驱动器组成,是一种典型的机电一体化产品.无刷电机是指无电刷和换向器(或集电环)的电机,又称无换向器电机.早在十九纪诞 ...

  5. diy无感无刷电机霍尔安装_霍尔传感器常见的有那几个类别

    对霍尔元件有研究的应该都知道,霍尔电势是关于I.B.θ三个变量的函数,即: E= Kq IBcosθ利用这个关系可以使其中两个量不变,将第三个量作为变量,或者固定其中一个量,其余两个量都作为变量.这使 ...

  6. diy无感无刷电机霍尔安装_从工作原理来了解意大利Brusatori无刷电机

    2020年12月16日 15:39   来源: 东莞索菲特自动化设备有限公司    >>进入该公司展台 意大利Brusatori无刷电机工作原理介绍如下: 无刷直流电动机是采用半导体开关器 ...

  7. diy无感无刷电机霍尔安装_无刷电机之无感方案控制难点解析

    无刷无感控制在实际应用中极为广泛,人们对它的研究也尤为以久,它的控制难点主要有两点:第一,电机的启动:第二,转子位置的检测. 对于高压无感方案来讲,除了软件上的难点之外,硬件设计也不容忽视,如硬件设计 ...

  8. diy无感无刷电机霍尔安装_无刷直流电机霍尔传感器安装方法研究

    无刷直流电机霍尔传感器安装方法研究 常亚辉 ; 王莎莎 ; 李建春 ; 郭立杰 [期刊名称] <导航与控制> [年 ( 卷 ), 期] 2015(014)004 [摘要] 针对有位置传感器 ...

  9. java mysql settings_Java中使用MySQL从安装、配置到实际程序测试详解

    By zieckey(zieckey@yahoo.com.cn) All Rights Reserved! 这里假设你的Java开发环境已经搭建好了. 一.准备工作: 下载MySQL:mysql-5. ...

最新文章

  1. 把数学函数印在T恤上却被告侵权,这位程序员怒了
  2. windows下redis 和 hiredis的编译与使用
  3. 碘类滴眼液相关资料(国内+国外)
  4. js中关于Blob对象的介绍与使用
  5. RUNOOB python练习题5
  6. 音视频应用驶入快车道 开发者如何快速追赶这波技术红利?
  7. 3-4笔刷的详细设定
  8. mysql 键缓冲区_mysql:键缓存
  9. unsupported major.monor version 51.0 (unable to load *.servlet)………………
  10. AI速查表:神经网络、机器学习、深度学习与数据科学一览
  11. 组态软件MCGS(昆仑通态)初识
  12. bootstrap日期插件的使用
  13. php源雄武,8个新鲜的PHP常用代码
  14. python中take函数_Python Pandas Series.take()用法及代码示例
  15. Typora崩溃 与 设置备份
  16. Mapgis 到ArcGis 双向转换
  17. 计算机科学家李蕴瑶,青年科学家:跨学科研究是粘合剂 更是捷径
  18. 低代码行业未来如何?
  19. [转载]综合运用:我的错题本(八3班吴潇同同学找供)
  20. excel两个表格数据对比_Excel如何对比两列数据

热门文章

  1. 时之歌 服务器维护,时之歌Project
  2. 《企业管理学》——决策与决策方法知识点总结
  3. 苹果网络变成lte开不了热点解决方法
  4. 详解防抖函数(debounce)和节流函数(throttle)
  5. matlab-min函数
  6. 关于FSC认证的3种标签
  7. 计算机应用基础—多媒体技术(三)
  8. python学习笔记-结构化
  9. 三星的芯片代工业务增速最快,成为台积电的强劲对手
  10. JS 获取 今日、昨日、本周、本月、本季度、本年、上月、上周、上季度、去年...