亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Matlab產(chǎn)品族的溫濕度采集系統(tǒng)設(shè)計*

        2016-11-10 06:54:41裘君陳婉君楊蘊菡
        關(guān)鍵詞:溫濕度串口嵌入式

        裘君,陳婉君,2,楊蘊菡

        基于Matlab產(chǎn)品族的溫濕度采集系統(tǒng)設(shè)計*

        裘君1,陳婉君1,2,楊蘊菡1

        (1.浙江大學(xué)寧波理工學(xué)院信息科學(xué)與工程學(xué)院,寧波315100;2.太原科技大學(xué))

        Matlab產(chǎn)品族中的Matlab Coder、Simulink Coder和Embedded Coder是針對C/C++代碼轉(zhuǎn)換而推出的,目的是加快軟件開發(fā)并提高其執(zhí)行效率。飛思卡爾FRDM-KL25Z則是一款非常高效節(jié)能的控制器??紤]到環(huán)境溫濕度采集系統(tǒng)對效率和功耗的要求,這里將以FRDM-KL25Z為主控器,以溫濕度傳感器DHT11為檢測模塊,并利用Embedded Coder和Matlab Coder設(shè)計溫濕度采集功能模塊,用Simulink搭建控制程序,最終設(shè)計了一種高效節(jié)能的溫濕度采集系統(tǒng),實現(xiàn)實時采集環(huán)境溫濕度值并上傳的功能。

        溫濕度采集系統(tǒng);Matlab Coder;Embedded Coder;Simulink Coder;FRDM-KL25Z

        引 言

        目前,嵌入式系統(tǒng)的應(yīng)用逐漸地滲透到各行各業(yè)的電子產(chǎn)品中,因此市場對電子產(chǎn)品軟件開發(fā)的需求呈現(xiàn)快速增長的趨勢,對軟件的開發(fā)手段則提出了更高的要求[1]。Matlab產(chǎn)品族中的Matlab Coder[2]和Simulink Coder[3-4]可以將Matlab函數(shù)和Simulink模型框圖轉(zhuǎn)換成高效優(yōu)化的C程序代碼。借助Matlab Coder,在針對某個嵌入式系統(tǒng)進行C/C++程序設(shè)計時,可以利用Matlab中強大的函數(shù)庫來簡化程序,最終又能生成獨立運行于嵌入式系統(tǒng)中的C/C++代碼[5],這樣極大地縮短了軟件的開發(fā)周期并提高了程序執(zhí)行的效率。

        Matlab Coder同時又可以將Matlab函數(shù)、C/C++編寫的特定功能算法集成封裝到特定的Simulink模塊中,而Simulink Coder則可以將這些模塊再生成C/C++代碼來實現(xiàn)嵌入式系統(tǒng)等的控制[1]。而Matlab中Embedded Coder可為受支持的嵌入式處理器生成代碼,它一般是針對某一特定嵌入式處理器的支持包,其對一些通用的外設(shè)驅(qū)動(如輸入輸出、串口操作等)、特定處理器的內(nèi)核、時鐘、引腳等都做了定義。

        飛思卡爾(現(xiàn)已被NXP收購)Kinetis L系列是非常高效節(jié)能的MCU,它全新的設(shè)計理念使早先在8/16位MCU中無法完成的設(shè)計應(yīng)用成為可能[6],它集成了最新的ARM Cortex-M0+內(nèi)核、具有多個Flash存儲器、豐富的模擬外設(shè)和HMI外設(shè)選項。Kinetis L系列向下兼容飛思卡爾8位單片機,向上兼容飛思卡爾32位單片機[7],且具有低廉的價格和強大的開發(fā)支持包。

        本文旨在設(shè)計一種高效節(jié)能的溫濕度采集系統(tǒng),首先利用Embedded Coder和Matlab Coder設(shè)計了溫濕度采集程序,并將所有程序封裝到DHT11的Simulink模塊中;然后,在Simulink中搭建了系統(tǒng)的控制程序;最后,借助Simulink Coder自動將在Simulink中搭建的控制程序生成C代碼并下載到FRDM-KL25Z開發(fā)套件上執(zhí)行,進而實現(xiàn)溫濕度采集并上傳的功能。

        1 基于FRDM-KL25Z的Embedded Coder支持包

        本文安裝的是針對飛思卡爾FRDM-KL25Z處理器的Embedded Coder支持包。該支持包中用C++語言定義了一些通用的外設(shè)驅(qū)動類,如模擬量輸入類、模擬量輸出類、數(shù)字量輸入/輸出類、中斷類、串口類、定時器等。例如數(shù)字量輸入/輸出類DigitalInOut,其對應(yīng)的部分函數(shù)聲明如下所示,具體都是由Embedded Coder來實現(xiàn)。

        class DigitalInOut{

        public:

        DigitalInOut(Pin Name pin);

        //創(chuàng)建DigitalIn Out對象并連接到一個具體的引腳

        void write(int value); //向?qū)?yīng)引腳寫值,0或1

        int read();//從對應(yīng)引腳讀取值,0或1

        void output();//設(shè)置引腳為輸出屬性

        void input();//設(shè)置引腳為輸入屬性

        如果在程序設(shè)計時用到這些類,首先要實例化,然后就可以直接調(diào)用類中定義的函數(shù)了,如下面的程序所示:

        DigitalIn Outio;//數(shù)字量輸入輸出類的實例化

        io.output();//設(shè)置引腳為輸出屬性

        io=1;//引腳輸出高電平

        這些通用的類是針對大多數(shù)MCU都適用的,本文中用到的是基于Cortex- KL25Z控制器,故Embedded Coder支持包也給出了與該MCU對應(yīng)的一些定義和庫函數(shù)等,部分如圖1所示。M0+內(nèi)核的FRDM

        圖1 Embedded Coder支持包對FRDM KL25Z的定義文件

        Embedded Coder支持包在Matlab環(huán)境中安裝好后,在Simulink中會有一些自帶的針對FRDMKL25Z的功能模塊,如圖2所示。這些模塊都對應(yīng)著KL25Z上的相應(yīng)部分,如RGB LED模塊對應(yīng)KL25Z上的RGB燈,其三個輸入端對應(yīng)KL25Z上的三個引腳,給三個輸入端賦值就是給KL25Z上的對應(yīng)的三個引腳賦值;Analog Input模塊對應(yīng)著KL25Z上的某個模擬輸入引腳,模塊的輸出為KL25Z上對應(yīng)模擬輸入引腳的輸入值,這需要外設(shè)給實際的輸入引腳賦值。同理AnalogOutput、DigitalInput、Digital Output、Serial Receive、Serial Transmit等模塊都是對應(yīng)著KL25Z上的一些輸入或輸出引腳。

        圖2 Embedded Coder支持包為KL25Z創(chuàng)建的Simulink模塊

        圖3 模塊設(shè)計流程圖

        2 利用Embedded Coder和Matlab Coder設(shè)計DHT11的Simulink模塊

        具體的設(shè)計流程如圖3所示。

        圖3中,第一列.h和.cpp文件是DHT11的驅(qū)動程序,用C++設(shè)計的。因為C++中有“類”這個類型,其中的public成員可以被外部調(diào)用,這里用于被Matlab函數(shù)調(diào)用。第二列為C包裹文件,由于Matlab函數(shù)不能直接調(diào)用C++程序,而驅(qū)動是用C++寫的,所以要創(chuàng)建包含兼容性函數(shù)的C包裹文件,這樣Matlab函數(shù)就可以通過C程序間接地調(diào)用C++編寫的源碼了。第三列是Matlab程序文件,該文件用于定義所要設(shè)計的Simulink模塊,主要包括屬性定義和方法定義。屬性部分用于定義一些變量,類似于C中的全局變量。方法部分則是定義模塊的具體功能和輸入/輸出端等。第四列即為最終需要的Simulink模塊,該模塊包含了前三列的所有C/C++和Matlab程序。

        2.1模塊驅(qū)動程序的設(shè)計

        DHT11模塊的功能是根據(jù)采樣時間從數(shù)據(jù)引腳讀取當(dāng)前環(huán)境的溫濕度值。其底層的驅(qū)動程序是基于Embedded Coder通過C++來實現(xiàn)的,命名為DHT11.h和DHT11.cpp。其中,DHT11.h文件中部分程序如下所示:

        首先定義了一個類DHT11,其構(gòu)造函數(shù)的參數(shù)是引腳類型的變量,對應(yīng)著溫濕度傳感器的數(shù)據(jù)傳輸引腳;readData()函數(shù)返回的是數(shù)據(jù)采集的狀態(tài),返回“0”就表示數(shù)據(jù)已正確讀?。籸ead Humidity()、read Temperature()函數(shù)分別獲得環(huán)境的相對濕度值和溫度值。Private類型的變量io為DigitalInOut類的實例對象,用來確定溫濕度傳感器DHT11的數(shù)據(jù)傳輸引腳為數(shù)字量輸入/輸出類型。

        而DHT11.cpp中的程序則是借助于Embedded Coder對各函數(shù)的具體實現(xiàn),如構(gòu)造函數(shù),也即模塊初始化函數(shù)DHT11(Pin Namepin)的實現(xiàn)程序如下所示:

        DHT11::DHT11(Pin Name pin):io(pin){}

        這里只需要給I/O對象所需的引腳參數(shù),即可將某一實際的引腳初始化為數(shù)字量輸入/輸出功能。具體則是通過自動調(diào)用DigitalInOut類中的函數(shù)來實現(xiàn),可見借助于Embedded Coder能大大地減少代碼量。

        由于Matlab不能直接調(diào)用C++程序,所以要創(chuàng)建包含兼容性函數(shù)的C包裹文件,命名為:THSensor_wrapper.h和THSensor_wrapper.cpp。其中THSensor_wrapper.h是對各函數(shù)的聲明,而THSensor_wrapper.cpp則為各函數(shù)通過調(diào)用驅(qū)動程序DHT11類中的public類型的函數(shù)來實現(xiàn)相應(yīng)的功能。THSensor_wrapper.cpp中具體程序如下所示:

        2.2模塊Matlab程序的設(shè)計

        這里主要是借助于Matlab Coder,Matlab函數(shù)通過C包裹文件調(diào)用DHT11模塊的底層驅(qū)動程序,最后又能自動地全部轉(zhuǎn)換為C代碼下載到硬件電路上,進而實現(xiàn)溫濕度采集的功能。主要程序如下:

        程序中用到了一些Matlab函數(shù),其中stepImpl函數(shù)對模塊進行初始化,這里主要是初始化溫濕度傳感器的數(shù)據(jù)傳輸引腳;stepImpl函數(shù)的內(nèi)容是每個時間步(這里是傳感器的采樣時間)所要執(zhí)行的任務(wù),即采集當(dāng)前環(huán)境的溫濕度值;getDescriptiveName函數(shù)是給要創(chuàng)建的Simulink模塊命名;releaseImpl函數(shù)用來釋放所占用的內(nèi)存;coder.cinclude函數(shù)用來調(diào)用所需的頭文件;coder.ceval函數(shù)則是用來評估和執(zhí)行對應(yīng)的功能函數(shù)??梢娊柚贛atlab中強大的函數(shù)庫,可以簡化程序設(shè)計,提高程序的執(zhí)行效率,如stepImpl函數(shù)的使用避免了在C程序中定時器的頻繁使用,并且使程序的結(jié)構(gòu)更加簡潔明了。

        2.3DHT11的Simulink模塊生成

        當(dāng)DHT11模塊的驅(qū)動程序、C包裹程序和Matlab程序都正確編寫完了后,就要將這些程序都封裝到DHT11的Simulink模塊中。在Matlab工具欄的應(yīng)用程序選項下選擇“Freescale Cup Companion”,然后創(chuàng)建一個新的model,在新model下加入一個Matlab System模塊,并給其添加定義好的模塊“T HSensor”,就可生成一個DHT11的Simulink模塊,如圖4所示。

        圖4 DHT11的Simulink模塊

        溫濕度傳感器的一個非常重要的參數(shù)就是采樣時間。在Matlab中沒有明確的采樣時間的模塊會自動地繼承跟它相連接的有可控采樣時間的模塊的采樣時間,因此如圖5所示,借助Constant模塊和Add模塊,為THSensor模塊添加采樣時間。因為Constant模塊的采樣時間是可控的,而且要把Constant模塊的值設(shè)為0,然后用這三個模塊共同創(chuàng)建一個新的模塊,并命名為THSensor,兩個輸出端分別輸出溫度值和濕度值。

        最后在THSensor模塊的Mask選項下,為其添加采樣時間Sample time參數(shù),這樣在模塊的屬性對話框中就可以看到這個參數(shù)了,如圖6所示。用戶可以直接在這個對話框中設(shè)置所需的采樣時間,避免了C程序中復(fù)雜的計算。到此,DHT11的Simulink模塊的封裝就基本完成了。

        圖5 給DHT11的Simulink模塊添加采樣時間參數(shù)

        圖6 DHT11 Simulink模塊的可調(diào)采樣時間參數(shù)

        3 溫濕度采集系統(tǒng)的設(shè)計與實現(xiàn)

        圖7 溫濕度采集系統(tǒng)的原理圖

        溫濕度采集系統(tǒng)的主控制器為FRD- KL25Z,數(shù)據(jù)采集設(shè)備為DHT11溫濕度傳感器,系統(tǒng)功能為根據(jù)采樣時間連續(xù)地采集環(huán)境溫濕度值并上傳到主機。上文已經(jīng)對溫濕度采集程序進行了設(shè)計,并封裝到了特定的Simulink模塊THSensor中,現(xiàn)在將簡單介紹溫濕度采集系統(tǒng)的整體設(shè)計和系統(tǒng)功能的具體實現(xiàn)。

        系統(tǒng)原理圖如圖7所示,圖中大致分為4個部分:①FRDM_KL25Z_all,列出了FRDM- KL25Z開發(fā)套件中的所有可用引腳;②DHT11,標明了溫濕度傳感器各引腳與主控器的連接;③UART0,表示溫濕度采集系統(tǒng)的數(shù)據(jù)上傳用到的是FRDM- KL25Z中的串口模塊uart0,并利用其默認的數(shù)據(jù)接收引腳PTA1和發(fā)送引腳PTA 2;④OpenSDA接口,此接口有調(diào)試、下載和串行通信的功能。OpenSDA接口和主機的USB接口連接時,會自動形成一個COM口,該COM口對應(yīng)著uart0模塊。故僅通過OpenSDA接口,就可實現(xiàn)程序的下載和串口數(shù)據(jù)收發(fā)的功能。

        在Simulink環(huán)境下系統(tǒng)控制程序如圖8所示,圖中有三個功能模塊:

        ①THSensor,DHT11對應(yīng)的Simulink模塊,該模塊的功能是根據(jù)采樣周期,連續(xù)地采集當(dāng)前環(huán)境下的溫濕度值并輸出。其中Out1對應(yīng)著溫度值的輸出,Out2對應(yīng)著濕度值的輸出;

        ②Matrix Concatenate,Simulink中的數(shù)組操作模塊,這里利用其將溫度值和濕度值組合在一個數(shù)組中;

        ③Serial Transmit,Embedded Coder中自定義的串口數(shù)據(jù)發(fā)送模塊。該模塊默認對應(yīng)著FRDM-K L25Z中的UART0,而且串口的波特率等參數(shù)在Embedded Coder的串口類中已被設(shè)置好,不需要再另外設(shè)置。

        圖8 Simulink中控制程序搭建圖

        首先,按照圖7原理圖所示,進行DHT11模塊和FRDM-KL25Z開發(fā)套件的實物連接,并按照圖8所示,正確連接各Simulink模塊。

        然后,連接FRDM-KL25Z的OpenSDA接口和主機的USB接口,如圖9所示,自動形成了一個串口COM3。最后,點擊圖8所示Simulink model工具欄上的,此時Simulink Coder會自動地將在Simulink中搭建的控制程序再生成C代碼并通過OpenSDA接口下載到FRDMKL25Z開發(fā)套件上執(zhí)行。

        圖9 OpenSDA接口形成的COM口

        這樣既可實現(xiàn)溫濕度采集的功能,又能將采集到的溫濕度值通過FRDM-KL25Z中的uart0模塊發(fā)送,而OpenSDA在主機中形成的COM3口可接收到發(fā)送的數(shù)據(jù)。為了能正確地接收數(shù)據(jù),COM3的波特率等參數(shù)要和Embedded Coder中串口類對uart0模塊的參數(shù)設(shè)置一致。

        此時溫濕度傳感器所處的環(huán)境為熱水杯的水面上空,采樣時間為3 s,將接收到的數(shù)據(jù)在主機的串口調(diào)試助手中顯示,如圖10所示。第一列數(shù)據(jù)為采集到的溫度值,第二列為相對濕度值。

        結(jié) 語

        文中設(shè)計的溫濕度采集系統(tǒng)有著低功耗、高效率的特點。低功耗主要體現(xiàn)在所選的FRDMKL25Z,這是一款非常節(jié)能的MCU,而高效率則主要體現(xiàn)在對Matlab Coder、Embedded Coder的使用上。Matlab Coder和Embedded Coder能簡化C程序的設(shè)計,提高程序執(zhí)行的效率。而將程序封裝到Simulink模塊中,則有利于模塊的單獨調(diào)試,并且能直觀地了解到各模塊之間的關(guān)系。

        圖10 主機COM3口接收數(shù)據(jù)圖

        [1]廖燦燦,張樹群,雷兆宜.Matlab Coder生成C代碼的研究與應(yīng)用[J].計算機與現(xiàn)代化,2013(3):175-178.

        [2]Online MATLAB.MATLAB2012a,MATLAB Coder[EB/ OL].[201604].http://www.mathWorks.cn/p roDucts/ matlab coder/.

        [3]陳永春.從MATLAB/Simulink模型到代碼實現(xiàn)[M].北京:清華大學(xué)出版社,2002.

        [4]魏鑫.MATLAB R2014a從入門到精通[M].北京:電子工業(yè)出版社,2015.

        [5]劉玉良,李剛,康凱.基于MATLAB的嵌入式系統(tǒng)軟件開發(fā)[J].天津大學(xué)學(xué)報,2008,41(5):593-596.

        [6]蔣婷,王宜懷,李濤.基于ARM CotexM0+KL系列MCU的構(gòu)件化匯編框架研究[J].計算機應(yīng)用與軟件,2015,32(1):13-15.

        [7]趙航濤,賀永慶,錢音潔,等.基于KL25單片機的直流電機控制電路及編程[J].電腦開發(fā)與應(yīng)用,2014,27(11):37-39.

        裘君(副教授)、陳婉君(碩士研究生),研究方向為嵌入式系統(tǒng)應(yīng)用。

        Temperature and Humidity Acquisition System Based on Matlab

        Qiu Jun1,Chen Wanjun1,2,Yang Yunhan1
        (1.School of Information Science and Engineering,Ningbo Institute of Technology,Zhejiang University,Ningbo 315100,China;2.Taiyuan University of Science and Technology)

        The Matlab Coder,Simulink Coder and Embedded Coder of Matlab are developed for C/C++code conversion,aiming at accelerating software development and improving the execution efficiency.The FRDM-KL25Z of Freescale is a very energy-efficient controller.In the paper,F(xiàn)RDM-KL25Z is used as the main controller and DHT11 as the sensor of temperature and humidity,then the Embedded Coder and Matlab Coder are used to design the temperature and humidity acquisition module.The Simulink is used to build the control program.Finally,the temperature and humidity acquisition system is designed,which can collect and upload data in real-time with high efficiency and low-power consumption.

        temperature and humidity acquisition system;Matlab Coder;Embedded Coder;Simulink Coder;FRDM-KL25Z

        TP399

        A

        ??楊迪娜

        2016-04-11)

        寧波市科技計劃項目(編號:2014B82015);浙江大學(xué)寧波理工學(xué)院教學(xué)改革與研究項目(編號:NITJ- 201517)。

        猜你喜歡
        溫濕度串口嵌入式
        溫濕度控制器在回收砂冷卻系統(tǒng)中的應(yīng)用
        淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
        基于DSP的多路溫濕度監(jiān)測系統(tǒng)
        基于溫濕度控制的天氣預(yù)測裝置
        電子制作(2018年11期)2018-08-04 03:26:02
        搭建基于Qt的嵌入式開發(fā)平臺
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        蒸發(fā)冷卻溫濕度獨立控制空調(diào)系統(tǒng)的應(yīng)用
        USB接口的多串口數(shù)據(jù)并行接收方法探索
        基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
        地礦測繪(2015年3期)2015-12-22 06:27:26
        Altera加入嵌入式視覺聯(lián)盟
        久久AⅤ无码精品色午麻豆| 少妇裸体性生交| 国产精品免费_区二区三区观看| 人禽伦免费交视频播放| 97中文字幕在线观看| 中文字幕无线精品亚洲乱码一区| 全部亚洲国产一区二区| 久久精品夜色噜噜亚洲a∨ | 色综合久久88色综合天天| 精品综合久久久久久97超人| 九九精品国产99精品| 白嫩少妇在线喷水18禁| 午夜国产视频一区二区三区| 国产精品特级毛片一区二区三区 | 在线观看av片永久免费| 清纯唯美亚洲经典中文字幕| 天堂网av一区二区三区在线观看| 亚洲伊人一本大道中文字幕| 国产精品内射后入合集| 精品一区二区三区人妻久久| 日本不卡视频一区二区三区| 免费国产线观看免费观看| 国产又爽又粗又猛的视频| 国产短视频精品区第一页| 日本在线播放不卡免费一区二区 | 蜜桃视频无码区在线观看| 亚洲av无码国产精品麻豆天美 | 国产69久久精品成人看| 中文字幕精品久久久久人妻| 国内自拍偷拍亚洲天堂| 一区二区三区精品亚洲视频| 中文字幕一区二区三区久久网| 777精品久无码人妻蜜桃| 麻豆AV免费网站| 中文字幕乱码亚洲美女精品一区| 日本黄色3级一区二区| 色欲aⅴ亚洲情无码av| 亚洲综合无码一区二区三区| 经典女同一区二区三区| 在线观看国产视频午夜| 一本一道人人妻人人妻αv|