PIC16C71单片机投币电路分析
扫描二维码
随时随地手机看文章
传统的投币电话,都是以几对红外发射、接收对管作传感器,利用硬币遮光原理粗测币的直径。这种方法精度低,更无法识别相同直径但不同材质的伪币。
新一代投币电话,如英国的蓝宝石系列,能对硬币的材质、厚度、直径作精确的检测,所以精确性与可靠性都大大提高。这类新型投币电话中,需要一种微功耗、宽工作电压范围、能适应电话线路供电的高性能单片机作为智能化检测、控制的核心。美国MICROChip公司的PIC16C71单片机能满足这方面要求,且价格低廉。
其核心PIC16C71是一种低成本、高性能,以CMOS工艺制造,带全静态片内RAM、2 KB片内ROM、4路8位片内A/D转换器的高性能单片机。在采用20 MHz时钟时,每个指令周期仅0.2μS。字长14位的精简指令集(RISC)共有35条高效指令,大多为单周期指令,执行比一般单片机快4倍以上。3~6 V的宽工作电压范围以及微功耗设计(3V、32 kHz时,工作电流仅15 μA,休眠维持电流小于lμA),使它特别适合于由电话线路供电的工作环境,不需要另配电源。此外,该机还具有防非法拷贝的程序保密位、防止受干扰后产生程序“脱轨”的“看门狗”(WDT)以及带负载能力很强的I/O接口,能直接驱动20~25 mA的负载,大大简化了系统结构,提高了可靠性。
AT24C01是一种新型、高性能的串行电可擦写只读存储器(E2 PROM),价格低廉。在本系统中,它用于存储投币电话所适用的币种、币值以及对应的材质、厚度、直径3个传感信号参数值,停电后信息能保存100年,擦写次数可达10万次,静态电流30 μA,容量为128字节,工作电压2.6~6 V。由于采用串行工作方式,数据传送只需两根I/O线,这对I/O线资源有限的单片机特别适合;另一个优势是能“在线”修改币种、币值以及3个传感器参数值,以适应不同的地区、国家及不同的钱币。虽然PIC16C71不具备I2C BUS,但和软件很容易模拟I2C BUS的读/写时序,以完成数据的串行传送。
二、电源
本系统的电源部分如图3—5所示。取自电话线上的电源经桥式整流、滤波后,由一个三端稳压器稳压成6.4 V,对5个5#可充电电池(每个1.2 V)进行浮充,并作为系统电源。平常系统由电话线路供电即可正常工作,当执行收币及剔除伪币的动作时,高灵敏电磁铁所需的较大电流(约15 mA)由可充电电池供应。另外该6.4 V电压再经一个精密基准电压源TL431稳压到5.12 V,作为A/D转换的参数电源vREF。PIC16C71的RA口引脚结构方式控制位设定为PCFGl-0,PCFGO -1。
取方式01,此时RAO、RA1、RA2引脚作模拟信号输入,RA3作为基准参数电压VREF的输入引脚。
四、硬币检测
对币厚度与直径的检测,现有的多种传感器都可供选择。主要应考虑以下几点:要体积小,价格低,能进行非接触式检测。我们采用电容与涡流传感器,对于币的合金含量,可通过检测其比重、电阻率、导磁率来间接测量。
以上三个传感器(材质、厚度、直径)来的信号经放大、鉴相、精密检波、滤波、温度补偿等处理后,形成0~5,12 V的直流电压信号,送入PIC16C71单片机的RAO、RA1、RA2三个引脚,以进行快速A/D转换。
当上电复位时,程序从OOOOH地址开始,执行一条跳转指令,转至O010H开始的主程序。先执行初始化,然后由SLEEP指令进入“睡眠”微功耗状态,以减少耗电。当硬币从投币口投入时,由于遮断高灵敏微型红外发射、接收对管之间的光通道,产生一个中断申请脉冲信号。其上升沿触发了单片机的RBO (INT)端,把单片机PIC16C71从“睡眠”中唤醒,进入地址为0004H的中断服务程序入口。再经该处的一条跳转指令,转到检测处理材质、厚度、直径三个传感器信号的程序模块中。材质、厚度、直径三个传感器在硬币滑道上是间隔顺序排列的。为了简化机械结构并提高检测的速度,可采用对滚动的硬币进行动态检测的方法。经实验测定,材质、厚度、直径三个传感器的信号电压,在硬币通过该传感器的滚动过程中与时间的关系都具有如下图所示的曲线形状。
当信号电压上升至某一门限电压Vo时,说明硬币已进入该传感器检测范围。这时把每次采集的数据与前次比较,取其大者按顺序存入片内RAM单元。当检测到信号,电压下降至某一门限电压V2时,说明硬币已滚离该传感器。这时程序转入对下一个传感器信号的检测。当三个传感器信号都检测完毕后,程序关闭A/D,转人数字滤波,以消除干扰毛刺脉冲的影响,得到该传感器信号的最大值Vl。接着进行温度补偿,以Vl值减去该传感器空载值V空,以消除温度影响。三个传感器信号都处理完毕后,程序进入识,别模块,快速扫描存于串行EPROM AT24C01中的各种币参数(包括材质、厚度、直径)。若所测的3个参数与预存的各种币的3个参数不符(超过其上、下限),则认为是伪币,PIC16C71的RB6引脚输出一信号,驱动高灵敏、低功耗快速电磁铁动作,把伪币推出滚道。
识别确认后的硬币,其币种与币值代码经奇偶处理后,由RB1引脚以串行方式传到费率管理上位机(例如80C31等)中,通信约定取异步方式,其数据结构如下图所示。对应每个硬币发一组数据,每组由3个数据字组成,其格式见下表。
币种币值代码表
每组数据发送完毕后,程序把RB1由输出方式转成输入方式,查询等待费率管理上位机的应答信号。上位机在接收到一组数据,经奇偶校验无误后,将在1ms之内把数据线拉低作应答信号。PIC16C71在收到应答信号后,即进入SLEEP“睡眠”状态,等待下次投币唤醒。如在1ms内没收到上位机应答信号,则PIC16C71将再重复送一组数据。如连续3次发送后均收不到应答信号,则程序转入故障报警。
当投入硬币达到规定值后,费率管理上位机经RB2发出一个信号,唤醒PIC16C71执行收币动作,然后PIC16C71又进入“睡眠”状态。
按照上述原理。下图给出主程序框图及动态检测程序框图。限于篇幅,程序清单略去。
本系统由于充分利用了高性能的PIC16C71单片机所提供的高速指令、快速AlD转换、微低功耗、宽工作电压、强带负载能力、抗干扰看门狗等性能与资源,使系统结构十分简洁,可靠性强,成本低,在实际应用中获得较满意的效果。