浅谈开漏输出和推挽输出的理解

理解电路元件特性

在理解这两种输出之前我们需要对三极管这种电路元器件进行理解,三极管都包括三个部分,基极(base)、集电极(Collector)以及发射极(Emitter)。他们负责不同的功能,
1.基极主要负责控制电流导通与否
2.集电极负责作为电流输入
3.发射极负责输出电流
我们常见的三极管分为NPN型以及PNP型
NPN型如图所示:
NPN三极管
其工作原理便是当有电流从外部流入基极,则集电极电流流向发射极,反之则不流动,被阻断。
同理PNP具有类似的功能,其原理图如图所示:
PNP三极管
当有电流以从基极流出到外部时,有电流从发射极流动至集电极,反之不流动,被阻断。

推挽输出

在理解上面两种三极管后,我们将二者进行组合
推挽输出电路
当Vin电流为向右,即为正,此时将采用上部分三极管,此时电流将流向Rload,此时电路便称为推。
当Vin电流为向左,即为负,此时将采用下部分三极管,此时电流将从Rload流出,此时电路便称为挽。

开漏输出

在介绍开漏前需要介绍利用上面的三极管知识介绍一种叫开集输出的电路,开集输出是指集电极直接作为输出的端口,如果要使用这样子的电路必须带上一个负载,例如在LED灯的电路中需要加上一个上拉电阻。
LED开集输出
当Vin没有电流,Q5断开时,LED亮。当Vin流入电流,Q5导通时,LED灭。
但是这种电路输入阻抗不太,容易出现电路被烧毁的问题,所以将中间的三极管替换为N型场效应管,示意图如下:
场效应管
场效应管是电压控制型元器件,只要对栅极施加电压,DS就会导通。
这样子便完成了安全耐用的开漏输出。

#硬件技术#
全部评论
1 回复 分享
发布于 2021-01-28 20:10
Mark😀
点赞 回复 分享
发布于 2021-01-28 22:02
点赞 回复 分享
发布于 2021-01-29 10:30
好家伙。。。被模电支配的恐惧。。。 当时电路没学好,然后学模电....头都要掉了
点赞 回复 分享
发布于 2021-01-29 15:56
好家伙
点赞 回复 分享
发布于 2021-01-29 16:04
感谢参与【创作者计划2期·技术干货场】!欢迎更多牛油来写干货,瓜分总计20000元奖励!!技术干货场活动链接:https://www.nowcoder.com/link/czz2jsghtlq(参与奖马克杯将于每周五结算,敬请期待~)
点赞 回复 分享
发布于 2021-03-11 20:37

相关推荐

