历史上的今天
返回首页

历史上的今天

今天是:2025年06月28日(星期六)

2021年06月28日 | 【单片机】DIY无刷电机驱动器 1

2021-06-28 来源:eefocus

参考文章:《【机械自动化】BLDC驱动器ESC》。

控制直流无刷电机和控制直流有刷电机的最大区别有两点:

1、有刷直流电机使用用两个驱动桥臂,无刷直流电机需要使用三个驱动桥臂。

2、有刷直流电机使用碳刷换相,无刷直流电机需要外部控制换相。


这里为了简化,没有使用霍尔传感器以及参考文章中介绍的反电势法(BEMF)原理进行换相检测,这里使用的方法是“猜”,“猜”法很简单,就是我觉得该换相了,就换相,如果换相快了,转子跟不上就会抖动,如果换相慢了,转子会跟着转得慢而已,那么就控制换相速度稍微慢点就行了。

核心电路图如下:

上图中使用的是PMOS加NMOS组成单个桥臂,PMOS的缺点是内阻较NMOS大,所以可能会发热较严重,但是控制方便,使用一个小的NMOS或者NPN三极管就可以驱动,但是如果上桥臂的MOS管使用NMOS的话,正常工作的时候NMOS的漏极电压会很高,导致栅极需要更高的电压才能导通NMOS,这时候需要比较复杂的控制电路或者半桥栅极驱动器IC(如IR2104STRPBF)完成这个功能。我的实验电机不需要很高的电流,这里还是选择了控制简单的PMOS作为上桥臂。但是注意电路中的R12、R13、R14在实际焊接的时候使用1K或者0欧,这样会让Vgs的绝对值较大,这时候MOS管的内阻Rds会较小,驱动电流大,MOS管自身发热量小,但是如果电机的工作电压很大的话(12V、24V),需要适当调整R12、R13、R14的大小,防止Vgs的值过大烧坏MOS管,具体值参考MOS管的数据手册,这里我使用的是集成PMOS+NMOS管的AO4606或者AO4616芯片:

PCB打样回来了:

焊接完3相桥臂和IO接口:

与3D模型对比:

电路板上面的是MCU部分,没有使用,直接把IO_A1、IO_A2、IO_B1、IO_B2、IO_C1、IO_C2使用排针引出来,直接使用开发板测试就行了,懒得焊接。

IO_A1、IO_A2、IO_B1、IO_B2、IO_C1、IO_C2是分别控制三个桥臂的信号,注意IO_X1和IO_X2信号不可以同时为高,否则会导致桥臂短路,容易烧坏MOS管,同时在程序中最好先将为0的信号先设置为0,然后再设置不为0的信号,这样可以避免短路。同时为了可以精确控制,所有IO_X1和IO_X2信号都是使用PWM驱动,因为我想实现类似步进电机的功能,可以精确控制无刷电机的转动角度。

无刷电机的换相顺序如下图,一周期总共需要6次换相,分为6个状态,分别为导通顺序分别为AB、AC、BC、BA、CA、CB,按道理软件上只要这样的换相顺序就能让电机转动。


PWM通道设置以及测试代码:


volatile unsigned int *A1 = &TIM1 ->CCR3;

volatile unsigned int *A2 = &TIM1 ->CCR2;

volatile unsigned int *B1 = &TIM3 ->CCR4;

volatile unsigned int *B2 = &TIM3 ->CCR2;

volatile unsigned int *C1 = &TIM3 ->CCR1;

volatile unsigned int *C2 = &TIM14->CCR1;

1.

2.

3.

4.

5.

6.

登录后复制

//设置所有桥臂为无输出。注意IO_X1和IO_X2信号不可以同时为高,

//否则会导致桥臂短路,容易烧坏MOS管,同时在程序中最好先将为0的

//信号先设置为0,然后再设置不为0的信号,这样可以避免短路。

*A1 = 0;

*A2 = 0;

*B1 = 0;

*B2 = 0;

