国内外普通家庭较多是单火线布线(数据表明,美国有40%的家庭仍然使用的是无Netrual线的构造),在升级改造中,往往要求智能开关能直接取代旧有的机械开关,而无需重新布线,这就需要使用单火线开关。
传统的单火线机械开关示意图如下:
一根火线(L),一根零线(N),当灯泡接入火线和零线时,现成电流,灯泡点亮。图中可看到一根火线进,一根火线出,为此称为单火线开关。无线智能开关,控制信号是通过射频信号(芯片)来传输的,智能开关需要有电才能工作。需要把零线引入到开关盒中(零火线开关),这需要重新布线。或者采用单火线取电技术。
单火线智能开关应用示意图如下:
技术难点: 现在流行的LED节能灯一般功率很小,导通电流很低。由于智能开关和负载灯泡在电路上是串连的,智能开关(芯片和电路)消耗的电流也是流过负载灯泡的,当开关的耗电量达到灯泡电容充电需求的时候,会形成瞬间电流,在取电过程中,形成的回路,导致负载灯泡在关闭闪烁,或不能完全关闭,俗称“鬼火”。
需要软件和硬件上同时配合才能解决鬼火现像。
- 优化硬件的取电线路
- MCU间歇性的进入睡眠状态
- 在入网和扫网,OTA时降低发射功率
磁保持继电器
一种新型继电器,对电路起着自动接通和切断作用。磁保持继电器其触点开、合状态平时由永久磁铁所产生的磁力所保持。其开关状态的转换是靠一定宽度的脉冲电信号触发而完成的通常触点处于保持状态时,线圈不需要继续通电,仅靠永久磁铁的磁力就能维持继电器的状态不变。具有省电、性能稳定、体积小、承载能力大,比一般电磁继电器性能优越的特点,是设计单火线智能开关的理想选择。
无线芯片采用间歇式睡眠降低芯片功耗
无线协议在入网和重新恢复网络过程要有严格的时序和软件功率控制,不能影响单火线开关工作,保证无鬼火现象。
软硬件定时器
使用555定时器控制导通时间
芯片睡眠状态下,芯片会工作在低频晶振模式,普通的定时器一般是使用的高频晶振,Sleep模式工作会不正常。
Low energy timer可以设置定时器使用的晶体(crystal),是单火开关的理想配置
入网和重新扫网消耗电流较大,需要特别优化设置
下面展示一些 EFR32中LE Timer的用法
。
void EFR32LETimerInit(led_id_t led)
{
LETIMER_Init_TypeDef letimerInit = LETIMER_INIT_DEFAULT;
//need change accodring to the chip's crystal
CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_ULFRCO);
CMU_ClockPrescSet(cmuClock_LETIMER0, cmuClkDiv_1);
//CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_LFXO);
//CMU_ClockEnable(cmuClock_LETIMER0, true);
CMU_ClockEnable(cmuClock_HFLE, true);
CMU_ClockEnable(cmuClock_LETIMER0, true);
letimerInit.comp0Top = true;
letimerInit.ufoa0 = letimerUFOANone;
letimerInit.repMode = letimerRepeatFree;
LETIMER_RepeatSet(LETIMER0, 0, 1);
uint32_t topValue = CMU_ClockFreqGet(cmuClock_LETIMER0)/letimerDesired;
LETIMER_CompareSet(LETIMER0, 0, topValue);
LETIMER_Init(LETIMER0, &letimerInit);
LETIMER_IntEnable(LETIMER0, LETIMER_IEN_COMP0);
NVIC_ClearPendingIRQ(LETIMER0_IRQn);
NVIC_EnableIRQ(LETIMER0_IRQn);
}
void LETIMER0_IRQHandler(void)
{
LETIMER_IntClear(LETIMER0, LETIMER_IFC_COMP0);
LETimer_appRoutine();
}
EFR32软件复位的方法:
NVIC_SystemReset();
CSDN博客仅作为本人工作学习之余的笔记使用,无任何商业目的,如果侵犯了你的隐私或权益,请随时联系作者,本人将及时删除相关内容。