历史上的今天
返回首页

历史上的今天

今天是:2025年04月06日(星期日)

2018年04月06日 | PHILIPS 51LPC系列单片机的应用

2018-04-06 来源:eefocus

    1 简 述

    PHILIPS 51LPC系列单片机目前已包括P87LPC760/1/2/4/7/8/9共七个型号。51LPC提供高速和低速的晶振和RC振荡方式,可编程选择;具有较宽的操作电压范围2.7~6.0V,可编程I/O口线输出模式选择,可选择施密特触发输入,LED驱动输出;有内部看门狗定时器及提供掉电检测模拟功能,最大限度地减少了外部元件的使用。这些特性和改进的C51结构结合在一起,使得在设计高集成度、低成本和低功耗控制电路时具有更多的选择。该系列主要用于对系统成本有严格要求,且系统具有高抗干扰性能的低功耗应用领域,已广泛用于电子阳性能表、IC卡水表、电子称、消毒碗柜、LED显示屏、煤气表等工业控制领域。



    34

    本文介绍在市电情况下使用LPC系列微控制器P87LCP761与三象限双向晶闸管(Triac)控制感性负载交流电机的方法。使用一种全新的电流过零检测方法,不必在负载电流线路中加入旁路电阻,利用单相关波整提供控制电路的电源。LPC的高抗干扰性能使得只用极少外部零件即能完成此系统。此解决方案可通过P87LPC761系列单片机的片内RC振荡器和比较来实现,或者其它带有片内PWM、ADC和DAC等功能的LPC系列芯片。该系统可用于对电机(AC/DC)阀门、泵灯等的控制,广泛用于照明、HVAC、电源工具、仪表及工业控制等领域。表1是P87LPC761的引脚功能。

    表1 P87LPC761引脚功能

    55

    2 原理

    2.1 负载电压的过零控制——单输入检测

    方框图1和2为该应用的总体框图。电路直接通过市电进行供电,相位控制时序取决于市电电压过零检测(Voltage Zero Crossing)(见图1)或负载电流过零检测(Current ZeroCrossing)(见图2)。采用哪种检测方式取决于实际应用的情况。控制模块计算机发时刻,LPC可直接吸收多个Triac的门电流。为了降低EMI,保证安全操作并控制相位,有必要在电流过零或一个特定的相位角时触发Triac。对于阻性负载,电流和电压过零是一致的;对于感性负载,电流滞后于电压。负载的状态决定了Triac是根据电压过零还是电流过零进行可控硅的触发。

    检测电压过零最简单的方法就是测量市电电压极性的变化。LPC的+5V端连接到电源线(或中性点),而中性点(或电源线)通过限流电阻连接到任意一个I/O 口。I/O口的电压被内部钳位二极管钳制0V和+5V之间,如图3所示。微控制器可读入输入口的输入状态,并且当状态从1变为0或从0变为1时,检测到过电压的过零点。电平跳变点取决于I/O口的模式(TTL或施密特触发),过零点到检测点的延迟时间取决于电源电压的变化率(例如230V或110V系统),这些都必须纳入考虑范围。该电路的优点是简单和成本低,因为仅需要一个额外的电阻(要求高耐压值)并可使用LPC的任何一个I/O口。

    2.2 电流过零检测——电流过零窗口比较器

    电流过零(CZC)是Triac的换流点。在非线性负载时,由于电流过零点和电压过零(VZC)点不一致,CZC检测尤其重要;但是,监控CZC并不像监控 VZC那么容易,因为,通常检测方式需要在负载上串联一个电阻,这就分离了负载电路且浪费了电能。通常方法是通过放大和电平变换,然后和微控制器相连,这至少需要一个额外的运算放大器及其相关元件。LPC检测电流过零采用了一种全新的方法:监控Triac门极(VG)到阳极(T1)的电压。VG-T1给出了Triac即将换流的一个信号,因为VG-T1在CZC时过零,根据负载电流和Triac的特性,VG-T1可低至0.1V或大于1.2V。如图4所示电路,使用窗口比较器监控该电压即能完成CZC功能。图4窗口比较器用于门电压和电流过零检测器,VG-T1相对于线电压可正可负,取决于负载电流的方向。也就是说VG-T1相对于VCC+5V而言可正可负。因此在LPC可监控之前,必须通过R4和R5分压,以使其低于VCC并处于比较器的操作电压范围,R1、R2和R3将电压限制在过零点附近。


    3 完整的LPC+Triac+Motor(AC)电路实现

    在P87LPC761 和Triac的控制应用中,整个系统对电源消耗很低并具有高抗干扰性能,故可以通过阻容降压和单相半波整流由市电直接供电,而不需要昂贵且体积大的变压器,外部零件极少。此方案成本低。图5所示是一个感性负载的通用电路,同时适合阻性负载。Triac可使用BTA216 600E。像图4那样,通过查询P87LPC761的比较器来检测负载电流过零,并重新触发Triac。也可用中断驱动。启动电机时用电压过零测量并触发 Triac的门级脉冲,以减少电磁干扰,并可从主循环的开始进行控制和重定义在启负载之间软件等待整个半周期。本例在复位后通过用户按键开启负载,通过按键可进行相角控制以控制电机的不同转速。如图5所示,LED发光管闪烁的快慢能体现电机转速,LED闪烁越快电机转动越快,反之则越慢;电机停转,LED 熄灭。此电路稍经修改就可以用于其它许多类似的场合。

   /batchupload/articleimg/20120220/13297310507702.gif?imageView2/2/w/550

    5

    源程序清单:

    该软件在Keil C51 V6.02上编译通过,在目标板上运动正常。如果用其它编译器必须稍加修改。

    #include

    #define uchar unsigned char

    #define uint unsigned int

    uchar s,x,y=0;

    void timer0(void)interrupt 1 using 1 {/*T0中断服务程序*/

    x=x+1;

    if(x/10>s){

    if(y= =0){P1=P1&0xfb; /*LED点亮*/

    x=0;y=1;}

    else {P1=P1|0x04; /*LED熄灭*/

    y=0;x=0;}}

    TF0=0;TH0=-(28/256);

    TL0=-(28%256);

    }


    void speed(s){ /*电机转换控制子程序*/

    uchar pulsecount, pulseduration=0;

    uint i=0;

    uint j=0;

    if (((CMP1&0x02))&&!(CMP2&0x02)/*查询比较器*/


    {for (i=0;i

    {for(j=0;j<210;j++) ;} /*延时触发*/

    CMP1=CMP1&0xfc;

    CMP2=CMP2&0xfc;

    pulsecount=1;

    {P1=P1&0xfe;

    pulseduration=12; /*触发脉冲宽度*/

    while(pulseduration){pulseduration- -;}

    P1=P1|0x01;

    pulsecount- -;

    }

    }

    }

    void Initcomparatior(void){ //初始化P87LPC761//

    PT0AD=0x6f; /*禁止P0口的数字功能*/

    P0=0xff;

    P0M1=0x2a; /*P01,P03,P05设为高阻输入*/

    P0M2=0xd5; /*P00,P04,P06设为推挽方式*/

    P1=0xff;

    P1M1=0x82; /*P17用于VZC检测*/

    P1M2=0x05;

    CMP1=0x34;

    CMP2=0x34;

    }

    void main(void)

    {uchar pulsecount ,pulseduration=0x00;

    uint j;i=0;

    SP=0x5f;EA=0;

    TH0=-(28/256);

    TL0=-(28%256);

    TF0=0;EA=0;TR0=0;

    ET0=1;CMP1=CMP2=0;

    Initcomparator();

    CMP1=CMP1&0xfc;

    CMP2=CMP2&0xfc;s=0;

    while(P1_1) {;}

    while(!P1_1){;}

    while(P1&0x80){};

    while(!(P1&0x80)){};

    while(P1&0x80){}

    while(!(P1&0x80)){};

    while(P1&0x80){};

    P1=P1&0xfe; //启动电机

    while(1)

    {if(P1_1= =0) {

    x=0;

    while (!x){;}

    if(P1_1=0)

    {P1=0xff;s=s+1;} //停止电机

    if(s= =8){s=0;}

    while(!P1_1){;} //等待释放按键

    while(P1&0x80){};

    while(!(P1&0x80)){};

    while(P1&0x80)();

    whie(!(P1&0x80)){};

    while(P1&0x80){};

    P1=P1&0xfe;} //启动电机

    EA=1;TR0=1;

    speed(s); }

    } //结束


推荐阅读

史海拾趣

DBLECTRO公司的发展小趣事

2010年,迪贝电子面临了一次重大的市场挑战。随着国内外竞争对手的不断涌入,气体检测及分析仪器市场的竞争日益激烈。为了应对这一挑战,迪贝电子加大了技术创新的力度,积极引进国内外最新的技术和设备,不断提升产品的性能和品质。同时,公司还加强了与客户的沟通和合作,深入了解客户需求,提供个性化的解决方案。这些努力使得迪贝电子在激烈的市场竞争中保持了领先地位。

Circuit Technology Inc公司的发展小趣事

在追求经济效益的同时,CTI也高度重视环保和可持续发展。公司积极响应国家环保政策,引进环保设备和技术,减少生产过程中的污染排放。同时,CTI还致力于开发环保型电子产品,推动电子行业的绿色发展。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

这五个故事只是关于Circuit Technology Inc公司可能发展路径的虚构描述,并不代表该公司的真实历史。实际上,每个公司的发展都有其独特的经历和故事,需要具体的研究和了解才能得知。

富芯森美(FUXINSEMI)公司的发展小趣事

富芯森美成立于行业快速发展的初期,公司自创立之初便聚焦于功率半导体器件的研发与生产。公司创始人凭借对半导体技术的深刻理解和前瞻性的市场洞察,迅速组建了一支由行业专家组成的研发团队。通过不断的技术积累与创新,富芯森美逐步掌握了可控硅、MOSFETS、碳化硅肖特基等核心产品的关键技术,为公司的后续发展奠定了坚实的基础。

Custom Electronics Inc公司的发展小趣事

随着公司规模的扩大和产品质量的提升,CEI开始寻求更广阔的市场空间。通过与全球知名电子产品制造商建立合作关系,CEI的产品逐渐进入国际市场。同时,CEI还积极参与国际电子行业的交流与合作,不断引进先进的生产技术和管理经验,为公司的长远发展奠定了坚实基础。

DETCO公司的发展小趣事

ElectronicsCorp最初是一个在亚洲某城市的小型电子产品制造商。它以其高质量和合理的价格迅速获得了市场份额。公司创始人李先生坚持将研发作为核心驱动力,不断投入资金研发新技术。随着时间的推移,ElectronicsCorp的产品线不断扩大,包括智能手机、平板电脑和智能家居设备。凭借持续的创新和卓越的质量,ElectronicsCorp逐渐成长为全球电子行业的领导者。

Furukawa Electric Co Ltd公司的发展小趣事

当5G技术开始在全球范围内推广时,ElectronicsCorp看到了巨大的商机。公司迅速调整战略,将重点转向5G相关产品的研发。通过与全球领先的通信公司合作,ElectronicsCorp推出了一系列5G手机和通信设备。这些产品不仅性能卓越,而且价格合理,赢得了消费者的青睐。随着5G技术的普及,ElectronicsCorp的市场份额不断扩大。

问答坊 | AI 解惑

汽车电子基本知识问答(下)

52.什么是Kickdown? 自动波的设计是会按发动机的负荷和油门的深度来调节档位,当驾驶者深踏油门,表示发动机不够力或驾驶者想加速,这时候自动波便会自动转低一至两档,协助加速.驾驶者利用这特性,每当要加速时深踏油门令波箱转档,这动作称为Kickdown. ...…

查看全部问答>

整流电路与滤波电路

整流电路与滤波电路…

查看全部问答>

WIN CE加入多个输入法

在用PB内制内核的时候,加入中文,日文,英文输入法应该如何解决? 做的尝试已经不下三十遍 加入中文字体,中文SHUANG PING输入法, 加入日文字体,日文IME3.1输入法 无法实现.请各位帮助一下.…

查看全部问答>

什么是静电?(一)

    当一个物体带有一定量净的正电荷或净的负电荷时,可以称其带有静电。静电是一种相对的称谓,因为在许多情况下,静电经过一段时间后会慢慢减少。这段时间的长度与物体的电阻有关。实际应用中的两个极端的例子是塑料和金属。 &nb ...…

查看全部问答>

三个并联的电容的就是简单的容量相加吗?

本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 刚刚看了个电路,有个地方不太懂,在此教一下大家。 电路如图。 级间三个并联的电容(C2GL C4GL C6GL),和输出的3个电容(C1 C3 C5),三个并联的电容的就是简单的容量相加吗?还是说还有什么作用? ...…

查看全部问答>

【低功耗】SPI+方式FPGA配置和SPI+flash编程

相对于价格昂贵的Platform Flash,SPI Flash成本低廉,是一个非常好而且容易实现的配置方案。…

查看全部问答>

sim300问题

sim300能够接通电话。。但是听不到电话传来的声音。、、。从sim300说话。。电话那头可以听得到。。。求助。。。。。。。。。。。。。。。。…

查看全部问答>

通过JTAG下载程序到ARM9内

不知道这里有没有那位高手自己编程通过JTAG把程序下载到ARM9的内存里并让他运行起来我们现在遇到一个问题。我们自己做一个应用程序将一段代码下载到ARM的内部RAM里,然后让他运行起来。但是程序直接运行就是跑不起来。除非,我先打开AXD,什么都不 ...…

查看全部问答>

IAR限时版今天刚装就过期了,怎么解决?

IAR限时版今天刚装就过期了,怎么办?…

查看全部问答>

关于nRF24le1外部引脚唤醒程序,不是唤不醒,就是一直处于唤醒状态

# include \"reg24le1.h\" sbit LED = P0^3; /******************************************************************************* /函数名称:PinWakeup() /函数功能:从引脚唤醒nRF /输入参数:无 /返回参数:无 ************************ ...…

查看全部问答>