>

Allegro导出bom和坐标文件, 用于嘉立创的SMT下单

2016-12-16 by Stavros

截图就不用贴了吧?

  1. Allegro 菜单点 Tools, Reports

    • 从 Available Reports 里找 Placed Component Report, 双击让它跑到下面框里.
    • 选中 Write Report, 点 Report. 此时会在. brd 所在目录下生成一个 pcp_rep.rpt
  2. Excel, 文件, 打开, 类型选” 所有文件”, 找到刚生成的 pcp_rep.rpt.

    • 出现” 文本导入向导”, 直接点下一步.
    • 分隔符号这里把” 逗号” 选上, 然后点下一步.
    • 列数据格式, 选” 文本”, 然后点完成.
  3. 表格出来了, 前四行没用, 删掉. 表头要按 JLC 的格式修改, 具体如下:

    • REFDES …
read more

开源我的fpm skill库

2016-11-28 by Stavros

无责任提供, 地址是https://github.com/tomzbj/fpm_skills, 请大家随意取用. 不定期更新.

部分由Tariel和Kurapica制作的封装没有放进来, 如果有需要请自行联系他们二位.

ps. 请先下载根目录的fpm.il并替换fpm目录的同名文件. 这个明文fpm.il由minux提供, 我添加了对槽孔的支持, 以及修正了若干bug, 比如双排简牛的缺口方向搞反, 四脚贴片有源晶振的管脚顺序错误之类.

read more

一键切换屏幕分辨率

2016-11-17 by Stavros

现在大家的桌面都是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 …
read more

卡片手电 & STLINK转接板 & 迷你电源

2016-09-22 by Stavros
  1. 卡片手电
    做了个和银行卡一样大的手电. 最厚处厚5.5mm, 因此可以和其他的卡一起塞在钱包里.
    本来用AMC7135作为驱动, 结果这东西太娇气, 一不小心就烧坏, 于是干脆直接用电阻限流了, 好象效果也差不多.
    效果见图:

  2. STLINK转接板
    JLINK和STLINK提供的都是20pin的标准JTAG口. 但是20pin实在太占地方了, 自己做板一般只用4pin或者5pin的SWD接口, 所以做了这个转接小板, 如图:

  3. simple power
    可以方便地从一节18650得到3.3V, 2.8V, 2.4V, 2.0V, 1.8V和1.5V共6种电压. 之前用SEPIC电路做过一个, 发现DC-DC还是干扰太大, 所以这次用了线性稳压, 干扰能小点.
    只用一个按键开关, 长按为开/关机, 短按为在不同电压之间切换, 用6个LED来指示各档输出电压.

read more

拆解旧电子设备若干

2016-05-10 by Stavros

最近从家里清理出一大堆旧电子设备, 都没啥用了, 于是挨个拆开研究研究.

  1. 三星X859

    2004年上市的翻盖机. 入了C网没办法, 可选的机器太少了, 那会儿只能眼馋别人的诺基亚价廉物美. 这机器搞不清楚内置存储多大, MP3也放不了, 短信只能存100条还是200条. 不要说放在现在, 以10年前的眼光来看也基本是个残废.

    忘了拍照了, 也没啥好拍的. 除了电池和LCD, 没有别的值得拆卸的元件. LCD还不知道能否驱动起来.

  2. 诺亚舟NH3280

    电子词典, 没啥特别的. 我奇怪的是, 当年文曲星只不过是6502的配置, 速度还可以; 别家的配置应该更好, 但速度反倒都比文曲星慢, 比如这个诺亚舟. 拆开一看, 里面惨不忍睹, 除了两个黑胶封装的IC以外就没啥东西了.

    左边空了几个器件没焊, 猜测是DC-DC升压模块, 用于1节电池的型号, 手上这个用2节电池所以没有用到.

  3. 快易典JP209

    日汉英电子词典. 拆开一看, 东西还不少.

    下方中间的黑胶封装应该是ARM7之类, 旁边是LY62L1024RN, 128k的SRAM. 稍远处的空位应该可以扩展另一片LY62L1024RN, 就升级成256k内存了. 右下的K9F5608U0B是三星的32M FLASH, 在当年的电子词典里算豪华配置了. 右上的黑胶封装估计是语音合成芯片. 左上角的几个元件是DC-DC升压, 所以这货只需要一节7号电池就能工作. 总之 …

read more

试了一下BH1417用于6米波段发射

2016-04-14 by Stavros

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灯一则

2016-03-16 by Stavros

宜家买的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的效果

2016-01-03 by Stavros

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 more

74HC4046实验(2)

2015-10-09 by Stavros

在前几天复习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播放器

2015-10-09 by Stavros

前几年试过用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