技术文档

win8单片机驱动 Henry教你设计一个无刷电机驱动器-电调(ESC)

小编 2024-11-24 技术文档 23 0

Henry教你设计一个无刷电机驱动器-电调(ESC)

正面3D效果图

反面3D效果图

顶层布线图

内层1布线图

内层2布线图

底层布线图

本设计基于: Windows11操作系统

设计软件: 立创EDA,浏览器:Firefox

电调的作用 :电调是电子调速器的简称,英文:Electronic Speed Control,简称ESC。作用是控制电机的运转速度。输入直流电,可以接稳压电源或者锂电池。一般用2-6节锂电池供电。输出是三相脉冲直流,直接与电机的三相输入端相连。电调还有一根信号线连出,用来与接收机连接,控制电机的运转。

设计目的: 此款电调应用于无人机,此版电调不适合大规模生产,只作为验证使用

设计电调电路板所需知识:直流、交流电,PWM信号,MOS管工作原理,半桥、全桥驱动器,无刷电机工作原理

设计步骤

1.确定电调使用的软件系统

我选择BLHeliSuite (常称为bls)开源电调系统

开源地址:https://github.com/bitdump/BLHeli

根据网络资源可得知bls电调使用EFM8BB21F16G-C-QFN20微处理器,这是一颗来自SILICON LABS的8位单片机,查询datasheet(数据手册)可得知它使用了C8051内核,工作电压典型值:3.3V,主频50Mhz,内置16KB Flash,2304byte RAM,封装为QFN20。

单片机构造图

2.深入了解电调工作原理

使用CSDN等技术论坛可可以深入了解电调工作原理图

1.控制信号 ---> MCU ---> 栅极驱动器 ---> N Mos大功率晶体管 ---> 电机

2.反馈电路 ---> MCU

3.电池输入电压 ---> N Mos大功率晶体管

4.电池输入电压 ---> 降压至5~10V (栅极驱动器供电电压) ---> 降压至3.3V (MCU供电电压)

3.芯片选型 (根据个人需求进行选择,例如,Mos可以选择Infineon的金封Mos,内阻更小,散热更好,但成本更高)

栅极驱动器:FD6288Q(宽电压)

N Mos大功率晶体管:NCE30H14K(支持高电压/30V,大电流/140A,价格相对较低)

降压芯片:UMW78M09(Max 1A),UMW AMS1117-3.3(Max 1A)

4. 开始设计

1) 根据开源软件确定硬件连接,并画出原理图

BLHeliSuite源代码

BLHeliSuite源代码

如上图,确定MCU IO的功能,与栅极驱动器连接信号线

主芯片IO引出

栅级控制器

根据芯片数据手册构建芯片外围电路

主芯片设计参考图

栅级控制器典型应用电路

主芯片外围电路

栅级控制器外围电路

连接栅极驱动器与mos晶体管

mos晶体管电路

电池供电接口,滤波与LDO降压

供电电路

至此所有功能均已实现,原理图设计完成

2) 绘制PCB文件

电调PCB比较特殊,必须同时满足多个条件

1. 电源导线能够通过大电流

2. 滤波电容的放置

3. 电路板体积,大小

4. 散热

5. 用户使用方便

1.按照我个人的设计思路,先设计出电路板尺寸外形

1.1由于6个MOS必须按照3*2排列,即可得出电路板的宽度

1.2大概排布主要元件,即可得出电路板的长度

电路局部图(mos晶体管)

2.接下来布置所有原件位置

2.1将芯片(MCU,MOS,LDO)与其外围电路(电阻电容等)紧密放置,但要流出一定空间方便焊接、引出过孔,注意适当远离高压元件以防短路

2.2放置滤波电容 (靠近电源输入OR靠近用电器 (MOSFET))

2.3放置ADC配置电阻(靠近MCU)

主芯片外围电路

栅极控制器外围电路

MOSFET外围电路

9V LDO

3.3V LDO

滤波电容

更多滤波电容

