1.png
背景技术
作为一名工程师,我一直被俄罗斯实用的命名新产品的方法所吸引。虽然一些愚蠢的Western Marketeer可能会将一台基于CRT的小型游戏机命名为“ The Vectormatic Sc​​ore-Master 3000”,但俄罗斯人倾向于使用更有意义的东西,并且由于这是在基于矢量的显示系统上进行的第三次尝试,因此他们可能将其称为Vector Drawing Machine,第3号。因此,该项目被称为VDM3。十五至爱,工程与市场营销部门。
许多年前,我的想象力立即被使用小型(示波器)CRT作为显示模拟时钟的方法的想法所吸引。除了在美学上令人愉悦和柔和的显示的可能性外,这种工作也非常荒谬。一小部分机械连接被一个微处理器所取代,该微处理器控制一对高压差分放大器,以及一个独立的EHT(1000V EHT?)电源,仅用于(大约)时间上。有点傻 整个项目是一项艰巨的任务,因为还要考虑所有与生成最终外观漂亮的设备相关的工作以及相关的设计信息。
该项目的其他吸引力之一是与设计相关的活动的广泛性。没有一项活动特别繁重,但总体上来说,该项目的整合阶段是发现任何跨学科弱点的通常时间。
本文并非旨在作为建设项目,但可能会有一些流程设计思想引起人们对未开发的黑暗小巷的兴趣。
总结
外壳是使用激光切割的MDF分两部分制成的。顶部是CRT显示屏读数,高压电源,偏转和相关控件。下部装有操纵杆,按钮,处理器和低压电源。下部的背面有一个DC电源插座,以及一个mini-B USB连接器。顶部和底部滑动在一起。操纵杆/用户界面面板放到适当的位置,将这两个半部分锁定在一起。
2.png
组装单元
CRT
CRT是D7-16G,直径刚好超过76mm,长160mm,专为电池操作而设计。这些CRT中的三台是多年前为此类项目购买的。基本连接器似乎不可用。
3.png
D7-16G显像管
CRT使用11针连接器,类型为30-232,目前尚不可用。经过一番思考,看来可以通过激光切割一些丙烯酸板并重新使用合适的阀针插座来制造定制连接器。
4.png
定制的30-232 CRT连接器
这些样式是使用Autosketch设计的,因此CRT引脚位于左侧项目的“ D”内部。然后从3mm的丙烯酸板上切下这些图案中的每一个,然后将其粘合在一起。从新的B9A阀座上卸下了销形插座,将其插入此新组件中,并略微弯曲,以使其不会掉落。然后将飞线焊接并用热缩套管固定在每个引脚上。
HV PSU
PSU部分基于SG3525开关稳压器,它驱动一对推挽N-FET,进而驱动一个小型铁氧体变压器。变压器有两个次级,高电压和低电压。高压侧通过一个正半波整流器以产生约240VDC,然后被并联调节至210V。该电源轨向偏转放大器提供大约7mA的电流。高压次级线圈的电压也加倍,从而在毫安左右产生–600V左右的电压,从而使CRT和电子枪偏置。正负整流器用作平衡次级中任何直流电流的尝试,这可能会使磁芯饱和(或至少磁偏置)。
变压器的堆叠从原边的中心开始。然后,HV次级线圈的接地端开始,以HV次级线圈的热端结束。最后,LV(加热器)绕组最后缠绕。选择该顺序是为了减小LV绕组和倍压HV轨之间的介电应力。我对这种拓扑有第二个想法,大声说了这一点,并且需要在某个时候研究这个问题。
5.png
HV和偏转组件
自从上次使用铁氧体罐芯以来已有很长时间了,并且完全忘记了磁性材料是导电的。这在次级线圈的顶端布线和接地的铁氧体之间产生了一些HV电弧。这又导致几对STN3NF06L初级侧驱动FET出现故障。在研究此问题时,这些器件被一对TO252、100A /8mΩ器件所替代,即使面对12V,1A电源和短路变压器来驱动时,这些器件也几乎不会损坏。
令我有些沮丧的是,发现3525切换器既有宽型也有窄型SOIC封装。使用了错误的PCB足迹,因此必须以适中的成本从英国采购狭窄的零件。
偏转放大器
事实证明,此子系统的设计非常有趣,因此,使用SPICE模拟器花费大量时间来了解问题。
简要规格包括:单端0..5V输入。每个肢体的差分输出> 80V pp。+ 210V时消耗电流小于2mA。+ 12V电源可用。没有可用的负电源轨。> 500kHz带宽,在设计带宽范围内相移小于5O。
在几天的过程中,人们探索了几种拓扑,首先是带有电流吸收器的级联长尾对。最初,仅对稳态条件进行了分析和优化。建立基本的直流性能后,便可以探索交流参数。耦合长尾对发射极的电容器(毫不奇怪)会显着影响交流增益,频率响应和相位性能,并且显然与发射极电阻器以及相关的电流吸收器之间存在显着的相互作用。
在这一点上,可能的增强包括通过热粘合输出设备的热稳定性(假设它们当前是SOT-233,这并不容易)。或者,当然,可以更改为一对通孔设备,在其中可以更轻松地实现这一点。
最好设计一个位移和增益不那么依赖的设计,但是当前(简单)的设计已经满足了很多困难的约束,所以这个额外的要求可能太繁琐了。
处理器(和DAC)板
鉴于CPU的主要任务是每几十毫秒一次重新计算向量对的字符串,因此似乎很合理的做法是,便宜的,但更简单的部分会可能就足够了。
显然,该职位的候选人是Atmel ATmega328P和ST micro STM32F103C8T6。前者的选择纯粹是基于复杂性和(当时)受欢迎程度。令人惊讶的是,在第二套板的构建过程中,人们注意到无意中购买了“ B”变体。以后再说。
整个CPU板非常简单,包括一个FT232RL USB桥,两个通道的8位电压DAC,操纵杆和按钮的接口,可选的I2C接口以及5V稳压器。可以将Arduino Nano与主板一起使用,但是选择当前解决方案是为了美观和布线简单。
6.png
CPU板,带AD7302 DAC
整个系统的要求之一是单轨运行。这限制了可用的DAC选择。有TLC7528 DAC管可供使用,乍一看似乎是电流DAC,但进一步的读数表明它们可以配置为电压模式。与TSH82运放一起使用时,这是一个糟糕的选择,在信号波谷处产生百分之几的失真。解决该问题的方法是将器件更换为AD7302,该器件具有一对电压输出以及2us的建立时间。
百分之几的失真会破坏您的一天,
电压模式下的TLC7528电流DAC
回顾过去,与TLC7528相关的失真可能与相关的TSH82运算放大器的有限共模输入范围相关。通过卸下运算放大器,并使用高阻抗探头直接在'示波器上绘制一个lissajous圆,应该很容易进行测试。
几个设计缺陷推动了这种看似简单的电路板的重新制造:DAC的选择,FT232RL的首次使用以及省略了将相关的TST引脚接地。同样,迷你USB连接器原理图和封装之间不匹配(通过制作定制的USB扩展电缆来解决)。
新的CPU,工具链和引导程序
正如我之前提到的那样,发现以前订购的ATmega328P实际上是后来的,并且是不太受欢迎的'B'变体,使我感到有些意外。这部分与其弟弟二进制兼容,除了芯片签名以外。较新的部分具有一些有用的额外功能,包括第二个USART。
Arduino提供了最新的工具链,莫名其妙地无法从Atmel网站获得。这些工具被拔出并捆绑到一个可移植的包装中,因此它们不再依赖于Arduino框架。然后更新了关联的项目Makefile,以引用新的CPU和工具。
鉴于CPU的兼容性,标准的Arduino引导加载程序已使用AVR Studio 4(这是一种相对较小的IDE)编程到了新部件中。选择它是因为它的界面非常简单。必须从旧版本创建新的芯片描述XML,主要区别在于新的部件号和相关的签名。
Make和关联的makefile用于固件开发。这种方法产生的工具链约为30MB,而不是与“现代”集成开发环境相关的数百兆字节。
真正的程序员不使用IDE
固件
系统设计为每秒可绘制约1万个向量对。对于50Hz的刷新率,这意味着最多可以显示200个矢量。每隔200个矢量(20毫秒)会发出信号通知前景以更新矢量列表,以便游戏可以以合理的流畅方式进行。
系统中的多个过程都需要向量旋转,并且使用0..359度范围内的十进制值是完全合理的,但是这将需要使用U16,这不必要地麻烦。经过一番思考,使用S8(+127至–128)处理尽可能多的数据似乎是合理的。这对于表示X / Y坐标(假设使用8位DAC)和表示角度(大约±180度)也是有效的。
屏幕更新是通过计时器中断进行管理的,并且是唯一可用于控制DAC的方法。从ping或pong缓冲区中读取向量,并重复这些向量,直到前台任务交换缓冲区为止。每个缓冲区均以U8计数器开头,指向下一个可用的写入位置,然后是下一个读取位置。然后,缓冲区包含以S8格式存储的X和Y值列表。
航天器的对象方向由操纵杆上的左/右控制。显示对象是人字形(星际迷航型徽标)中的四点人字形,并围绕其中心旋转。每个向量都需要正弦和cos查找,四个乘法和两个和,因此,每转大约需要32条计算,总共约200条指令。航天器将始终首先渲染,并且第一个向量对将始终是机头,因此输出缓冲区中的第一个向量对将始终是发射导弹的起点。
按下适当的按钮可以发射导弹。导弹从飞船的鼻子中出来,并继续在飞船的当前方位上飞行。它们在撞击小行星时终止,或者撞到了太空的半径。一次最多允许16枚导弹。该模型基于航天器机头与空间半径之间的线图,其中在发射时计算了增量X和增量Y。速度X / Y和速度是8.8个固定点。
航天器位于中心,下方有小行星
小行星物体从半径上的任意位置开始,然后沿半径80到140度之间的直线直线飞行。在创建时,将生成一个随机的起始位置,以及另一个随机的终止点。然后将半径上的这两个位置转换为笛卡尔坐标,并以与导弹相同的方式求解直线解。
当导弹与小行星碰撞时,两个实体都将被摧毁,并且当前的高分会增加。数字显示对象来自“ 7段”查找表。
使用“旋转”功能可以管理游戏的繁重任务。这用于将输入对象(小行星,航天器,7段值等)添加到输出缓冲区。它还允许旋转输入对象,以及应用X和Y偏移。例如,没有理由不能将一组外星飞船以2 x 2的形式添加到输入缓冲区中,然后作为一个组并在渲染之前旋转。
机械设计设计的
美学花费了很多精力,而且比预期的要有趣得多。CRT机壳的前角大大低于最初的预期,并且花费了许多时间来研究创建简单的激光切割滑锁的方法,以便可以连接顶部和底部组件。
基础设计的迭代,从最初到最终(从L到R)
几度有多少不同。我惊讶于美学如此巨大的变化,以及第一次尝试(以最陡峭的角度)看起来有多错误。最终解决方案在右边。
CRT组件;外壳,盖子和CRT
CRT由粘在上部机房的MDF支架固定。圆形支架的内部衬有顺应性的背胶泡沫。
模块锁定,铅笔形和虚拟CRT正面带有PCB轮廓
从模块锁定的照片中不太明显的是,用户界面面板(操纵杆,按钮)阻止了CRT模块的抽出,从而将其锁定到位。
机械设计包
Inkscape,带有“ Laser Cut Box”扩展名,用于设计最初的顶部和底部外壳。结合这两种设计的唯一真正美感是互锁城堡的频率。从inkscape获得的设计被简单地剪切并粘贴到Autosketch中,在此处进行其余编辑以形成两个外壳。
这些单元是使用70W激光切割机由MDF制造的。该单元可以实现极快的周转时间,从而可以很快地尝试其他设计思路。
结论
正如所希望的那样,由于(除嵌入式处理器之外)所有事情都超出了我的常规经验,因此从该项目中获得了很多东西。
显然,还有很多其他游戏,以及这种独立的,通用的,基于矢量的绘图机可能的应用程序。我真的必须解决将I2C时钟模块连接到CCU板上并添加模拟时钟选项的问题。显然还有许多其他游戏可能,但一次只能一步。
除了错误的mini-B USB占用空间令人尴尬的抬头,以及我首次尝试(以失败的方式)在电压模式下使用电流DAC之外,我不确定下次是否会做不同的事情。该项目在教育方面确实达到了其最初的所有目标,而且与往常一样,在此过程中还有些意外。