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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/354037.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

android 调用支付宝充值,提示系统繁忙,4000

今天在做支付宝充值的时候&#xff0c;遇到一个问题&#xff0c;如下图&#xff1a; 找了老半天的错误&#xff0c;没有找到错误在哪里了&#xff0c;上网半天也没有找到与之相关的错误&#xff0c;最后还是请教了一个大神&#xff0c;才知道错误的原因&#xff0c;代码&#x…

支付宝充值话费

充值流程&#xff1a; 进入充值页面---->输入手机号---->输入/选择充值金额----->进入支付方式页----->选择支付方式------>密码输入 ------>push/短信消息&#xff0c;充值成功

【经验教程】支付宝怎么充值手机话费?

支付宝怎么充值手机话费&#xff1f; 1、打开手机支付宝&#xff0c;并选择支付宝充值中心&#xff1b; 2、打开支付宝充值中心后&#xff0c;默认读取支付宝绑定的手机号码或修改成指定的手机号码充值&#xff1b; 3、选择要充值的金额&#xff0c;并完成支付&#xff1b; 4、…

springboot接入支付宝支付

在springboot项目中接入支付宝支付 一、在官网申请开通二、编写代码 一、在官网申请开通 进入支付宝开放平台 支付宝扫码登录注册&#xff0c;填写相关信息。 因为我们是开发者&#xff0c;所以支付宝给我们提供一个完整的沙箱环境&#xff0c;只要登录开放平台就会给我们提供…

golang对接支付宝支付

本文采用沙箱环境 1. 开启沙箱 文档&#xff1a;https://docs.open.alipay.com/200/105311/ 沙箱地址&#xff1a;https://openhome.alipay.com/platform/appDaily.htm 2. 生成应用公钥和秘钥&#xff08;已弃用&#xff09; 本文中的签名方法默认为 RSA2&#xff0c;采用支…

Flutter支付宝支付

_。插件选型&#xff1a; 1.tobias 2.flutter_alipay 3.alipay_kit 4.sy_flutter_alipay 因为flutter项目的flutter sdk是2.53 有空安全&#xff0c;所以排除掉三年没更新的sy_flutter_alipay&#xff0c; flutter_alipay排除掉的原因是本项目的dart sdk版本太低不支持…

如何测试支付宝手机充值的这个功能,写出测试用例

有人在面试软件测试的时候&#xff0c;被问到如何测试支付宝手机充值的这个功能&#xff0c;写出测试用例。 其实无论测试什么&#xff0c;我们首先的需要梳理软件业务的流程&#xff0c;来看看支付宝充值都有哪些流程&#xff1f; 首先&#xff0c;面试官如果给出的是这样一…

p2p银行充值功能模块 支付宝调用

银行充值简介 用户要想要投标的话&#xff0c;那么需要往p2p平台上进行充值 使用支付宝沙箱 调用支付宝充值接口进行测试 用户余额页面展示用户的余额 点击充值调用跳转到银行充值页面 输入密码&#xff0c;密码正确调转到支付宝支付平台 登录账号密码进行充值 充值成功记录到…

抓包抖音充值接口,实现微信支付宝充值抖币收款通道

前段时间搞了个抖音充值的通道&#xff0c;现在搞个YY充值的。 接下来这段时间的安排就是把各个这种平台的充值接口全分析一遍做成接口。 相比抖音的充值抖币接口&#xff0c;yy充值y币的风控就小很多&#xff0c;可以忽略不计&#xff0c;所以开发上也顺利很多。 把调用的相…

SpringBoot源码分析:SpringBoot整合Tomcat(三)

一、概述 SpringBoot整合Tomcat整体启动流程如下图&#xff0c;接下来我们就按照改流程分析SpringBoot中内嵌Tomcat的启动流程。 二、启动流程 通过AbstractApplicationContext.refresh方法进入AbstractApplicationContext.onRefresh方法。 之后进入子类ServletWebServerAppl…

Django对接支付宝实现支付宝充值金币功能

