V 友们有懂电路设计的吗?

2016-02-14 14:11:27 +08:00
 rock_cloud
我想做个小设备,然后根据常识找到了一些需要用的传感器和芯片,但是不太懂这些元件挑的好不好,而且需要把这些元件做成电路,请问元件怎么挑选?这种电路应该怎么设计?有没有入门的书可以看的?隔行如隔山啊。。。
7056 次点击
所在节点    问与答
74 条回复
sennes
2016-02-14 19:27:04 +08:00
@huyinjie 看书名没想起是什么书,一搜发现是我们某些课的教材。
我只能说,这些书就算啃完,理解完,也不一定能做出点什么。因为对动手做电路没啥实际性的帮助。

不是专业学硬件这块,又想"入门"硬件,不外乎是想"自己动手折腾下电路,制作自己想要的东西"


所以推荐的路是

1. 选择自己喜欢的平台作为学习方向 譬如:
a.树莓派(适合会 linux 的小伙伴)
b.Arduino(模块多,教程丰富)
c. 51 单片机,教程丰富,"比较正统" 不过我个人觉得应该淘汰 51 单片机了...

2. 按照每个平台的教程,选购一批(一套)器件,一般包含各类传感器、 led 、按键、连接线、面包板等

3. 按照教程,学习和理解 GPIO 的操控,学习各类传感器的驱动和数据处理方法

4. 将各个您学会的模块组合一下,优化功能,形成一个"作品"
mhycy
2016-02-14 19:32:31 +08:00
上来就是多路 10MHz 的多路采样。。。
这要求一点都不低

不知道数据本身长啥样,就说一个我懂的吧。
无线广播电视,带宽 8MHz ,为了精度必须过采样这个信号,翻 8 倍 64Mhz 的采样率
现成 ADC 有 65M 速率的,可直接使用
为了提高信噪比,降低量化噪声,采样深度 10bit (性能价格平衡)
这里就产生了 65*10/8=81.25MBytes/S 的数据流, 如果在此基础上要做更深的处理
例如多路信号进行分集,提高信噪比和指向性,那么就会产生 81.25MBytes/S*N 的数据量

很明显,即便这个数据能实时的进入 PC 进行处理(必须使用 PCI-E 了),也没法实时的进行运算。
而分集操作因为传输路径不同还需要做缓存、延迟、叠加处理。。。这内存量是可以计算的。

别的不多说,先把运算量算清楚需求写清楚再进行下一步学习。
找器件很容易,买器件很困难,如何有效合理的把这堆器件变成可以运作的实物,这更加困难。
如何保证这个实物能按自己所想的去做,这就需要设备、技术、经验、精力去实现了。。。

PS.
硬件是个坑,我一直没法理解为何硬件工程师的工资水平还不如互联网行业。
这行业的入门难度与耗费的成本远比写代码要高得多。
Yoock
2016-02-14 19:34:01 +08:00
10MHZ 算高频电路了,不好搞的~焊接不好都会有干扰,还是请人设计吧
sennes
2016-02-14 19:48:16 +08:00
@mhycy 握爪

加上器件本身的零漂,温漂。折腾 MEMS 采集出来的数据时候又是个大坑。
滤好噪声的数据扔进算法以后又是一个大坑

又比如前期串口传数据, PC 端 matlab 写算法处理,完事以后算法移植到 ARM 又不 work 了

。。。
唉 搞硬件就是心酸,而且工资确实不高。

(吐吐苦水)
benmaowang
2016-02-14 20:51:17 +08:00
@sennes 我玩了下 arduino 和树莓派,觉得还比较简单。但怎么进一步学习硬件呢?假如我要自己做块板子, CPU+RAM+FLASH ,再加上以太网口,为了调试可能还得有 JTAG 或 UART ,这算是最基本的了吧,对一个零基础的人该怎么入手呢?


@mhycy @sennes 我也觉得硬件入门门槛太高了。像软件方面的,看看书基本就能了解一二,无非是做得好不好的问题。但硬件我看来看去还是一头雾水。那么多元器件,要一个个看 datesheet 来选?那么多电阻电容,我怎么就知道该用哪种规格的?
mhycy
2016-02-14 21:05:57 +08:00
@benmaowang
CPU+RAM+FLASH 光频率就不是入门级别的了。

Arduino 和树莓派本质上都是写代码而已,硬件部分基本都是即插即用。
信号频率没有高到要考虑阻抗、干扰、串扰、衰减,也没弱到要考虑放大、噪声。
仅仅是接上线路,编写代码,以一个凑合的时序,去驱动一个外围的部件。

然而,真的要做到高频率的或者要求特殊的应用,那就完全不同一个情况了。

