博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Arduino 电平转换 升压 OUTPUT与9V/12V元件通信
阅读量:7040 次
发布时间:2019-06-28

本文共 1682 字,大约阅读时间需要 5 分钟。

原因

网络上有不少怎么让Arduino的5V电平转换成3.3V电平,从而和工作在3.3V下的芯片相互沟通的教程。但是如果想驱动高于5V电压的芯片,就找不到教程了。因此今天我来介绍一种方式,能让Arduino的OUTPUT口和需要5~12V的电子元件进行通信。下文以12V为例。

效果

  • 能够达到单向(从Arduino到12V芯片)通信的目的
  • Arduino引脚输出的电平会被取反,即Arduino输出HIGH,芯片却收到LOW,反之亦然。

硬件准备

  1. Arduino一个
  2. 开关型NPN三极管(8050即可)一个
  3. 4.7K,10K电阻各一个(貌似不是这个阻值也可以,只要不要太小即可)

电路连接

面包板图:

(假设右边那个nano是我们需要驱动的12V的东西)

原理图:

软件开发

一定要记住:Arduino引脚输出的电平会被取反,即Arduino输出HIGH,芯片却收到LOW,反之亦然!只要知道这一点,剩下的事情和开发普通OUTPUT引脚都差不多了。

我们先弄一个测试工程试试看。

在测试工程中,我们用万用表的电压表(20V挡位)来模拟12V芯片,即万用表红线接图中蓝线,万用表黑线接地(图中黑线)。因为芯片的INPUT模式相当于一个电压表,所以可以这么替代来看效果。当12V芯片应当收到HIGH时,我们的万用表上就会出现接近12V的电压;收到LOW则出现0V。

建立一个ino工程,代码如下:

#define TEST_PIN 7void setup(){    pinMode(13,OUTPUT);    pinMode(TEST_PIN,OUTPUT);}void loop(){    digitalWrite(13,!digitalRead(13));    digitalWrite(TEST_PIN,!digitalRead(TEST_PIN));    delay(2000);}

连接电路,查看效果。如果一切正常,你将会看到,当ino上的小灯亮起的时候,万用表显示0V;熄灭时显示12V。

原理说明(针对没基础的人)

三极管这东西高中物理居然不教...因此我自学研究了半天才勉强搞懂一点点。感觉很多书/教程讲的都太复杂了,像什么阿尔法值,贝塔值,放大倍数什么的,真正应用的时候不一定用得上,因此我这里简单讲一讲三极管用得上的部分。

三极管有两种类型,NPN和PNP,我这里讲一讲NPN,即这篇文章中用到的那种。首先,我们要记住这张图和它的三个引脚对应的说法:C(集电极),B(基极),E(发射极)(想搞懂名称的自己看原理去)。

我们首先来看有箭头的那一条路径(B->E):这条路最简单,完全不用考虑C端发生了什么,而是几乎可以看成一个B->E的二极管。B电压大于E一定程度(即B到E有足够大的电势差,一般是0.3V之类),就会有电流,反之则没有。我们的电路中,B接的是Arduino引脚。因此,当Arduino HIGH时,BE有5V电位差,但是有一个限流电阻,因此有微小的电流;反之没有。

然后再看另一条路径,C->E:这一条就悲催的多了,完全被B->E那一条管着。如果BE没有电流,不管发生什么,CE都不会有电流,这是可以看成C、E之间断开了。如果BE有电流,才会允许CE产生电流。在我们的电路中,BE有电流则CE连通,即C点接地,于是12V芯片收到LOW;反之,收到HIGH。其实这一部分单独看,就是一个上拉电阻。图见下。

顺便说一下“电流倒灌”的问题:如果现在三极管的部分换成一块导体,那么很明显,C电压高于B,因此会有灌入B的电流,从而造成Arduino出各种各样的问题。但是我们的电路中没有这个问题(确实实践测试过了),这是因为三极管可以帮助B不被倒灌。但是据传说,如果C电压高于B太多,那么倒灌照样会发生。如果真的发生倒灌,一个(可能)可行的策略是在B处安装一个整流二极管,不让电流倒着流动。

鸣谢

感谢在在电路方面的指导!

转载于:https://www.cnblogs.com/turtlegood/p/4734025.html

你可能感兴趣的文章
jsp 中对jar 包的引用
查看>>
AndroidStudio怎样导入library项目开源库
查看>>
悲观锁和乐观锁使用场景
查看>>
Oracle 12c: RMAN restore/recover pluggable database
查看>>
substance新版及问题
查看>>
centOSmini安装教程
查看>>
Android开发之SoundPool使用具体解释
查看>>
【数据结构与算法】二叉树深度遍历(递归)
查看>>
iOS开发--基于AFNetWorking3.0的图片缓存分析
查看>>
使用jqMobi开发app基础:弹出内容的设计
查看>>
3.Java集合总结系列:Set接口及其实现
查看>>
ExtJs之Element.select函数
查看>>
驱动程序调试方法之printk——自制proc文件(一)
查看>>
Swift 可选类型-备
查看>>
使用开源软件的原因
查看>>
数据结构和算法 – 10.集合
查看>>
关于新版SDK报错You need to use a Theme.AppCompat theme的两种解决办法
查看>>
微信热门话题榜要上线了?腾讯微博的变身?
查看>>
Android 初阶自定义 View 字符头像
查看>>
Oracle Stream配置详细步骤
查看>>