嵌入式分享合集125

news2025/7/13 21:50:39

一、多层板PCB设计中电源平面相对地平面要进行内缩?

有一些人绘制的PCB,在GND层和电源层会进行一定程度的内缩设计,那么大家有没有想过为什么要内缩呢。

需要搞清楚这个问题,我们需要来先了解一个知识点,那就是“20H”原则:

20H原则主要是为了减小电路板电磁辐射问题提出来的,在电路板上如果存在高速电流,就存在与之相关的磁场,在各个层的边缘,电磁场的辐射方式如下图所示:

可以看到在我们地层和电源层上下平面大小一致的时候由于电源层和地层之间的电场是变化的,在板的边缘会向外辐射电磁干扰,那一般这个解决方法是将电源层内缩一定的距离,这样就可以使电场只在地层的范围内传导,从而达到抑制边缘辐射效应,提高电磁兼容性(EMC)。

那么我们一般要内缩多少距离呢,我们内缩的距离就是我们之前说的“20H”的距离,这个H指的是电源层与地层之间的介质厚度,“20H规则”的采用是指要确保电源平面的边缘要比0V平面边缘至少缩入相当于两个平面间层距的20倍。 

如上图所示就是内缩后的电源平面与地平面,我们可以看到现在的电磁场大部分不会向外辐射出去了,这样就减小了对外EMI辐射,但是我们为什么会说大部分不会向外辐射出去了呢?因为我们发现电源相对于地层的边缘缩进20H,那么电磁场的密度可以减小约70%,并不是说可以减小到0,那如果我们需要将更多的电场限制在内则可以内缩“100H”,一般来说,内缩100H可以将98%的电场限制在内,所以这就是为什么我们的板子需要内缩的一个原因。 

​​​​​​​但是由于叠层的设计,在通常的一些PCB板上,严格满足20H的话,无法进行PCB布线了,所以一般的处理方式是电源GND 相对GND 内缩1MM,这样我们板子的性能也得到一定的保障。

我们也需要注意一下,我们的20H原则是在一定的前提下才可以有明显的效果。

1 电源平面要处在PCB内部,并且与他相邻的上下两个层都为0V平面,这两个0V平面向外延伸的距离至少要相当于他们各自与电源平面间层距的20倍。

2 PCB的总层数要大于或等于8层

二、用二极管实现不同电压的输出

利用二极管的单向导电性可以设计出好玩、实用的电路。

    分享本文,分析限幅电路和钳位电路,是如何用二极管来实现的。

限幅电路

    如下图所示,当在正半周期,并且VIN大于等于0.7V,二极管正向导通。此时,

VOUT会被钳位在0.7V上。

    而当VIN小于0.7V时二极管是截止状态,在负半周期时相当于电流反向,二极管也是截至状态,此时VOUT=VIN,VOUT波形跟随VIN变化。

限辐电路示意图

    根据上面限辐电路的原理,可以设计如下双向限辐电路。

 

双向限辐电路示意图

    然而有时候0.7V电压不能满足要求,那么,怎么产生不同大小的限幅电压?

    在电路中加入偏置电压VBIAS,只有当VIN大于等于VBIAS时二极管才能导通。此时VOUT被钳位,其值是0.7V+VBIAS,如下图所示。

偏压限幅电路示意图

钳位电路

    下面是二极管结合电容实现的钳位电路。分析中不考虑二极管的导通压降,假设RC时间常数足够大,从而使输出波形不会失真。

钳位电路原理

    当输入Vin在负半周期为负时,电流如下图中红色箭头所示。二极管导通,电容逐渐充电至V,在此过程中Vout=0。

    当输入Vin在正半周为正时,电流如蓝色箭头所示。二极管截止,Vout等于电容上电压加上正半周电压V,此时Vout=2V。

钳位电路原理

偏压钳位电路

    跟限幅电路类似的,为了获得所需要的钳位值,要在电路中加入偏置电压,如下图所示。


 偏压钳位电路

    当所加的偏压与二极管导通方向一致,钳位值会提高V1,Vout=2V+V1。

