背景
现有一型号为HP C6602A的墨盒,需要研究其驱动方式,并使用合适的微控制器对其进行控制。
工作内容
一、 研究墨盒的驱动
墨盒的驱动原理和方法参考了现有开源项目InkShield的理论部分。由于HP C6602A是一款商业墨盒,HP公司并不提供技术细节,因此从驱动到物理连接等都需要自行研究。InkShield的作者在文献中寻找到了一种相类似的墨盒HP 51604的驱动方法。 墨盒喷头共有12个喷嘴,分别对应电路连接的12个触点。外加两个公共触点,该墨盒一共有14个触点对外连接。党需要某个喷嘴需要喷墨时,可以给这个喷嘴对应的触点加一个20V、6μs的正脉冲。不同喷嘴之间的脉冲不能同时发,脉冲之间需要相隔0.5μs以上;而同一只喷嘴的两个脉冲之间需要间隔800μs以上。如下图所示: ![时序](https://img-blog.csdnimg.cn/3e20a73d95f64a79b997a47fc9e77990.png)
InkShield的作者实测了HP C6602A的特性,发现只要脉冲的宽度在3μs至20μs之间、电压在17.5V-27V之间,墨盒都可以正常出墨。而且出墨量不随脉宽和电压波动而变化。这使得用单片机对墨盒进行驱动成为了可能。
二、 设计墨盒的机械安装与电气连接结构
然而墨盒的驱动原理和方法搞清楚只是第一步,摆在面前一个非常大的问题就是墨盒的机械安装与电气连接。如下图所示,墨盒的触点镶嵌在墨盒内部的电路板上,两个触点之间的距离约为1.5mm,而触点的大小仅有1mm见方。 ![C6602A喷头与触点](https://img-blog.csdnimg.cn/a3b2fe9afbf1406fb0621679a56fbde8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCk6YeMX-eMtA==,size_13,color_FFFFFF,t_70,g_se,x_16)
原始的InkShield项目在使用墨盒的同时需要一款墨盒的转接盒HP Q2374A。然而这款转接盒在国内是无法买到的,因此需要自行设计一款转接板。 ![Q2374A](https://img-blog.csdnimg.cn/c489c2d565b64d85a5f33c9d10d14db4.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCk6YeMX-eMtA==,size_20,color_FFFFFF,t_70,g_se,x_16) 此处考虑使用3D打印设计一款安装盒子,设计一款符合连接处尺寸的电路板,即连接板,并使用较细的测试弹簧探针Pogo Pin焊接在电路板上,对准触点进行压接,再通过软排线连接到驱动板上。 ![Pogo Pin 尺寸](https://img-blog.csdnimg.cn/372fa3a786494adb81833ea97d022b80.png) ![电路板](https://img-blog.csdnimg.cn/12755b094f97435db978a8d3c0dafa63.png) ![焊接完Pogo Pin的电路板实物](https://img-blog.csdnimg.cn/b8fc15b837d6412c8ffb39f9e03ceebe.png) ![3D打印壳子的设计](https://img-blog.csdnimg.cn/cb41a9d5adc340948424375731b2036a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCk6YeMX-eMtA==,size_10,color_FFFFFF,t_70,g_se,x_16)
三、 墨盒驱动设计
墨盒的脉冲要求20V,而单片机输出仅有3.3V和5V,因此需要外部元件进行电平转换。此处选用InkShield项目同款的达林顿阵列ULN2803(也可以选用步进电机常用的UNL2003,二者的区别在于前者8通道,后者7通道,而C6602A有12个通道,用谁都得两片才够)。硬件连接原理图如下图所示: ![在这里插入图片描述](https://img-blog.csdnimg.cn/80a26076e5164140a3ed919b62c52762.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCk6YeMX-eMtA==,size_13,color_FFFFFF,t_70,g_se,x_16)
该原理图分为三部分。其中左边是Arduino板;中间为自行设计的转接板,用于连接Arduino和达林顿阵列,并连接软排线所用的接口;右侧即为墨盒的连接板,用连接板连接电路板本体。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ff09d15618734fe5becb0596aa27c532.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCk6YeMX-eMtA==,size_11,color_FFFFFF,t_70,g_se,x_16)
墨盒的脉冲要求宽度在3μs至20μs之间,这就要求单片机可以产生足够短的脉冲驱动墨盒。经过测量,如果使用Arduino库中的digitalWrite函数,引脚输出一高一低,延时约为4μs(不支持PWM输出的引脚)-5μs(支持PWM始出的引脚),这完全符合墨盒的需求,甚至可以使用delayMicroseconds函数加上几微秒的延时。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/de58e13ae47d4481881819a229eed259.png)
达林顿管驱动墨盒的原理图如上图所示。当达林顿管的基极输入低电平时管子闭合,墨盒处于悬空状态,不喷出墨水;当管子基极输入高电平时,墨盒的一端接20V电源,另一端接地,满足电压关系,便触发点火喷墨。因此尽管需要引脚接地喷墨,在达林顿管侧依旧需要高电平脉冲,平时保持低电平。
注意:墨盒的触点不可长时间接地,否则会导致墨盒的点火装置永久损坏。别问我怎么知道的emmm。
四、 打印效果展示
在Arduino中写一个简单的测试程序,测试一波喷墨的效果。
int printer_pin[]={19,18,17,16,15,14,7,6,5,4,3,2};
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);
}
效果如下图所示: ![在这里插入图片描述](https://img-blog.csdnimg.cn/c997e3681c524ea29f1115dfa528f4e3.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/06a4a9a3517b4c759d7cf50e62db10e1.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCk6YeMX-eMtA==,size_20,color_FFFFFF,t_70,g_se,x_16)
经过测量,12点的字宽约3mm,平均每个点的宽度为0.25mm。如果推动墨盒的速度够均匀,手法更精准,理论上来说可以打印出较高质量的点阵图,配合多次喷墨可以实现一定程度的灰度图。之后可以设计步进电机滑轨系统与通信系统,实现图片的打印。
|