单片机I/O驱动,为什么一般选用三极管而不是MOS管?(作者:硬件笔记本)
这里其实有两个问题:
1.单片机为什么不直接驱动负载?
2.单片机为什么一般选用三极管而不是MOS管?
图1
答:1.单片机的IO口,有一定的带负载能力。但电流很小,驱动能力有限,一般在10-20mA以内。所以一般不采用单片机直接驱动负载这种方式。
2.至于单片机为什么一般选用三极管而不是MOS管?需要了解三极管和MOS管的区别,如下:①三极管是电流控制型,三极管基极驱动电压只要高于Ube(一般是0.7V)就能导通。②MOS管是电压控制型,驱动电压必须高于阈值电压Vgs(TH)才能正常导通,不同MOS管的阈值电压是不一样的,一般为3-5V左右,饱和驱动电压可在6-8V。
我们再来看实际应用:
处理器一般讲究低功耗,供电电压也越来越低,一般单片机供电为3.3V,所以它的I/O最高电压也就是3.3V。
①直接驱动三极管
3.3V电压肯定是大于Ube的,所以直接在基极串联一个合适的电阻,让三极管工作在饱和区就可以了。Ib=(VO-0.7V)/R2。
图2驱动三极管示意图
②驱动MOS管
通过前面也了解到,MOS管的饱和电压>3.3V,如果用3.3V来驱动的话,很可能MOS管根本就打不开,或者处于半导通状态。
在半导通状态下,管子的内阻很大,驱动小电流负载可以这么用。但是大电流负载就不行了,内阻大,管子的功耗大,MOS管很容易就烧坏了。
所以,一般选择I/O口直接控制三极管,然后再控制MOS管。
图3I/O口驱动三极管后再驱动MOS管
当I/O为高电平时,三极管导通,MOS管栅极被拉低,负载RL不工作。
当I/O为低电平时,三极管不导通,MOS管通过电阻R3,R4分压,为栅极提供合适的阈值电压,MOS管导通,负载RL正常工作……
实例分析stm32单片机六大滤波算法(作者:liuxiaofei126)
在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅长实现算法和进行复杂的运算。下面主要是介绍如何用单片机实现数字滤波。
在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。
为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。
一、采用数字滤波算法克服随机干扰的误差具有以下优点:
二、限幅滤波算法
该运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。
A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则取上次采样值作为本次数据的样本。
算法的程序代码如下……
单片机编程:如何“喂狗”的灵魂拷问...(作者:嵌入式客栈)
单片机程序写那么多,看门狗狗天天见,你的狗狗养的对么?不停的“喂狗”,只要狗不叫就完了嘛?真是这样么?事实上可能不是你想的那么简单.....
看门狗也称为看门狗定时器,本质上是一种定时电路或者软件定时器机制。
工作原理:
看门狗的硬件基础是一个计数器,该计数器被设置为某个定时初值,然后递减至零。软件负责经常将计数重置为其定时初值,以确保计数永远不会达到零。如果确实达到零,则意味着某种故障发生,该采取对应措施应对,或重启或进入失效安全状态,具体取决于系统的设计。
通俗讲也称为喂狗,这个定时值相当于狗粮,狗狗吃饱了,胃里不断消耗狗粮,如果在消耗完之前没有在喂狗粮,再狗狗饿得直叫唤,发出预警消息。反言之,一个一直正常工作的系统,其看门狗总是被喂养的很好,不会饿了狂叫。
看门狗机制在电子系统中作用非常之重要,这里举个极端的栗子,火星车如果程序挂了,就相当于失联,如果没有看门狗电路。你想象一下是什么场景,无法通讯无法唤醒,秒变太空垃圾~
原因万万千,憋慌!你还有个好狗狗在帮你,让看门狗来收拾残局吧。在一个复杂的嵌入式系统中,不可能保证没有bug,但是通过使用看门狗,您可以保证没有任何bug会无限期地挂起系统。
常见的处理策略有哪些呢……
STM32单片机最小系统详解(作者:程序员小哈)
STM32F103RCT6:
STM32F103RCT6是一种嵌入式-微控制器的集成电路(IC),32位Cortex-M3内核处理器,速度是72MHz,程序存储器容量是256KB,程序存储器类型是FLASH,RAM容量是48K,封装LQFP64。
STM32单片机命名规则:
STM32单片机最小系统:
所谓单片机最小系统,就是让单片机能够正常运行,最少且必须的器件所组成的系统。
单片机最小系统上电之后,单片机可以正常复位,下载程序,除此之外没有其他任何功能。
在最小系统保证正确的基础上,可以依次添加其他功能模块或器件,使之单片机具有实际功能。
STM32单片机最小系统包括一个复位电路和一个时钟电路。如下图1所示。
图中复位电路使用的是上电复位电路,STM32单片机NRST引脚输入低电平,则发生复位。
标题图1STM32F103单片机最小系统
电源引脚:
VDD是单片机的数字电源正极,VSS是数字电源负极,共有5个VDD引脚,5个VSS引脚。VDDA是单片机的模拟电源正极,负责给内部的ADC、DAC模块供电,VSSA是模拟电源负极。
还有一个电源引脚,就是VBAT,BAT就是Battery(电池),这个引脚用来连接电池的正极的。STM32带RTC功能(实时时钟),所以有VBAT引脚。
原理图上预留了一个CR1220纽扣锂电池,当主电源供电存在的情况下,由系统中的VCC3.3给VBAT供电;
当主电源断电之后,由CR1220纽扣电池给STM32自带的RTC模块供电,从而能够保证实时时钟模块在主电源掉电的情况下还能够正常工作。
但是这样设计的话,这里有一个矛盾需要解决。如果VBAT引脚直接与VCC3.3和CR1220连接的话,会存在下面问题:
1、当电池电压高于3.3V,电池就会输出电流到AMS1117,使得芯片发烫,还会很快消耗电池电量。
2、如果电池电压低于3.3V,AMS1117产生的3.3V,就会给电池充电,而这种CR1220电池是不能够充电的。
为了解决上面问题,我们将VBAT引脚的供电电路设计如下:
D1防止电池的电流流向AMS1117,D2防止AMS1117产生的3.3V流向电池。
之所以这样设计,用的就是“二极管的单向导通性”。
正常产品设计的时候,每个电源引脚旁边,最好放置一个0.1uF的电容滤波,用来滤除电源的噪声杂波。
复位引脚NRST
复位就是重启。STM32复位引脚是低电平复位,正常工作状态,复位引脚是高电平。
单片机的置位和复位,其目的都是为了把电路初始化到一个确定状态。复位时在单片机内部单片机是将存储设备和一些寄存器装入生产厂商预设的一个值。一般来说,单片机复位电路的作用是把一个状态机初始化到一个空的状态……
STM32单片机PVD(掉电检测)的介绍及其重要作用(作者:玩转单片机与嵌入式)
有时在一些应用中,我们需要检测系统是否掉电了,或者要在掉电的瞬间需要做一些处理。STM32就有这样的掉电检测机制——PVD(ProgrammableVoltageDetecter),即可编程电压检测器。通过PVD我们可以设定一个基准电压,当芯片的供电电压高于或低于该基准电压时便产生PVD中断,我们可以在PVD中断里做一些处理。
PVD介绍
本文以STM32F1x为例,来说明PVD的使用。
用户可以利用PVD对VDD电压与电源控制寄存器(PWR_CR)中的PLS[2:0]位进行比较来监控电源,这几位选择监控电压的阀值。
通过设置PVDE位来使能PVD。电源控制/状态寄存器(PWR_CSR)中的PVDO标志用来表明VDD是高于还是低于PVD的电压阀值。
该事件在内部连接到外部中断的第16线,如果该中断在外部中断寄存器中是使能的,该事件就会产生中断。当VDD下降到PVD阀值以下和(或)当VDD上升到PVD阀值之上时,根据外部中断第16线的上升/下降边沿触发设置,就会产生PVD中断。例如,这一特性可用于用于执行紧急关闭任务。
由PLS[2:0]的介绍可以发现PVD的电压阈值共有8个等级,实际使用时可根据自己的实际情况进行选择。
PVD的作用
在实际做产品/项目的过程中,可能大家对PVD的作用会忽视掉,下面列举PVD的作用:
这个很好理解,可能业务上就有这个需求,或者可以利用这一点来完成低功耗设备的待机时长测试。
2.通知其他处理离线
假如设备中有由干电池供电的MCU1和由锂电池供电的MCU2,MCU1的部分功能可能需要MCU2来完成,MCU1需要知道MCU2是否离线(因为锂电池可拔插,可能随时被拔)。这种情况就可以在MCU2上利用PVD来通知MCU1。通知的方式有很多,例如串口直接通知另一方自己将要断电了。
PS:当然也可通过MCU2监听MCU1的电源来实现……
STC单片机入门使用KeilC51(作者:飞多学堂)
作为国货之光,STC单片机以其价格便宜、内置接口多等特性在一些大厂不屑一顾的角落茁壮成长。今天我们来学习一下基于KeilC51的开发环境搭建,然后编写一个简单的闪灯程序。
先对一些术语去魅:
我们使用STC-ISP作为烧录软件。
下载解压完后,不用安装,直接运行,界面如下:
界面非常的朴实无华,正好是酷炫吊炸天的反面。
STC-ISP这个软件除了烧录程序,还有它用,等会儿我们再说……
单片机如何能运行如飞?高效实现数学函数的方式!(作者:小麦大叔)
那么问题来了,有一个读者朋友的硬件平台无法使用IQMath,但是他要进行一些三角函数的运算,那么该如何自己动手实现呢?
下面我们来简单介绍一下整体的思路吧,因为硬件平台的资源比较紧张。
下面我们来详细介绍一下。
这个正弦函数表达式是这样的,
具体如下图所示;
正弦波
首先我们来简单分析一下这个波形:
其实不难发现,我们只要表示出这四分之一个波形的数据,其余剩下的波形都可以通过换算表示出来。
这样做就大大节省了查表法所需要的空间。
下面我们来介绍一下具体如何实现;
首先我们得搞清楚一个点,就是量纲,统一用归一化的形式来做。
而在实际的程序中,我们是无法这样去做的,这些数值我们期望通过整形类型去访问,所以我们要做到几点:
所以这里有必要先了解一下Q格式,用左移和右移去代替乘法和除法,提高运算效率;
对于X轴的数据,于是可以将[0,2π]细分成128,256,512或者1024等等;
这里我们先细分成1024等份,正如前面提到的,只需要选择前四分之一周期的内容即可……
STM32单片机和51单片机有何区别?(作者:巧学模电数电单片机)
单片机简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件。
在个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机将这些都集中在了一个芯片上。
51单片机:
应用最广泛的8位单片机,当然也是初学者们最容易上手学习的单片机。
最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“经典”,为以后的其它单片机的发展奠定了基础。0151单片机特性51单片机之所以成为经典,成为易上手的单片机主要有以下特点:
从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。
不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。
同时在片内RAM区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便。
乘法和除法指令,这给编程也带来了便利,很多的八位单片机都不具备乘法功能,做乘法时还得编上一段子程序调用,十分不便。
51单片机缺点:
51单片机应用范围:
目前在教学场合和对性能要求不高的场合大量被采用。
使用最多的器件:8051、80C51。
STM32单片机:
由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。
其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M内核;同时具有一流的外设,1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等。
在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度。由于其简单的结构和易用的工具,再配合其强大的功能,在行业中赫赫有名。