很多网站里都有金币、积分之类的虚拟货币&#xff0c;获取这些往往需要充值。那么问题来了&#xff0c;如何在Django中对接支付宝实现支付宝充值金币的功能呢&#xff1f;网上很多资料都是电商的&#xff0c;那些都会带有订单系统之类比较复杂&#xff0c;而充值金币功能不需要…

抓包抖音充值页面实现微信支付宝充值抖币,可提供api

抖币充值系统重写升级: 1.支持配置扫码配置多个CK 2.支持生成 微信/支付宝 支付二维码 扫码充值 3.支持 微信/支付宝 APP 直接唤醒充值 体验如下: 需要的小伙伴可私信 留言&#xff01; 整个开发流程思路是以下几步&#xff1a; 1.抓包分析抖音的充值的整个流程&#xff0…

如何使用支付宝充值美区App store的礼品卡

如何使用支付宝充值礼品卡 可能很多人不知道&#xff0c;支付宝可以给美区App Store 充钱&#xff0c;无需信用卡直接购买美区 Apple ID、Google Play、Spotify、Hulu礼品卡&#xff0c;下面就给大家介绍怎么购买 1.城市切换为&#xff1a;旧金山&#xff08;国际-> 北美洲…

p2p金融项目+支付宝充值

目录 前言 下载服务端SDK 时序图&#xff1a; 按照支付宝时序图的过程去做&#xff1a; 第一步&#xff1a; 第二步--2&#xff1a;生成充值记录&#xff08;状态&#xff1a;充值中&#xff09; 第四步&#xff1a;调支付宝的支付接口 第七八步&#xff1a;&#xff0…

RecyclerView实现仿支付宝充值界面

参考博客&#xff1a;https://www.jianshu.com/p/b4bb52cdbeb7 非常感谢上面这位博主的博客给了我非常好的灵感&#xff01;&#xff01;&#xff01; 下面我就先贴一下效果图&#xff1a; 布局代码&#xff1a; <?xml version"1.0" encoding"utf-8"…

JAVA端实现支付宝充值

2019独角兽企业重金招聘Python工程师标准>>> 前言&#xff1a;用户充值到平台 GitHub地址&#xff1a;https://github.com/wubiaowp/SpringCloud2.0.git 一、申请开发者账号-APPID、商户私钥、支付宝公钥、配置回调地址&#xff08;配置沙箱环境-测试&#xff09; 二…

discuz网站没备案无执照接入支付宝充值功能

discuz个人网站没备案无执照接入支付宝充值功能 文章目录 事情是这样的一、支付宝当面付是什么&#xff1f;二、如何申请当面付接口1.登录 支付宝商家中心2.点击“产品中心”&#xff0c;支付产品中选择当面付3.点击“立即开通”4.按步骤填写 三、创建应用及生成公钥和私钥1.登…

android约束布局充值页面,Android学习之RecylerView实习仿支付宝充值界面

今天周末&#xff0c;闲来无事&#xff0c;做了一个仿支付宝充值界面&#xff0c;主要知识点用RecylerView的GridlayoutManager布局管理器&#xff0c;实现不同数据类型&#xff0c;填充不同布局&#xff0c;功能包括单击选中&#xff0c;双击取消&#xff0c;支持可输入金额等…

DISCUZ插件微信支付宝充值积分69.220517最新版【收集免费】

DISCUZ应用中心成熟的微信支付宝积分充值插件&#xff0c;拥有大批使用的站长用户&#xff0c;稳定运行于用于各类站点&#xff0c;反馈优秀&#xff0c;收益丰厚&#xff1b; 一直被模仿&#xff0c;从未被超越。 DZ的积分体系功能已经十分强大&#xff0c;可以做很多事&…

Django对接支付宝实现支付宝充值金币功能示例

很多网站里都有金币、积分之类的虚拟货币&#xff0c;获取这些往往需要充值。那么问题来了&#xff0c;如何在Django中对接支付宝实现支付宝充值金币的功能呢&#xff1f;网上很多资料都是电商的&#xff0c;那些都会带有订单系统之类比较复杂&#xff0c;而充值金币功能不需要…