*C1 = 0;

*C2 = 0;

#define INTERVAL 5 //换相间隔时间

#define PWM1 255 //上桥臂PWM占空比,为了防止产生“共振”现象,设置一端的PWM

//占空比为100%或者0%,调整另一端的PWM占空比大小。

#define PWM2 100 //下桥臂PWM占空比

//处于t0状态,并维持一段时间,保证可靠处于t0状态

printf("Readyrn");

{ //t0:AB

*C1 = 0;

*C2 = 0;

*A2 = 0;

*A1 = PWM1;

*B1 = 0;

*B2 = PWM2;

}

delay_ms(1000);

//进入换相主循环

printf("Startrn");

while(1)

{

{ //t0:AB

printf("t0:ABrn");

*C1 = 0;

*C2 = 0;

*A1 = PWM1;

*A2 = 0;

*B1 = 0;

*B2 = PWM2;

}

delay_ms(INTERVAL);

{ //t1:AC

printf("t1:ACrn");

*B1 = 0;

*B2 = 0;


*A1 = PWM1;

*A2 = 0;

*C1 = 0;

*C2 = PWM2;

}

delay_ms(INTERVAL);

{ //t2:BC

printf("t2:BCrn");

*A1 = 0;

*A2 = 0;

*B1 = PWM1;

*B2 = 0;

*C1 = 0;

*C2 = PWM2;

}

delay_ms(INTERVAL);

{ //t3:BA

printf("t3:BArn");

*C1 = 0;

*C2 = 0;

*B1 = PWM1;

*B2 = 0;

*A1 = 0;

*A2 = PWM2;

}

delay_ms(INTERVAL);

{ //t4:CA

printf("t4:CArn");

*B1 = 0;

*B2 = 0;


*C1 = PWM1;

*C2 = 0;

*A1 = 0;

*A2 = PWM2;

}

delay_ms(INTERVAL);

{ //t5:CB

printf("t5:CBrn");

*A1 = 0;

*A2 = 0;

*C1 = PWM1;

*C2 = 0;

*B1 = 0;

*B2 = PWM2;

}

delay_ms(INTERVAL);

}


测试结果电机可以正常转动,且扭矩还不错(和电流大小有关,一开始R12、R13、R14焊接的是10K导致电流不足,转动不流畅),通过调整PWM1和PWM2可以调整相电流大小,为了防止产生“共振”现象,就是由于使用PWM控制时,当A桥臂的上桥臂为1时,B桥臂的下桥臂正好为0,这时候是没有电流的,这种重叠的时间最大可以是整个周期都是重叠的,这时候虽然两边的PWM占空比都大于零,但是产生了谐振降低了驱动电流,解决办法为设置一端的PWM占空比为100%或者0%,调整另一端的PWM占空比大小,例如这里我将PWM1设置成255,调整PWM2来调整驱动电流大小即可。通过调整INTERVAL的值改变转动速度,但是INTERVAL太小的话电机抖动,这时候就是没有使用霍尔传感器或者反电势法(BEMF)的最大缺点了。暂时不会做gif图:

这套电路可以很方便地改成启动那个带霍尔传感器的无刷电机,直接将霍尔传感器的三个信号接到单片机的IO口,根据霍尔信号进行换相,而不是使用延时进行换相即可,一般带霍尔无刷电机接线如下图:

但是这里还没有用到PWM的真正功能,就是平缓换相过程,也是角度控制功能。


推荐阅读

史海拾趣

HANBIT Electronics公司的发展小趣事

Hamamatsu(滨松光子学株式会社)在电子行业中的发展故事丰富多样,以下是根据公开信息整理的五个相关故事,每个故事均力求准确描述事实:

1. 光电倍增管的创新与突破

