资讯详情

嵌入式分享合集22

来来来 最近每天都在使用嵌入式go -纯tcp太烦人了 来把 看看c吧

一、嵌入式C语言2

使用预处理指令 #define 用来表示常数 1 年中有多少秒(忽略闰年问题):

#define  SECONDS_PER_YEAR  (60 * 60 * 24 * 365)UL
 

写标准宏MIN,宏输入两个参数,并返回较小的参数:

#define  MIN(A,B) ((A) <= (B) ? (A):(B))

预处理器标识 #error 目的是什么:

#error : 停止编译 并显示 错误信息

无限循环常用于嵌入式系统,您如何用C语言编写死循环:

用变量a给出以下定义:

  • 整形数:int a;

  • 指向整形数的指针:int * a;

  • 指针指针,指针指向整形数:int * * a;

  • 数组有10个整形数:int a[10];

  • 数组有10个指针,指向整形数:int * a[10];

  • 数组指针有10个整形数:int ( * a ) [ 10 ];

  • 指向函数的指针有一个整形参数,并返回一个整形参数:int ( * a)(int);

static请写两个功能:

关键字const的作用:

另外使用const定义变量:

volatile的作用:

定义为volatile的变量可能会被意想不到地改变,优化器在用到这个变量时必须重新读取这个变量的值,而不是保存在寄存器里的备份。

volatile变量的例子:

嵌入式系统总是要求用户操作变量或寄存器的位置:

嵌入式系统通常要求程序员访问特定的内存位置,并要求将绝对地址设置为0x67a9整形变量值为0xaa66:

中断概念:

当事件发生时,CPU 停止正在执行的程序,转移到处理事件的程序,并返回原程序继续执行的过程。

ISR:中断服务程序(Interrupt Service Routines)。

以下代码输出的结果是什么?

当表达式 中存在 有符号类型 和 无符号类型 时,所有的 操作数 自动转换 因此,无符号类型 -20 表达式计算的结果变成了一个非常大的正整数 答案是输出,大于6 > 6。

动态内存分配:

typedef定义基本数据类型和导出数据类型的新名称:

二、蜂鸣器驱动电路详解

蜂鸣器是电路设计中常用的设备,广泛应用于工业控制报警、机房监控、门禁控制、计算机 如电子产品作为预警发声器件,驱动电路也很简单,但很多人在设计时往往会随意设计,导向 蜂鸣器在实际电路中不发声、轻微发声、乱发声。

下面就 3.3V NPN 三极管驱动有源蜂鸣器设计,分析际产品中分析电路设计中存在的问题,提出电路改进方案,让读者学会分析和改进小蜂鸣器电路中的电路方法,从而设计出更好的产品,达到抛砖引玉的效果。whaosoft aiothttp://143ai.com

上图是典型的错误接法,当 BUZZER 当端输入高电时,蜂鸣器通常不响或噪音太小。 I/O 当口腔为高电时,基极电压为 3.3/4.7*3.3V≈2.3V,由于三极管的压降 0.6~0.7V,则三极管射 极电压为 2.3-0.7=1.6V,驱动电压过低导致蜂鸣器无法驱动或噪音小。

由于上拉电阻,上图是第二种典型的错误连接方法R2,BUZZER 当端部输出低电平时,因为 电阻R1和R三极管不能可靠用下不能可靠关闭。

上图显示了第三个错误的连接方法,只有三极管的高电平门槛电压 0.7V,即在 BUZZER 端输入 压只要超过0.7V三极管导通有可能,显然0.7V的门槛电压对于数字电路来说太低了, 蜂鸣器在电磁干扰的环境中很容易鸣叫。

当上图为第四种错误接法时CPU的GPIO当管脚内部下拉时,因为 I/O 输入阻抗也可能导致三极管不可靠关闭,与图3相同BUZZER端输入电压超过0.7V三极管导通有可能。

我不认为上述用法是完全不可能的。对设备的各种参数要求有限,不利于设备选择,抗干扰性能差。