3.连接导线(需按照DRC设计规则进行)

3.1连接主要电源导线(注意导线宽度,我选用了80mil的导线宽度,并做开窗附锡处理,以应对大电流)

3.2连接信号线(长度尽量缩短,不要有直角弯,宽度10mil标准宽度即可)(使用4层板,电源、信号分离)

3.3连接LDO电源(9V、3.3V)(宽度可适当加宽至14mil,路径上尽量少过孔)

信号线

电源铜箔

电源铜箔

4.铺铜

4.1电源正极到MOS大面积铺铜

4.2剩余部分为GND负极铺铜(包括4层铜箔)

4.3电机焊盘到MOS适当铺铜

5.丝印(丝印应方便使用者理解接口用途,必须清晰,易理解)

5.1电源正负极丝印

5.2电机接口丝印

5.3信号输入接口丝印

5.4调试接口丝印

5.5装饰性丝印(可选)

供电丝印

调试接口

电机连接处丝印

装饰性丝印

恭喜,你已经成功得到了一张电调PCB电路板,可以检查DRC后生成制板文件交给厂方制作了。

背面3D模拟图

STM8L单片机驱动LCD-LCD的驱动

今天记录下,使用STM8L152驱动LCD段码屏。

一般来讲,使能单片机外设需要进行如下配置:

1、如涉及到IO端口,须配置IO口,如设为输入/输出/浮空输入或者进行复用功能重映射等。注意,在某些单片机,如stm32,还需要使能相应端口时钟。

2、使能外设端口时钟。

3、配置外设参数,初始化外设。

4、开启中断等功能。

下面说下如何驱动LCD:

针对STM8L152 LCD外设部分,需要注意两个寄存器:

1、LCD_PM寄存器,对端口LCD复用功能的配置。

LCD_PM寄存器

对相应BIT位置1使能LCD复用功能,清零则为普通IO口。

2.LCD_RAM寄存器,LCD显示缓冲寄存器。

LCD_RAM寄存器

对stm8l152c6单片机来说,共有4个COM23个SEG,14个LCD_RAM寄存器:COM0-RAM0/1/2、COM1-RAM3/4/5/6、COM2-RAM7/8/9、COM3-RAM10/11/12/13

LCD驱动初始化程序如下:

LCD驱动初始化程序

需要注意的是,由于LCD频率发生器使用的时钟源是RTC时钟,所以必须使能RTC时钟。

频率发生器

STM8L152单片机LCD相关引脚

从原理图中可看出,我们使用了4个COM,10个SEG口-SEG8,9,16,17,18,19,20,21,22,23.所以,对LCD_PM配置如下:

LCD_PortMaskConfig(LCD_PortMaskRegister_1,0X03); // seg 8,9为seg口

LCD_PortMaskConfig(LCD_PortMaskRegister_2,0XFF); // seg 16,17,18,19,20,21,22,23为seg口

由于当时规划原理图时,没有仔细研究LCD外设,导致程序驱动,有些复杂。这应该引以为戒!

本次实验显示一个数需要驱动四个LCD_RAM,每个RAM中的2个SEG.如显示灵敏度值,则需要配置LCD_RAM1,4,8,11,显示延时,则需要配置LCD_RAM2,6,913等。

简单程序实例如下:

typedef enum {DELAY,SENSE,...}ITEM_t;

typedef struct

{

ITEM_t Item;

INT8U RamValue[4];

}FIGURE_t;//定义一个包含显示项目类型以及需要显示段的结构体类型。

const FIGURE_t FigureGroup[42]=

{

......

{SENSE,{0x02,0x30,0x01,0x30}}, //0

{SENSE,{0x00,0x20,0x00,0x20}}, //1

{SENSE,{0x02,0x10,0x02,0x30}}, //2

......

{DELAY,{0x30,0x03,0x10,0x03}}, //10

{DELAY,{0x10,0x02,0x00,0x02}}, //11

{DELAY,{0x30,0x01,0x20,0x03}}, //12

{DELAY,{0x30,0x02,0x20,0x03}}, //13

};//显示缓冲数组

