HP C6602A墨盒驱动

背景

现有一型号为HP C6602A的墨盒,需要研究其驱动方式,并使用合适的微控制器对其进行控制。

工作内容

一、 研究墨盒的驱动

墨盒的驱动原理和方法参考了现有开源项目InkShield的理论部分。由于HP C6602A是一款商业墨盒,HP公司并不提供技术细节,因此从驱动到物理连接等都需要自行研究。InkShield的作者在文献中寻找到了一种相类似的墨盒HP 51604的驱动方法。
墨盒喷头共有12个喷嘴,分别对应电路连接的12个触点。外加两个公共触点,该墨盒一共有14个触点对外连接。党需要某个喷嘴需要喷墨时,可以给这个喷嘴对应的触点加一个20V、6μs的正脉冲。不同喷嘴之间的脉冲不能同时发,脉冲之间需要相隔0.5μs以上;而同一只喷嘴的两个脉冲之间需要间隔800μs以上。如下图所示:
时序

InkShield的作者实测了HP C6602A的特性,发现只要脉冲的宽度在3μs至20μs之间、电压在17.5V-27V之间,墨盒都可以正常出墨。而且出墨量不随脉宽和电压波动而变化。这使得用单片机对墨盒进行驱动成为了可能。

二、 设计墨盒的机械安装与电气连接结构

然而墨盒的驱动原理和方法搞清楚只是第一步,摆在面前一个非常大的问题就是墨盒的机械安装与电气连接。如下图所示,墨盒的触点镶嵌在墨盒内部的电路板上,两个触点之间的距离约为1.5mm,而触点的大小仅有1mm见方。
C6602A喷头与触点

原始的InkShield项目在使用墨盒的同时需要一款墨盒的转接盒HP Q2374A。然而这款转接盒在国内是无法买到的,因此需要自行设计一款转接板。
Q2374A
此处考虑使用3D打印设计一款安装盒子,设计一款符合连接处尺寸的电路板,即连接板,并使用较细的测试弹簧探针Pogo Pin焊接在电路板上,对准触点进行压接,再通过软排线连接到驱动板上。
Pogo Pin 尺寸
电路板
焊接完Pogo Pin的电路板实物
3D打印壳子的设计

三、 墨盒驱动设计

墨盒的脉冲要求20V,而单片机输出仅有3.3V和5V,因此需要外部元件进行电平转换。此处选用InkShield项目同款的达林顿阵列ULN2803(也可以选用步进电机常用的UNL2003,二者的区别在于前者8通道,后者7通道,而C6602A有12个通道,用谁都得两片才够)。硬件连接原理图如下图所示:
在这里插入图片描述

该原理图分为三部分。其中左边是Arduino板;中间为自行设计的转接板,用于连接Arduino和达林顿阵列,并连接软排线所用的接口;右侧即为墨盒的连接板,用连接板连接电路板本体。
在这里插入图片描述

墨盒的脉冲要求宽度在3μs至20μs之间,这就要求单片机可以产生足够短的脉冲驱动墨盒。经过测量,如果使用Arduino库中的digitalWrite函数,引脚输出一高一低,延时约为4μs(不支持PWM输出的引脚)-5μs(支持PWM始出的引脚),这完全符合墨盒的需求,甚至可以使用delayMicroseconds函数加上几微秒的延时。
在这里插入图片描述

达林顿管驱动墨盒的原理图如上图所示。当达林顿管的基极输入低电平时管子闭合,墨盒处于悬空状态,不喷出墨水;当管子基极输入高电平时,墨盒的一端接20V电源,另一端接地,满足电压关系,便触发点火喷墨。因此尽管需要引脚接地喷墨,在达林顿管侧依旧需要高电平脉冲,平时保持低电平。

注意:墨盒的触点不可长时间接地,否则会导致墨盒的点火装置永久损坏。别问我怎么知道的emmm。

四、 打印效果展示

在Arduino中写一个简单的测试程序,测试一波喷墨的效果。

