Allegro导出bom和坐标文件, 用于嘉立创的SMT下单
截图就不用贴了吧?
-
Allegro 菜单点 Tools, Reports
- 从 Available Reports 里找 Placed Component Report, 双击让它跑到下面框里.
- 选中 Write Report, 点 Report. 此时会在. brd 所在目录下生成一个 pcp_rep.rpt
-
Excel, 文件, 打开, 类型选” 所有文件”, 找到刚生成的 pcp_rep.rpt.
- 出现” 文本导入向导”, 直接点下一步.
- 分隔符号这里把” 逗号” 选上, 然后点下一步.
- 列数据格式, 选” 文本”, 然后点完成.
-
表格出来了, 前四行没用, 删掉. 表头要按 JLC 的格式修改, 具体如下:
- REFDES …
开源我的fpm skill库
无责任提供, 地址是https://github.com/tomzbj/fpm_skills, 请大家随意取用. 不定期更新.
部分由Tariel和Kurapica制作的封装没有放进来, 如果有需要请自行联系他们二位.
ps. 请先下载根目录的fpm.il并替换fpm目录的同名文件. 这个明文fpm.il由minux提供, 我添加了对槽孔的支持, 以及修正了若干bug, 比如双排简牛的缺口方向搞反, 四脚贴片有源晶振的管脚顺序错误之类.
read more一键切换屏幕分辨率
现在大家的桌面都是1920x1080或者2560x1440之类高分辨率了。但是有时候还不得不临时调到较低的分辨率,比如遇到需要像素级精确定位的时候,遇到百度网盘或者微信PC版这样字体又小又不能调大的软件的时候,等等。桌面右键然后改分辨率还是太麻烦了,用完了还得改回来。
有没有办法一键切换分辨率呢?没找到现成的工具,自己写一个。程序如下:
#include <windows.h>
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
LPSTR lpszArgument, int nFunsterStil)
{
DEVMODE dm;
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm);
if(dm.dmPelsHeight == 1080) {
dm.dmPelsHeight = 720;
dm.dmPelsWidth = 1280;
}
else {
dm.dmPelsHeight = 1080;
dm.dmPelsWidth …
卡片手电 & STLINK转接板 & 迷你电源
-
卡片手电
做了个和银行卡一样大的手电. 最厚处厚5.5mm, 因此可以和其他的卡一起塞在钱包里.
本来用AMC7135作为驱动, 结果这东西太娇气, 一不小心就烧坏, 于是干脆直接用电阻限流了, 好象效果也差不多.
效果见图:
-
STLINK转接板
JLINK和STLINK提供的都是20pin的标准JTAG口. 但是20pin实在太占地方了, 自己做板一般只用4pin或者5pin的SWD接口, 所以做了这个转接小板, 如图:
-
simple power
可以方便地从一节18650得到3.3V, 2.8V, 2.4V, 2.0V, 1.8V和1.5V共6种电压. 之前用SEPIC电路做过一个, 发现DC-DC还是干扰太大, 所以这次用了线性稳压, 干扰能小点.
只用一个按键开关, 长按为开/关机, 短按为在不同电压之间切换, 用6个LED来指示各档输出电压.
拆解旧电子设备若干
最近从家里清理出一大堆旧电子设备, 都没啥用了, 于是挨个拆开研究研究.
-
三星X859
2004年上市的翻盖机. 入了C网没办法, 可选的机器太少了, 那会儿只能眼馋别人的诺基亚价廉物美. 这机器搞不清楚内置存储多大, MP3也放不了, 短信只能存100条还是200条. 不要说放在现在, 以10年前的眼光来看也基本是个残废.
忘了拍照了, 也没啥好拍的. 除了电池和LCD, 没有别的值得拆卸的元件. LCD还不知道能否驱动起来.
-
诺亚舟NH3280
电子词典, 没啥特别的. 我奇怪的是, 当年文曲星只不过是6502的配置, 速度还可以; 别家的配置应该更好, 但速度反倒都比文曲星慢, 比如这个诺亚舟. 拆开一看, 里面惨不忍睹, 除了两个黑胶封装的IC以外就没啥东西了.
左边空了几个器件没焊, 猜测是DC-DC升压模块, 用于1节电池的型号, 手上这个用2节电池所以没有用到.
-
快易典JP209
日汉英电子词典. 拆开一看, 东西还不少.
下方中间的黑胶封装应该是ARM7之类, 旁边是LY62L1024RN, 128k的SRAM. 稍远处的空位应该可以扩展另一片LY62L1024RN, 就升级成256k内存了. 右下的K9F5608U0B是三星的32M FLASH, 在当年的电子词典里算豪华配置了. 右上的黑胶封装估计是语音合成芯片. 左上角的几个元件是DC-DC升压, 所以这货只需要一节7号电池就能工作. 总之 …
试了一下BH1417用于6米波段发射
BH1417是WFM发射IC, 以0.2MHz为间隔, 在87.7~88.9MHz和106.7~107.9MHz频段各有7个频点. 频率基准是7.6MHz的晶振, 先4分频得到1.9MHz, 然后一路50分频得38kHz作为立体声副载波, 另一路19分频得到100kHz给PLL作为参考. 如果把7.6M晶振换成3.579M, 则106.7~107.9MHz这7个频点就变成了50.255~50.820MHz, 全都落在6米业余波段以内.
试着搭了一块板, 果然可以工作, 用VX-7R在7个频点都能准确地收到信号. 但是前级增益低了就几乎没声, 前级增益高了又全是噪声; 如果把VX-7R强行设置成WFM模式, 则一切正常. 估计是BH1417的前端预加重/限幅模块过于强大了.
6米好玩, 等北京的6米解禁了要好好搞搞.
read more修复宜家LED灯一则
宜家买的LED灯不亮了。把线剪断,两边分别一测,发现LED是好的,电源适配器无输出,只得再给它做个驱动。
LED需要恒流驱动,直接接个恒压输出的适配器上去是不行的,要么不亮,要么烧坏。串个电阻行不行呢?行是行,不过电阻会很热。这个LED灯是3W的,工作电流1A,接到5V电源上就需要串联2欧的电阻,电阻的发热量达到2W。这么做显然太不优雅。
幸好手里还有若干LED驱动IC:华润的PT4115,用它可以顺便把调光功能也加上。画了个电路图如下:
其中R1用于设定LED工作电流,公式为$I_{\rm LED} = \frac{0.1}{R_1}$. 电位器R2用于调光,从几百欧到几十kΩ的都可以用,这里用了拨轮式的音量电位器,好处是阻值按指数变化,这样LED亮度也按指数变化,会感觉实际亮度变化比较自然。
LDO XC6206用于给PT4115的调光脚供电,用输出2.5V或3.3V的LDO都行。PT4115允许的输入电压范围是6~30V,但注意XC6206的输入电压最高只能到7V,因此只能用6~7V的电源供电。如果需要用更高输入电压的电源,可以把XC6206换成HT7133、MIC5207之类 …
read more利用Makefile实现avr-size -C的效果
GNU工具链里的size大家应该都用过, 它可以显示elf/obj/exe/dll等可执行文件里各个段的大小, 非常方便. 加-A和-B参数分别是按sysv和berkeley格式显示, 默认带-B参数.
avr-gcc里的avr-size则又增加了一个-C的选项, 可以显示单片机flash和ram的占用比例, 需要同时用--mcu参数指定avr单片机的型号, 效果是这样的:
avr-size -C --mcu=attiny26 main.elf
AVR Memory Usage
----------------
Device: attiny26
Program: 1316 bytes (64.3% Full)
(.text + .data + .bootloader)
Data: 23 bytes (18.0% Full)
(.data + .bss + .noinit)
是不是很方便? 可惜arm-gcc里的size并没有这个选项, 于是从avr转到stm32之后, 常常会感觉到不方便.
后来发现, 只要在Makefile里all目标后面加上几行, 也能达到同样目的. 需要你的工具链里有sed和bc, sed用来从size的结果里截取包含数据的第二行 …
read more74HC4046实验(2)
在前几天复习HC4046计算的基础上又试了一下, 用atmega48的timer0将16M主时钟先256预分频再125分频, Toggle模式, 得到250Hz 50%占空比的方波作为参考频率; HC4046的VCO输出接到atmega48的T1口, 用timer1作为÷N分频器.
实测各种RC参数, 用HC4046的鉴相器2可以锁定在60kHz~165kHz, 800kHz~2.4MHz, 差不多有三倍的频率覆盖率, 给各种简单接收机做个本振应该是够了. 用鉴相器1只能锁定在120kHz~165kHz, 不过输出波形似乎稍微干净些.
有空再试试用DDS输出作为HC4046的参考频率. 这里DDS的频率不用很高, 在AVR的定时器中断里更新相位累加字就可以了. 这样应该就能做到1Hz级别的精密步进了.
read more在STM32F051上重新实现了SD卡WAVE播放器
前几年试过用AVR来播放sd卡上的wave文件. (链接: http://st.avros.net/articles/avr_sd_waveplayer_2.html) 这次改用stm32f051试了一遍, 28.224M晶振, 1.5倍频到42.336M, 这样48kHz和44.1kHz都可以按准确的比特率播放了.
DAC用的是PT8211, 软件方式写I2S数据, 结果还是有爆音. 大概I2S对时序要求比较严格, 有空了改成硬件I2S再试试.
顺便在这块板上试验了几块TFT LCD屏. SPI接口的TFT还是太慢, 清屏等操作时能看清刷屏过程. 并口的好用, 就是布线麻烦了点.
read more