显示驱动

void DISP_ShowFigure(INT8U num)

{

INT8U temp=num;

switch(FigureGroup[temp].Item)

{

...

case SENSE:

LcdCache1&=0xfc;

LcdCache1|=FigureGroup[temp].RamValue[0];

LcdCache4&=0xcf;

LcdCache4|=FigureGroup[temp].RamValue[1];

LcdCache8&=0xfc;

LcdCache8|=FigureGroup[temp].RamValue[2];

LcdCache11&=0xcf;//数据处理以防对其他显示SEG产生影响

LcdCache11|=FigureGroup[temp].RamValue[3];

LCD_WriteRAM(LCD_RAMRegister_1,LcdCache1);

LCD_WriteRAM(LCD_RAMRegister_4,LcdCache4);

LCD_WriteRAM(LCD_RAMRegister_8,LcdCache8);

LCD_WriteRAM(LCD_RAMRegister_11,LcdCache11);

break;

case DELAY:

......

break;

......

}

}

显示效果

相关问答

win 11怎么安装51 单片机驱动 ?

在安装Win11系统时,需要首先下载最新版本的51单片机驱动程序。安装步骤为:首先,将单片机与电脑连接,然后打开设备管理器,找到单片机设备并右键点击选择“更...

做8 8 8光立方时 单片机 的上拉电阻改选多大的?

单片机上拉电阻可选范围较宽,电阻过小的话,输出高电平时驱动能力强,但是,输出低电平时,功耗大。电阻过大时,输出低电平时功耗小,输出高电平是驱动能力弱。...

...不知道它另一个端得8个插针怎样与 单片机 联接,请指教-ZOL问答

不能用,isp下载器只能下载at89s51,52和avr的单片机,不能下89c的。看看新机器是否是win7,那个要更新usb的win7驱动驱动装了没有?虽然有的下载器号称是免驱的...

单片机 怎么 驱动 继电器,有什么注意事项?

单片机驱动继电器是比较常见的电路,由于单片机的输出电流能力有限,一般都会通过三极管、MOS管或者其他专用驱动芯片来驱动继电器。下边以单片机通过三极管驱动...

继电器为什么不可以直接用 单片机驱动 ?

你的电路接法是否错误呢?查看一下,单片机从理论上讲是不能直接驱动继电器的,不管你的接法如何,直接连接可能会烧坏单片机I/O口,你的原因可能是已经把I/O口烧...

我用STC12C5系列 单片机 ,在串口级联了8片CD4094(8位串入并出)...

你CLK的上拉电阻小一点或是把单片机端口模式直接设置成推挽输出(不接上下拉电阻)就可以了。你可以级用4094作级连的,这样就不用考虑驱动能力行不行了,只是你的...

单片机 如何 驱动 步进电机-牌子网

单片机想要驱动步进电机,必须要通过一个电机驱动芯片,也就是可以单片机通过控制信号,让这个驱动芯片工作,提供步进电机所需要的工作电流。简单说,就...

单片机 无法 驱动 用usb电脑供电db9这样接?

如果只是单纯的给单片机供电,用一个两端都是usb的接口将单片机与电脑相连,而且你上面的max232,RS232(即db9)是用来给单片机下载程序的,根本不能给单片机供...

用ULN2003 驱动 24BYJ48步进电机时,怎么接stm32 单片机 比较好?

stm32单片机是一种高性能、低成本、低功耗的单片机,可以说很多应用场合都会用到,特别是对于大型系统,像电源、充电桩、交互机、电机驱动、PLC、逆变器、打印机...

怎样才能成为 单片机 工程师?

一般来说,单片机属于硬件工程师的工作范畴。毕竟单片机驱动编程和电路设计是分不开,只有明白了单片机如何驱动才能设计出更为合理的电路产品。如果想更好的从...

猜你喜欢