Orbitron 是一款专为业余无线电爱好者和希望目测观察卫星的追星爱好者设计的卫星追踪软件。这款软件功能强大且易于使用,已经被气象专家、卫星通讯、UFO 研究玩家和天文爱好者广泛采用。 Orbitron 可以以实时或模拟方式显示任意时刻卫星与地球的相对位置,让用户能够方便地追踪和观察卫星。 Orbitron软件具有以下主要特点和功能: 可同时追踪众多卫星:Orbitron 支持同时追踪多达两千颗卫星,满足用户对于多卫星追踪的需求。 高清世界地图:软件自带高清世界地图,方便用户在全球范围内进行卫星追踪。 卫星信息丰富:用户可以查看卫星的起点位置、轨道信息、方位角、仰角等详细数据,有助于更好地了解卫星的运行状态。 时钟校正与星历更新:Orbitron 可以通过 NTP 服务器校正电脑内部时钟,确保时间准确;同时,软件支持通过互联网更新星历数据,保持数据的最新性。 控制无线电台及卫星天线跟踪器:Orbitron 可以与无线电台及卫星天线跟踪器进行连接和控制,实现自动化追踪和观测。 多种显示模式:软件支持全屏显示及简报模式显示,满足用户在不同场景下的使用需求。 过顶时间预测及铱星光迹搜寻:Orbitron 具备功能先进的过顶时间预测及铱星光迹搜寻功能,帮助用户更好地安排观测时间和位置。 此外,Orbitron 还具有一些贴心的附加功能,如内置屏幕保护程序等。用户可以根据自己的需求进行设置和调整...
2024年1月
嵌入式、物联网技术交流分享Linux time 不是用来看时间的
time 命令不是用来看时间的,主要是用来统计程序执行的时间消耗(CPU 占用),但也可以统计内存、IO 等资源的使用情况。 查看 sleep 命令的用时情况: time sleep 1 real 0m1.002s user 0m0.002s sys 0m0.000s 通常 time 只显示耗时信息,real 是实际用时(从开始执行到结束,包括了自己的 CPU 用时、被阻塞挂起耗时),user 是用户 CPU 用时(执行用户态程序),sys 是系统 CPU 用时(执行内核程序)。CPU 时间 = 用户CPU 时间 + 系统 CPU 时间,real 大于 CPU 时间是因为在执行过程中进程本身休眠、挂起,这些 CPU 时间其他进程在用。 想显示其他资源消耗使用参数 -v (--verbose),但可能提示不存在。原因是 time 可能不止一个。 type -a time time is a shell keyword time is /usr/bin/time time is /bin/time 默认使用的是 shell 关键字(内建命令),不提供 -v。 可以: /usr/bin/time -v sleep 1 Command being timed: "sleep 1" User time (seconds): 0.00 System time (seconds): 0.00 Percent of CPU this job got: 0% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:01.00 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 2096 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 75 Voluntary context switches: 2 Involuntary context switches: 0 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 或者: \time 或 "time" 或 'time' 或 command time 这样就不使用内建命令...
关于 gcc-arm-none-eabi 浮点数
Windows (mingw-w64-i686) hosted cross toolchains AArch32 bare-metal target (arm-none-eabi) https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads 使用 arm-none-eabi-gcc 交叉编译链只能编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application) 有关浮点数: 查看 gcc 的默认 define: $ ./arm-none-eabi-gcc -x c - -E -dM </dev/null|grep SOFT #define __SOFTFP__ 1 -mfloat-abi=name Specifies which floating-point ABI to use. Permissible values are: ‘soft’,‘softfp’ and ‘hard’. ABI,application binary interface (ABI),应用程序 二进制接口。 softfp 与 hard 都使用硬件 FPU 指令,但使用软件接口。hard 则使用硬件接口。所以 soft 与 softfp 兼容,他们与 hard 不兼容。 当 -mfloat-abi=soft 时 会定义 #define __SOFTFP__ 1 当为 softfp 或 hard 时,不会定义 __SOFTFP__ 而 __VFP_FP__ 总是定义的(#define __VFP_FP__ 1),即使 -mfloat-abi=soft 时。 源码头文件有这样的定义: #elif defined ( __GNUC__ ) #if defined (__VFP_FP__) && !defined(__SOFTFP__) #if (__FPU_PRESENT == 1) #define __FPU_USED 1 #else #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #define __FPU_USED 0 #endif #else #define __FPU_USED 0 #endif 也就是说,在定义了 softfp 或 hard 时,当 __FPU_PRESENT 为 1 时,会定义 #define __FPU_USED 1,也就是要启用 FPU。__FPU_PRESENT 需要用户自己定义。 当使用 hard 或者 softfp 时,必须同时指定 FPU: -mfpu= option supports the following FPU types: vfp, vfpv3, vfpv3-fp16, vfpv3-d16, vfpv3-d16-fp16, vfpv3xd, vfpv3xd-fp16, neon, neon-fp16, vfpv4, vfpv4-d16, fpv4-sp-d16, neon-vfpv4, fp-armv8, neon-fp-armv8, and crypto-neon-fp-armv8. cortex-m4 选择:fpv4-sp-d...
YMODEM 协议
YMODEM 协议是一种高效的文件传输协议,通常用于调制解调器之间的数据传输。YMODEM 协议的产生是为了解决 XMODEM 协议存在的一些问题。相较于 XMODEM,YMODEM 协议在数据传输效率和稳定性上有所改进。 YMODEM 协议的主要特点包括: 数据包大小:YMODEM 协议支持以 1024 字节(或 1K)的块进行数据传输,这比 XMODEM 协议通常使用的 128 字节块要大得多,从而提高了传输效率。 错误纠正:YMODEM 协议采用循环冗余校验(CRC16)进行错误检测,并在发现错误时请求重发数据块,以确保数据的正确传输。 批处理模式:YMODEM 协议支持批处理模式,允许使用单个命令传输多个文件,这在传输大量文件时非常有用。 文件名传输:在发送文件数据之前,YMODEM 协议会先发送文件名和文件大小等信息,以便接收方能够正确地保存文件。 YMODEM 协议中定义了几种关键字: 关键字 值 说明 SOH 0x01 协议头(128 bytes 类型) STX 0x02 协议头(1K 类型) EOT 0x04 传输结束 ACK 0x06 接收响应 NAK 0x15 失败响应 CAN 0x18 取消传输 C 0x43 开启文件传输 CPMEOF 0x1A 数据补齐填充字符(^Z,控制字符 Z) YMODEM 传输协议: SOH [index] [index2] [128 bytes data] [CRC-hi] [CRC-lo] STX [index] [index2] [1024 bytes data] [CRC-hi] [CRC-lo] index 是帧序号,0 ~ 255,传输时递增。 index2 是index取反,也即:index2 = ~index = 255 - index crc16 校验数据域 [data] 在 YMODEM 协议的基本流程中,发送方会先发送一个起始帧,其中包含文件名和文件大小等信息。接收方在收到起始帧后,会发送一个确认信号(ACK)。然后,发送方开始以 1024 字节的块发送文件数据,每发送一个数据块后都会等待接收方的 ACK 信号。如果接收方成功接收到数据块并通过 CRC 校验,则发送 ACK 信号;否则,发送否定确认信号(NAK)请求重发。当文件传输完成后,发送方会发送一个结束帧(EOT),接收方在收到结束帧后会再次发送 ACK 信号进行确认。 交互序列图: 传输时先发送一个 128 字节的文件信息块,将文件名和文件大小发送给设备。 SOH 00 FF [filename] [filesize] [NULL] CRCH CRCL [filename] 文件名,如文件名 foo.c,它在数据帧中存放格式为:66 6F 6F 2E 63 00 [filesize] 文件大小,例如大小为 400 bytes,它在数据帧的存放格式为:34 30 30 00,即 “400”。(不同的软件可能有所却别) [NULL] 表示剩下的字节都用 00 填充 传输文件内容时,如果文件数据的最后剩余的数据在 128 ~ 1024 之间,则还是使用 STX 的 1024 字节传输;如果文件大小小于等于 128 字节,则选择 SOH 数据帧用 128 字节来传输数据。若数据不足一帧,用 CPMEOF 来填充。 附: XMODEM/YMODEM 协议: http://pauillac.inria.fr/~doligez/zmodem/ymodem.txt ZMODEM 协议: http://gallium.inria.fr/~doligez/zmodem/zmodem.t...
Hugo 使用笔记
什么是 Hugo Hugo 是一个用 Go 语言编写的静态网站生成器。它具有简单、易用、高效、易扩展和快速部署等特点。与其他动态网站生成系统(如 WordPress、Ghost 和 Drupal)不同,Hugo 在创建内容时就已经生成了静态页面,这大大优化了网站的访问速度,并提供了出色的写作体验。 Hugo 适用于构建各种高性能的静态网站,特别是博客、文档和个人网站等。它使用简单的 Markdown 和 HTML 等标记语言来创建内容,并使用 Go 语言的模板引擎来自定义主题和布局。这使得用户能够轻松地创建和定制自己的网站。 Hugo 还具有跨平台性,可以在不同的操作系统上运行,包括 Windows、Linux 和 macOS 等。它对于资源消耗较低,不依赖昂贵的运行环境,如 Ruby、Python 或 PHP,也不依赖任何数据库。这使得 Hugo 成为一个轻量级且易于维护的网站生成器。 另外,Hugo 还支持多种部署方式,可以将生成的静态网站部署到各种托管服务上,如 Heroku、GoDaddy、DreamHost、GitHub Pages、Google Cloud Storage、Amazon S3 和 CloudFront 等。这使得用户能够灵活地选择适合自己的托管方案。 在使用 Hugo 时,用户可以通过简单的命令行操作来创建和管理自己的网站项目。Hugo 提供了丰富的命令和选项,使得用户能够轻松地生成、预览和部署网站。 总的来说,Hugo 是一个功能强大、易用和高效的静态网站生成器,适用于个人和小型团队搭建高性能的网站。它提供了优秀的写作体验、快速的网站访问速度和灵活的部署选项,使得用户能够轻松地创建和管理自己的静态网站。 配置环境 Linux Linux 用户可以直接使用包管理器安装 apt, yum, dnf, zypper, pacman 等等, 包名就是 hugo Windows Windows 用户可以在 GitHub 的 release 下载对应的安装包。 在下载安装包时,有 hugo 和 hugo_extended 两种可运行文件下载,其中 hugo 仅支持 js,hugo_extended 是 hugo 的扩展版本,在支持 js 的基础上还支持 ts。 解压后将 hugo.exe 的路径添加到系统环境变量 Path 中。 创建站点 使用命令 hugo new site blog 即可创建一个名称为 blog 的 hugo 站点项目,存放目录就是 blog。如果想在当前目录下创建需要加上--force参数,也就是hugo new site . --force。创建的项目默认使用的是 toml 配置文件,我比较喜欢用 yaml,所以呢,加一个参数:hugo new site blog --format yaml 目录结构: $ tree . -A . ├── archetypes │ └── default.md ├── assets ├── content ├── data ├── hugo.yaml ├── i18n ├── layouts ├── static └── themes 8 directories, 2 files 然后可以从主题站 https://themes.gohugo.io/ 选择一款主题。 下载到的主题解压到 themes 目录(带着主题根文件夹),然后就可以使用了。 配置站点 通常获取到的主题都会提供示例,里边会有配置文件 config.toml 或 hugo.toml,扩展名也可能是 yaml 等。按照这个文件修改我们站点根目录下的配置文件即可。 发布内容 使用以下命令创建一篇内容: hugo new posts/article.md posts:自定义的一个文件夹,当然也可以是别的,或者不指定文件夹都可以。 article.md:文章文件名,运行 hugo 时将会被渲染成一个页面。 生成的文件会被存放到 content 目录中。 自动生成的内容文件: +++ title = 'Article' date = 2024-01-10T00:53:04+08:00 draft = true +++ 这个自动生成的内容是 markdown 的 front-matter,这里是 toml 格式的,也可以手工改成 yaml 格式的。 实际上没必要使用 hugo new 命令创建内容,直接在相应目录手工创建 markdown 文件就行了。这里只是为让大家了解一下标准做法。 需要注意一下这里的 draft 参数,它是草稿的意思。如果发布时没有用 --buildDrafts,那么这个内容是不不会被渲染的。发布时改成 false 即可。 调试站点 如何在本地查看运行效果呢?在站点根目录运行 Windows 命令行 或 git bash 都可以,执行命令: hugo server --buildDrafts ... | EN -------------------+----- Pages | 3 Paginator pages | 0 Non-page files | 0 Static files | 0 Processed images | 0 Aliases | 0 Sitemaps | 1 Cleaned | 0 Built in 4 ms Environment: "development" Serving pages from memory Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender Web Server is available at http://localhost:1313/ (bind address 127.0.0.1) Press Ctrl+C to stop --buildDrafts:构建时包含标记为 draft(草稿) 的内容 默认使用了 --watch 参数,可以在修改文章内容时让浏览器自动刷新 根据提示,在浏览器中打开网址 http://localhost:1313/ 即可查看网页结果。上边创建的那篇内容的 URL 则是:http://localhost:1313/posts/article/ 发布站点 本地调试完后就可以生成静态页面,然后传到服务器了。 生成静态页面的指令 : hugo --gc --minify --cleanDestinationDir --gc:开启在构建之后运行某些清理任务(例如删除无用的缓存文件) --minify:对任何能够支持的输出格式(HTML、XML 等)进行压缩 --cleanDestinationDir: 先删除目标文件夹中的文件,不然改为 draft 的生成文件不会被自动删除 将 public 文件夹中生成的所有文件上传服务...
在 Git Bash 中使用 tree 命令
关于 tree 命令 tree 命令可以以 ASCII 树状图的方式列出目录的结构。 $ tree ./tree-1.5.2.2-bin -A ./tree-1.5.2.2-bin ├── bin │ └── tree.exe ├── contrib │ └── tree │ └── 1.5.2.2 │ ├── tree-1.5.2.2 │ ├── tree-1.5.2.2-GnuWin32.README │ └── tree-1.5.2.2-src │ ├── CHANGES │ ├── INSTALL │ ├── LICENSE │ └── README ├── man │ └── cat1 │ └── tree.1.txt └── manifest ├── tree-1.5.2.2-bin.mft └── tree-1.5.2.2-bin.ver 9 directories, 9 files 注:-A 参数在绘制线条时使用 ASCII 扩展字符,这会更好看一些。 这对我们在命令行中查看目录的组织方式还是很有作用的。但 git bash 默认并没有集成该命令。我们可以自行安装一下。 安装 tree 命令 下载: 到 https://gnuwin32.sourceforge.net/packages/tree.htm 下载 Windows 版预编译二进制文件: 从下载到的压缩包中解压出可执行程序 tree.exe (单独一个文件即可),放置于 git 的安装目录 /usr/bin/(默认安装情况下绝对路径通常是 C:\Program Files\Git\usr\bin)。 这时打开 Git Bash 就可以用 tree 命令了。 $ tree --help usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]] [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] [--filelimit #] [<directory list>] -a All files are listed. -d List directories only. -l Follow symbolic links like directories. -f Print the full path prefix for each file. -i Don't print indentation lines. -q Print non-printable characters as '?'. -N Print non-printable characters as is. -p Print the protections for each file. -u Displays file owner or UID number. -g Displays file group owner or GID number. -s Print the size in bytes of each file. -h Print the size in a more human readable way. -D Print the date of last modification. -F Appends '/', '=', '*', or '|' as per ls -F. -v Sort files alphanumerically by version. -r Sort files in reverse alphanumeric order. -t Sort files by last modification time. -x Stay on current filesystem only. -L level Descend only level directories deep. -A Print ANSI lines graphic indentation lines. -S Print with ASCII graphics indentation lines. -n Turn colorization off always (-C overrides). -C Turn colorization on always. -P pattern List only those files that match the pattern given. -I pattern Do not list files that match the given pattern. -H baseHREF Prints out HTML format with baseHREF as top directory. -T string Replace the default HTML title and H1 header with string. -R Rerun tree when max dir level reached. -o file Output to file instead of stdout. --inodes Print inode number of each file. --device Print device ID number to which each file belongs. --noreport Turn off file/directory count at end of tree listing. --nolinks Turn off hyperlinks in HTML output. --dirsfirst List directories before files. --charset X Use charset X for HTML and indentation line output. --filelimit # Do not descend dirs with more than # files in them. 通常命令跟文件夹即可,文件夹可以是相对路径也可以是绝对路径,并且可以指定多个文件夹。 使用 Windows 自带的 tree 命令 我们要知道 Windows 的命令行工具自带了 tree 命令,展示细节上差点意思,将就一下也还行。 PS D:\root> tree tree-1.5.2.2-bin /F 卷 Data 的文件夹 PATH 列表 卷序列号为 6EDF-788C D:\ROOT\TREE-1.5.2.2-BIN ├─bin │ tree.exe │ ├─contrib │ └─tree │ └─1.5.2.2 │ │ tree-1.5.2.2-GnuWin32.README │ │ │ ├─tree-1.5.2.2 │ └─tree-1.5.2.2-src │ CHANGES │ INSTALL │ LICENSE │ README │ ├─man │ └─cat1 │ tree.1.txt │ └─manifest tree-1.5.2.2-bin.mft tree-1.5.2.2-bin.ver 不过由于该命令是集成在命令行程序的,所以不能被 git bash 调用。不过我想了一个注意,在 git bash 中先执行 cmd,进入 Windows 命令行环境后再执行 tree 命令,怎么样,这招是不是很高明 ...
回忆矿石收音机(译)
作者:David Goodsell from:https://www.nutsvolts.com/magazine/article/remembering-the-crystal-radio 在 1952 年,我 12 岁的时候,制作了一台矿石收音机。那是一个来自芝加哥联合广播公司的套件,售价 2.5 美元。我花了很多时间待在地下室里,头戴耳机,小心翼翼地调整可变电容器,以接收附近和远处的电台。有些电台信号非常微弱,以至于我年幼的想象力让我觉得自己可能在收听秘密信息。 如今,你只需要让 Alexa 调到任何一个电台,就可以收听他们的节目。再也不用忍受不舒服的酚醛塑料耳机了。在这篇文章中,我想分享 20 世纪 50 年代和 60 年代那些原始的矿石收音机的工作原理,希望能唤起你们中那些也制作过这些神秘收听设备的人的遥远记忆。顺便说一句,Etsy 网站上出售许多复古风格的矿石收音机套件,它们是由真正的木头制成的,而不是塑料!无需电池。 记忆恢复 图1展示了我在 eBay 上找到的一台非常熟悉的矿石收音机的修复过程。 图1. 这台来自芝加哥联合广播公司的修复后的矿石收音机套件在 20 世纪 50 到 60 年代售价 2.5 美元。 事实上,它和我几十年前最初制作的那个模型完全一样。我不记得我的旧收音机发生了什么;也许是我把它留在阁楼里,然后我妈妈把它扔掉了。图 2 展示了我收到的未经修复的收音机。它显然需要一些温柔和关爱。 图 2. 这台未经修复的矿石收音机是在 eBay 上找到的,附带一个耳机。它需要一些爱护。 关于制作第一台收音机,我记忆犹新的一件事是,我烧坏了 1N34A 锗二极管。那时,我们家只有一个巨大的 100 瓦 Weller 烙铁,而我严重过热了那个可怜的小二极管。更换一个要花费 0.43 美元。幸运的是,这些年来,我的焊接设备和技术都有所提高。小时候,我在绕大线圈时也遇到了麻烦。每当我绕线时,它就会松开,所以我爸爸耐心地帮我把它绕紧。 简单的原理图,长长的天线 晶体收音机通过使用简单的解调方案来接收调幅(AM)电台。原理图如图 3 所示。 图 3. 早期的晶体收音机使用天然方铅矿矿石而不是锗二极管来检测音频调制。 直径为 1.5 英寸的线圈和可变电容器形成一个谐振电路来选择频率,二极管对调制后的射频载波进行整流(解调)。如果没有二极管,调制会同时产生相等且相反的交变电压,这在耳机中会平均为零。没有声音。 二极管剥离了一个极性,耳机对产生的脉动直流电作出响应。波形图包含在图3的原理图中。更深入的解释,请参阅维基百科上关于矿石收音机和矿石检测器的精彩条目。 联合广播公司的手册中有一个建议的 50 英尺倒 L 型天线配置的图表。我决定完全按照手册和图 3 中的描述重新创建它。图 4 展示了我在我最喜欢的网站上找到的复古绝缘子和避雷器。请注意避雷器包装盒的“不完美”状态。 图 4. 室外天线使用避雷器进行保护,并使用玻璃绝缘子将接收线与地面隔离。 提高效率就是诀窍 矿石收音机的隐藏魔力在于,它们能够捕获来自遥远发射台的几乎无穷小(纳瓦到微瓦)的功率,并有效地将其转换为我们的耳朵能听到的声音。无需电池。无需放大器。 联合广播公司的设计通过使用感应耦合变压器和 20 匝初级绕组来更好地匹配天线的阻抗,从而最大限度地提高了效率。 次级在检测二极管处接点,这样可以减少对调谐电路的负载,并改善与检测器的阻抗匹配。 最后,高阻抗耳机将解调后的音频信号转换为声音。 让我们用 LCR 表检查元件 为了好玩,我想测量一下调到 960 千赫电台时谐振电路元件的大致值。我使用了互联网上广告的那种小型 LCR 元件测试仪。它们的售价仅为 19 美元或更低,而且相当准确。 图 5 展示了测量的次级线圈。 图 5. 当调到 960 千赫时,直径为 1.5 英寸的线圈和调谐电容器的测量值为 0.18 mH 和 154 pfd。 它显示为 0.18 mH,这与在线电感计算器的结果非常接近。在线计算器显示,对于那么大尺寸的线圈,电感应该是 0.176 mH。非常准确。 最后,我测量了调到 960 千赫电台时的可变电容器:154 pfd。 谐振频率: $$ \frac{1}{2\pi\sqrt{LC}} $$ 因此,0.18 mH(L)和154 pfd(C)= 956 kHz(相对于 960 kHz 的广播频率)。非常接近! 探索方铅矿矿石 有些早期的矿石收音机使用一种特殊的检波器,称为方铅矿矿石。方铅矿是结晶矿物硫化铅(PbS)的另一种名称。图 6 显示了一小块方铅矿矿石,它埋在一个小的低温焊锡制成的圆锭中,上面有一根触须与表面接触。 图 6:方铅矿矿石需要用一根微小的“触须”在其表面周围来回移动,以找到接收效果好的区域。 它不像 1N34A 那样是一个密封的单元。事实上,你必须在方铅矿的不规则表面上用细小的触须轻轻地来回移动,才能使其工作。只有某些区域才能作为整流结并表现出二极管特性。 图 7 显示了我从方铅矿矿石、1N34A、1N914B 和 1N4007 获得的二极管曲线轨迹。 图 7:各种二极管的曲线轨迹表明,方铅矿和锗二极管在此应用中的性能优越。 硅二极管不能很好地作为检波器,因为它们的拐点发生在电压过高的情况下,无法检测到矿石收音机中的微弱信号。一个视频显示我在方铅矿矿石周围来回移动以寻找最佳的收音机接收效果,可以在 https://youtu.be/auz64mtoVLY 找到。 收听电台的乐趣 还有最后一件事。我碰巧有一个小型电池供电的 RadioShack 音频放大器,所以我把它接在耳机的位置。哇!其中一个电台轰鸣声大作。非常大声! 我在谷歌上查了一下,发现广播天线距离我的位置只有四英里,白天它的功率达到了 5000 瓦!难怪这么大声!幸运的是,该电台每晚将其功率降低到 20 瓦,我能够调到其他几个电台。 即使在这么多年之后,调谐波段并看看我能接收到多少电台仍然令人兴奋。也许我会架起一个更长的 T 型天线,做一些真正的远程通信。 总的来说,我很享受重温我年轻时的激动时刻,并希望你们能考虑向你们的孩子和/或孙子介绍矿石收音机的世界。请随时通过 dsgoodsell@verizon.net与我联系,提出任何意见或分享你们的经历。 附言:如果你仍然有一个老式的矿石收音机藏在壁橱里,你会得到一颗金星。请告诉我。...
矿石检波器
1874 年,卡尔·费迪南德·布劳恩发现了某些天然矿石具有单向导通的特性,这可以被视为人类第一次发现半导体的整流特性,也是矿石检波二极管最早的雏形。随后,在 1894 年,贾格迪什·钱德拉·博斯利用方铅矿的单向导电性,制成了世界上第一个检波器——矿石检波器。英文叫:crystal detector,又叫:cat's whisker radio detector(猫须检波器),因为它是用一根细金属丝,与方铅矿进行接触,利用接触点的单向导电性进行检波的。 早期人们并没有完全理解矿石检波器的内在机理,直到 20 世纪 30 年代,人们才逐渐认识到矿石检波器实际上是利用金属-半导体接触点形成的肖特基势垒具有的单向导电性进行检波的。 肖特基势垒具有单向导电性的原理是基于金属与半导体(通常是N型半导体)接触时形成的势垒。当金属与 N 型半导体接触时,由于金属的功函数通常高于半导体的功函数,电子会从半导体流向金属,直到两者的费米能级相等。这个过程会在半导体表面形成一层正的空间电荷区,同时产生一个由半导体指向金属的内建电场。 这个内建电场会阻止电子从金属流向半导体,从而形成肖特基势垒。此时,半导体一侧的能带会向上弯曲,形成势垒高度。这个势垒高度决定了电子从金属流向半导体的难易程度。 在正向偏压下(即金属接正电压,半导体接负电压),内建电场会被削弱,半导体一侧的势垒高度降低,从而允许电子从金属流向半导体,形成正向电流。此时,肖特基势垒表现出单向导电性。 反之,在反向偏压下,内建电场会增强,势垒高度增加,电子从半导体流向金属的难度增大,因此反向电流很小。这就是肖特基势垒具有单向导电性的原理。 需要注意的是,肖特基势垒的单向导电性与 PN 结二极管有所不同。在 PN 结二极管中,正向偏压下是由于 P 区和 N 区的多数载流子相互扩散而形成电流;而在肖特基势垒中,正向电流主要是由于金属中的电子进入半导体的导带而形成的。因此,肖特基二极管通常具有更低的正向压降和更快的开关速度。 矿石检波二极管在无线电技术的发展过程中发挥了重要作用。例如,在 1900 年,美国人格林里夫·惠特勒·皮卡德基于矿石检波器成功制造了世界上第一个矿石收音机,这为无线电广播的迅速普及奠定了基础。此外,在无线电通信、电视接收等领域,矿石检波二极管也得到了广泛应用。 矿石检波器的工作原理是基于其单向导电性。当无线电波通过矿石检波器时,矿石会只允许电流在一个方向上通过,从而将无线电信号中的高频成分滤除,只保留音频信号。这样,矿石检波器就能将无线电波转换为可听的声音信号,通过耳机或扬声器播放出来。 除了方铅矿,具有单向导电性的矿石还有黄铁矿**、**硫化锌等。需要注意,这些矿石的导电性能可能受到多种因素的影响,如矿石的纯度、颗粒大小、温度等。因此,在实际应用中,可能需要对矿石进行一定的处理或选择,以获得最佳的导电效果。 矿石检波器有固定矿石检波器和活动矿石检波器两种类型。固定矿石检波器的矿石是固定的,无法调整其位置或压力。而活动矿石检波器则允许通过调整矿石的位置或压力来改变其单向导电性,以获得最佳的检波效果。 矿石检波器是矿石收音机的重要组成部分,矿石收音机是一种最简单的无线电接收装置,主要用于接收中波公众无线电广播。这种收音机无需电源,节能环保,而且可以用来测试天线或地线的效率,引导初学者和小朋友进入无线电广播的天地。尽管现代的无线电接收设备已经更加先进和稳定,但矿石检波器作为电子技术的早期应用之一,在无线电发展史上仍然具有重要的地位。...
场效应管
场效应管(Field Effect Transistor,FET)也是 Transistor,而且基本形式也是三个脚,那它是不是三极管(Transistor)的一种呢? "Transistor" 这个词的英文原意是由 "transfer" 和 "resistor" 两个词组合而成的。"transfer" 表示转移或传送,而 "resistor" 表示电阻器。因此,"transistor" 的字面意思是“转移电阻器”或“传送电阻器”。然而,在电子学中,"transistor" 并不是真的用来“转移电阻”的。实际上,晶体管(transistor)是一种半导体器件,用于放大或开关电子信号。晶体管通过控制输入电流或电压来控制输出电流,从而实现信号的放大或开关功能。所以,通常晶体管特指由电流放大作用的晶体三极管(也称双极型晶体管),在更广泛的语境中,Transistor 可用来指代各种类型的晶体管,而不仅限于三极管。 场效应管是一种电压控制型半导体器件,也称为单极型晶体管。它依靠半导体中的多数载流子导电,并利用控制输入回路的电场效应来控制输出回路的电流。FET 具有输入电阻高、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象、安全工作区域宽等优点,现已成为双极型晶体管和功率晶体管的强大竞争者。 上边提到了两个概念:单极型晶体管与双极型晶体管。那么这里的“极型”又是什么意思呢?它通常指的是半导体材料中载流子(电子和空穴)的类型以及它们如何响应外部电场或电压。单极型晶体管和双极性晶体管(双极型晶体管)是两种不同类型的晶体管,它们在工作原理、结构和应用方面有所不同。 单极型晶体管(Unipolar Transistor): 单极型晶体管主要依靠一种载流子(要么是电子,要么是空穴)来导电。 场效应管(FET)就是一种单极型晶体管。在场效应管中,电流是通过半导体中的多数载流子(在 N 型半导体中是电子,在 P 型半导体中是空穴)流动的。 FET 通过改变栅极(Gate)与源极(Source)之间的电压来控制沟道的导电性,从而控制漏极(Drain)与源极之间的电流。 双极性晶体管(Bipolar Transistor): 双极性晶体管同时利用电子和空穴两种载流子来导电。 常见的双极性晶体管有 NPN 型和 PNP 型两种。在这两种晶体管中,都有两个 PN 结,因此得名“双极”。 双极性晶体管通过控制基极(Base)与发射极(Emitter)之间的电流来控制集电极(Collector)与发射极之间的电流。这种控制作用是通过 PN 结的放大效应实现的。 简而言之,“极型”在这里指的是晶体管中参与导电的载流子类型(电子或空穴),以及晶体管结构中所涉及的 PN 结的数量和类型。单极型晶体管主要依赖一种载流子,而双极性晶体管则同时利用电子和空穴。 FET 主要有两种类型:结型场效应管(Junction FET,JFET)和金属-氧化物半导体场效应管(Metal-Oxide Semiconductor FET,MOSFET)。 FET 的工作原理是通过控制栅极(Gate)与源极(Source)之间的电压(即栅源电压 $V_{GS}$),进而改变漏极(Drain)与源极之间的电流(即漏源电流 $I_{DS}$)。当栅源电压为零时,由于 P 型半导体和 N 型半导体在空间电荷分布上的差别,会在内部产生一个电动势,这个电动势会阻止外部电流通过,此时 FET 处于截止状态。当栅源电压增加时,会吸引更多的载流子到栅极下方,形成一个导电沟道,此时 FET 开始导通,漏源电流会随着栅源电压的增加而增加。 FET 的特性包括高输入阻抗、低噪声、低功耗、高速度等,这些特性使得 FET 在模拟电路、数字电路、功率电路等领域都有广泛的应用。例如,FET 可以用作放大器、开关、振荡器、滤波器等电路元件,也可以用于制造传感器、存储器等电子器件。 理解场效应晶体管,先从 JFET 开始。 与三极管类似,箭头画在栅极 G,总是指向 N 型半导体,这是用来区分电路符号是 N 沟道还是 P 沟道的。 结型场效应晶体管(Junction Field-Effect Transistor,JFET):JFET 是由 PN 结栅极(G)与源极(S)和漏极(D)构成的一种具有放大功能的三端有源器件。其工作原理就是通过电压改变沟道的导电性来实现对输出电流的控制。 在一块 N 型半导体上制作两个高掺杂的 P 区并将它们连接在一起,所引出的电极称为栅极 G(Gate),N 型半导体两端分别引出两个电极,分别称为漏极 D(Drain),源极 S(Source)。从名字上来理解也是很通俗的,场效应晶体管好比是水空头,源极 S 是水的来源(进水口),漏极 D 是排水(Drain)口(出水口),而栅极 G 则是阀门。当改变 $V_{GS}$ 时,沟道的宽窄发生了变化,当电压达到一定程度,阀门彻底关闭,阻断电流。 场效应管是一种单极型晶体管,它只有一个 PN 结,在零偏压的状态下, 它是导通的,如果在其栅极(G)和源极(S)之间加上一个反向偏压(称栅极偏压)在反向电场作用下 PN 结变厚(称耗尽区)沟道变窄,其漏极电流将变小(如图 b) ;反向偏压达到一定时, 耗尽区将完全沟道“夹断”,此时,场效应管进入截止状态(如图 c),此时的反向偏压我们称之为夹断电压 $V_p$。 夹断电压($V_p$)与 $V_{GS}$(栅源电压)之间的关系在场效应管(特别是结型场效应管(JFET)和耗尽型绝缘栅型场效应管(MOSFET))的工作原理中非常重要。 对于这两种类型的场效应管,当 $V_{GS} = 0$ 时,已经存在导电沟道。随着 $V_{GS}$ 的负向增大(对于 N 沟道器件)或正向减小(对于 P 沟道器件),沟道逐渐变窄,沟道电阻增大,漏极电流 $I_D$ 逐渐减小。当 $V_{GS}$ 达到某个特定值时,沟道会完全夹断,此时 $I_D$ 几乎为 0。这个特定的 $V_{GS}$ 值就是夹断电压 $V_p$。 换句话说,夹断电压 $V_p$ 是使得沟道完全夹断、漏极电流 $I_D$几乎为 0 的 $V_{GS}$ 值。在 $V_{GS}$ 达到 $V_p$ 之前,场效应管处于导通状态,沟道中存在电流;当 $V_{GS}$ 达到或超过 $V_p$ 时,场效应管进入夹断区,沟道被夹断,电流几乎无法通过。 需要注意的是,对于增强型绝缘栅型场效应管(如增强型MOSFET),在 $V_{GS} = 0$ 时沟道是不存在的,需要正的 $V_{GS}$(对于 N 沟道器件)或负的 $V_{GS}$(对于 P 沟道器件)来开启沟道。因此,夹断电压的概念对于增强型器件来说并不完全适用,而是用开启电压或阈值电压来描述其特性。 对于结型场效应晶体管(JFET),最常见到的是耗尽型 JFET(D-JFET),即在 0 栅偏压时就存在有沟道的 JFET;一般,不使用增强型 JFET(E-JFET)——在 0 栅偏压时不存在沟道的 JFET。这主要是由于长沟道 E-JFET 在使用时较难以产生出导电的沟道、从而导通性能不好的缘故。不过,由于高速、低功耗电路中应用的需要,有时也需要采用 E-JFET。 JFET 导电的沟道在体内。耗尽型和增强型这两种晶体管在工艺和结构上的差别主要在于其沟道区的掺杂浓度和厚度。D-JFET 的沟道的掺杂浓度较高、厚度较大,以致于栅 PN 结的内建电压不能把沟道完全耗尽;而 E-JFET 的沟道的掺杂浓度较低、厚度较小,则栅 PN 结的内建电压即可把沟道完全耗尽。 但是,对于短沟道 E-JFET,情况则有所不同,因为这种晶体管的漏极电压可以作用到源极附近,使得沟道中的势垒降低,所以能够形成导电沟道。这种 E-JFET 从本质上来说也就是静电感应晶体管。 金属-氧化物半导体场效应管(Metal-Oxide Semiconductor FET,MOSFET)它的结构主要由金属、氧化物(通常为 $SiO_2$ 或 SiN)和半导体材料构成。 这种晶体管具有源极(Source)、栅极(Gate)、漏极(Drain)和主体(Body,也称衬底)四个端子。通常, MOSFET 的主体与源极端子会连接在一起,从而使其在三端模式下工作,与常规场效应晶体管相似。 MOSFET 的工作原理是通过控制栅极与源极之间的电压,即栅源电压($V_{GS}$),来改变漏极与源极之间的电流,即漏源电流($I_{DS}$)。具体地说,当在栅极和源极之间施加适当的电压时,会在半导体中形成一个导电沟道,使电流能够从源极流向漏极。沟道的形成和宽度受到栅极电压的控制,从而实现了对电流的调控。 原理图符号相对来说复杂了些,但很类似,不同的是箭头画在了衬底极,相同的是总是指向 N 型半导体(沟道或衬底),可以用来区分电路符号是 N 沟道还是 P 沟道的。二极管可以理解为 D 与衬底形成的 PN 结。 MOSFET 和 JFET 都是场效应晶体管(FET),不过,它们在结构和工作原理上存在一些明显的差异: 结构:JFET 是一种结型场效应晶体管,具有三个端子:源极、漏极和栅极,且其栅极是反向偏置的。而 MOSFET 是金属氧化物半导体场效应晶体管,通常具有四个端子,包括源极、漏极、栅极和衬底(尽管在实际应用中,衬底通常与源极连接,因此有时也将其视为三端器件)。 工作原理:在工作原理上,JFET 只能在耗尽模式下工作,即通过控制栅极电压来耗尽沟道中的载流子,从而控制漏极和源极之间的电流。而 MOSFET 既可以在耗尽模式下工作,也可以在增强模式下工作。在增强模式下,当栅极电压超过阈值电压时,会在沟道中形成反型层,从而允许电流从源极流向漏极。 输入阻抗:JFET 和 MOSFET 都具有很高的输入阻抗,但 MOSFET 的输入阻抗通常比 JFET 更高,这得益于金属氧化物绝缘体在栅极和沟道之间提供的高电阻。 栅极泄漏电流:虽然 JFET 和 MOSFET 的栅极泄漏电流都相对较小,但 MOSFET 的栅极泄漏电流通常比 JFET 更小,这有助于降低功耗和提高器件的稳定性。 总的来说,MOSFET 和 JFET 在结构、工作原理、输入阻抗和栅极泄漏电流等方面存在差异。这些差异使得 MOSFET 在某些应用场合(如低功耗、高输入阻抗和需要增强模式操作等)具有优势,而 JFET 则在其他应用场合(如简单结构和较低成本等)具有优势。 由于 MOSFET 具有的多种优点,如输入电阻高、噪声小、功耗低、动态范围大、易于集成、没有二次击穿现象以及安全工作区域宽等。这些特性使得 MOSFET 在电子开关领域具有广泛的应用,并已成为功率晶体管和双极型晶体管的有力竞争...
晶体二极管
在现代电子设备中,无数微小的组件共同工作,才使得我们的生活如此便捷。其中,晶体二极管(Crystal Diode)或更常见的称呼——二极管(Diode),是一种至关重要的电子元件。它的发明改变了电子技术的发展方向,使得电子设备变得更小、更快、更可靠。 在晶体二极管发明之前,主要使用的是真空电子管作为二极管的替代品。真空电子管在早期的电子设备中扮演了重要角色,用于放大电信号和进行整流等操作。然而,真空电子管存在一些显著的缺点,如制作困难、体积庞大、耗能高以及使用寿命相对较短。 正因为真空电子管的这些不足,业界开始迫切期望能够出现一种更为先进、实用的电子管替代品。这种需求推动了半导体技术的研究和发展,最终导致了晶体二极管的诞生。晶体二极管的出现不仅克服了真空电子管的缺点,而且具有更小的体积、更低的能耗和更长的使用寿命,极大地推动了电子技术的进步和电子设备的发展。 晶体二极管的起源可以追溯到 20 世纪初的“晶体检波器”时期。然而,真正的二极管——具有明显单向导电性的设备——是在 20 世纪 40 年代才被发明出来的。最为人们熟知的二极管类型是 1947 年由贝尔实验室的科学家沃尔特·布拉顿、约翰·巴丁和威廉·肖克莱发明的点接触型锗二极管。这一突破性的发明为后来的晶体管,以及集成电路的发展铺平了道路,他们也因此获得了 1956 年的诺贝尔物理学奖。晶体二极管之所以被称为“晶体”,是因为它的主要构成材料是晶体,如单晶硅或单晶锗。这些晶体材料具有特殊的电学性质,使得晶体二极管能够具有单向导电性,即只允许电流从一个方向通过。 二极管符号中箭头(三角形顶端)指向 N N 型半导体(N 为 Negative 的字头,由于电子带负电荷而得此名):掺入少量杂质磷元素(或锑元素)的硅晶体(或锗晶体)中,由于半导体原子(如硅原子)被杂质原子取代,磷原子外层的五个外层电子的其中四个与周围的半导体原子形成共价键,多出的一个电子几乎不受束缚,较为容易地成为自由电子。于是,N型半导体就成为了含电子浓度较高的半导体,其导电性主要是因为自由电子导电。 P 型半导体(P 为 Positive 的字头,由于空穴带正电而得此名):掺入少量杂质硼元素(或铟元素)的硅晶体(或锗晶体)中,由于半导体原子(如硅原子)被杂质原子取代,硼原子外层的三个外层电子与周围的半导体原子形成共价键的时候,会产生一个“空穴”,这个空穴可能吸引束缚电子来“填充”,使得硼原子成为带负电的离子。这样,这类半导体由于含有较高浓度的“空穴”(“相当于”正电荷),成为能够导电的物质。 PN 结:PN 结是由一个 N 型掺杂区和一个 P 型掺杂区紧密接触所构成的,其接触界面称为冶金结界面。 在一块完整的硅片上,用不同的掺杂工艺使其一边形成 N 型半导体,另一边形成 P 型半导体,我们称两种半导体的交界面附近的区域为 PN 结。 在 P 型半导体和 N 型半导体结合后,由于 N 型区内自由电子为多子,空穴几乎为零称为少子,而 P 型区内空穴为多子,自由电子为少子,在它们的交界处就出现了电子和空穴的浓度差。由于自由电子和空穴浓度差的原因,有一些电子从 N 型区向 P 型区扩散,也有一些空穴要从 P 型区向 N 型区扩散。它们扩散的结果就使 P 区一边失去空穴,留下了带负电的杂质离子,N 区一边失去电子,留下了带正电的杂质离子。开路中半导体中的离子不能任意移动,因此不参与导电。这些不能移动的带电粒子在 P 和 N 区交界面附近,形成了一个空间电荷区,空间电荷区的薄厚和掺杂物浓度有关。 在空间电荷区形成后,由于正负电荷之间的相互作用,在空间电荷区形成了内电场,其方向是从带正电的 N 区指向带负电的 P 区。显然,这个电场的方向与载流子扩散运动的方向相反,阻止扩散。另一方面,这个电场将使 N 区的少数载流子空穴向 P 区漂移,使 P 区的少数载流子电子向 N 区漂移,漂移运动的方向正好与扩散运动的方向相反。从 N 区漂移到 P 区的空穴补充了原来交界面上 P 区所失去的空穴,从 P 区漂移到 N 区的电子补充了原来交界面上 N 区所失去的电子,这就使空间电荷减少,内电场减弱。因此,漂移运动的结果是使空间电荷区变窄,扩散运动加强。最后,多子的扩散和少子的漂移达到动态平衡。在 P 型半导体和 N 型半导体的结合面两侧,留下离子薄层,这个离子薄层形成的空间电荷区称为 PN 结。PN 结的内电场方向由 N 区指向 P 区。在空间电荷区,由于缺少多子,所以也称耗尽层。 从 PN 结的形成原理可以看出,要想让 PN 结导通形成电流,必须消除其空间电荷区的内部电场的阻力。很显然,给它加一个反方向的更大的电场,即 P 区接外加电源的正极,N 区接负极,就可以抵消其内部自建电场,使载流子可以继续运动,从而形成线性的正向电流。而外加反向电压则相当于内建电场的阻力更大,PN 结不能导通,仅有极微弱的反向电流(由少数载流子的漂移运动形成,因少子数量有限,电流饱和)。当反向电压增大至某一数值时,因少子的数量和能量都增大,会碰撞破坏内部的共价键,使原来被束缚的电子和空穴被释放出来,不断增大电流,最终PN结将被击穿(变为导体)损坏,反向电流急剧增大。 这就是 PN 结的特性(单向导通、反向饱和漏电或击穿导体),也是晶体管和集成电路最基础、最重要的物理原理,所有以晶体管为基础的复杂电路的分析都离不开它。比如二极管就是基于 PN 结的单向导通原理工作的;而一个 PNP 结构则可以形成一个三极管,里面包含了两个 PN 结。二极管和三极管都是电子电路里面最基本的元件。 二极管有许多种类,根据材料、结构、功能等不同的分类标准,可以将其分为不同类型。 根据材料,二极管主要分为硅二极管和锗二极管。硅二极管的工作温度范围更广,稳定性更好,因此在现代电子设备中更为常见。锗二极管的正向导通电压通常比硅二极管低。 根据结构,二极管可以分为点接触型、面接触型和平面型等。不同类型的二极管在电流容量、工作速度、耐压能力等方面有所不同。 根据功能,二极管还可以分为整流二极管、检波二极管、稳压二极管、开关二极管、发光二极管(LED)等。这些二极管在电子设备中发挥着各种各样的作用,如电源整流、信号检测、电压稳定、电路开关、指示和照明等。 晶体二极管作为现代电子技术的基石之一,其重要性不言而喻。从无线电、电视、电脑,到手机、LED照明、太阳能电池板,无数我们日常生活中离不开的电子设备,其内部都有二极管的身影。随着科技的不断发展,二极管也在不断进步,更小、更快、更节能的二极管正在不断被研发出来,为我们的未来带来更多可能...