本文目录
- 本篇前言
- 知识点讲解
- 实操练习(放在下篇详述)
本篇前言
相比与软件知识点、思路的分享,硬件的分享显得有点奇怪,感觉每个点都可以分享得很详细,但又感觉分享得太少了,不足以构成一整篇的技术贴,就在这茫然之际,一直在想着怎么迈出这硬件02篇步子时,我征求了启发我分享嵌入式经验的那位同学,问了他们想做点什么,如何才能上手实际地设计一些有意义的硬件。根据他们的题目,我终于有了分享的方向,可以明确地说,通过学习本篇的知识点,我们可以学到嵌入式,工控行业的很多知识点,颇具含金量!
MCU的最小系统,及其原理讲述、按键设计、ADC功能、带自切换收发处理的485串口功能、PWM的原理和应用、小型电机的驱动芯片电路,以及在整个过程中,设计的思路与良好习惯分享。
老规矩,话不多说,加个封面图直接开始。
知识点讲解
(MCU的最小系统)
起码包含了单片机、电容滤波组、上电复位、BOOT选择、下载口部分。之所以没提到外部晶振,是因为现在的单片机多数都含有内部的晶振,往往我们通过修改相关的库函数就可以使用内部晶振作为时钟配置了。
电容滤波组,自不必说,给每个VDD引脚附近放置一个100nF的电容,在单片机的电源流入处再加上一个1uF的电容,一大一小黄金搭档,它们的作用是,消除高频噪声干扰,平滑电源稳定性,抑制瞬态噪声干扰,另外半导体器件本身就存在着电容,如果外部没有足够的电容器,容易引起振荡,芯片工作异常。
上电复位,单片机的复位引脚一般标着NRST或者/RST,不管是“N”还是“/”,都是代表低电平有效的意思,说明该处管脚电平为低时,系统复位,上电时,电容两端没电压,为低电平,随着时间T=RC过去后,电平缓慢上升到VDD,单片机正常工作。
BOOT选择,代表从用户闪存存储器启动,即程序在Flash中。
下载口,用于下载单片机程序的,一般采用SWD的两线下载方式,提供电源和地,不同电源的供地即可,对于连接SWD中的数据线SWD_IO和时钟线SWD_CK即可。
(按键设计)
按键按下时两端会短接,释放时两端会断开。我们通过设计上拉电阻,让按键在没按下时,单片机捕获的IO口电平有一个明确的高电平,按下后,按键两端与GND连接,单片机捕获IO电平为低电平,来区分按没按下,此外,我们还加了一个小电容(100pF)来进行硬件上的滤波,另外为了防止静电或干扰信号,我们在按键的IO口输入处串联了一个1K的电阻(需要注意分压的问题,提到输入电压问题,引入两个电平概念,CMOS电平与TTL电平,TTL低电平的一般要求为<0.8V,CMOS低电平的一般要求为<0.1*VDD,可以理解为CMOS电平更加接近电源的VDD和GND电平)
(ADC功能)
ADC功能,英文转译过来就是模拟信号转化为数字信号,是嵌入式不可或缺的一环,小到热敏电阻的分压来检测温度,大到工控行业里面的0-5V、0-10V、1-10V信号调节,0-20ma信号调节,都离不开ADC采集功能,一般单片机都会标明ADC又多少位的,如10位的ADC对应的最大值为1024,举个3.3V系统的例子,1.65V对应就是512,3.3V对应1023。一般的ARM单片机是12位的ADC居多,最大值为4095。在一些专门的ADC芯片上,用到16位的ADC,最大值对应65535。位数越高,精度越高。
(带自切换收发处理的485串口)
485是串口应用的一种通讯电平,是以差分电平来传输数据的,有A、B两线,不需要供地,是常见的工业控制方式。是半双工的芯片,双工指的是能发送与能接收,全双工指的是能同时进行收发处理,半双工指的是在同一时刻,只能进行接收或者发送。因此我们可以在485芯片中看到有个叫EN的引脚,发送EN和接收EN,因为他们内部是互斥的,所以我们通常把它们连在一起,一起控制电平。低电平接收,高电平发送。在软件中,我们每次操作都得控制一下芯片的通讯方向问题,有些时候出于代码的复杂性、代码兼容性等问题,我们不能像TTL串口一样做到“想发就发,不发就收”,自收发电路在网上已经有很多了,到时候我给大家在原理图上讲解一下逻辑,大家便很快可以理解,有点就是可以做到和TTL串口一样,缺点就是多一点元器件的费用和通讯的波特率不能过高,115200bps以内吧,工业通讯够用了,再说了波特率越高越不稳定,很多串口模块还使用着9600bps。
(PWM的原理和应用)
不得不说,PWM算得上是影响着我整个职业生涯的知识点了。毕业设计、实习期间的LED驱动、调光调色灯项目、0-10V模拟电压输出、以及现在做的直流无刷电机驱动。
PWM其实也不难,脉冲宽度调节,脉冲宽度就是高电平占整个周期的比例,一般称为占空比,周期又决定了频率,所以说,我们经常看到的10KHz的PWM,其实就是1/10 000 s内为一个周期。另外一点要提一下的就是,硬件PWM值的是由硬件定时器产生的PWM,硬件定时器,表示定时器的功能是由硬件产生的,运行后不受软件干扰,与软件同步进行,我们在设计时不需要通过控制IO口高低电平来生成PWM,把定时器配置好了之后,对应的IO口将一直输出着PWM对应的高低电平。
(电机驱动芯片应用)
小时候,我们都玩过四驱车,我们还管里面的电机叫做马达,现在回看一下,是属于小型的直流有刷电机无疑了。当我们接对正负极之后,电机会正转(顺时针cw),当我们把正负极方向反接时,电机便会反转(逆时针ccw)。试想一下,电路中我们怎么能够通过电路控制的方式实现正反转切换呢,我们使用4个MOS管来作为电子开关,两个控制正极导通,两个控制负极导通,从而我们只控制各自的两个MOS管导通,这样我们相当于控制我们接线,从电路外形上来看就像“H”字母一样,我们也叫H桥驱动电路。
电机驱动芯片里面其实就是集成了一个H桥电路,受限于MOS管的电压、电流问题,一般的SOIC-8封装的驱动芯片只能驱动12V以下的电机。再大一点的电压,我们就得老老实实地使用MOS管来控制了,对于H桥的MOS,切换控制时,同一边的两个MOS管是不能同时驱动的,这又引入了一个死区时间的概念,一般集成的驱动芯片都会在内部处理这个死区时间,外接MOS时单片机的硬件PWM也可以配置这个死区时间,这块我们放在无刷电机方面再分享。这一次我们先通过使用电机驱动芯片把电机驱动起来先。
实操练习
因为本文篇幅已经很长了,放下一篇硬件03篇再进行具体的实操练习。
小弟感谢大家的关注!
(利他之心,原创分享)