双向二极管钳位电路应用举例

    在某些电路中会利用两个二极管的钳位作用进行保护,如下图所示,假设0.7V为D1和D2的导通电压。

  • Vin大于等于Vmax,D1导通,Vout会被钳位在Vmax

  • Vin小于等于Vmin时,Vout被钳位在Vmin

 

三、微波炉电路

   在厨房电器中,微波炉可以说是最具技术含量的电器,它的工作原理不像其他电器那样一眼就能看个明白,于是拆解了一个微波炉,分析内部电路。

微波炉的结构

    微波炉由箱体、磁控管、变压器、高压电容器、高压二极管、散热风扇、转盘装置及一系列控制保护开关组成,大多数微波炉还装了电热管,兼有烧烤功能。

微电脑控制式微波炉

机械控制式微波炉

    微波炉的关键元件是磁控管,磁控管除了微波炉有这个东西,其他家用电器上是看不到的。更主要的是这个磁控管不能拆解,要想弄清他的结构,只能破坏性地解剖。好在网上还有“秀才”,视频能够很清楚地表达磁控管的内部结构。

磁控管灯丝

磁控管阳极

    清楚了内部结构,没有相当的电磁电子学理论基础,也是云里雾里,不知道它怎么能产生微波。这微波不像石英电加热管能看得到红彤彤的发热体,它看不见也摸不着,却能把食物烹熟,可知这微波对人也是很具杀伤力的。

    为了防止微波泄漏,微波炉在安全方面采取了很严格的防护措施。微波炉有三个门联开关就是防止微波伤人事故的。也就是因为有这三个门联开关,微波炉的电路图也复杂了许多。

微波炉的电路

    这是LG微波炉(WD700)的电路图。初级开关、监控开关、次级开关是三个门联微动开关。初级开关、次级开关是常开型微动开关,炉门开着时,微动开关触点断开,监控开关是常闭型微动开关,炉门开着时,微动开关触点闭合。

上电状态

    关闭炉门,初级开关、次级开关闭合,监控微动开关断开;插上电源,微波炉电路板通电,因为电路板上有芯片,显示屏显示“0”,这种情况也称上电状态。图中RY1并不是常闭继电器,上电状态下炉灯形不成回路,炉灯不亮。

开门状态

    门打开时,初级开关断开火线,次级开关PK断开微波与烧烤继电器回路,监控开关闭合,将高压变压器初级线圈短接,目的是防止误意外因素产生微波,危及人生安全。开门时次级开关PK断开,微处理器获得信号,驱动芯片向RY1继电器线圈供电,RY1触头接通,炉灯亮。因初级开关处于断开位置,风扇、托盘不工作。

烧烤状态

    上电状态下按烧烤按钮,开始按钮指示灯闪亮,旋转开始旋钮设定烧烤时间,按下开始按钮,RY3接通,形成烧烤回路。同时主继电器RY1接通,风扇、托盘、炉灯同时工作。值得注意的是,托盘是用21V同步电动机驱动的,电压来自于散热风扇罩极异步电动机线圈抽头。

微波状态

    上电状态下按开始键,或按任何其它按钮,设置重量或时间再按下开始按钮,RY2闭合,就形成微波状态。其中灯丝回路电压为交流3.3V。磁控管回路电压为-4000V直流电,该回路可以把高压变压器二次侧的电压分解为正半周与负半周分别分析。在正半周,高压二极管导通,向高压电容器充电,电压约为2000V;在负半周,高压二极管截止,高压电容器放电,与二次侧的电压叠加,形成约4000的直流电压,阴极电子逆电流方向射向阳极形成微波。

控制板电路

    控制电路板也就是PCB板上的二次回路,LG微波炉(WD700)程序比较多,二次回路还是比较复杂的。PCB板上的按键输入信号并不是直接触发晶闸管,而是把信号输入到了微处理器,PCB板上的3个继电器是由STCC02模块来驱动的。

    PCB板上的开始键下字母EN是enable的缩写,也称“使能”键,触按EN键,电源芯片才会有输出。