就例如 RAM ,频率上百 MHz 的并行信号
因为频率高,而且是并行信号,必须考虑到引线长度不同带来的信号延迟进行等长布线。
(因为各条数据线要与时钟同步)
在布线的过程中,因为频率的关系,同时需要考虑 PCB 的分布电感、分布电容(二者关系到终端信号的波形)、依赖工具或者经验定出合适的线距,进行蛇形布线。
在布线的过程中,需要考虑不同引线之间的串扰。
(不仅仅是信号间的,还有外部来的干扰,与布线对外部的影响)
很遗憾,这件事是完完全全的经验活,即便理论满分,这也是实实在在需要布线经验去踩坑的。
需要实实在在的去测量信号波形来完善思路的。

而这件事依据板子上部件的间距,难度不一,研发成本不一。
IgniteWhite
2016-02-14 21:12:04 +08:00
@benmaowang 你说的那种自己做板子是不用考虑电阻电容的, CPU 那么多管脚,电路那么复杂你怎么分析零极点去。

能自己配电阻电容的板子是用 74 系列和什么 LM565 、 DAC0832 级别的芯片搭起来的。比如做一个调制解调电路,你十分熟悉 LM565 的 10 个管脚内部的电路,才知道怎么计算电容电阻大小。这个例子算是一个比较具体的“选电容电阻基础知识”。也有一些更基础但不可或缺的原则,比如退耦消除寄生反馈。

另外你要配电阻电容还需要示波器……我想说的是,你需要搭的东西是计算机体系结构范畴的,以时序和汇编为主,编 JTAG 需要 C ,等等。所以你想自己做的那个并不是收音机等级的高频电路,并没有给你 DIY 选择布线的余地。所以也没必要为 datasheet 和电阻电容头疼啦。
mhycy
2016-02-14 21:14:42 +08:00
@benmaowang

关于选型,还真的是得在一批原件的 Datasheet 里面选,能有 datasheet 还是好事,没有 datasheet 才坑。
很多时候满足性能需求的原件是必须签订保密协议,有个合适的订购量才能获取到 datasheet 的。
(这中间 email 、邮件好几个来回,时间以天算,要是无法购入,还得更换方案)
更别说有大量的基础原件,不仅选型困难,很多时候还得面对选型以后只能大批量采购或者无法采购的状况。至于买器件遇到假货,买样品遇上假货,调试因为假货浪费好几周时间。。。。那都是家常便饭了。

另外,一般芯片都会给出推荐的外围电路,至于取值,按照 datasheet 取值、经验取值,实测取值,优化线路做出更好的方案,那就看需求了。
IgniteWhite
2016-02-14 21:54:04 +08:00
@benmaowang 上面的讨论都跳过了电路设计很重要的一步:仿真。以下仿真工具逐级精细。

CA 级别的是 Proteus ,可以方针基础逻辑,时序和频率。

板级仿真的有 Altium Designer 和其他 PCB 仿真工具,考虑布线和分布参数。

电路级仿真的有 OrCAD 的 Capture 系列,其核心方程是电路理论基础的那些个,用回路电流和节点电压那些个东西,加上阻抗微分方程,列个稀疏矩阵,带上元件描述就叫做“网表(netlist)”。基于网标的仿真内核叫作 SPICE (起初由伯克利制订),这里是假设电路元件分立的 PSpice 。在 OS X 平台上也有 MacSpice 和 LTSpice 等,供勤奋的果粉使用。

芯片级仿真的是 HSpice 系列。 HSpice 是考虑分布参数,考虑芯片的器件、版图、材料的 Spice 衍生产品, H 代表 Hybrid ,即混合参数仿真。 HSpice 主要有 Synopsys 家的 HSpice 和 Cadence 家的 SPECTRA 。 HSpice 的集成电路器件参数集合叫作工艺库,由半导体制造厂商(如 TSMC 台积电和 SMIC 中芯国际)提供。

器件级仿真的是 TCAD 系列。 TCAD 考虑半导体中五至六个基本物理方程(连续性方程是重中之重)以及繁多的材料参数(晶格常数与布拉格点阵、能带、缺陷、各种势),采用类似力学中的 ANSYS 软件的网格划分求解电学量。在这个层级,可靠性物理显得重要,如果要进行 MEMS 器件研制还需要考虑力电两种应力(用 COMSOL 之类的软件)。主流软件有 Synopsys 家的 Sentaurus 和 Silvaco 家的,以及 Medici 等等。新器件(如 20nm 以下的 FinFET )的开发主要在英特尔、三星、台积电等大厂完成。 TCAD 最初的程序来自 MIT 和 ETHZ (苏黎世理工)。此等级的仿真可以与芯片级仿真接驳,几家主流厂商均提供了软件接口,来进行诸如 FPGA 的 SEU 特性之类的研究。

其实还可以加一层,就是材料和冶金。这方面是我国最差的地方……扯远了。

