Arduino,C51,STM32,ARM和FPGA有什么联系和区别?

Arduino,C51,STM32,ARM和FPGA有什么联系和区别?,第1张

首先51是最古老的芯片(指8051),专利过期了其他厂家兼容芯片琳琅满目。在你列出的这几种里面速度慢,内存小(排除有些厂家出的魔改的型号)。常见的厂家stc的,atmel的正统89c51系列以及后期魔改型号。国产的st89,10,11,12,以及最新的15。还有c8051系列,以及高速usb接口的芯片,以及有很多无线收发芯片的核心是8051的。但是指令集兼容但是寄存器的复杂度就不一样了。\x0d\x0a\x0d\x0a说arduino的话,arduino算是一个平台,他的早起,也是最广泛的核心是基于avr单片机的。我们都戏说arduino团队是给avr收买了帮avr买芯片。既然你没问avr的我就只说说arduino的情况。他简单易懂,做毕业,原型,快速开发的时候,硬件搭设方便,基本不用你去画板子,导线连接模块就是了。代码也全是简单易懂的。基本不涉及到寄存器级。总得来说就是开发快。小量定制化还是划算。真的做产品或者研究就算了,成本高,简单高度抽象化带来就是效率底下以及资源开销大,模块数量上去后系统就撑不住了。\x0d\x0a虽然现在也有基于stm32,fpga,lpc,pic等芯片做的arduino,但是开源库和ide的开发很多没跟上,不兼容也没办法继承avr的arduino遗产。虽然官方也出了avr32位单片机的arduino,以及arm m0,还有配合嵌入式openwrt系统的arduino yun。但是价格以及方便性简直了(更何况新的芯片大多是低压io,外接模块很少兼容。\x0d\x0a说stm32之前要说arm,上面的人也说过了,arm有分好几个版本。只说最近的划分,一个就是带mmu内存管理的,一般需要外接ram,flash才能工作。就是你听到的手机处理器arm多少多少,还有的路由器的处理器,以及服务器的处理器。特点是跑系统。还有就是不带mmu的嵌入式,和8051一样带ram,flash。现在划分了m0 m3 m4 m7等用在嵌入式,以及m0+升级版和其他特殊版本。总之就是比8051高了不知道哪里去了的芯片。然后stm32是st意法半导体公司向arm公司购买了核心(嵌入式)版权,加上自己的外设生产的一个系列的芯片。功能强大速度快外设多。但是寄存器复杂度等和8051就不能比了。所以官方也出了库,现在还出了专门的代码生成软件cube来简化 *** 作。\x0d\x0a\x0d\x0afpga就厉害多了,前面说的几种都是单片机,做运算都是一步步来的,逻辑上是串联的。fpga是并行的,单片机一次同一时间只能做一次运算,fpga只要资源够(芯片买的贵),你心情好,同时进行成百上千的运算都可以的。所以一般用在速度要求高的地方,比如视频压缩,高速网络设备等。8051,arduino,stm32,10元左右就能上,fpga不上百就没啥资源可用,连前面三都比不过。fpga也不是用c来开发的,你可以想象成是一个数学的算法然后转到电路去执行(视频压缩就是一种)。更考数学,算法类的。\x0d\x0a\x0d\x0a总结1,8051系列已经是辉煌的末日了。构架上已经拉后腿了,除了老代码,老系统升级,就是特定领域的芯片上使用。但是他至今还占用很大份额的原因是——大学的课本是他。\x0d\x0a总结2,arduino就是一个玩具,玩玩可以,艺术类学生用来做互动的比较多。很多是不懂嵌入式硬件的程序员用来做东西玩。真正懂的要么直接用底层的avr要么用stm32或者其他了\x0d\x0a总结3stm32杠杠的,值得学。在同性质的单片机里面最具性价比的。学习资料也多。\x0d\x0a总结4 没的说太大范围了,都攘括了上一条总结的东西。\x0d\x0a总结5高大上。学好饭碗不愁,高薪。但是怎么也得博士硕士才能干出点成绩,野路子的话是享受不到这个的。同时资料也少,入门成本高。

ADC(Analog to Digital Converter)是模拟转数字采样器。Arduino的ADC口只能测量直流电,即0.0v ~ REFv(REF ≥ 0.0),但有时我们需要测量-REFv ~ +REFv的交流电,如音频信号,那就变得尴尬了~= ̄ω ̄=

让交流音频信号可被Arduino测量:

在Arduino中对畸变的信号还原:

如下图所示:

共射极放大电路可以为信号添加一个固定的直流偏置电压,使信号完全偏移到正电压上,另外它也可以放大信号的电压,满足Arduino ADC接口的测量标准。

上面的电路为固定偏置共射极放大电路。我们计算的共射极放大电路中使用到的三极管是NPN型三极管,它有三个极:

三极管有两种半导体类型:

三极管的放大倍数:

我们一般计算一个放大电路的参数,会把里面的电流都控制到一个静态的点上去计算,这样可以避开复杂的电流变化带来的计算上的麻烦。而我们输入端有个阻隔直流的电容C,所以信号静止不变时,能够输入放大电路的电压就为0v了,这就引入了静态工作点的参数估算,习惯上也把它称作Q点。

因为输入放大电路的电压为0v,所以这个时候在三极管基极 b (阀门端)上输入的电压就只有电阻R b 上的电压V b 了,此时我们就知道了流入三极管基极 b (阀门端)的电流I b

进而由三极管VT放大后输出的电流I c 为

所以三极管VT输出的电压V ce 为

一般情况下,V cc 和VT的放大倍数β都已经事先确定,所以接下来要确认的是分压电阻R c 和偏置电阻R b 。

电源电流通过偏置电阻R b 流入三极管VT基极 b (阀门端)的电流是 I b = Vcc / R b ,在三极管VT的集电极 c 和发射极 e 之间就会产生一个 β * I b *倍的电流,经过电阻R e 的转换,在电阻R e 两端就会得到一个电压V e ,这就是偏置电压。

偏置电压负责处于正负半周上的信号提高到正半周,使信号在任何时候都不会有电压为负的情况出现。

所以我们调整偏置电阻R b 的目的也就明了了,我们要调整一个足够的偏置电压,使得信号在任何时候都不会有负电压,但也不能调整得太大,使信号的最高电压超过三极管VT的放大极限,出现 饱和 的情况(因为饱和部分其实会被“削顶”,而不是像下面的示意图一样好好活着~)

因为三极管VT的放大系数β会随着温度的升高而升高,即通过集电极 c 与发射极 e 之间的电流I ce 会增加,从而流向基极 b 的电流I b 会减少,这就造成偏置电压降低。

这会让偏置并放大后的音频信号上下浮动,而且可能造成"削顶"失真。

要解决这个问题,我们需要改良放大电路,为分压式偏置共射极放大电路,如下图。

我们添加了电阻R b2 和电阻R e 来平衡偏置电压。

偏置电阻R b1 和R b2 把电源电压V cc 按电阻比例稳定的分为两部分,输入三极管VT基极 b (阀门端)的电压V b 也由偏置电阻R b1 和R b2 的分压值决定,所以V b 是稳定的。

此时,如果三极管VT温度上升,通过集电极 c 与发射极 e 之间的电流I ce 会增加,那么电阻R e 的电压V e 也会上升,三极管VT的基极 b 和发射极 e 之间的压降就下降了,所以流入三极管基极 b 的电流I b 也降低了,从而降低了偏置电压,使偏置电压处于稳定状态。

三极管VT的基极 b 的电压V b 为

三极管VT的发射极 b 的电流I e 为

三极管VT的集电极 c 与发射极 e 之间压降V ce 为

[未完,但要不要待续咧~←_←]

运放输入阻抗高,输出阻抗低,放大倍数高,做ADC的信号匹配再合适不过了~

如果使用运放来适配ADC采集交流电信号,做到如下两级就通常就足够了:

加法器 → 反向放大器

光敏电阻(Photo-sensitive resistor)的电阻值与光线有关,照射于感光面的光线亮度增加时,电阻值会变小,亮度减少时电阻值会加大,其原理是光线照射于半导体,原本稳定的电子受到激发而成为自由电子,常见的材料为硫化镉(Cds)或硒化镉(CdSe),因而常用 Cds 代表光敏电阻。

由于光敏电阻会因为光照而使得电阻发生改变,若对光敏电阻施以电压,两端的电压就会因为光照发生的电阻值改变,使得压降也跟着变化,我们可以利用这个特性来制作亮度感应器,

如上图的电路设计,输出脚位的电压值会是5 * R2/(R1 + R2),一般光敏电阻的电阻变化,大概是在 10M Ω(黑暗)到 1K Ω(置于阳光下)左右(如果直接以强光接近照射,电阻值还会更低一些),如果要精确地量测照度与电阻的关系,可以用专用照度计来量得照度与电阻之间的关系。

在这边就简单一点,我在目前室内合适的亮度下,量得的光敏电阻值约为 3K Ω 上下,按照上图的话,输出脚位的电压值会是在 3.8 V 左右,接到 Ardunio 的类比输入脚位,应当可以量得 800 左右的数值,你可以如下设计电路:

只要设计一个简单的小程式,就是阳春的照度计了 … XD

当然,这边的照度值不是公定的照度单位,只是从类比输入脚位量得的值,仅供亮度的相对参考,试着增强或遮挡至光敏电阻的光线,你就会看到数值会有不同的变化:

如果亮度感应器的敏感度设计的好一些,搭配自走车,就可以做个简单的循迹车了。

如果会实作简单的亮度感应器,那么就可以用多个亮度感应器,来实作简单的光线追踪了,例如,可使用两个亮度感应器,侦测左右两边的亮度差异,如果两边亮度差异在一定范围内,例如 50 以内,两边 LED 就同时亮,表示亮度差不多,若左边比右边的亮度高 50 以上,就亮左边,反之就是亮右边的 LED,你可以如下设计电路:

程式的撰写则可以如下:

因为我手边仅有的两个光敏电阻规格不同,同样的光源下,测出来的值不太一样,左边那颗比右边那颗约少了 150 左右,因此,在程式中我做了些修正 … XD

感谢CodeData用户: caterpillar 的贡献 著作权归作者所有

整理:宁波家电物联网云平台,中科极动云


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/dianzi/8444843.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存