继电器线圈供电回路

轻触开关操作电路

​​​​​​​ 

时间与重量设置 

 

有些时候,不分析电路图,电器的功能也许并不是很清楚。通过分析,可以明白微波炉尽管有很多按键,但总归是调节微波工作的时间,至于微波炉火力调节,实际上是工作时段内微波断续工作的比例。

四、步进电机的速度控制

 

whaosoft aiot http://143ai.com   

  在制作一个使用全向轮的机器人底盘,对于全向轮,电机的精度是影响效果的重要因素。所以使用了步进电机,使用步进电机的优点是可以不使用编码器,开环控制即可达到高精度的效果。

调整占空比或者调整周期

    众所周知,PWM有两个重要参数,周期与占空比。

    步进电机的运动方式是,每收到一个脉冲,就旋转指定的角度。因此影响电机速度的唯一参数就是PWM的频率。以下附图两张来说明调整占空比与调整周期的区别。

周期固定,调整占空比

上图中有4个PWM,它们的周期是一样的,不同之处是拥有从80%至20%的占空比。可以看出,无论占空比为多少,在1s内,它们产生的高电平的数量是一样的,即无论占空比为多少,PWM的频率都一致。因此也就无法调整步进电机的速度。因为步进电机的速度仅与PWM的频率有关。

占空比固定,调整周期

 

上图中有4个PWM,它们的占空比都固定为50%,却拥有不同的周期。可以看出,即使占空比固定,只要动态调整周期,PWM就能在相同时间内产生数量不同的脉冲。因此,固定占空比,动态调整PWM周期,即可达到控制步进电机速度的效果。

基于STM32的实现

    在STM32F1中,定时器具有PWM模式,可以用来产生PWM。但是,STM32的PWM模式,只要确定了时基单元(即确定了PWM周期),改变输出比较寄存器,仅可改变PWM的占空比。

    若需要改变PWM周期,需不停地改变定时器的时基单元。但时基单元与硬件相关,不适合频繁变更。因此,步进电机的调速,不适合使用STM32下定时器的PWM模式来控制。

    在多方查找资料后,确定了一种利用输出比较精确控制PWM周期的方式。

利用输出比较产生频率可变的PWM

    利用输出比较产生频率可变的PWM,原理简单介绍如下:

    首先配置定时器时基单元,确定脉冲最小长度单位CK。
    然后开启定时器的输出比较,设置模式为翻转模式,并开启输出比较中断。
    将定时器内计数器CNT当前值,加上脉冲长度X(单位为CK),写入输出比较寄存器。
    在X个CK后,将会触发输出比较中断。同时电平翻转。
    在中断中再次将当前计数器CNT的值,加上脉冲长度X,写入输出比较寄存器。
    在X个CK后,将会触发输出比较中断。同时电平翻转。
    在中断中再次将当前计数器CNT的值,加上脉冲长度X,写入输出比较寄存器。
    如此往复……

    以此即可得到一个占空比为50%,周期为2X个CK的PWM。

确定最小单位CK,配置时基单元

    首先确定一个最小的间隔CK,规定PWM的高电平长度和低电平长度的单位都是CK。

    即高电平的长度一定是CK的整数倍。低电平亦然。

    然后配置定时器的时基单元,通过CK的长度确定预分频系数。

    已知STM32F103的主频为72MHZ,则时基单元中预分频系数为:

PSC = 72M / (1/CK)

    例如,rtz所确定的CK长度为10us(0.00001s),即可得出方程。

 ​​​​​​​

预分频系数确定为720后,由高速晶振产生的72MHZ的时钟信号被720分频,得到100000HZ的时钟信号。即时钟信号每秒变动100000次。每次10us。同时可将重装载值设定为0XFFFF(16位定时器的最大值)。因为本次使用的输出比较模式不使用更新中断,该值可随意设置。​​​​​​​