以上概括了电路设计行业的仿真设计情况。在众多同学都已经玩 CUDA 搞人工智能、 EE 都转 CS 的大背景下,本帖中对电路设计感兴趣的小伙伴真是难能可贵。
yemenchun1
2016-02-14 22:26:53 +08:00
@IgniteWhite 也许是我才疏学浅, 对于控制类的电路, 仿真没啥用吧? 就我多经历的, 一个原因是建个器件的准确模型很难, 如果模型不准确仿出来也没有参考价值; 再一个原因是控制信号总是不像模型里面那么理想, 波形总有些小毛刺啊啥的, 而且器件布局传输线效应的影响也很大, 实际的物理情况仿真仿不出来吧? 感觉做硬件还是要以烧板子为主, 计算为辅, 哈哈.
yemenchun1
2016-02-14 22:27:27 +08:00
@yemenchun1 多 -> 所
sennes
2016-02-14 22:31:48 +08:00
@benmaowang
@mhycy

混 V 站第一次觉得回帖很激动人心(真正硬件相关的主题真不多)
---------------------
@benmaowang 如果已经有开始自己制板的意愿,一开始就来 CPU+RAM+FLASH 是不行的,就算是我自己也没把握自己一个人 lay 这样的板子(估计还要学个五六年!)

=======================

不过既然您已经玩过 ARDUINO 了。这边有个基于 arduino 方向学习做 PCB 的路线建议:

1. 定下项目目的,其实就是先用 ARDUINO 做好原型,并且保证能 work ,系统可以完成你需要的一些特定功能(开发板+模块 验证阶段)
2. 提取出该原型中的原理图 (简单地说,就是 Arduino 的最小系统电路+实现您功能的外围电路)
在这一步中,需要调研开发板中的电路有哪些是可以省略的
3. 学习一款合适自己的 tool 来绘制原理图以及 layout 。
工具方面,我在工作了,所以使用的是比较专业的 tool 。(用的是 Cadence),您要是仅仅是兴趣的话, Altium Designer 可能会比较适合学习。
4.原理图绘制完成以后是完善封装,封装就是实体器件在 Pcb 上体现出来的焊盘引脚等。在学习 tool 的时候应该会学到如何绘制封装
5. 接下来是 layout ,也就是 PCB 布局布线。
6.最后是交给工厂打板
7.导出 bom ,买元件器材,准备送去贴片。
8.调试

甚至建议可以先做一个 ARDUINO+一排 led 这样一个系统来尝试做板。
器件+打板+贴片应该花不了多少钱。

=======================

制作硬件的根基是原理图的正确性,影响最终板子的是 layout 也就是走线的质量。不过对于单片机来说,一般不涉及高频,所以,走通了就行哈哈。


最后,根据板子的复杂程度,一个板子再版 6 次应该是正常的(错了就要从 layout 到打板、贴片、调试重走...) 不要想着一次就能成功,具体的坑还很多很多,而且做硬件出错所消耗的时间和金钱是做软件的人无法想象的。像公司的板子,做错了,改版一般大半个月就过去了...

学习制作电路板,最好的方法就是动手开始折腾,花费相应的时间和金钱,慢慢积累经验。
至于器件的选型。。。如果仅仅是兴趣的话,一般选用直插的电阻电容,一般数值对了就行,缺点是体积大,优点是自己可以手焊接。 不过您要是选择用贴片的器件也可,在深圳给点人工费贴片的地方很多!.
IgniteWhite
2016-02-14 22:32:57 +08:00
@yemenchun1 对的,所以说你最开始的回答是最适合楼主的。我这是介绍行业状况~
lixile
2016-02-14 23:27:04 +08:00
学过电子电路 cad 然而 表示卵用没有 根本没具体做过真的板子
fzinfz
2016-02-14 23:57:09 +08:00
不介意英文的话, youtube 看 EEVblog
rock_cloud
2016-02-15 08:39:24 +08:00
@fzinfz 这个可以试试,正愁 youtube 找不到好频道=。=
denghongcai
2016-02-15 08:43:30 +08:00
10MHz 的加速度计没见过,用模拟的加速度计配个快速 ADC 做好了
都有对应的模块,淘宝买回来先试试搭积木验证下设计,画板子什么的是后面的事情了
rock_cloud
2016-02-15 08:58:34 +08:00
@denghongcai 按照前面 V 友们说的来看, 10MHz 属于高频电路,估计像我这样的 0 基础是非常困难的,我打算换个原理。
mhycy
2016-02-15 08:59:26 +08:00
@rock_cloud
10M 本身频率不算高,只是这个采样需要面对的数据量非常恐怖难以处理而已。
mhycy
2016-02-15 09:09:39 +08:00
@rock_cloud
补充:
程序员入门可以先由应用层切入,就像写代码调用各种库一样,把各种芯片都当成黑盒对待。
区别仅仅是,你需要知道哪些是模拟信号,哪些是数字信号,电平怎样,时序如何。
很多时候只要对接上就是软件做的事了(固件 /算法 /数字逻辑)

这和调用各种库的时候需要了解接口是非常相似的。

在布板过程中可能要面对各种 EMI 问题,要妥善处理需要的是经验和技术
但如果仅仅是要 work ,那么还是能按照最基本的布线规则进行布线打样的。
(和代码类似,代码很多人会写,但性能、边界条件这些额外的处理那就全凭经验和技术了)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/256424

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX