基于给出的工程模板,做无刷直流电机的模拟调试。
1、调试开始前,测量电机参数:
①用万用表两两测出线电阻分别为:1.4/1.5/1.6,取平均电阻1.5Ω,相电阻为0.75Ω;
②用数字电桥在1KHz下两两测出线电感为4.45/4.34/4.1mH,取平均电感4.297mH;相电感为2.15mH;
③用示波器测出两相间反电动势峰峰值为67.6V,周期约150ms--即频率6.67Hz,极对数为2,求得反电动势常数97.09;
④基于电机参数,设置额定转速为3000,速度基准取两倍即6000;
2、选择模拟调速模式:
转动旋钮,经过AD转换,可发现电机转速随VR1的模拟值大小发生变化,在keil51调试模式下,可读取ADCSpeed值变化区间:0x0018-0x7FF7,即00024-32758;
下限:
上限:
速度实际值ActualValue变化区间:0x000-0x3FFF;
下限:上限:
转动VR1即可调速,此处便不展示了;
- void main(void)
- {
- uint16 PowerUpCnt = 0;
- /*********上电等待*********/
- for (PowerUpCnt = 0; PowerUpCnt < SystemPowerUpTime; PowerUpCnt++);
- /* ADC参考电压电压配置 */
- VREFConfigInit();
- /* Hardware & Software I0nitial */
- HardwareInit();
- SoftwareInit();
- DebugSet();
- /* 总中断使能 */
- EA = 1;
- while (1)
- {
- if(GP13==0){while(1){VSP=0x7FF6;if(GP42==0)break;}}
- if(GP42==0){while(1){VSP=0x1111;if(GP13==0)break;}}
- // VSP:0x17-0x7FF6;
- /* -----Current calibration----- */
- GetCurrentOffset();
- /* -----Motor Control State----- */
- MC_Control();
- _nop_();
- }
- }
3、本来想做FU6832L板与外部单片机的UART通信,实现由51单片机温度传感器通过串口改变VSP值,从而实现电机转速随温度变化,但手边的51单片机只有USB转TTL的模块芯片,干不了;想做模拟风扇多模式多档位调节,但是Speed_Mode不允许切换状态,定速模式也不允许更改数值,最后把VR1旋钮和滤波禁掉,采用赋值的方式进行按键切换,并加入中断模拟定时关闭(或降速)功能。
but,遇见了一个问题,所以还没实现中断功能,找不到教程如何将P1_IE寄存器只配置为P1.3口的控制状态,函数如下:
- #include <MyProject.h>
- #include "Delay.h"
- void Int0init()
- {
- EX1=0;//中断2使能位
- P1_IE=1;//使能
- P1_IF=0;//标志位
- ClrBit(P1_OE, P13);//配置P0.0等为可使用状态
- //SetBit(P1_PU, P13);//输入使能,上拉
- //
- // 如何让P1.3开关控制P1_IF是目前没能解决的问题
- //
- ClrBit(TCON,IT11);//下拉触发中断
- SetBit(TCON,IT10);
- }
- void main()
- {
- uint16 PowerUpCnt = 0;
- SetBit(P4_OE, P44);//配置LED等为可使用状态
- SetBit(P4_PU, P44);
- Int0init();
- EX1=1;
- EA=1;
- for (PowerUpCnt = 0; PowerUpCnt < SystemPowerUpTime; PowerUpCnt++);
- while(1)
- {
- switch(mode)
- {
- case(1):if(mode==1){VSP=0x7ff0;GP44=0;}break;
- case(2):if(mode==2){VSP=0x2ff0;GP44=1;}break;
- case(3):if(mode==3){VSP=0x0017;GP44=!GP44;Delay(2000);}break;
- }
- }
- }
- void INT1 interrupt 1
- {
- if(GP13==0)
- {
- GP13=1;
- Delay(1000);
- if(GP13==0)
- {GP13=1;
- mode++;
- if(mode>=4)
- {
- mode=1;
- }
- while(!GP13);
- }
- }
- }
最后,永磁同步电机卡路上了(青岛封校小20天了),一些功能也因为缺少器件做不出来,更主要的问题是,自己还有很多的东西要学,感觉还没摸索到这块板子的百分之一,继续干吧。