TIM_TimeBaseStructure.TIM_Period = 0XFFFF;TIM_TimeBaseStructure.TIM_Prescaler =720;TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

    开启输出比较通道,设置输出比较模式为翻转模式,并配置NVIC,开启输出比较中断,配置输出比较通道:​​​​​​​

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;TIM_OCInitStructure.TIM_Pulse = 500;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;TIM_OC1Init(TIM2, &TIM_OCInitStructure);

    开启输出比较中断,配置NVIC优先级:​​​​​​​

TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);

编写中断服务函数

    在输出比较中断中,唯一要做的事情就是把当前CNT的值取出,加上脉冲长度X,写入输出比较寄存器。

    当计数器达到0XFFFF(之前设定的重装载值)后,再加一会自动变为0。

    例如,当前CNT值为0XFFFF,脉冲长度为5,很明显,输出比较寄存器应设置为0X0004才可触发下一次中断,而不是0X10004,这样会造成溢出。

    因此将CNT的值与脉冲长度相加后,需要取0XFFFF的余数后,再写入输出比较寄存器。​​​​​​​

int t_m=5;//低电平和高电平的长度void TIM2_IRQHandler(void){if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) {    TIM_SetCompare1(TIM2,(TIM2->CNT+t_m)%0XFFFF);    TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);  }}

    动态调整中断服务函数中的变量t_m,即可达到修改PWM频率的效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matlab 功率谱分析

谱分析介绍 谱分析是一种用于研究函数的数学方法。在数学中,谱分析的基本概念是将函数分解成不同的频率成分,以便更好地理解其行为。这些频率成分可以表示为正弦或余弦函数的级数和,称为谱线。 谱分析常用于信号处理、音频信息处理和图像处…

Windows系统增强优化工具

计算机系统优化的作用很多,它可以清理WINDOWS临时文件夹中的临时文件,释放硬盘空间;可以清理注册表里的垃圾文件,减少系统错误的产生;它还能加快开机速度,阻止一些程序开机自动执行;还可以加快上…

数据也能开口说话?这次汇报,老板疯狂给我点赞

年底了,大家的工作汇报进行得怎么样了? 是不是少不了各种数据?饼图、柱形图、条形图、折线图、散点图有没有充斥在你的 PPT 中? 我们出版社的数据统计一般截止到 12 月中下旬,所以前两天,我已经做完了年终…

白话说Java虚拟机原理系列【第三章】:类加载器详解

文章目录jvm.dllBootstrapLoader:装载系统类ExtClassLoader:装载扩展类AppClassLoader:装载自定义类双亲委派模型类加载器加载类的方式类加载器特性类加载器加载字节码到JVM的过程自定义/第三方类加载器类加载器加载字节码到哪?Cl…

浅谈冯诺依曼体系,操作系统和进程概念

文章目录浅谈冯诺依曼体系结构和操作系统冯诺依曼体系结构冯诺依曼体系结构图操作系统进程task_struct内容分类进程内核数据结构(task_struct)进程对应的磁盘代码查看进程ps 列出系统中运行的进程ps ajx 查看系统中所有运行的进程ps ajx | grep 程序名 :…

【Linux操作系统】——在Ubuntu20.04上安装MySQL数据库

在Ubuntu上安装MySQL MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管…

类美团外卖、骑手、类快递取餐柜、整合菜品供应商、前厅、后厨、配送、智能厨电设备的智慧餐饮业务

一种商业模型之类美团外卖、骑手、类快递取餐柜、整合前厅、后厨、智能厨电设备智慧餐饮业务架构 涉及到: 0、基础数据管理 1、菜谱创错 2、菜谱编译 3、菜谱商业化 4、厨电管理 5、后厨管理 6、前厅管理 …

【Call for papers】SIGKDD-2023(CCF-A/数据挖掘/2023年2月2日截稿)

29TH ACM SIGKDD CONFERENCE ON KNOWLEDGE DISCOVERY AND DATA MINING. 文章目录1.会议信息2.时间节点3.论文主题1.会议信息 会议介绍: 29TH ACM SIGKDD CONFERENCE ON KNOWLEDGE DISCOVERY AND DATA MINING. 会议全称: ACM Knowledge Discovery and D…

