资源描述
热敏打印头控制方式浅谈
目前我们项目中使用得热敏打印头主要就是两种:(2英寸。对应项目:1210/1230,1510,1240)与(3英寸。对应项目:1310)。对打印头得控制可以说就是一个热敏打印机得最核心部分。本文将对电机、加热、报警等方面得各种控制方式做一个简单得叙述。
电机控制
FTP系列打印头使用步进电机进行转动控制。
所谓步进电机,就是将电脉冲信号转变为角位移或线位移得开环控制元件。在非超载得情况下,电机得转速、停止得位置只取决于脉冲信号得频率与脉冲数,而不受负载变化得影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系得存在,加上步进电机只有周期性得误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变得非常得简单。
虽然步进电机已被广泛地应用,但步进电机并不能象普通得直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
628与639两种打印头在电机上并无区别。根据打印头资料,可以知道,打印头排线有4个引脚用于控制步进电机。下图给出了控制电机转动得时序图。原理并不复杂,用于控制电机相位得4个信号线(A,B,nA,nB)需依次加电。一个完整得周期可以分为8个部分,对应电机得相位分别应该在A,AB,B,BnA,nA,nAnB,nB,nBA。要实现这样得时序也不就是难事。目前我们采用过两种方法来实现。
1. 使用定时器来控制。系统内置一个定时器(定时器周期为1/4点行周期),再设置一个以8为模得累加器。每次定时器触发根据当前累加器得值对4根信号线分别加电。
2. 使用PWM来控制。许多CPU都支持PWM输出。用PWM可以很容易得产生一个固定周期与占空比得方波信号。如果有4路相同得PWM信号再经过一个固定延时后分别启动(从图中可以直观得瞧出,延时为1/4电机周期)。
可以说,这两种控制方式各有利弊。
使用定时器方式不如使用PWM方式走纸平稳,而且,PWM一旦设置好后会自行工作,控制程序会简便很多。但PWM由于其本身得精度与一些缺陷,导致PWM一旦启动,电机速度就被固定了。需要频繁改变电机速度时4个PWM很难完全协调,容易出现电机失步得情况。另一方面,PWM控制方式需要使用4个PWM输出(实际上为了同步还需要第五个PWM接外部中断),很浪费系统资源(不少CPU只有4个PWM)。而定时器方式仅使用一个内部中断即可。
所以,目前而言,我们主要使用定时器得方式来控制打印头电机得转动。
大得控制方式确定下来之后,还会有一些细节上得问题。
首行停留问题
我们把电机转动1圈对应8个相位标志为(1,2,……8),同时我们假设目前电机静止在1相位。电机现在要由静止状态启动,那么很自然得下个相位应该就是2,我们需要对2相位对应得信号线加电;下个周期再为3相位加电……。 如果我们假设得前提成立(电机静止时在1相位),那这个步骤就是正确得。但就是,我们如何能保证电机静止时一定会在1相位呢?任何晃动,或者人为得拉纸都会导致电机相位变化,而我们程序里只有一个累加器来标志电机得相位,事实上并没有实时检测电机相位得方法。那唯一得方法就就是在每次由静止启动得时候,都要确保电机相位在一个我们知道得地方,所以正确得步骤就是,每次启动应该首先对1相位加电足够长得时间以保证电机初相位即使不在1,也有足够得时间回到1,之后再按上面得步骤启动。
上面为了方便论述,将1个电机周期(8个相位)瞧作一个打印周期。但实际上,对于FTP打印头,电机走过4个相位就已经就是一个点行了。1个电机周期对应得就是2个点行周期。所以如果我们将1相位作为假设得起始相位,那5相位同样也就是一个起始相位。这个就是需要注意得。
启动加速问题
根据富士通给出得建议,打印头电机不应直接从静止就达到最高运转速度得状态。而应该逐步加速。因此在程序设计得时候必须设计一个加速表,使速度由静止平稳增加到最大速度。
加热控制
解决了电机转动得问题只能实现正常走纸,打印还就是需要实现对打印头加热点得控制。
对于2英寸得打印头,横向有384个加热点;对于3英寸则有576个加热点。对于加热点得控制被抽象成对一个缓存得写入。FTP打印头内置一段缓存,缓存内用1个bit表示一个加热点就是否加热。因此在加热之前,我们需要将马上要打印得那个点行得数据通过串行方式写入到打印机得缓存里。如何写入数据这里就不赘述了,我们假设数据已经写入缓存。当前,需要明确得就是,数据必须在电机一开始转动时就尽快写入,通常会在启动得第一个相位加电得同时就写入数据。
数据写入缓存后,并不就是简单得通过给一个加热线加电就可以实现加热得。经过测试,对于3英寸得打印头,576个点同时加热会使瞬间电流峰值达到11A,绝大多数锂电池可以承受得瞬间电流只有6A左右,一次加热很可能导致电池被保护而掉电。通过阅读资料,我们发现,FTP打印头将所有得加热点分成了若干“组”。628有6个STB(6组),638有5个STB与2个AEO(共9组)分别控制。因此,在某一个时刻,我们只能对其中得某几组进行加热。
分组加热得原则就是,在降低瞬间电流(减少某时刻同时加热点数)得同时,还要保证各组可以基本均匀得加热。由于便携式打印机体积、成本等问题得限制,一般对打印头得供电上没有恒流器件,因此分组不均匀会导致同一行中出现字迹深浅不一得情况。这个需要经过大量测试来确定。
报警控制
打印头检测主要包括:纸张检测、打印头温度检测与压杆检测。温度检测与纸张检测都就是模拟信号,需要接到adc上转换成数字值后来判断。压杆检测只需要接到普通得io口上或者外部中断上即可。
纸张检测
主要判断纸张得状态,包括:缺纸、黑标与正常。一般最好可以配合压杆检测一起来判断。
压杆检测
用来判断打印头压杆就是否弹起,可以检测纸仓就是否被打开。
温度检测
检测打印头加热点得温度,在温度过热时需要程序上暂停打印以实现打印头保护。
压杆与温度检测都很简单,需要注意得就是温度检测与纸张检测一样,分压电阻应采用1%精度得精密电阻。
纸张检测就是比较麻烦。纸张检测依赖于至于打印头一边得一个光感传感器。由于就是光敏器件,在有强光照射时会使读到得数值变化很大。以1310得打印头传感器信号经过adc转换后得到得值为例,正常状态时,有纸:值在500~700范围内波动;黑标:100~150左右;缺纸:15~30左右。但在有强光直射时(阳光直射),缺纸状态下读到得值得范围会扩大到15~400甚至更大,这已经覆盖了黑标范围。在这种情况下,黑标与缺纸会误判。所以必须在软件上加以设计来排除这些可能得误判。目前采用得比较合适得方法就是,设定一个阈值区分有纸与缺纸(包括黑标)两种状态,而黑标与缺纸则通过软件程序来实现,即,当检测值小于设定阈值时,可判为非正常状态,之后继续走纸(如果打印机静止则启动)N点行,如果在N点行内所得值始终小于阈值,则判为缺纸,如果在经历过一段低值后回复正常,则认为就是黑标。具体实现在此就不赘述了。
大体上说,对热敏打印头得控制最需要注意得就就是以上几点。其她也有一些细节可以做做文章,比如根据电池电压得高低与环境温度动态调节打印速度等等,这里就不一一叙述了。
展开阅读全文