1.电路工作原理
用三端可调正压集成稳压器LM317构成的稳压电源电路如下图所示。图中220V的交流电经保险管送到变压器的初级线圈,并从次级线圈感应出经约9V的交流电压送到由四个二极管组成的桥式整流器。经过Cl滤波后的比较稳定的直流电送到三端稳压集成电路LM317的Vin端(3脚)。LM317由Vin端给它提供工作电压以后,它便可以保持其+Vout端(2脚)比其ADJ端(1脚)的电压高1.25V。因此,我们只需要用极小的电流来调整ADJ端的电压,便可在+Vout端得到比较大的电流输出,并且电压比ADJ端高出恒定的1.25V。还可以通过调整PR1来改变输出电压一反正LM317会保证接入ADJ端和+Vout端的那部分电阻上的电压为1.25V,所以可以想到:当PR1向上滑动时,输出电压将会升高。
图中D5的作用是当有意外情况使得LM317的3脚电压比2脚电压还低的时候防止从C3上电压过高损坏LM317。
2.元器件选择
IC选用LM317或与其功能相同的其它型号。变压器可以选择一般常见的9N12V的小型变压器,二极管选1N4001-1N4007均可。Cl选择耐压大于16V、容量470~2200μF的电解电容均可。C2选用普通的瓷片电容即可。C3的选择类似于Cl。电阻选用1/8W的小型电阻。
3.制作印制电路板
利用ProtELDXP2004SP2软件绘制原理图,从原理图生成印制电路板图,用热转印法制作印制电路板。使用单面敷铜板,尺寸为:100×50mm,参考图如下图所示(略)。
4.安装与调试
装配时要注意的是二极管、电解电容器的极性。
LM317因工作电流较小,可以不加散热片。装好后再检查一遍,无误后接通电源。这时用万用表测量Cl两端,应有11V左右的电压,再测C3两端,应有2—7V的电压。再调节PR1,C3两端的电压应该能够改变,调到你所需要的电压即可。输出端可以接一根十字插头线,以便与随身听等用电器相连。
5.扩展应用LM317的输出电压可以从1.25V连续调节到37V。其输出电压可以由下式算出:
输出电压=1.25×(1+ADJ端到地的电阻/ADJ端到+Vout端的电阻)。
如果需要其它的电压值,即可自选改变有关电阻的阻值来得到。值得注意的是,LM317T有一个小负载电流的问题,即只有负载电流超过某一值时,它才能起到稳压的作用。这个电流随器件的生产厂家不同在3~8mA不等,这个可以通过在负载端接一个合适的电阻来解决。
电路原理如图所示。
电路是由蓄电池、控制器、用电器及充电部分组成。其中:稳压二极管DWl、电阻R1、R2组成欠电压检测电路,三极管Q1、Q2及电阻R3和继电器组成欠电压自动断电控制、执行电路。K1、K2分别为手动“关”、“开”机按钮开关,PV+是太阳能电池板充电输入正极接线端。负载好用直流1 2V电子节能灯。
工作原理:
当需要用电时。按动按钮开关K2,此时继电器线圈得电吸合;同时继电器触点(1)和触点(3)闭合接通,蓄电池的正电压从触点(1)流过触点(3);电路得电工作。当蓄电池电压高于10.8V时稳压二极管D1被击穿导通,三极管Q1、Q2正偏导通,此时继电器维持自保导通状态,即使松开按钮K2,电路依然处于正常工作状态。当需要关闭电源时,用手按动关断按钮K1,此时Q1基极b接地,Q1、Q2同步截止,继电器断开,关机断电。当蓄电池的放电电压低于10.8V时。
应停止放电,以防过放电损坏蓄电池。这一功能由欠电压检测电路DW1、R1、R2和执行电路Q1、Q2、R3和继电器完成。当蓄电池电压低于10.8V时、DWl反向截止,从而导致Q1、Q1截止、继电器断电,达到了自动断电,保护蓄电池过放电的目的。
元件及选择:
电阻用1/8W,继电器用4123或T73等触点电流大于5A的小型电磁继电器,指示表选91L16、20V电压表头,蓄电池为12V7Ah以上容量免维护铅酸蓄电池,DW1稳压二极管要求稳压值在9.0—9.1V之间,否则过放电电压将不是设计值的10.8V。其它元件参数如图所示,无特殊要求。
印刷及装配图如下图,图中V+接蓄电池正极,0UT为输出正电压端。PV+接太阳能电池板(或充电器)正极,GND接蓄电池和PV电池板(或充电器)负极。
滤波程序全局库
软件版本:TIA15.1
功能:可实现对采集数据的滤波,根据现场不同情况,设置滤波参数,达到理想曲线。
移植性:功能块编写语言均为SCL,方便一直到其他***plc。
内容:此库内包含三中滤波程序,一阶滞后滤波法、中位值滤波法、堆栈平均滤波法。
滤波效果如下图:
①一阶滞后滤波法封装: ↓
代码:
IF #"a (0-1)" >= 1.0 THEN
#"a (0-1)" := 0.5;
END_IF;
#ms_time := INT_TO_TIME(#time_ms);
#IEC_Timer_0_Instance(IN := NOT #p,
PT := #ms_time,
Q => #p);
IF #p THEN
#new_value := (1 - #"a (0-1)") * #IN + #"a (0-1)" * #last_value;
#last_value := #new_value;
#OUT := #new_value;
②堆栈平均滤波法封装 ↓
#IEC_Timer_0_Instance(IN:=NOT #TIMER_INOUT,
PT:=#time_采集时间,
Q=>#TIMER_INOUT);
#S_数组[#"N_采集数量(3-999)"] := #In_输入值;
IF #TIMER_INOUT THEN
FOR #S_j := 1 TO #"N_采集数量(3-999)" DO
#S_数组[#S_j-1] := #S_数组[#S_j];
END_FOR;
#T_max := #S_数组[0];
#T_min := #S_数组[0];
FOR #S_j := 0 TO #"N_采集数量(3-999)"-1 DO
IF #S_数组[#S_j] > #T_max THEN
#T_max := #S_数组[#S_j];
END_IF;
IF #S_数组[#S_j] < #T_min THEN
#T_min := #S_数组[#S_j];
#T_sum := #T_sum + #S_数组[#S_j];
END_FOR;
IF #"MAX/MIN_EN" THEN
#Out_输出结果:=(#T_sum-#T_max- #T_min )/ (#"N_采集数量(3-999)"-2);
ELSE
#Out_输出结果 := #T_sum / #"N_采集数量(3-999)";
#Out_max := #T_max;
#Out_min := #T_min;
③中位值滤波法封装 ↓