为什么 APISIX Ingress 是比 Traefik 更好的选择?

本文可以为正在选型 Kubernetes Ingress Controller 产品的用户提供一些帮助。 作者张晋涛,API7.ai 云原生专家,Apache APISIX Committer、Kubernetes Ingress Nginx Reviewer Apache APISIX Ingress Apache APISIX Ingress 是一个使用 Apache APISIX 作…

FrameLayout布局案例

框架布局-FrameLayout 1.FrameLayout简介 1.简介:白话,墙角堆砌东西 就是开辟一个巨大的空间控件的位置不能够指定,默认就是左上角后面对挡住前面的2.属性 属性名称 对应方法 说明 android:foreground setForeground(Drawable) 设置绘制…

【408篇】C语言笔记-第十四章( 二叉树的建树和遍历考研真题实战)

文章目录第一节:冒泡排序1. 排序2. 冒泡排序第二节:冒泡排序实战1. 步骤2. 代码3. 时间复杂度与空间复杂度第三节:快速排序原理与实战1. 基本思想2. 快速排序实战3. 时间复杂度与空间复杂度第四节:插入排序原理及实战1. 插入排序原…

HSF 实现原理

HSF 实现原理 提供服务的流程 - server启动时候向ConfigServer注册 - client启动时候向ConfigServer请求list - client缓存list,发现不可用的server,从缓存中remove - ConfigServer通过心跳包维护可用server的list - list有更新的时候,…

单片机——LED

0. 单片机编程的一般步骤 目标分析:点亮开发板上的LED灯 电路原理图分析:相关器件的工作原理 数据手册分析:IO端口控制 代码编写、编译 下载与调试 1. LED简介 Led:即发光二极管,具有单向导通性,一般…

验证码、通知短信API常见使用问题

如今短信应用于我们生活工作的方方面面,注册或者登录一个应用可以用短信验证码快速登录,支付可以使用短信验证码;商家搞促销活动可以发送通知短信给客户,会员到期了商家可以发送告警短信给会员用户…可见验证码短信API和通知短信A…

JavaFX爱好者看过来,这款工具值得拥有

前言 各位CSDN的博友们,随着各地政策的放开,大伙现在是在水深火热当中呢?还是天选打工人-安然无羊。在这里,希望阳了的朋友,赶紧恢复健康,早日康复。希望没有阳的朋友们,继续坚持,万…

聊聊设计模式-解释器模式?

简介 解释器模式属于行为型模式。它是指给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。是一种按照规定的语法进行解析的模式 编译器可以将源码编译解释为机器码,让CPU能进行识别并…

C++调用matlab引擎画三维图

VS2012设置 项目–项目属性–配置属性–VC目录–包含目录 D:\MATLAB\R2016a\extern\include 项目–项目属性–配置属性–VC目录–库目录 D:\MATLAB\R2016a\extern\lib\win64\microsoft 添加依赖项有两种方法: 方法一:项目中设置 项目–项目属性–配置属…

一、线程相关概念

文章目录相关概念程序(program)进程线程单线程与多线程并发与并行相关概念 程序(program) 是为完成特定任务、用某种语言编写的一组指令的集合。简单的说:就是我们写的代码。 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程&#xff0c…

基于注解方式Spring Security忽略拦截

文章目录1.Spring Security忽略拦截配置2.基于配置文件注入2.1.添加配置2.2.修改Spring Security配置类2.3. 测试3.基于注解的方式过滤接口3.1.添加注解3.2.获取所有使用了IgnoreWebSecurity注解的接口访问路径3.3.测试1.Spring Security忽略拦截配置 关于Spring Securite的使…

SDL学习

学习笔记:整合安全开发生命周期SDL的Devops工具链建设 分享思路:《SDL安全开发生命周期介绍》 1、什么是SDL? 2、为什么需要SDL? 3、DevSecOps实践(SDLDevOps) 【整合安全开发生命周期SDL的DevOps工具链建…