电机课程设计(开源)——基于STM32的PID电机控制系统设计-第二章 系统硬件设计
仅为记录之前学习的电机课程设计所用
第一章 系统设计及方案设定
第二章 系统硬件设计
本课程设计基于《电机控制技术》,旨在通过实践课程更深入地掌握电机设计原理。学生将综合运用电机学、电路分析、传感器技术、计算机接口技术、微处理器技术、电力电子学和电机设计等课程知识,以更深层次地了解直流电减速机的结构和工作原理。此外,课程还注重实际应用,特别是针对增量式PID电机调速算法的实际运用,通过理论与实践相结合的方式提供更深入的理解。
提示:以下是本篇文章正文内容
本系统采用STM32F103C8T6控制输出数据,由单片机IO口产生PWM信号,送到直流减速电机,直流减速电机通过测速电路将实时转速送回单片机,进行转速显示,从而实现对电机速度和转向的控制,达到直流电机调速的目的。具体电路如图2-1所示。
以下是“具体电路图”
以下是“扩展板PCB”
以下是“扩展板PCB_2D图_正面”
以下是“扩展板PCB_2D图_反面”
为了使电机驱动模块更加的集成化,我们设计了电机驱动一体化PCB板。如图所示我们设计了两个按键开关,一个是电源主开关,一个是电机驱动电源开关,实现了电机驱动电源与主电路电源分离,减小电源损耗,大大提高了电池的续航能力。
在设计中,我们将合理安排各功能模块的位置,通过丝印层进行清晰的分隔,使结构更加明确。我们特别考虑到OLED屏幕的实物尺寸,留出充足的空间在PCB板上进行布局。为增加PCB板的美观性,我们可以在设计中插入一些装饰元素,例如二哈照片。此外,还可以在PCB板上标注打板者和打板的时间,以便记录和追溯。这些优化措施将使整体设计更具有条理性、清晰性,并增加一定的美观性。
由于扩展板电路比较繁琐,我们将从以下五个部分进行讲解:迷你电源、按键电路、TB6612电机驱动电路、OLED接口电路、测速模块。
我们使用AMS1117-5V和AMS1117-3.3V芯片设计了一款12V转5V、5V转3.3V稳压电路,简称为“迷你电源”。
ASM1117提供电流限制和热保护(TSD),以防环境温度造成过高的结温。电路包含1个齐纳调节的带隙参考电压以确保输出电压的精度在±1%以内。
ADJ引脚是可调整电压引脚,用来接入可调电阻,调出你所需要的电压。
基本工作原理:AMS1117是一个低漏失电压调整器,它的稳压调整管是由一个PNP驱动的NPN管组成的,漏失电压定义为: VDROP = VBE+ VSAT。
AMS1117有固定和可调两个版本可用,输出电压可以是:1.2V,1.5V,1.8V,2.5V,2.85V, 3.0V,3.3V,和5.0V。片内过热切断电路提供了过载和过热保护,以防环境温度造成过高的结温。
以下是“电源电路图”
AMS1117在整体设计中的应用功能部分如下:
(1)将5V的电源转换成3.3V的电压电路
AMS1117-3.3是一种输出电压为3.3V的正向低压降稳压器,适用于高效率线性稳压器发表开关电源稳压器电池充电器活跃的小型计算机系统接口终端笔记本电脑的电源管理电池供电的仪器。
(2)AMS1117-5是一种输出电压为5V的正向低压降稳压器。
通常使用的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。
抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。
利用电容的放电延时,采用并联电容法,也可以实现硬件消抖。由于电容两端电压不能突变,使得按键两端的电压平缓变化,直至电容充放电到达一定电压阈值时,单片机才读取到电平变化。
以下是“按键电路图”
单片机引脚的电流一般只有几十个毫安,无法驱动电机,因此一般是通过单片机控制电机驱动芯片进而控制电机。TB6612是比较常用的电机驱动芯片之一。
TB6612FNG可以同时控制两个电机,工作电流1.2A,最大电流3.2A。
AIN1/2、BIN1/2接单片机的GPIO口。PWMA/B接单片机的定时器口(配置为定时器pwm)。AO1/2、BO1/2接电机的正负极。
PWMA、AIN1/2、AO1/2为一组驱动一个电机, PWMB、BIN1/2、BO1/2为一组驱动另一个电机。
STBY为正常工作、待机状态控制引脚,一般接3.3V电即可。VM为电机驱动电压输入(<10V),VCC为逻辑电平输入端(2.7V~5.5V)。
为了减小未驱动电机时的能源消耗,并提高系统的绿色环保性,我们将电机驱动部分设置为独立供电。这样的设计可以有效降低电机未工作时的能耗,进一步延长电池的续航时间。通过独立供电方案,我们能够更加高效地利用能源资源,减少不必要的能量浪费,从而达到环保节能的目的。
以下是“TB6612电机驱动模块电路图”
OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术。
OLED显示和传统的LCD显示不同,其可以自发光,所以不需要背光灯,这使得OLED显示屏相对于LCD显示屏尺寸更薄,同时显示效果更优。 常用的OLED屏幕有蓝色、黄色、白色等几种。屏的大小为0.96寸,像素点为 128*64,所以我们称为0.96oled屏或者12864屏。
OLED屏幕特点:
1.模块尺寸:23.7 *23.8mm
2.电源电压:3.3-5.5V
3.驱动芯片:SSD1306
4.测试平台:提供 k60/k10,9s12XS128,51,stm32,stm8等单片机
OLED屏幕接线说明
我们配置硬件IIC的步骤就是根据下面这张时序图,发送一次数据后不断获取不同的应答即可。
我们使用的是4pin的I2C接口的OLED显示屏,在设计原理图的OLED接口电路时,需要将引脚的位置设置相匹配,由于我是用的是0.96的OLED屏,因此需要注意在设计PCB时留出一定的空旷位置,以便放置OLED屏。
霍尔传感器:是一种磁传感器。用它可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍尔传感器以霍尔效应为其工作基础,是由霍尔元件和它的附属电路组成的集成传感器。霍尔传感器在工业生产、交通运输和日常生活中有着非常广泛的应用。
霍尔电压随磁场强度的变化而变化,磁场越强,电压越高,磁场越弱,电压越低,霍尔电压值很小,通常只有几个毫伏,但经集成电路中的放大器放大,就能使该电压放大到足以输出较强的信号。若使霍尔集成电路起传感作用,需要用机械的方法来改变磁感应强度。
磁场中有一个霍尔半导体片,恒定电流I从A到B通过该片。在洛仑兹力的作用下,I的电子流在通过霍尔半导体时向一侧偏移,使该片在CD方向上产生电位差,这就是所谓的霍尔电压。
STM32最小系统电路包括电源电路、复位电路、时钟电路、启动模式设置电路、编程接口电路,是维持单片机正常运行的电路。应用功能电路有:LED电路、下载电路、滤波电路等。通过以上电路设计,STM32F103C8T6最小系统板能够提供稳定的电源、时钟和复位功能,同时满足特定应用需求的附加功能电路。这样的设计使得系统能够正常运行,并为后续的应用开发和调试提供方便。
以下是“STM32F103核心板PCB图正面”
以下是“STM32F103核心板3D图”
STM32F1系统单片机是基于ARM Cortex-M3内核、可运行于72MHz的基础型32位单片机,满足工业、医疗和消费类市场的各种应用需求。
STM32F103C8T6是基于ARM Cortex-M3内核的32位增强型单片机,片内Flash为64KB、RAM为20KB,引脚数为48个,采用LQFP封装,工作温度为–40 ~ +85 °C。最高主频为72MHz,总线宽度为32位,输入/输出端口为37个,供电电源电压为2.0~3.6V。
9个电源引脚,分别是第1,8,9,23,24,35,36,47,48引脚,其中:
VBAT:备用电源引脚,接1.8V~3.6V电池电源,为RTC时钟提供电源;
VDDA:接模拟电源,为芯片中模拟电路部分提供电源;
VSSA:接模拟电源地,为芯片中模拟电路部分提供参考地;
VSS_x(x=1,2,3):接芯片供电电源地,为芯片中数字电路部分提供参考地;
VDD_x(x=1,2,3):接2.0V~3.6V电源,一般接3.3V电源,为芯片中数字电路部分提供电源。
有2个特殊功能引脚,分别是第7引脚NRST和第44引脚BOOT0:
NRST:芯片复位引脚,低电平有效(该引脚为低电平时将使芯片复位)。
BOOT0:芯片启动模式选择功能引脚。在复位时,该引脚与BOOT1功能引脚(第20引脚)共同决定系统的启动模式。
(1)剩余37个引脚为STM32F103C8T6的IO端口引脚,其默认主功能可以分为时钟功能引脚、编程功能引脚和通用输入/输出(GPIO)引脚。
(2)时钟功能引脚为第5(OSC_IN)和第6(OSC_OUT)引脚,用于外接有源时钟或时钟晶振。
(3)编程功能引脚为第34,37,38,39,40引脚,支持标准JTAG编程或SWD串行编程。
(4)STM32单片机最小系统电路包括:①电源电路;②复位电路;③时钟电路;④启动模式设置电路;⑤编程接口电路。
(5)启动模式:
①STM32F103系列单片机设置了一个特殊的启动机制,使得启动时系统可以从三个代码存储区(Flash存储区、系统存储区和SRAM存储区)中的任意一个存储区启动运行程序代码,随后进入相应的存储空间执行程序代码。
②该特殊启动机制是通过单片机的功能引脚BOOT0和BOOT1实现选择的。
③在系统复位后的第4个系统时钟(SYSCLK)上升沿锁存BOOT0和BOOT1引脚电平状态。
④根据BOOT0和BOOT1引脚电平状态设置MCU上电复位后的启动模式(Flash存储区启动模式、或系统存储区启动模式、或内置SRAM存储区启动模式),随后进入相应存储区空间执行程序代码。
以下是“扩展板PCB_实物图”
以下是“STM32F103核心板_实物图_正面”
以下是“STM32F103核心板_实物图_反面”
首先,由于我们考虑到了电路连接的可靠性和稳定性,合理安排了元件和信号线路的位置,从而减少了信号干扰和噪音的可能性,使得电路能够高效地工作,并为后续的组装和维护提供了便利。
其次,我们在焊接时对焊接质量非常重视,确保焊接点的牢固性和均匀性,使得焊盘和引脚之间的连接稳定可靠,为电路的正常运行提供了坚实的基础。
PCB设计与焊接工作将为实现电机转速控制系统的顺利运行奠定坚实的基础。
STM32CubeMX是一款由STMicroelectronics开发的集成开发环境(IDE),用于快速配置和生成STM32微控制器的初始化代码。它提供了一个直观的图形界面,允许开发者以可视化的方式配置STM32微控制器的各种外设、时钟源、引脚分配和中断设置等。帮助开发者快速启动STM32微控制器的项目,并生成符合其配置需求的初始化代码。它简化了配置和初始化的过程,加快了开发周期,使得STM32微控制器的开发更加高效和便捷。
我们所购买的编码电机的连线
尽管我使用的是DIY的STM32F103C8T6最小系统板,但为了确保软件的可扩展性,我在程序中选择了更高配的芯片型号STM32F103CVET6。这样做是因为STM32F103系列芯片在程序上对低配硬件设施具有兼容性。因此,我们在设计程序时,只使用了STM32F103C8T6所包含的资源部分,以确保程序的稳定性和兼容性,并为未来的扩展提供了更大的余地。
STM32F103的高级定时器拥有编码器功能,所以我们直接匹配高级定时器的编码器功能的引脚。
电机驱动我们使用TB6612模块,所以单片机上需要设置的引脚有:
①高级定时器编码器模式(CH1,CH2通道)
②通用或高级定时器的PWM输出模式
③两个GPIO控制电机转方向
④板载用来LED测试BUG
⑤基本定时器计算时间
配置RCC外部晶振:
改为72Mhz:
设置调试接口为Serial Wire模式可以节省硬件资源、提高调试速度、确保兼容性,并在功耗方面具有优势。这使得Serial Wire模式成为许多开发者选择的一种常见调试模式。
仿真更改:
编码器计数有三种模式:
①通道CH1计数
②通道CH2计数
③通道CH1、CH2双通道计数
编码器A相—CH1 简称CHA
编码器B相—CH2 简称CHB
此处需要说一点,上图种绿框部分的通道x计数模式并不是如它英文Rising Edge一样的上升沿计数的意思,而是计数模式的意思,这里算是cubeMX的小问题。他的真实含义是相对信号的电平计数模式。
相对信号就是CHA相对CHB的的电平或者CHB相对CHA的电平。
Rising Edge模式下CH1通道是遇到虚线出数值发生一次变化,左边为每次遇到虚线加一,右边为每次遇到虚线减一。即一个周期编码器计数两次。(Falling Edge模式加减相反)
TI1是CHA,TI2是CHB
计数规则如下图:
由图可知,TI1是一个周期CH1通道捕获两次脉冲,TI2是一个周期CH2通道捕获两次脉冲。
TI1和TI2就是两个同时捕获,一个周期可以捕获4次脉冲,精度更大更精准。
所以我们用TI1和TI2有效边缘检测。
CH1和CH2双通道捕获计数:
由图一个周期捕获四次脉冲,所以我们得除4,也就是上面的公式中 F = 4。
使用定时器1的通道1输出PWM,其中TIM1_CH1->PA8,初始频率=72M/((PSC+1)(ARR+1))=72M/(720100)=1000HZ,占空比 = (Pulse+1)/(ARR+1),初始占空比为0。
Pulse的值可以在代码中调。TIMx->CCRx = N。
配置三个状态显示LED灯:
(1)使用定时器2扫描接收到的脉冲数
中断响应频率=72M/(PSCARR)=72M/(7201000)=100HZ,中断响应间隔=10ms。
(2)使用定时器3作为编码器模式
定时器3中选择T1、T2触发,双通道捕获计数,一个周期捕获四次脉冲
(3)使用定时器4按键状态中断扫描
中断响应频率=72M/(PSCARR)=72M/(7210000)=100HZ,中断响应间隔=10ms。
配置中断优先级
TIM1为PWM生成
TIM2为定时器中断
TIM3为编码器捕获
TIM4为定时器中断
Systick为系统滴答定时器中断
初始化硬件I2C设备,用来驱动OLED显示屏
在硬件设计中,重点关注以下几个方面:方案确定、器件选型、实际仿真、原理图绘制、PCB板制作、元器件焊接和模块连接。通过这些步骤,完成了整个硬件设计过程。
从硬件设计的经验总结中,可以得出以下几点要点:
①选择较小尺寸的0603或0805贴片元器件,以便于焊接操作。
②在元器件布局上,尽量将相关元器件放置靠近。对于易受干扰的电路,可以考虑将其制成另一个小板子与主板连接,以减少干扰影响。
③在设计逻辑电路的印制电路板时,应构建闭环形式的地线,以提高电路的抗干扰能力。地线应尽量粗,过细的地线会导致地线电阻增大,使接地电位随电流变化,从而导致信号电平不稳定和抗干扰能力下降。
④系统设计应充分考虑系统扩展和外围设备配置的灵活性,以满足应用系统的功能要求,并留有适当余地。
⑤在硬件设计时,需与应用软件方案相结合,确保硬件能够有效支持软件功能实现,并提供良好的用户体验。
系统中的相关器件应尽可能进行性能匹配,以确保各部分间的协调工作和整体系统性能。通过遵循这些经验,可以提高硬件设计的效率和质量,确保系统的稳定性和可靠性。
PCB工程文件:
电机扩展板:
链接:https://pan.baidu.com/s/14iM8RQhLHEqQhjl04imEig?pwd=6666
提取码:6666
F103最小系统板
链接:https://pan.baidu.com/s/1oxne-AUoDHDH797q-3ooAA?pwd=6666
提取码:6666
本系列文章仅为学习记录所用。
上一章:基于STM32的直流减速电机PID控制系统设计(系列文章)——第一章系统设计及方案设定
下一章:基于STM32的直流减速电机PID控制系统设计(系列文章)——第三章 系统设计及方案设定