上图为通用有源蜂鸣器的驱动电路。R1.限流电阻,防止基极电流过大损坏三极管。关于三极管的基础,请移动本文:PNP与NPN使用两种三极管的方法。

电阻R它起着重要的作用。

第一个功能:R2 相当于基极的下拉电阻。如果a端悬挂,则是因为R如果删除,三极管的存在可以保持可靠的关闭状态R2则当BUZZER输入端悬挂时,容易受到干扰,可能导致三极管状态意外翻转或进入预期放大状态,导致蜂鸣器意外发声。

第二个作用:R2.提高高电平的门槛电压。如果删除R2.三极管的高电平门槛电压仅为0.7V,即A端输入电压超过0.7V 可导通,添加R2的情况不同,当从A端输入电压达到2左右时.2V 时三极管才会饱和导通,具体计算过程如下:

假定β =120是晶体管参数的最小值,蜂鸣器的导电流是15mA。然后集电极电流IC=15mA。当三极管刚刚达到饱和导通时,基极电流是 IB=15mA/120=0.125mA。流经R2的电流是0.7V/3.3kΩ=0.212mA,流经R1的电流 IR1=0.212mA 0.125mA=0.337 mA。最后算出BUZZER端的门槛电压是0.7V 0.337mA× 4.7kΩ=2.2839V≈2.3V。

图中的C二是电源滤波电容器,滤除电源高频杂波。C1在强干扰环境下,可有效过滤干扰信号,避免蜂鸣器发音和意外声音 RFID射频通讯、Mifare应用卡时,这里初步选择0.1uF 可根据实际情况选择电容。

