国产日韩精品欧美一区-国产日韩高清一区二区三区-国产日韩不卡免费精品视频-国产日产欧美精品一区二区三区-午夜国产精品免费观看-午夜国产精品理论片久久影院

設為主頁  加入收藏
 
·I2S數字功放IC/內置DSP音頻算法功放芯片  ·馬達驅動IC  ·2.1聲道單芯片D類功放IC  ·內置DC/DC升壓模塊的D類功放IC  ·鋰電充電管理IC/快充IC  ·無線遙控方案  ·直流無刷電機驅動芯片
當前位置:首頁->方案設計
呼吸燈原理(非PWM實現方式)
文章來源:永阜康科技 更新時間:2020/10/16 11:07:00
在線咨詢:
給我發消息
張順平 3003262363
給我發消息
張代明 3003290139
給我發消息
鄢先輝 2850985542
13713728695
 

1.呼吸燈原理分析:模擬人體呼吸,吸氣和呼氣各占1.5S,人眼的圖像滯留時間0.04s(1/24幀畫面),按最快0.04s算,就是40ms。亮0.02S,滅0.02s,人眼看到的應該是一直亮(可以實驗)。

2.呼吸燈程序設計:就是改變這40ms中,亮和滅所占的百分比(40ms相對不柔和,20ms效果柔和)。

亮的百分比多,人眼看到的就亮,反之就是暗(實驗,為了提高呼吸燈的柔和效果,采用設置20ms一個周期,20ms內調整亮和滅的比例)

因此程序設計:1.5S需要1500/20=75個周期,75個周期中,亮度百分比有0%增長到100%,因此每個周期增長時間為20ms/75=266us(點亮)。熄滅的原理,正好相反,熄滅時間增長。程序中需要兩個循環,一個用來點亮一個用來熄滅。3.STM32程序實現代碼 程序要靈活設計,能夠調整呼吸時間的長短,1.5s這個參數。可以調整柔和度,可以調整40ms這個周期參數,這樣就實現了呼吸燈的靈活調整。源代碼先不放出來了,等做完實驗放出。 ***********

//=======================================

void LedOnOff(uint32_t t,uint32_t xx) //T代表整個周期的時間,xx代表周期中點亮時間的長度

{

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); //GPIO_PIN_SET

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);

mydely_us(xx); //點亮時間

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);

mydely_us(t-xx); //熄滅時間

}

//*****************

*****************************************

int main(void)

{

int i;

int myLongTime=1500; //ms 呼吸總體時間

int myshortTime=40; //ms

int myCYC=myLongTime/myshortTime;

delay_init(); //初始化延時函數

LED_Init(); //初始化LED端口

while(1)

{

for(i=1; i<myCYC; i++)

LedOnOff(myshortTime*1000,i*myshortTime*1000.0/myCYC);

for(i=myCYC; i>1; i-=1)

LedOnOff(myshortTime*1000,i*myshortTime*1000.0/myCYC);

}

}

/*

4.原理分析,

模擬人體呼吸,吸氣和呼氣各占1.5S,人眼的圖像滯留時間0.04s(1/24幀畫面)

按最快0.04s算,就是40ms。亮0.02S,滅0.02s,人眼看到的應該是一直亮(可以實驗)

呼吸燈,就是改變這40ms中,亮和滅所占的百分比。

1500/40=38周期,40ms/37=1052us。38個周期變比中,每個周期增長1個單位1052us,38個周期剛好是40ms.這樣達到全亮

亮的百分比多,人眼看到的就亮,反之就是暗。

利用40ms這個時間,目測感覺有閃爍,減少這個時間,變化就會緩慢,沒有閃爍感。參考用20ms

//us延時函數的實現

void mydely_us(uint32_t count)

{

HAL_TIM_Base_Stop_IT(&htim1);

my_tim1_count=0;

HAL_TIM_Base_Start_IT(&htim1);

while(my_tim1_count<count);

HAL_TIM_Base_Stop_IT(&htim1);

}

void TIM1_UP_IRQHandler(void)

{

/* USER CODE BEGIN TIM1_UP_IRQn 0 */

extern uint32_t my_tim1_count;

my_tim1_count++;

__HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);

/* USER CODE END TIM1_UP_IRQn 0 */

//HAL_TIM_IRQHandler(&htim1);

/* USER CODE BEGIN TIM1_UP_IRQn 1 */

/* USER CODE END TIM1_UP_IRQn 1 */

}

5.說明

利用HAL庫,默認沒有辦法實現us的定時器,方法是。利用硬件定時器,產生一個1us的周期中斷,每進入一次中斷,一個全局變量加1,通過判斷這個變量的值,來確定當前的延時時間。6.問題:1.HAL庫的執行效率比較低,1us中斷的實際,還沒有處理完中斷過程,因此需要手動修改中斷函數,添加__HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);屏蔽: //HAL_TIM_IRQHandler(&htim1);這樣中斷處理時間會減少很多。2.全局變量的變化,如果總開著定時中斷,會影響正常程序的執行,因此,需要延時的時候,開啟定時器,延時結束,關閉定時器

void mydely_us(uint32_t count)

{

HAL_TIM_Base_Stop_IT(&htim1);

my_tim1_count=0;

HAL_TIM_Base_Start_IT(&htim1);

while(my_tim1_count<count);

HAL_TIM_Base_Stop_IT(&htim1);

 
 
 
    您可能對以下產品感興趣  
產品型號 功能介紹 兼容型號 封裝形式 工作電壓 備注
HTR3236 HTR3236是一款36路LED PWM驅動器,PWM頻率可固定為3kHz或22kHz。每一路最大輸出電流可通過外置電阻REXT調節,最大38mA,并 可獨立控制4檔可選。每一路可通過I2C單獨控制256級細膩亮度調節。 IS31FL3236/SN3218 QFN-44 2.5V-5.5V 36路LED PWM驅動器
HTR3218 HTR3218是一款18路LED PWM驅動器,PWM頻率可固定為3kHz或22kHz。每一路最大輸出電流可通過外置電阻REXT調節,最大38mA,并可獨立控制4檔可選。每一路可通過I2C單獨控制256級細膩亮度調節。 IS31FL3218/SN3218 QFN-24 2.5V-5.5V 18路LED PWM驅動器
 
 
    相關產品  
IU5052(通過調整PWM信號的占空比來實現對輸出電壓的控制、最高15V輸出內置MOS大電流升壓芯片)
A3992/HR3992(DMOS全橋PWM串行控制兩相步進電機驅動IC)
DRV8833/HR8833( 2A低電壓雙路刷式直流或單路雙極步進PWM繞組電流調節/限制電機驅動器IC)
APA2068(PWM脈寬調制/模擬音量控制/直流音量控制2.6W雙聲道AB類音頻功放IC)
 
 
·藍牙音箱的音頻功放/升壓/充電管
·單節鋰電內置升壓音頻功放IC選型
·HT7179 12V升24V內置
·5V USB輸入、三節鋰電升壓型
·網絡主播聲卡專用耳機放大IC-H
 
M12269 河北發電機組 HT366 ACM8629 HT338 

業務洽談:手機:13713728695(微信同號)   QQ:3003207580  EMAIL:panbo@szczkjgs.com   聯系人:潘波

地址:深圳市寶安西鄉航城大道航城創新創業園A5棟307/309

版權所有:深圳市永阜康科技有限公司  備案號:粵ICP備17113496號