www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 電子電路開發(fā)學(xué)習(xí)
[導(dǎo)讀]ML-L3是用于尼康部分型號(hào)相機(jī)的無線紅外遙控器,可以通過紅外方式來控制快門的釋放,支持B門拍攝。官方售價(jià)100RMB左右,山寨版售價(jià)10RMB左右。雖然也能實(shí)現(xiàn)基本的遙控功能,但是功能還是比較單一,如不能實(shí)現(xiàn)定時(shí)拍攝,即用來拍攝制作延時(shí)視頻的素材。本篇文章介紹如何通過Ardui...

ML-L3是用于尼康部分型號(hào)相機(jī)的無線紅外遙控器,可以通過紅外方式來控制快門的釋放,支持B門拍攝。官方售價(jià)100RMB左右,山寨版售價(jià)10RMB左右。雖然也能實(shí)現(xiàn)基本的遙控功能,但是功能還是比較單一,如不能實(shí)現(xiàn)定時(shí)拍攝,即用來拍攝制作延時(shí)視頻的素材。本篇文章介紹如何通過Arduino、MCU或FPGA來控制紅外發(fā)射器,產(chǎn)生快門指令從而實(shí)現(xiàn)無線遙控快門的功能。

拆解ML-L3遙控器

為了實(shí)現(xiàn)ML-L3遙控器的功能,我們首先要了解無線遙控器的原理。當(dāng)然最好的方式就是拆解一個(gè)ML-L3,然后看看內(nèi)部的電路,然后測(cè)出紅外的編碼。但是手頭又沒有這樣的一個(gè)遙控器,有國(guó)外的網(wǎng)友已經(jīng)拆解了并且測(cè)出了紅外編碼的波形,如下圖。

官方遙控器PCB板:

山寨遙控器PCB板:

從PCB板來看,果然還是官方的用料更足一些,通過測(cè)量紅外發(fā)射引腳,在按下按鈕時(shí),紅外發(fā)射頭會(huì)發(fā)出一串脈沖信號(hào),如下圖所示:

其中黑色的部分是38KHz的PWM方波,空白部分是低電平,以上波形就表示一個(gè)快門指令。

紅外遙控協(xié)議主要有兩種:NEC協(xié)議和Philips RC-5協(xié)議,NEC采用PWM方式調(diào)制,RC-5采用PPM方式調(diào)制。其中使用最多的是NEC協(xié)議,38KHz載波,一般是由引導(dǎo)碼 地址碼 地址反碼 數(shù)據(jù) 數(shù)據(jù)反碼構(gòu)成。其中邏輯0和邏輯1的編碼如下:

基于Arduino的實(shí)現(xiàn)

好了,知道了快門指令的紅外波形,我們只需要寫個(gè)函數(shù)實(shí)現(xiàn)這一串脈沖信號(hào)就可以了。Arduino開發(fā)板,我手頭上有的是Circuit Playground Express這款開發(fā)板,板載一對(duì)紅外發(fā)射接收頭,和兩路按鍵,對(duì)于我們的功能已經(jīng)是足夠用了。在使用前需要先安裝Cortex-M0的庫。

程序非常簡(jiǎn)單,按下按鍵時(shí),發(fā)出一個(gè)快門指令:

  1. #include


  2. #define IR_Pin 25

  3. #defineLed_Pin13

  4. #defineButtonA_Pin4

  5. #defineButtonB_Pin5


  6. #define LED_ON digitalWrite(Led_Pin, LOW)

  7. #define LED_OFF digitalWrite(Led_Pin, HIGH)

  8. #define LED_SET(x) digitalWrite(Led_Pin, x)


  9. #define IR_ON digitalWrite(IR_Pin, HIGH)

  10. #define IR_OFF digitalWrite(IR_Pin, LOW)


  11. #define GET_BUTTONA() digitalRead(ButtonA_Pin)

  12. #define GET_BUTTONB() digitalRead(ButtonB_Pin)


  13. int sts = 0;


  14. void setup()

  15. {

  16. pinMode(IR_Pin, OUTPUT);

  17. pinMode(Led_Pin, OUTPUT);

  18. pinMode(ButtonA_Pin, INPUT_PULLDOWN);

  19. pinMode(ButtonB_Pin, INPUT_PULLDOWN);


  20. Serial.begin(9600);

  21. }


  22. //Nikon ML-L3 紅外遙控器快門編碼:38KHz=26us

  23. void loop()

  24. {

  25. if(GET_BUTTONA())

  26. {

  27. delay(10);

  28. if(GET_BUTTONA())

  29. {

  30. sts = !sts;

  31. LED_SET(sts);

  32. Serial.println("Right button pressed!");

  33. OneShot();

  34. }

  35. }

  36. while(GET_BUTTONA()); //等待松開

  37. }


  38. voidOneShot()

  39. {

  40. int i = 0;

  41. for(i = 76; i > 0; i--) //2100ms

  42. {

  43. IR_ON; //13.5

  44. delayMicroseconds(12);

  45. IR_OFF; //13.7

  46. delayMicroseconds(12);

  47. }

  48. IR_OFF;

  49. delay(28); //2803us

  50. for(i = 15; i > 0; i--) //393us

  51. {

  52. IR_ON;

  53. delayMicroseconds(12);

  54. IR_OFF;

  55. delayMicroseconds(12);

  56. }

  57. IR_OFF;

  58. delayMicroseconds(1580); //1611us


  59. for(i = 15; i > 0; i--)

  60. {

  61. IR_ON;

  62. delayMicroseconds(12);

  63. IR_OFF;

  64. delayMicroseconds(12);

  65. }

  66. delayMicroseconds(3580);

  67. for(i = 15; i > 0; i--)

  68. {

  69. IR_ON;

  70. delayMicroseconds(12);

  71. IR_OFF;

  72. delayMicroseconds(12);

  73. }

  74. IR_OFF;

  75. }

