上封帖子介绍了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;
- }
- }
- }
复制代码
所有资料51hei提供下载:
JMT18F003 BLDC资料.rar
(6.03 MB, 下载次数: 1262)
|