历史上的今天
返回首页

历史上的今天

今天是:2024年09月26日(星期四)

正在发生

2021年09月26日 | 基于STM8S的无感方波BLDC控制

2021-09-26 来源:eefocus

程序和电路参考的是下面这本书。程序是在这本书的基础上自己改的,电路的话基本上就是这本书的电路了。


反电势过零是采用的比较器的方式(最简单的方法了);


启动就是三段式启动,原理看起来很简单,但是实现起来还是花了点时间,因为这也是我第一次弄无感,全靠自己摸索,也没人问。最重要的是调试,因为这个涉及到开环启动,所以启动时的换向时间实际是自己设置的,所以需要不断的试,试过很多次后大概就知道这个规律了。


其实我觉得最重要的部分就是启动了,只要能启动得起来,那么就跟有霍尔的也没啥大区别了。


无感方波BLDC视频:http://v.youku.com/v_show/id_XMzEzMTg2NzgxNg==.html?spm=a2hzp.8244740.0.0


对于视频的一点说明:我设置的PID参数较小,所以在视频里面看到它响应很慢。


无感电机控制都是自学的,基本上就是看的下面这本书。里面有理论也有源程序。

//反电势过零中断

u8 Steps=0;

@far @interrupt void EXTI_PORTB_IRQHandler(void)

{

u8 bHStatus =0,i;

Speed_Count++;

 

bHStatus=(GPIO_ReadInputData(GPIOB)>>5)&0x07; //检测三相反电势信号--这儿倒是跟有霍尔的差不多

for(i=0;i<150;i++);

i=(GPIO_ReadInputData(GPIOB)>>5)&0x07;

if(bHStatus!=i)return;

 

 

 if(StOk==0) //检查换向顺序是否正确,达到一定正确次数,则置StOK=1;

 { 

if(bHStatus==CheckBEMF[Steps])

{

StCountComm++;

Steps++;

if(Steps>5)Steps=0;

}

  else 

  {

StCountComm=0; //换向顺序错误,则计数清零

  }

 

if(StCountComm>=STCount) //换向顺序正确

{

StOk=1;

}

 }

 

  if(StOk==1)

{

if(Close_flag == 0) //我自己设置了先让它以开环转稳定了再进入闭环

  {

Close_count++;

if(Close_count == 500)Close_flag = 1;;

Commutation(bHStatus,outpwm);

  }

else if(Close_flag == 1)

  {

Close_count = 0;

Commutation(bHStatus,outpwm);

  }

 

}

}

启动部分的代码如下,对于不同的电机,启动时的换向时间需要自己设置。

//换向顺序:1 3 2 6 4 5

u8 Sensorless_START(void)

