环境光监测器:使用三端双向可控硅调节灯亮度
出处:维库电子市场网 发布于:2024-08-16 17:01:22 | 372 次阅读

三端双向可控硅本质上是一种双向晶闸管。它的工作原理相同,但可以传导从 MT2 流向 MT1 或从 MT1 流向 MT2 的电流:

上述讨论说明了为什么三端双向可控硅开关元件是控制流过负载(在本例中为白炽灯)的交流电的便捷元件。由 GPIO 引脚直接驱动的短触发脉冲在交流波形的第一个半周期的某个时刻打开三端双向可控硅开关元件。三端双向可控硅开关元件继续导通,直到负载电流小于保持电流。然后,另一个触发脉冲(相对于零交叉的延迟与第一个脉冲相同)使三端双向可控硅开关元件在第二个半周期导通。(如果您难以想象这一点,请参阅本文后面的示波器轨迹。)零交叉和触发脉冲之间的延迟决定了三端双向可控硅开关元件导通的交流波形部分,这反过来又决定了传输到负载的平均功率。使用微控制器可以高精度地控制此延迟。顺便说一句,如果你想知道为什么这种开关行为不会导致不必要的闪烁,请记住,白炽灯泡之所以发光是因为灯丝很热,其温度变化不如电流变化快,因此,灯可以有效地“平滑”流过灯丝的电流中相对高频的变化。
本项目中使用的三端双向可控硅开关元件是 STMicroelectronics 的部件编号 Z00607。该器件适用于低功耗应用。它可以用低至 5 mA 的栅极电流触发,其锁存和保持电流分别为 10 mA 和 5 mA。
电路 以下是该项目灯控制部分的示意图:


固件
新固件必须执行另外两项任务:根据环境光测量计算从零交叉到触发脉冲的适当延迟,并输出延迟的触发脉冲。第一项任务通过以下代码完成:
代码
//convert the ADC conversion result to a current measurement
//the actual value of the resistor in the test circuit is 4.6 kOhms
ADCMeasurement = (RawADCResult*ADCFactor)/4.6;
if(ADCMeasurement >= OPTSENS_CURRENT_MAX)
TriacGateEnableorDisable = TRIAC_GATE_DISABLE;//lamp is off
else if(ADCMeasurement <= OPTSENS_CURRENT_MIN)
{
TriacGateEnableorDisable = TRIAC_GATE_ENABLE;
TriacGateDelay = TRIAC_GATE_DELAY_MIN;//maximum lamp brightness
}
else
{
TriacGateEnableorDisable = TRIAC_GATE_ENABLE;
//trigger pulse delay is based on the ratio of current illuminance to maximum illuminance
TriacGateDelay = TRIAC_GATE_DELAY_MAX * (float)ADCMeasurement/OPTSENS_CURRENT_MAX;
}
首先,我们需要选择最大和最小环境光水平:如果光学传感器指示照度大于或等于最大环境光水平,则三端双向可控硅触发脉冲被禁用,灯熄灭。如果照度小于或等于最小环境光水平,则认为房间是黑暗的,触发脉冲延迟设置为向灯提供最大功率。如果照度介于这两个值之间,则按比例调整延迟 - 换句话说,当前照度与最大照度之间的比率与所选延迟与最大延迟之间的比率相同。成功的实际应用需要仔细选择最大和最小环境光水平,以确保根据居住者的需求调暗灯,并且根据对特定照明布置如何响应调光算法的经验观察,微调测量照度和触发延迟之间的数学关系将是有益的。
请记住,即使环境光水平小于或等于最小值,触发脉冲延迟也不会设置为零。如果在交流波形越过 0 V 后立即产生脉冲,则在栅极触发电流流动时,负载电流可能不会超过三端双向可控硅的锁存电流。保持最小触发脉冲延迟可确保三端双向可控硅锁存行为正常。
为了完成第二项任务(生成延迟触发脉冲),我们将 Timer2 配置为大约 500 ns 的时钟周期并启用 Timer2 中断。
代码
//-----------------------------------------------------------------------------
// INT0_ISR
//-----------------------------------------------------------------------------
SI_INTERRUPT (INT0_ISR, INT0_IRQn)
{
//the interrupt flag is cleared by hardware
FallingEdgeCount++;
SFRPAGE = TIMER2_PAGE;
TMR2 = 0xFFFF - TriacGateDelay;//Timer2 will overflow at the end of the delay period
TMR2CN0_TR2 = TriacGateEnableorDisable;//start Timer2, if lamp illumination is needed
}
//-----------------------------------------------------------------------------
// INT1_ISR
//-----------------------------------------------------------------------------
SI_INTERRUPT (INT1_ISR, INT1_IRQn)
{
//the interrupt flag is cleared by hardware
RisingEdgeCount++;
SFRPAGE = TIMER2_PAGE;
TMR2 = 0xFFFF - TriacGateDelay;//Timer2 will overflow at the end of the delay period
TMR2CN0_TR2 = TriacGateEnableorDisable;//start Timer2, if lamp illumination is needed
}
//-----------------------------------------------------------------------------
// TIMER2_ISR
//-----------------------------------------------------------------------------
//
// TIMER2 ISR Content goes here. Remember to clear flag bits:
// TMR2CN0::TF2H (Timer # High Byte Overflow Flag)
// TMR2CN0::TF2L (Timer # Low Byte Overflow Flag)
//-----------------------------------------------------------------------------
SI_INTERRUPT (TIMER2_ISR, TIMER2_IRQn)
{
SFRPAGE = TIMER2_PAGE;
TMR2CN0_TF2H = 0;//clear the interrupt flag
TMR2CN0_TR2 = 0;//stop Timer2
//here we output the trigger pulse (width is approximately 50 us)
TRIAC_GATE = HIGH;
SFRPAGE = TIMER4_PAGE; TMR4L = 0; while(TMR4L < 100);
TRIAC_GATE = LOW;
}
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//fzqkw.cn,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。











