采样的MCU型号为STM32F405RGT6,目前这款芯片价格便宜性能好。
1 电机控制会用到单片机的哪些功能?
-
GPIO(通用输入/输出):单片机的GPIO引脚可以用于控制电机的开关、使能以及接收传感器的反馈信号。通过设置GPIO引脚的电平状态,可以实现电机的启动、停止和方向控制。
-
定时器/计数器:定时器/计数器模块可以用于生成精确的时间延迟、周期性信号以及脉冲宽度调制(PWM)信号。PWM信号常用于电机速度控制,通过调节占空比可以改变电机的平均输出功率。
-
ADC(模数转换器):ADC模块可以将模拟量输入信号(如电机电流、电压、位置等)转换为数字量,以便单片机进行处理和控制。ADC可以用于实时监测电机的状态和反馈信号,从而实现闭环控制。
-
UART/SPI/I2C等通信接口:单片机的串口、SPI、I2C等通信接口可以用于与外部设备进行通信,如与传感器、编码器、驱动器等交换数据,实现电机状态监测、速度控制、位置反馈等功能。
-
PWM输出:单片机的PWM输出引脚可以直接连接到电机驱动器,通过调节PWM信号的占空比和频率,实现对电机的速度和扭矩控制。
-
中断:中断是单片机处理实时事件的重要机制,可以用于实现响应外部事件的快速控制。例如,通过编码器脉冲引发的外部中断可以用于检测电机的转速和位置。
-
存储器:单片机的存储器可以用于存储电机控制算法、参数设置以及历史数据等。这样可以实现更复杂的控制策略和数据记录功能。
2 单片机最小系统包含哪些组成部分?
单片机最小系统通常包括以下模块:
-
单片机芯片:选择适合项目需求的具体型号的单片机芯片,如STMicroelectronics的STM32系列、Microchip的PIC系列等。此项选择:STM32F405RGT6
-
时钟源:为单片机提供时钟信号。可以使用外部晶体振荡器、晶体谐振电路或者外部时钟信号源。此项选择8M外部晶振。
-
复位电路:确保单片机在上电或复位时进入预定的初始状态。包括复位电源和复位电路。应用典型电路。
-
电源电路:提供合适的电源电压和电流给单片机及其外围设备。通常包括电源滤波、电压稳定器等电路。
-
调试/编程接口:用于与单片机进行调试和编程的接口,如SWD(Serial Wire Debug)或JTAG(Joint Test Action Group)接口。
-
外部引脚:将单片机的引脚连接到外部电路、传感器或其他外设。这些引脚用于输入输出、通信、控制等功能。
这些模块构成了单片机最小系统的基本组成部分。根据具体的单片机型号和应用需求,可能需要添加其他模块,如LCD显示屏、通信接口(UART、SPI、I2C等)、存储器(闪存、RAM等)以及各种传感器等。
2.1 单片机芯片引脚
此处单片机芯片选择为STM32F405RGT6,在官网上搜索数据手册得到其引脚图如下图所示:
根据其引脚分配匹配原理图
2.2 电源电路
STM32F405RGT6的供电电压范围为2.0V至3.6V。这意味着在正常运行时,供电电压应在这个范围内。超出该范围可能导致单片机无法正常工作或损坏。因此,在设计和使用F405RGT6时,需要确保提供稳定的电源电压,并遵循官方文档中提供的电气特性和供电要求。并且,还可以使用电源滤波电容、稳压器等电路来确保电源的稳定性和噪声抑制。
在STM32F405RGT6芯片中,电源引脚为VDD和VDDA。以下是对这两个引脚的详细描述:
-
VDD:VDD是数字电源引脚,用于提供芯片的数字电源。它应连接到芯片的正电源(VDD)。VDD:D=device 表示器件的意思, 即器件内部的工作电压;
-
VDDA:VDDA是模拟电源引脚,用于提供芯片的模拟电源。它应连接到芯片的模拟电源(VDDA)。V*与V*A的区别是:数字与模拟的区别,VDDA为所有的模拟电路部分供电,包括:ADC模块,复位电路,PVD(可编程电压监测器),PLL,上电复位(POR)和掉电复位(PDR)模块,控制VBAT切换的开关等。即使不 使用ADC功能,也需要连接VDDA,强烈建议VDD和VDDA使用同一个电源供电
-
VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压。VSS引脚是芯片的地(Ground)引脚,用于提供电路的参考地。VSS引脚通常需要连接到系统的地或电源地。如果在VSS引脚上接一个电阻,那可能是为了实现电流限制或者电路保护的目的。以下是可能的情况:电流限制:在一些特定的设计中,可能需要限制芯片的地回路中的电流流动,以保护芯片和其他电路。在这种情况下,可以将一个合适的电阻连接到VSS引脚,以限制通过地回路的电流。ESD保护:在某些情况下,为了增加对静电放电(ESD)的保护,可能会在VSS引脚上添加一个电阻。该电阻可以起到阻尼的作用,减缓ESD事件的峰值电流,并分散能量。
-
VBAT:BAT在电路中代表电池工作模式专用引脚
根据上述理论对电源部分引脚进行连接,单独把引脚图中把电源部分拎出来连接,如下图所示:
另外根据芯片手册需要设定一定数量的滤波电容 其电路原理图如下图所示:
STM32微控制器中的VCAP_1是指电源引脚,用于连接外部电容以提供稳定的电源滤波。VCAP_1通常与VCAP_2一起使用,它们是供电引脚,用于连接外部电容以滤除电源线上的噪声和干扰。
VCAP_1和VCAP_2引脚一般被用作电源滤波引脚,并连接到VDD或VSS(地)引脚之间的电容。这些电容通常是陶瓷电容,用于消除电源线上的高频噪声,并提供稳定的电源供应给STM32微控制器。
2.3 晶振电路
晶振是单片机的心脏,STM32F405RGT6芯片支持外部晶体振荡器作为时钟源。它具有两个用于外部晶体振荡器的引脚,分别为:
-
OSC_IN(5号引脚):这是外部晶体振荡器的输入引脚。通常连接到晶振器的输出引脚。
-
OSC_OUT(6号引脚):这是外部晶体振荡器的输出引脚。通常连接到晶振器的输入引脚。
通过连接适当的外部晶体振荡器到这两个引脚,可以为STM32F405RGT6提供稳定的时钟信号。外部晶体振荡器通常使用串联谐振电路进行驱动,并与芯片的时钟电路相连接。在使用外部晶体振荡器时,还需要在软件中进行相应的配置,以选择并启用外部晶体振荡器作为时钟源。这通常涉及对系统时钟的初始化和设置。
在STM32F405RGT6中,晶振电路通常包括以下组件:
-
晶体振荡器:晶体振荡器是产生稳定振荡信号的核心部件。在STM32F405RGT6中,晶振电路通常使用外部晶体振荡器。
-
晶体:晶体振荡器中的晶体,通常是一个石英晶体,其频率决定了振荡器的频率。在STM32F405RGT6中,外部晶体振荡器的频率可以在几十kHz到几十MHz之间选择,具体取决于晶体的型号和应用需求。
-
电容:外部晶体振荡器电路中会使用附加的负载电容。这些电容与晶体一起形成谐振回路,帮助稳定振荡器的振荡频率。通常,对于晶振电路中的电容选择,可以遵循以下一般原则:对于串联谐振电路,通常选择的电容值在几十pF到数百pF之间。对于并联谐振电路,通常选择的电容值在几pF到几十pF之间。(选择33pF)
结合芯片手册及一些经验值,选择一个32.768kHz和8MHz的外部晶振
晶振电路原理图搭建如下图所示:
2.4 复位电路
复位电路的主要功能是在系统上电或外部复位信号触发时将芯片的各个部件恢复到初始状态,以确保系统的可靠启动。在设计中,需要合理布局和连接复位电路,并遵循官方的设计建议和规范,以确保复位电路的可靠性和稳定性。具体的复位电路设计和连接方式可以在F405RGT6的数据手册和应用笔记中找到。单片机有一个专门的引脚实现复位功能。
外部复位引脚(NRST):STM32F405RGT6具有一个专用的外部复位引脚,即NRST引脚。该引脚用于接收外部复位信号,以实现对芯片的复位操作。根据芯片手册对复位的描述,进行电路搭建。
复位电路如下图所示,
原理:通过一个上拉电阻的方式保持NRST的电平一直保持高电平,当按键按下的过程中,NRST电平被拉低,低电平的NRST引脚触发复位脉冲,使得单片机复位。
2.5 调试/编程接口:JTAG
JTAG(Joint Test Action Group)是一种调试和测试接口标准,常用于单片机和集成电路的调试和编程。JTAG调试结构包括以下组件:
-
JTAG接口:JTAG接口是连接调试工具(如调试器或编程器)和目标设备(如单片机)的物理接口。它通常使用多个引脚来传输数据和控制信号。
-
TAP控制器:TAP(Test Access Port)控制器是JTAG调试结构的核心组件。它负责处理和控制JTAG接口的数据和信号传输。TAP控制器包括状态机、数据寄存器和控制逻辑等,用于控制和管理与目标设备之间的通信。
-
TDI(Test Data Input):TDI引脚用于向目标设备发送数据。调试器通过TAP控制器将调试数据发送到目标设备的TDI引脚。
-
TDO(Test Data Output):TDO引脚用于从目标设备接收数据。目标设备通过TAP控制器将调试数据发送到TDO引脚,然后由调试器接收。
-
TCK(Test Clock):TCK引脚提供时钟信号,用于同步数据传输和控制操作。TAP控制器根据TCK引脚的时钟信号进行操作和控制。
-
TMS(Test Mode Select):TMS引脚用于控制TAP控制器的状态转换。通过改变TMS引脚的状态,可以使TAP控制器从一个状态转换到另一个状态,实现不同的调试和测试操作。
JTAG调试结构可以通过上述组件实现调试功能,包括读取和写入寄存器数据、单步执行、断点调试等。通过使用调试器和相应的软件工具,可以利用JTAG接口连接到目标设备,并对其进行调试和编程操作。
这个并没有其他特殊的地方,芯片上有特定的管脚与其对应,设置一个插座,按照典型电路搭建。
3 其他外设
3.1 电压转换电路
在单片机系统中,多级电源通常指的是使用多个电源级别来提供不同电压和功率需求的电源。
常见的多级电源设计包括以下几个级别:
-
主电源级别:主电源级别通常提供整个系统的主要电源,例如接入电网、电池或外部电源适配器。它负责为整个单片机系统提供主要的工作电压和电源功率。这个级别的电源通常由稳压电路(例如稳压器、开关电源)提供,以确保系统在稳定的电压下工作。
-
内核电源级别:内核电源级别用于为单片机的核心部分(即内核)提供电源。内核电源通常由主电源级别通过稳压器或稳压电路降压得到。这个级别的电源提供单片机内部逻辑电路的正常工作电压,确保其稳定和可靠运行。
-
外围设备电源级别:外围设备电源级别用于供电连接到单片机的外部设备和模块,如传感器、显示屏、通信模块等。这些外围设备通常有不同的电源要求,可能需要不同的电压和电流。因此,外围设备电源级别可能通过降压、升压或电源调节电路来满足不同设备的电源需求。
内核电压为3.3V,外设电压为5V,当5V作为输入的时候,需要一级电压变换。应用常用的电平转换芯片ASM1117,根据其典型应用电路搭建。
3.2 按键电路
在单片机系统中,按键(或按钮)起到了多种作用,包括以下几个方面:
-
输入信号触发:按键可以作为外部输入设备,用于触发特定的操作或功能。通过检测按键的状态变化(按下或释放),单片机可以根据不同的按键输入执行相应的操作,例如启动/停止程序、切换模式、调整参数等。
-
用户交互:按键常用于用户与单片机系统之间的交互。通过按键,用户可以与系统进行互动,例如输入密码、选择菜单项、确认操作等。单片机可以通过检测按键的状态变化来响应用户的输入,以提供相应的反馈或进行相应的操作。
-
状态检测:按键也可以用于检测外部事件或系统状态的变化。例如,可以使用按键来检测某个外部传感器的触发状态,或者用于监测系统的故障或警报状态。通过检测按键的状态,单片机可以及时采取相应的措施或发送相关信息。
设置5个按键,分别对应电机的启动、停止、加速、减速、换向。未被按下为高电平,按下则为低电平。
3.3 电源指示灯+I/O调试灯
这个部分是为了方便电源状态显示,并且预留一个IO控制的小灯,这个灯可以作为前期中断、按键灯基础外设程序的调试使用。
3.4 OLED显示接口
OLED显示器由许多微小的发光二极管组成,这些二极管可以通过控制电流来发出光线,形成图像或文本。每个OLED像素都可以独立发光,因此无需背光源。这使得OLED显示器能够实现高对比度、真黑色和更广的视角。OLED显示器的像素可以迅速切换和响应电流变化,具有快速的响应速度。这使得OLED显示器在播放视频、动态图像等方面具有优势,并能够实现更流畅的显示效果。这些优势都可以作为调试过程中转速、模式、方向灯显示。
3.5 编码器检测电路
编码器检测在许多应用中广泛使用,例如机械控制系统、机器人、CNC机床、汽车导航系统等。它提供了高精度的位置反馈,可以实现精确的位置控制和运动监测。编码器检测是一种常用的技术,用于检测旋转或线性运动的位置和方向。编码器通常由一个旋转或线性运动的轴和一个固定的传感器组成。当轴发生旋转或线性运动时,编码器会输出相应的信号,以提供位置和方向信息。以通常的ABZ编码器搭建检测电路。
3.6 串口电路
串口电路(Serial Port Circuit)是用于串行通信的电路,它可以实现单个数据位按顺序传输的数据传输方式。串口通信是一种常见的通信方式,在许多电子设备中广泛应用,包括计算机、嵌入式系统、通信设备等。
串口电路通常包括以下几个主要组成部分:
-
串口转换芯片(UART芯片):串口转换芯片是串口电路的核心部分,负责实现数据的串行-并行转换和并行-串行转换。它通常包含发送和接收两个数据缓冲区、波特率发生器和控制逻辑等。常见的串口转换芯片有MAX232、CH340等。
-
电平转换电路:由于串口通信使用不同的电平标准,如TTL(5V逻辑)、CMOS(3.3V逻辑)或RS-232(正负12V逻辑),因此通常需要电平转换电路将信号从一个电平标准转换为另一个电平标准。电平转换电路可以使用逻辑门、电平转换芯片或电平转换器等组件实现。
-
连接线和接口:串口电路还需要使用连接线(如串口线)将串口转换芯片与其他设备连接起来。连接线通常使用DB9或DB25等接口标准,通过连接器与串口设备(如计算机、嵌入式系统等)相连接。
3.7 输出隔离与电平转换
在设计单片机系统时,需要根据具体应用场景和需求选择适合的隔离保护方法。隔离保护可以提供电气隔离、抗干扰、防止电压冲击和保护设备等功能,提高系统的可靠性和安全性。
在单片机系统中,为了提供输入输出(I/O)的隔离保护,可以采用以下几种方法:
-
光耦隔离:光耦隔离是一种常见的隔离保护方法,它使用光耦(光电耦合器)将输入和输出电路物理上隔离开来。光耦器由发光二极管(LED)和光敏三极管(光电晶体管)组成,通过光的转换来实现输入和输出的隔离。输入信号通过LED激活光耦器,产生光信号被光敏三极管接收,从而实现输入的隔离保护。输出信号经过光耦器的光电转换,从光敏三极管输出。
-
继电器隔离:继电器是一种电磁开关,可以将输入和输出电路完全隔离开。通过控制继电器的电磁线圈,可以实现输入和输出信号的隔离。输入信号控制继电器的电磁线圈,引起触点的动作,从而实现输入的隔离保护。输出信号通过触点的开闭来实现输出的隔离。
-
隔离放大器:隔离放大器是一种能够实现输入和输出电路的电气隔离的放大器。它将输入信号经过隔离电路处理后输出,实现输入和输出的隔离保护。隔离放大器通常使用差动输入和差动输出的设计,能够提供较高的隔离性能和抗干扰能力。
-
其他隔离器件:除了光耦、继电器和隔离放大器外,还可以使用其他隔离器件实现输入输出的隔离保护,如磁隔离器、电容隔离器等。这些器件利用磁场或电场的隔离特性,实现输入输出电路的隔离。
但是光耦隔离会存在一个问题,就是输出电平转换过程中的延迟问题,其输入输出波形如下图所示,光耦的这个延迟时间大约为5us。由于我所用的电机控制程序开关频率为10kHz,一个载波周期也就100us,这个延迟就占据了二十分之一,这个是不可以接受的,这个暂时先不考虑用光耦。
考虑用一个较弱的隔离模块,也就是电平转换芯片,将单片机的3.3V的PWM信号转换为5V的PWM信号,该芯片的型号是SN74LVC8T245PWR,SN74LVCH8T245是一种8位非反相总线收发器,使用两个独立的可配置电源轨道。A端口被设计成跟踪VCCA,它接受从1.65 V到5.5 V的任何电源电压。B端口用于跟踪VCCB,也可接受1.65 V到5.5 V的任何电源电压。这允许1.8-V, 2.5-V, 3.3-V和5.5-V电压节点之间的通用低压双向转换。该芯片的作用就是电平的转换,由于内部有两级逻辑电路,能有起到一定的隔离作用,并且还能够放大电平,因为有的驱动电路3.3V不一定能够驱动,5V更为通用。该芯片的典型应用电路和真值表如下图所示:
- OE杠为高时芯片不使能;
- OE杠为低,DIR为低时,B端口输入,A端口输出;
- OE杠为低,DIR为高时,A端口输入,B端口输出;
其输出延迟数据如下图所示,在0.5ns - 4.4ns之间,这是完全满足10kHz开关频率的。
其电路搭建如下图所示;