最近的三个制作
-
彻底榨干6F22的剩余电量
从万用表里拆下来的6F22常常还有许多电量没有用掉, 直接扔掉比较可惜. 把它DC-DC降压后给单片机之类供电, 还能再撑一段时间.
电路如图, 就是AOZ1016的标准电路. 在它的EN脚对地接一个22uF的电解电容, 再对电源和对地各接一个轻触开关, 便实现了软开关. EN脚的输入电流极小, 靠22u电解就能维持工作几十分钟. EN脚拉低时, AOZ1016消耗电流仅1μA左右, 完全可以忽略不计了. DC-DC降压到3.68V左右, 再由XC6206稳压到3.3V.
-
继续试验简易FM无线话筒
话筒信号放大后直接推动与晶振串联的变容二极管, MMBT2222或S9018接成电容三点式振荡器, 谐振在晶振的三倍频上. 可惜这种方式能得到的频偏还是太小, 用收音机只能收到很微弱的信号. 下次试试锁相环调频吧.
-
RF功率计
几年前Tariel/BH1PHL送了我一个50欧 100W的RF电阻, 一直没用上.
这次用它做了个假负载+功率计, 从RF电阻上取电压, 检波、滤波后分压, 用mega48的adc采样, 显示在0801液晶屏上.
一开始检波二极管用的是2SC1622的BC结, 结果实测在50M时功率严重偏小, 144M和430M就一点功率也测不到了. 换成1N60之后一切正常. 估计是因为2SC1622的结电容太大?
但是1N60耐压太低, 只有50V, 这样只能测到峰值25V的RF电压, 换算成功率只有6.25W了. 下次还是得用先衰减再测的方案.
辉光数码管实验
多年前sunzx送了我几个SZ-8数码管, 一直没顾上试验. 前几天终于给它搭了驱动电路, 如图:
由74HC164将串行输入信号转为8位并行, 其中4位作为BCD码, 由74LS42转为数码管的驱动信号. 由于74LS42的输出是负逻辑, 因此驱动2N5551时需要用发射极驱动. HC164的另外三位用于驱动藏在SZ-8肚子下面的RGB三色LED. 几个模块之间可以级联, 这样用起来就简单多了.
供电部分如图:
采用boost升压电路. NE555接成多谐振荡器, 占空比约为90%, 直接驱动IRF640S的栅极. 2SC1815在这里起比较器的作用, 对输出电压取样后反馈到NE555的调制端5脚. IRF640S一般需要10V栅极驱动电平, 但实际测试输入电压5~12V均能正常工作, 升压效率约50%.
点亮四个数码管的效果:
视频, 其中两只有点接触不良, 以后有空再改吧.
(/videos/nixie.mp4) read more小台钟
在stm32上使用二进制字库的简单方法
标题其实可以写成"在可执行程序里嵌入二进制资源的方法", 不过这个题目大了点, 还是原样吧.
以前如果我们用到不带字库的点阵LCD, 一般都是把字库按16进制写成一个大数组, 再和其他源程序一起编译. 有没有方便一点的办法呢?这里给出两个方案.
-
使用objcopy把字库转成目标文件(.o/.obj)
假设我们需要嵌入的是5x7的ascii点阵字库, 文件名是asc5x7.bin.
在arm-gcc环境下, 命令如下:
arm-none-eabi-objcopy -B arm -I binary -O elf32-littlearm --rename-section .data=.rodata asc5x7.bin asc5x7.o
需要注意的是, objcopy生成的.o文件默认是把数据放在.data段的. 因此这里需要加个--rename-section的选项, 把.data改成.text或者.rodata, 不然单片机可怜的一点点RAM根本不够用. 如果是在PC上运行, 这里改不改就无所谓了, 不过内存还是能省点就省点的好.
在.o里会生成三个符号:
_binary_asc5x7_bin_start, _binary_asc5x7_bin_end, binary_asc5x7_bin_size.
在程序里这么调用 ...
带负载指示的USB一拖三充电器
现在平板/手机之类一般都用USB充电了. 晚上睡觉前, 经常得两三个设备一起充电, 插座都不够用了. 如果能在一个充电器上做出几个USB口同时给它们充电, 岂不是很方便?
不过这么一来, 供电就比较成问题了. 现在的设备一般都需要1A以上的充电电流, 有的需要2A. 3个2A一起充就得6A, 4个就得8A. 前面如果用12V降压到5V, 80%效率的话, 5V 6A需要提供12V 3.2A, 5V 8A需要提供12V 4.2A. 能提供这么大电流的12V适配器倒是有, 但是不太便携了. 所以还是折衷一下, 输出4A电流, 这样前面用12V 2A的适配器, 勉强够用. 这样就不能同时充3个2A的设备了, 免得一不小心就冒烟. 安全起见, 最好是再加个负载指示, 随时知道输出多大电流.
电路如图, 从12V降压到5V, 用了AOSMD的AOZ1014. 这颗SOIC8的小芯片能提供最大5A的输出电流, 不过感觉不怎么踏实, 4A保险些. 输出电压用8.2k和1.5k电阻设定为0.8V * (8.2+1.5 ...
read more直流电子管电源
玩直流管, 供电是个大麻烦. 甲电还好办, 一节电池搞定; 乙电一般需要60~90V, 要么从市电变压整流再滤波, 要么就DC-DC升压; boost升压还不行, 得和甲电隔离才行, 不然玩2P2之类需要栅偏压的管子就麻烦了, 因此只能用flyback或者推挽的方式.
电路如图, CD4047接成多谐振荡器, 由两只74AHC1G00推动AO4800, AO4800的两只NMOS以推挽方式工作.
变压器的参数是... 忘了, 只好用LC表测量各绕组电感量, 初级分别是659uH和666uH, 次级则是188mH+188mH. 由此可算出匝数比是1:17. 按这个匝数比, 两个次级绕组串联, 锂电池电压从4.2V降落到3.5V时, 理论输出电压应该是118V~142V. 这个变压器不大, 线径很细, 内阻不小, 因此输出电压不会这么高, 给直流电子管供电还算合适.
AMS1117-ADJ提供甲电. 1117要求5~10mA的最小负载电流, 否则空载输出电压会偏高. 这里应该给它加个几百欧的电阻作为负载. 不是大问题, 算了吧.
用ATTiny13的ADC实现了简单的电池电量检测, 由红绿双色LED显示. 电池电压在4.0V以上时, LED显示绿色; 3.7V ...
read more3.579MHz CW发射机
电路如图, 用74HC240的一个门振荡, 另外7个门并联推动IRF510. 用RS-232串口的RTS信号控制IRF510的供电, 作为电键. DTR信号控制整机供电和天线切换, 作为PTT.
实测发现一个大问题: CP2102转出来的RS-232的DTR和RTS极性是反的! 再一查, PL2303和FT232也是这样. 现在的PC基本已经不提供RS-232了, 没办法, 装个串口挡板, 用真实的串口再试试吧.
read moreSansei DMM2650背光改装记录
Sansei DMM2650是80年代的小型台式四位半自动量程万用表, 在Diyers中一直很受欢迎. sunzx送了我一台, 相当好用. 使用过程中发现它有一个很大的不足之处就是液晶屏没有背光, 光线较暗时读数不容易看清, 所以我决定给它加装背光.
DMM2650的液晶屏是双列针脚直插式的, 小心地把它从插座上取下来, 如图:
背面贴了一层反光膜. 这层膜很致密, 用LED手电从背后照, 在前面基本看不到. 因此要加装背光, 必须把这层膜撕下来.
撕的时候要很小心, 引脚碰弯了就不容易按回去了.
接下来制作背光板. 这块2cm x 8cm的洞洞板长度长了点, 两端要锯掉一些.
锯完之后, 尺寸正合适.
在上面焊10个0805的白光LED, 以及相应的限流电阻. 背光不需要很亮, 大约0.5mA就足够, 这里限流电阻用了5.1K.
点亮背光的效果.
液晶屏插座正中是驱动芯片, 做好的背光板可以用双面胶贴在驱动芯片上.
接下来要找到供电正负端, 很好找, 红色的电源开关最后面那两个引脚就是. 把背光板的引线缠在上面, 焊好.
装回前面板, 开机! 怎么效果有点逗比……看来没有柔光片是不行的.
柔光片这东西不好找, 试了不干胶贴纸的背纸、白色绝缘胶带、普通A4纸, 效果都不理想 ...
read more南瓜灯
某次在超市看到有这种球形蜡烛头卖,如图:
用记号笔把适当的地方涂黑,就成了这样:
最后呢,在它下面熔个洞,放进一个橙色大功率LED,点亮以后的效果:
好象万圣节的时间搞错了……不过无所谓啦。
最后,用AVR让它的亮度忽明忽暗,尽可能象真正的蜡烛一样——其实挺困难的。
read more8x8 LED点阵动画
翻出来一个8x8的LED屏,决定做点动画玩。电路很简单,ATmega8的PB口做行选,PD口做列选。
做出来的效果是这样的:
(/videos/8x8_led_animation.mp4) read more