IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> HP C6602A墨盒驱动 -> 正文阅读

[嵌入式]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。如果推动墨盒的速度够均匀,手法更精准,理论上来说可以打印出较高质量的点阵图,配合多次喷墨可以实现一定程度的灰度图。之后可以设计步进电机滑轨系统与通信系统,实现图片的打印。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:53:52  更:2021-09-08 10:54:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:33:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码