基于STM32的實(shí)現(xiàn)

在STM32F103上的實(shí)現(xiàn)也是非常簡(jiǎn)單,主要用到了GPIO控制和精確延時(shí)函數(shù)。紅外控制引腳和按鍵引腳可根據(jù)需要來調(diào)整。

  1. //根據(jù)Nikon ML-L3紅外遙控器編碼協(xié)議,產(chǎn)生快門指令

  2. voidOneShot(void)

  3. {

  4. int i = 0;

  5. for(i = 76; i > 0; i--) //2100ms

  6. {

  7. IR_ON; //13.5

  8. delay_us(12);

  9. IR_OFF; //13.7

  10. delay_us(12);

  11. }

  12. IR_OFF;

  13. delay_ms(28); //2803us

  14. for(i = 15; i > 0; i--) //393us

  15. {

  16. IR_ON;

  17. delay_us(12);

  18. IR_OFF;

  19. delay_us(12);

  20. }

  21. IR_OFF;

  22. delay_us(1580); //1611us


  23. for(i = 15; i > 0; i--)

  24. {

  25. IR_ON;

  26. delay_us(12);

  27. IR_OFF;

  28. delay_us(12);

  29. }

  30. delay_us(3580);

  31. for(i = 15; i > 0; i--)

  32. {

  33. IR_ON;

  34. delay_us(12);

  35. IR_OFF;

  36. delay_us(12);

  37. }

  38. IR_OFF;

  39. }

基于FPGA的實(shí)現(xiàn)

對(duì)于FPGA來說,這種波形的產(chǎn)生,時(shí)間可以控制的更精確,這取決于FPGA的時(shí)鐘,時(shí)鐘越高精度越高,而且可控性更強(qiáng)一些,就是實(shí)現(xiàn)起來稍微麻煩一些。

Verilog文件

  1. module ml_l3_pulse_gen(


  2. input clk_50M, //20ns

  3. input rst_n,

  4. input trig, //negedge trig


  5. output pulse

  6. );


  7. parameter T1_2000US = 100000;

  8. parameter T2_28000US = 1400000;

  9. parameter T3_400US = 20000;

  10. parameter T4_1580US = 79000;

  11. parameter T5_400US = T3_400US;

  12. parameter T6_3580US = 179000;

  13. parameter T7_400US = T3_400US;


  14. parameter T1_STS = 1;

  15. parameter T2_STS = 2;

  16. parameter T3_STS = 3;

  17. parameter T4_STS = 4;

  18. parameter T5_STS = 5;

  19. parameter T6_STS = 6;

  20. parameter T7_STS = 7;

  21. parameter T8_STS = 8;

  22. parameter T0_STS = 0;

  23. parameter TIME_38KHZ = 658;


  24. reg [7:0] cur_sts;

  25. reg [31:0] cnt_38khz;

  26. reg [31:0] cnt;

  27. reg [31:0] cnt_max;


  28. reg en;

  29. reg pwm_38k;

  30. reg trig_reg;


  31. assign pulse = (en) ? pwm_38k : 0;


  32. always @ (posedge clk_50M)

  33. begin

  34. trig_reg <= trig;

  35. end


  36. always @ (posedge clk_50M)

  37. begin

  38. if(!rst_n)

  39. cnt_max <= 0;

  40. else

  41. begin

  42. case(cur_sts)

  43. T0_STS : cnt_max <= 0;

  44. T1_STS : cnt_max <= T1_2000US;

  45. T2_STS : cnt_max <= T2_28000US;

  46. T3_STS : cnt_max <= T3_400US;

  47. T4_STS : cnt_max <= T4_1580US;

  48. T5_STS : cnt_max <= T5_400US;

  49. T6_STS : cnt_max <= T6_3580US;

  50. T7_STS : cnt_max <= T7_400US;

  51. default: cnt_max <= 0;

  52. endcase

  53. end

  54. end


  55. always @ (posedge clk_50M)

  56. begin

  57. if(!rst_n)

  58. en <= 0;

  59. else

  60. begin

  61. case(cur_sts)

  62. 1,3,5,7: en <= 1;

  63. 2,4,6,0: en <= 0;

  64. default: en <= 0;

  65. endcase

  66. end

  67. end


  68. always @ (posedge clk_50M)

  69. begin

  70. if(!rst_n)

  71. cnt <= 0;

  72. else

  73. begin

  74. if(cur_sts != T0_STS
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