int printer_pin[]={19,18,17,16,15,14,7,6,5,4,3,2};
//分别对应引脚A5, A4, A3, A2, A1, A0, D7, D6, D5, D4, D3, D2
int pixel_array[]={
  4095,3599,3591,4019,4027,4019,3591,3599,4095,4095,
	//此处省略若干行输出的点阵数据
  4095,3983,3847,3699,3835,3803,3611,3611
};

void printer_print(int pixel)
{
  int i=0
  for(i=0;i<=11;i++)
  {
    if(((pixel>>i)&1)==0)digitalWrite(printer_pin[i],HIGH);
    delayMicroseconds(6);
    digitalWrite(printer_pin[i],LOW);
  }
  delay(50);
}

void setup() {
  int i=0;
  Serial.begin(115200);
  for(i=0;i<12;i++)Serial.println((pixel_array[2]>>i)&0x001);
  for(i=0;i<=11;i++)
  {
    pinMode(printer_pin[i],OUTPUT);
    digitalWrite(printer_pin[i],LOW);
  }
}

void loop() {
  int i=0;
  for(i=0;i<328;i++)
  {
    printer_print(pixel_array[i]);
  }
  delay(1000);
}

效果如下图所示:
在这里插入图片描述
在这里插入图片描述

经过测量,12点的字宽约3mm,平均每个点的宽度为0.25mm。如果推动墨盒的速度够均匀,手法更精准,理论上来说可以打印出较高质量的点阵图,配合多次喷墨可以实现一定程度的灰度图。之后可以设计步进电机滑轨系统与通信系统,实现图片的打印。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原始形式的Magic Desk盒式磁带可以容纳多达128Kb的代码,或者最多容纳16个8Kb的存储体。通过向$ DE00写入字节来完成存储区选择。如果位8置1,则EXROM被禁止,可用的RAM在$ 8000-$ 9FFF范围内。 该盒带通过提供128个8Kb的存储库扩展了这一想法,因此最大大小为1 Mb。 8位锁存器(74LS273)的输入连接到数据线。通过组合74LS02或非门的PHI2和I / O1,可以对I / O1信号进行正确的解码。唯一不同于原始Magic Desk规范的功能是,当您通过向$ DE00写入$ 80或更大的值来禁用盒带时,银行机制将被锁定,并且不再有对$ DE00的写尝试将更改寄存器的状态。直到执行硬件重置。之所以必须这样做,是因为某些程序会无意中写入$ DE00(或I / O1范围内的任何其他位置),有时,如果程序错误地设置了$ 01,则可能导致崩溃。由于使用这种特定的支架主要是为了使通过Magic Desk Cartridge Generator进行onefile程序编译 ,我们已决定采用这种方式。如果您想要(或需要)与原始Magic Desk盒式磁带硬件完全兼容,我们留下了跳线以禁用此行为。切掉墨盒PCB底部的LOCK跳线(“ YES”位置)上露出的轨道,并将其连接到“ NO”位置。这样可以禁用锁定机制,但是仍然可以通过将锁存器的位7设置为高来从内存映射中删除盒带。 PCB旨在适应各种类型的EPROM及其FLASH变体。您可以使用的最小的EPROM是27C512(64Kb),最大的是27C040(512 Kb)。可以选择将板扩展到完整的1Mb PCB的设计使其可以用于各种类型的墨盒盒中。它的主要设计目的是适合TFW8B的“ Stumpy”墨盒,但也适合原始的Commodore机壳以及波兰公司KRADEX / MASZCZYK的机壳,该机壳已在欧洲的一些零售商处出售。它也适合Thingiverse提供的模型中的3D打印外壳。不幸的是,我没有市场上所有的墨盒盒,因此该设计没有经过测试以适合:“个人计算机”和“ Shareware Plus”(以及所有其他当前可用但此处未提及)的盒子。 请注意-KRADEX / MASZCZYK的墨盒盒是“薄型”的,对于这种类型的盒,您不能将插座用于EPROM!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值