Hamamatsu在光电倍增管(PMT)领域取得了显著成就。光电倍增管作为宇宙线观测、中微子实验等高精度探测中的关键器件,其性能和技术要求极高。Hamamatsu抓住市场需求,与东京大学高能物理实验室等科研机构合作,成功研制出大面积探测用光电倍增管,并在多个国际中微子探测实验中得到应用。这一创新不仅推动了Hamamatsu自身的发展,也巩固了其在光电倍增管市场的领先地位。

2. 光电二极管的多样化应用

Hamamatsu的光电二极管产品线广泛,包括硅PIN光电二极管、InGaAs PIN光电二极管等多种类型,广泛应用于医疗生物、高能物理、宇宙探测、精密分析等多个领域。这些产品的多样化应用不仅展示了Hamamatsu在光电技术领域的深厚积累,也为其在全球市场的拓展提供了有力支撑。

3. 光电技术的国际合作与交流

Hamamatsu积极参与国际光电技术的交流与合作,通过举办大型展会、参与国际学术会议等方式,展示其最新的光电技术和产品。例如,Hamamatsu举办的PHOTON FAIR展会,吸引了来自全球的客户和合作伙伴,促进了光电技术的国际交流与合作。这种开放合作的态度,有助于Hamamatsu不断吸收国际先进技术,推动自身技术的持续进步。

4. 应对市场变化的灵活策略

面对电子行业的快速变化,Hamamatsu展现出了高度的市场敏感性和灵活性。当市场需求发生变化时,Hamamatsu能够迅速调整产品结构和研发方向,以满足新的市场需求。例如,在消费电子市场兴起时,Hamamatsu也积极涉足相关领域,推出了一系列适用于消费电子产品的光电传感器件。这种灵活的市场策略,使得Hamamatsu能够在激烈的市场竞争中保持领先地位。

5. 人才培养与团队建设

Hamamatsu深知人才是企业发展的根本动力,因此高度重视人才培养和团队建设。公司建立了完善的人才培养体系,通过内部培训、外部交流等多种方式,不断提升员工的专业技能和综合素质。同时,Hamamatsu还注重团队建设和企业文化建设,营造了一个积极向上、团结协作的工作氛围。这种良好的人才环境和企业文化,为Hamamatsu的持续发展提供了有力保障。

以上五个故事展示了Hamamatsu在电子行业中的发展历程和成就,体现了其在技术创新、市场拓展、国际合作、灵活应变以及人才培养等方面的综合实力。

DRS Technologies公司的发展小趣事

近年来,DRS在红外探测器技术领域取得了重要进展。公司在12μm像元尺寸非制冷红外探测器技术的基础上,成功研制出10μm像元尺寸的产品。这一技术的突破不仅展示了DRS在红外探测领域的实力,也为其在未来的市场竞争中提供了有力的技术支撑。

ALTERA(阿尔特拉)公司的发展小趣事

进入80年代,DRS开始拓展其业务范围。在1981年上市后,DRS于1984年收购了其第一家公司,迈出了其市场扩张的第一步。随后,DRS不断投入研发,致力于提高其在电子和信息技术领域的核心竞争力。特别是在C4ISR(指挥、控制、通信、计算机、情报、监视和侦察)系统领域,DRS取得了显著的成果,为其在全球市场上赢得了广泛的认可。

eLED.com Corp公司的发展小趣事

eLED.com Corp是一家专注于LED(发光二极管)领域的电子公司,成立于XX世纪初。公司创始人XX先生,在半导体行业拥有多年的研发经验,他看到LED技术在照明和显示领域的巨大潜力,于是决定创立eLED.com Corp。公司初期主要致力于LED产品的研发和生产,凭借其高效率和长寿命的特点,逐渐在市场上获得认可。

为了进一步提升产品质量和技术水平,eLED.com Corp不断投入研发资金,引入先进的生产设备和技术人才。通过与高校和研究机构的合作,公司成功开发出一系列具有自主知识产权的LED产品,逐渐在行业中树立了良好的口碑。

Curtis Instruments Inc公司的发展小趣事

