设计与开发

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

小编 2024-11-25 设计与开发 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;

......

}

}

显示效果

相关问答

8脚的 单片机 驱动 2位数码管吗?

不可以。1.一个8脚的单片机通常只能提供几个通用输入输出引脚,不足以直接驱动两位数码管,因为每个数码管至少需要7个引脚来控制其显示。2.为了驱动两位数码...

排阻respack-8,接 单片机 的原理是什么?

驱动,电流不够,加排阻增加电流嘛,排阻一般有九个脚,一个脚接VCC,其他脚接单片机I/o口,比如说P0口,一般需要加排阻。驱动,电流不够,加排阻增加电流嘛,排阻一般...

肿么把c语言程序烧进 单片机 -ZOL问答

(8)1、把C语言编译为编程器支持的语言格式,比如常用的bin,或hex等格式。2、如果是可在线编程的,可以用ISP直接进行烧录。3、如果不是可在线编程的,将单片机芯...

单片机 程序怎么在电脑上调试?用什么软件好?-ZOL问答

仿真那些看着高大上,其实不实用,因为单片机程序都很短,且都与硬件接口打交道,仿真真不了。用KEIL编程,在需要观察数据的地方用串口发送数据。观察是否符你的逻...

本人初次使用HT1621B 驱动 4位8段LCD,请问高手用 单片机 怎样控制?其中的D0~D3,A0~A5各表示意思?谢谢?

HT1621芯片的cs口、wr口、date口连接51单片机的三个输出口。vss和vdd接好,还有vlcd接在滑动变阻器的钟建端。接好就ok了HT1621芯片的cs口、wr口、date口连接5...

单片机驱动 能力如何提高?最好是电路图。89c52芯片的?

单片机是弱电控制中心单片机只是一个控制中心,IO的驱动能力是很弱的,只能用于信号处理或者信号控制,最多是驱动一个LED作为指示灯。驱动负载需要加入三极管、...

选择:1.一个 单片机 应用系统用LED数码管显示字符“8”的段...

[最佳回答]1.一个单片机应用系统用LED数码管显示字符“8”的段码是80H,可以断定该显示系统用的是(B)。A、不加反相驱动的共阴极数码管B、加反相驱动的共阴极...

单片机 如何 驱动 dsp?

要驱动一个DSP(数字信号处理器),你需要一个适当的接口来连接单片机和DSP,以便它们之间进行数据传输和通信。以下是一种常见的方式:1.选择合适的接口类型:...

伺服电机控制方法有哪些? 单片机 驱动 CPU原理?

伺服电机也叫舵机。控制方法很简单不同占空比的pwm可以控制它正转反转。用单片机的引脚产生pwm接到电机的信号脚上即可。伺服电机也叫舵机。控制方法很简单...

怎样用自己焊的板子 单片机 usb与电脑联接-ZOL问答

USB连接单片机时需要用USB转串口芯片,CH341或PL2303,单片机的RXTX接芯片,详见芯片说明,也可以用市场上卖的USB转串口接头连接。重装usb驱动或者换个usb线试试...

猜你喜欢