有蜂鸣器EMI 辐射?!在 NPN 3.3V 在电路中控制有源蜂鸣器 BUZZER 输入 高电平,让蜂鸣器鸣叫,检测蜂鸣器输入管脚(NPN 当蜂鸣器发出声音时,三极管的C极信号向外发生1.87KHz,-2.91V 蜂鸣器本身的脉冲信号如下图所示。

在电路的BUZZER 输入20Hz脉冲信号,让蜂鸣器鸣叫,检测蜂鸣器输入管脚信号,发现蜂鸣器在控制电平上叠加1.87KHz,-2.92V 蜂鸣器关闭时,正向尖峰脉冲信号出现(≥10V),如下图所示。

上图中1.87KHz,-2.92V 脉冲信号应该是有源蜂鸣器内部冲击源释放的信号。常用的有源蜂鸣器主要分为压电式, 两种电磁冲击, iMX283 压电蜂鸣器用于开发板。压电蜂鸣器主要由多谐振荡器、压电蜂鸣器、阻抗匹配器、共振箱和外壳组成,多谐振荡器由晶体管或集成电路组成。我们使用的蜂鸣器含有晶体管振荡电路(感兴趣的朋友可以自己打开)。

有源蜂鸣器产生的脉冲信号能量不是很强,可以考虑增加过滤电容器来过滤脉冲信号。在有源蜂鸣器的两端添加104个过滤电容器号削减到-110mV,减少蜂鸣器自身发放脉冲如下图所示,但顶部信号由于电容充电过慢,有点延时。

   消除蜂鸣器EMI辐射,NPN 有源蜂鸣器控制电路改善后电路图如下所示。

 

    作为标准电路,需要考虑电路的兼容性问题,比如同样耐压不同功率的有源蜂鸣器,有 源蜂鸣器和无源蜂鸣器的兼容性问题。

    为了电路的兼容性和可扩展性,电路需要考虑兼容不同厂家和不同功率的蜂鸣器。同一 个耐压的蜂鸣器主要是蜂鸣器的内阻和工作电流不一样,一般 3V~5V 耐压的蜂鸣器,不同功率的蜂鸣器导通电流是 10mA~80mA。我们按照最大功率的蜂鸣器去设计电路即可,即三极管的推动电流按照 80 mA 设计。

    假定:β=120 为晶体管参数的最小值,蜂鸣器导通电流是 80 mA。那么集电极电流 IC =80 mA。则三极管刚刚达到饱和导通时的基极电流 IB=80mA/ 120=0.667mA。流经 R2的电流是 0.7V/ 3.3kΩ= 0.212mA,所以流经 R1 的电流应该是 IR1=0.667mA +0.125mA=0.792mA。BUZZER 端的门槛电压是设定在 2.2V,那么 R1=(2.2V-0.7V)/ 0.792mA=1.89K。电阻取常规 2K 即可。

    如果电路更换功率稍大一点的有源蜂鸣器,可以按照上面的计算方法计算 R1 的大小。

    在电路的设计过程中,往往会碰到需求变更,比如项目前期,对蜂鸣器的发声频率没有 要求,但后期有要求,需要更换为无源蜂鸣器,这时就需要修改电路图,甚至修改 PCB, 这样就增加了改动成本、周期和风险。

    有源蜂鸣器和无源蜂鸣器的驱动电路区别主要在于无源蜂鸣器本质上是一个感性元件, 其电流不能瞬变,因此必须有一个续流二极管提供续流。否则,在蜂鸣器两端会有反向感应 电动势,产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。而如果电路中工作电压较大,要使用耐压值较大的二极管,而如果电路工作频率高,则要选 用高速的二极管。这里选择的是 IN4148 的开关二极管。NPN 无源蜂鸣器控制电路图如下所示。

 

三、菊厂体脂秤拆解

这块菊厂体脂秤诞生于2016年有些年头了,通过拆解发现,内部线路结构比较简单,主控和测脂芯片均来自一家深圳企业,同时搭配了四颗高精度压传感器

    之前发过的类似文章:拆解体脂秤,学习其内部电路。

    外观采用大面积超白钢化玻璃面板,用隐藏式的ITO电镀膜完成人体阻抗测量,取代市面上普遍的金属电极片方案。不仅提升了产品设计美观度,而且用户不必再要求站在指定的电极位置上,测量更自由简单。

    隐藏式LED显示屏效果,不必担心破坏秤面设计美感,在偏暗的环境下数值仍然清晰可读。

    体脂秤需要4节AAA(七号)电池供电,底部三个小孔是蜂鸣器的出声孔,装上电池后蜂鸣器响起即表示开机。

    秤脚采用可活动的“万向式”设计,即便地面有轻微水平差异,也可以更好地过滤掉秤面倾斜造成的测量误差;大秤脚+磨砂设计科学分布中心防滑防侧翻。

    最大可支撑150kg的体重,胖子也能放心使用,不必担心踩坏。

    菊厂商城官网上的一些参数信息,交流测试,频率50KHz;主控IC是一款MCU+蓝牙的集成芯片。

    接下来我们进入重要的拆解环节。

    体脂秤的秤体采用卡扣对应进行固定,拆下几颗螺丝钉后,用塑料撬片沿着缝隙划开上下盖板的塑料卡扣即可拆开。

    上盖板(即玻璃秤面一侧)完成核心元器件设计,如图左侧所示。

    四角的位置分别为四颗高精度压力传感器

    下盖板采用ABS塑料材质,上下塑料盖板内部均使用了大量加强筋做强化处理。

    点式传感器测量精度更高。

    电路主板,表面涂有明显的防潮油,右上角集成蓝牙天线。

    主控IC采用芯海科技的CST34M97集成了称重、蓝牙、LED显示驱动等功能。

    据悉为秤领域首颗双核蓝牙SOC体脂秤专用芯片,双核CPU架构,称重测脂与蓝牙通讯独立运行。

    主控的右下侧是一颗FLASH芯片,型号为FT25H04S,容量4MB。

    测脂IC同样是来自于芯海科技的产品CS1256,采用四电极+正弦波激励的BIA生物电阻抗分析技术。延庆川北小区45孙老师 收卖废品破烂垃圾炒股 废品孙 再回收

    将主板拆下来,LED显示屏一侧,如图所示可以显示四位数字、蓝牙、百分比以及单位等符号。揭开表层,可以看到盖板下方共有35颗LED。

标签: 主板硬件三极管1800uf主板电容22000uf螺丝型大型电容uf4007二极管的参数传感器孔盖板通用三极管pnp

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台