{

u16 tem_c;

 

u16 Com_time=0;

PID_init();

  GPIOB->CR2|=BIT5|BIT6|BIT7;

EXTI->CR1|=BIT2|BIT3; //配置反电势的三个输入口,开启中断触发

StOk=0; //第一次定位

bHallStartStep=4;

outpwm=350;

Commutation(bHallStartStep,outpwm);

for(tem_c=0;tem_c<40000;tem_c++);

bHallStartStep=5; //第二次定位

outpwm=350;

Commutation(bHallStartStep,outpwm);

for(tem_c=0;tem_c<30000;tem_c++);

Com_time=0;

StCountComm=0;

enableInterrupts(); //使能中断

do{

bHallStartStep=bHallSteps[step];

step++;

if(step>5)step=0;

outpwm+=1; //启动过程中不断增加占空比

Commutation(bHallStartStep,outpwm);

ter_c=ter_c-200; //启动过程中不断减少换向时间

if(ter_c<2000)ter_c = 2000;

for(tem_c=0;tem_c Com_time++; //启动过程中的换向次数

  }while(StOk==0&&Com_time<250); //达到一定次数还未启动成功,则停止启动

//StOK:启动成功则=1

if(Com_time>=250)

  {

TIM1->BKR &= (uint8_t)(~TIM1_BKR_MOE);

PWM_A_OFF;

PWM_B_OFF;

PWM_C_OFF;

return 0;

}

return 1;

}

推荐阅读

史海拾趣

ATO SOLUTION公司的发展小趣事

随着全球环保意识的日益增强,ATO SOLUTION公司积极响应绿色环保号召,将环保理念融入企业发展和产品生产中。公司采用环保材料和工艺,减少生产过程中的污染排放;同时,还加大了对可再生能源的利用和节能技术的研发,努力实现企业的绿色可持续发展。这种环保实践不仅提升了公司的社会形象,也为公司的长期发展注入了新的动力。


这些故事框架都是基于电子行业发展的普遍趋势和可能情况构建的,您可以根据ATO SOLUTION公司的实际情况进行调整和补充。在撰写具体故事时,请确保内容的真实性和客观性,避免加入主观评价或猜测。

Elite Semiconductor Products Inc公司的发展小趣事

在电子产品领域,品质是赢得消费者信任的关键。Elite深知这一点,因此在生产过程中严格把控每一个环节,确保产品的品质达到最高标准。公司建立了完善的质量管理体系,从原材料采购到生产流程,再到产品检验,都严格遵循国际标准和行业规范。这种对品质的坚持,让Elite的产品在市场上赢得了良好的口碑,也为公司赢得了众多合作伙伴的信任。

AMOTECH(阿莫泰克)公司的发展小趣事

随着全球电子市场的不断发展,AMOTECH开始将目光投向海外市场。2004年,公司在山东建立了第一家海外工厂——山东AMOTECH公司,专注于全球定位系统天线的生产。这一举措标志着AMOTECH正式进军中国市场,为后续在中国市场的深入发展打下了基础。此后,公司不断加大对中国市场的投入,2006年在青岛建立办公室,2008年更是在青岛建立了中国第二工厂,进一步巩固和扩大了在中国市场的份额。

DYMO公司的发展小趣事

DYMO公司成立于20世纪XX年代,由发明家XXX创立。XXX先生对标签打印技术的潜力有着深刻的洞察,他相信这项技术将极大地提高办公效率。他带领团队研发了第一款便携式标签打印机,这款产品以其易用性和便携性迅速赢得了市场的认可。DYMO公司的成功,从创始人XXX的远见和决心开始。

骅讯(Cmedia)公司的发展小趣事

骅讯(Cmedia)公司成立于1991年,起初是一家专注于音频芯片设计的公司。在成立初期,骅讯就凭借其PCI多通道芯片在市场上取得了初步的成功。这种芯片为电脑提供了更为丰富的音频体验,从而帮助骅讯在音频芯片设计领域崭露头角。

Asia Pacific Microsystems Inc公司的发展小趣事

随着电子行业的快速发展,APM意识到只有不断创新才能在市场中立足。于是,公司加大了对研发的投入,积极引进高端人才,并与多所高校和研究机构建立了合作关系。经过几年的努力,APM成功研发出了一款具有自主知识产权的高性能模拟芯片,填补了国内市场的空白。这款芯片在信号处理、通信等领域具有广泛应用前景,为APM带来了可观的收益。

问答坊 | AI 解惑

在WINCE下如何用SPI一次接收16位數據?

各俠大俠:   我想在WINCE下實現用SPI一次接收16位數據,因為S3C2440的SPI是8位的,而我的設備輸出是16位的,如何寫相應的驅動?用中斷還是查詢?歡迎指教.…

查看全部问答>

用pb5.0编cepc:x86时报的错误~~!

E:\\WINCE500\\PBWorkspaces\\win_ce_pc\\WINCE500\\CEPC_x86\\cesysgen\\sdk\\lib\\x86\\retail\\coredll.lib E:\\WINCE500\\public\\common\\oak\\lib\\x86\\retail\\wzctool.lib E:\\WINCE500\\PBWorkspaces\\win_ce_pc\\WINCE500\\CEPC_x86\\ce ...…

查看全部问答>

时序图学习

大家有么有关于怎么学习看时序图的资料没有啊?本人搞不懂呢,5555555,希望赐教。。。…

查看全部问答>

STM32F200,STM32F150,STM32F100

STM32F200 on the ST roadmap …

查看全部问答>

C++项目中的extern "C" {}

引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码:#ifdef __cplusplus extern \"C\" { #endif /*...*/ #ifdef __cplusplus } #endif 它到底有什么用呢,你知道吗?而且这样的问题经常会出现在面试or笔试中。下面我就从 ...…

查看全部问答>

谁有F5438的数据手册?

谁有F5438的数据手册?型号手册和数据手册一样吗,不一样的话,麻烦再发一份型号手册。 不是用户指南 万分感谢了~…

查看全部问答>

为什么用CCS5.1自己编写的头文件打不开??

我用CCS5.1环境中编写了一段12864的头文件,没有显示错误,但是就是在调用的时候打不开!请问高手们这是什么问题呢?…

查看全部问答>

AM3359

刚弄到AM3359的开发板,有共同开发的吗,多多交流。…

查看全部问答>

PWM桥驱动电机,TI和ST比较

之前一直用L6205D的H桥驱动电机,ST的话,一组线圈,由2个IN脚控制,那么一个脚接低电平,另外一个脚给PWM,容易理解电流的转动方向,要反向的话,低电平信号和PWM信号反过来输入就可以了 IN1 IN2 OUT1 OUT2 H  L   Vs  ...…

查看全部问答>