Curtis一直致力于环保和低碳技术的研发与应用。公司的产品和服务广泛应用于电动汽车、混合动力汽车等环保型交通工具中,为减少碳排放、推动绿色出行做出了积极贡献。同时,Curtis还积极参与各种环保活动和社会公益项目,通过实际行动践行环保理念。

Compound Photonics公司的发展小趣事

尽管在Micro LED领域遭遇了挫折,但Compound Photonics并没有因此沉沦。相反,公司凭借其在LCoS领域的深厚技术积累和良好的市场口碑,吸引了众多潜在合作伙伴的关注。其中,Snap公司表现出了强烈的收购意向。这一消息传出后,Compound Photonics的市场价值得到了进一步提升,公司的发展前景也变得更加广阔。

这五个故事展示了Compound Photonics公司在电子行业里发展起来的一些关键节点和重大事件。从收购Syntax-Brillian开启微显示领域之路,到微投显示模组项目失利后转向LCoS方向,再到成为业内知名LCoS方案商并与Lumus合作,以及与Plessey合作开发Micro LED产品遭遇Meta竞争,最后到Snap的收购意向,每一个故事都反映了公司在不同阶段的挑战与机遇。通过这些故事,我们可以看到Compound Photonics公司在电子行业里不断进取、创新发展的精神风貌。

问答坊 | AI 解惑

我画的5509pcb图

现在公司需要这个板子做项目,重新画了一下。 为了以后能用,是使用系统小板的模式 带sdram  flash   sd卡  usb接口 外接线基本上都接出了。 基本上是合众达板子的电路图了。找到它的图就可以了。 由于没有在原 ...…

查看全部问答>

论文指导

本帖最后由 paulhyde 于 2014-9-15 09:34 编辑 全国电子设计竞赛论文写作指导,希望能给予大家帮助!  …

查看全部问答>

最新款车内装饰精品-鸿远车载GPS定位实时跟踪

鸿远信通GPS“物流车”车辆管理系统是根据目前物流行业信息化管理需求开发的车辆管理系统,达到物流车辆及货物实时定位跟踪,从而将运输行业中的货主、货运代理及司机各环节的信息有效、充分地结合起来,降低空车率,最大限度的调配车辆,以显示 ...…

查看全部问答>

哪位大侠帮帮我

电子防盗报警器的设计 一、任务 设计电子防盗报警器(包括1无线接收器),检测部分 12V直流供电,接收部分3.6V供电。 任 务        要  求 基本部分        两种检测方案,任何一个发生 ...…

查看全部问答>

VxWorks ping不通

利用flash224下载bootrom到arm9开发板,超级终端能连接并显示运行信息,网口的指示灯也是亮的,ping不通时为什么啊,望各位大哥大姐大虾大神不吝赐教。急!!…

查看全部问答>

2440的nwait脚是什么作用?

nWAIT [Input] nWAIT requests to prolong a current bus cycle. As long as nWAIT is L, th current bus cycle cannot be completed. ----- nWAIT PIN OPERATION If the WAIT bit(WSn bit in BWSCON) corresponding to each memory bank is en ...…

查看全部问答>

我快急死了。大哥们帮一下小兄吧怎么读取PCI配置空间信息呀下面的程序不行呀

#include   \"stdafx.h\" #include \"stdio.h\" #include \"windows.h\" DWORD DWORD_In(WORD io_Port) {    DWORD val; _asm {             mov dx,io_Port   &nb ...…

查看全部问答>

丫头大三,计算机专业,现一年后从事嵌入式开发,会不会找到好工作,需要考试什么证书吗?

还没学有关的科目,但我看完了c语言嵌入式系统开发,比较菜,给点意见?…

查看全部问答>

哪位大哥能给小弟一份PXA255 下载线的电路图?

想给一个255系统下载程序,可惜没有下载线,能不能自己做个简单的,像wiggler那样的? email:ldqmoon@163.com 做成后百分相送~…

查看全部问答>

C语言编程常见问题解答

                                 …

查看全部问答>