1. 实时数据采集  在嵌入式系统中,如何有效地实现实时数据采集?请列出关键步骤和考虑因素。2. UART通信注意事项  在使用UART进行设备间通信时,需注意哪些事项以确保数据传输的可靠性?3. FreeRTOS任务延时  在FreeRTOS中,如何实现任务的延时功能?请给出具体的API和示例。4. SPI数据交换  如何通过SPI与传感器进行数据交换?请描述配置和数据传输的过程。5. TCP/IP协议栈配置  在嵌入式系统中,如何配置和使用TCP/IP协议栈以实现网络通信?6. PWM控制伺服电机  如何使用PWM信号控制伺服电机的角度?请说明具体的实现方法。7. FreeRTOS互斥量  在FreeRTOS中,如何实现互斥量的使用以保护共享资源?8. 低功耗模式实现  在嵌入式系统中,如何实现低功耗模式?请列出可采取的策略。9. I2C温度传感器读取  如何使用I2C与温度传感器进行数据读取?请描述具体的步骤。10. FreeRTOS任务通知机制  在FreeRTOS中,如何实现任务的通知机制以同步任务间的操作?11. ADC配置  如何配置ADC以读取温度传感器的数值?请列出配置步骤。12. 数据压缩实现  在嵌入式系统中,如何实现数据压缩以节省存储空间?13. PWM控制电机速度  使用PWM控制电机速度的基本原理是什么?请解释其工作机制。14. 优先级反转  在FreeRTOS中,如何处理任务的优先级反转问题?请给出解决方案。15. 中断处理按键输入  如何使用中断来处理按键输入?请描述具体的实现过程。16. CRC校验实现  在嵌入式系统中,如何实现数据的CRC校验?请提供算法和步骤。17. CAN总线通信原理  使用CAN总线进行车辆数据通信的基本原理是什么?请简述其工作流程。18. FreeRTOS事件组  在FreeRTOS中,如何实现事件组的使用以管理多个任务的同步?19. 外部中断响应  如何使用外部中断来响应传感器数据变化?请说明具体的配置和实现。20. 压力传感器读取  在嵌入式系统中,如何实现压力传感器的读取?请描述相关步骤。21. DMA音频数据传输  使用DMA进行音频数据传输的优势是什么?请说明其实现方法。22. 软件定时器使用  在FreeRTOS中,如何实现软件定时器的使用以定时执行任务?23. 图像传输实现  在嵌入式系统中,如何实现图像传输?请列出所需的协议和步骤。24. RTC定时事件调度  如何使用RTC进行定时事件的调度?请描述配置和使用方法。25. 内存使用监控  在FreeRTOS中,如何监控内存使用情况以避免内存泄漏?26. USB设备识别  使用USB进行设备识别和通信的基本原理是什么?请简述其工作流程。27. 音频录制实现  在嵌入式系统中,如何实现音频录制?请列出关键步骤。28. MQTT设备监控  如何使用MQTT协议进行设备状态监控?请描述实现流程。29. FreeRTOS时间管理  在FreeRTOS中,如何实现任务的时间管理以优化系统性能?30. 固件安全更新机制  在嵌入式系统中,如何实现固件的安全更新机制?请列出关键考虑因素。嵌入式C++面经推荐大佬面经  链接在下边https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
 CPU、寄存器、缓存、内存概述- CPU:中央处理器,执行指令的核心组件。- 寄存器:CPU内部的临时存储空间,存放快速访问的数据。- 缓存(Cache):在寄存器和内存之间的高速存储,分为三级(L1、L2、L3),速度和价格依次降低。- 内存:主要存储程序和数据的地方。数据访问流程1. CPU首先在寄存器中查找数据。2. 如果寄存器未命中,则检查缓存。3. 如果缓存未命中,则从内存中获取数据。内存区域- 栈区:  - 存放函数参数和局部变量。  - 由编译器自动分配和释放,效率高,但内存量有限(如iOS中为2M)。- 堆区:  - 通过`new`、`malloc`等动态分配的内存。  - 需要程序员手动释放,可能导致内存泄漏。- 静态区:  - 存放全局变量和静态变量。  - 程序结束时由系统释放。- 常量区:  - 存放常量,不允许修改。  - 代码区:  - 存放函数体的二进制代码。类型说明符- 基本类型:`void`、`char`、`short`、`int`、`long`、`signed`、`unsigned`、`float`、`double`、`struct`、`enum`、`union`。- 存储类型:`extern`、`static`、`register`、`auto`、`typedef`。- 类型限制符:`const`(只读)、`volatile`。变量理解- extern:指示变量在其他文件中定义。- static:  - 限制变量作用域。  - 局部变量存入静态存储区,延长生存周期。- register:将频繁使用的变量放入寄存器以提高效率。- auto:C语言默认存储类型。- typedef:给类型或变量表达式起别名。- const:只读变量。- volatile:  - 防止编译器优化。  - 适用于中断和多线程环境。C程序内存分配- 堆、栈、静态存储区、文件分配区(常量字符串)、程序分配区(二进制代码)。 sizeof与strlen- sizeof:关键字,返回类型或数组的字节大小。- strlen:计算字符串长度,直到遇到`\0`。 函数参数传递- 值传递、引用传递、指针传递、数组地址传递。Const、指针、基本类型组合的意义- const int x:只读变量。- const char *x:指向常量的指针,指针内容可变,指向内容不可变。- char *const x:常量指针,指针内容不可变,指向内容可变。- const char *const x:指针和内容均不可变。 数组与指针- 物理地址:内存单元的真实地址。- 逻辑地址:CPU生成的地址。 Linux进程间通信- 管道(pipe)、信号量、消息队列、信号、共享内存、套接字。 strcpy与memcpy区别- strcpy:复制字符串。- memcpy:复制指定长度的内存内容。 内存泄漏与内存溢出- 内存泄漏:未释放的内存,导致可用内存减少。- 内存溢出:程序请求的内存大于可用内存。 switch的变量类型限制- 允许:整形、布尔、字符、枚举。- 不允许:字符串等非基本类型。 防止头文件重复调用- 使用#ifndef和#pragma once。 实时操作系统- 示例:FreeRTOS、Ucos。 指针数组与数组指针- 指针数组:数组元素为指针。- 数组指针:指向数组的指针。 结构体自增与双重指针自增- 自增从右向左进行。 寄存器的使用- 存储频繁调用的数据,减少内存访问。 获取全局变量与局部变量地址(gdb)- 使用backtrace或bt命令。 进程中的同步与异步- 同步:通过锁实现。- 自旋锁:忙等待,不阻塞线程。- 互斥锁:阻塞线程,等待资源释放。进程与线程的关系与区别- 进程:资源分配的基本单位,包含一个或多个线程。- 线程:进程中的执行单位,最小调度单位。树的遍历(递归与非递归)- 中序遍历:左子树 - 根节点 - 右子树,利用堆栈进行进栈和出栈操作。剩余的大佬面经总结了  链接在下边https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
评论
12
17
分享

创作者周榜

更多
牛客网
牛客企业服务