基于STC89C51的太陽自動跟蹤系統的設計與實現—單片機控制步進電機實現太陽跟蹤控制(仿真+程序+原理圖+PCB+文檔)

摘 ?要

隨著我國經濟的飛速發展,促使各種能源使用入不敷出,尤其是最主要的能源,煤炭石油資源不斷消耗與短缺,因此人類尋找其他替代能源的腳步正在加快。而太陽能則具有無污染﹑可再生﹑儲量大等優點,且分布范圍廣,擁有非常廣闊的發展前景。但是太陽能利用效率較低,這個問題一直影響和妨礙著太陽能技術的推廣和發展。

在太陽能發電中,太陽板受光面與太陽光線的角度是決定太陽能發電效率的關鍵因素。本設計的原理是利用傳感器(光敏電阻)把接收到的光信號轉換成電信號,然后經過信號處理及單片機控制后,由控制電路輸出相應的控制數字信號驅動方位角調整機構和高度角調整機構實現相應的位置調整。

本課題選用STC89C51單片機作為智能單元,根據單片機的特點和所需實現的功能,著重完成了單片機外圍硬件電路設計和對應的軟件設計。

關鍵詞?太陽跟蹤; 單片機; 光敏

目 ????錄

??摘 ?要?

??Abstract?

??第1章 緒論?

1.1 研究的背景和意義?

1.1.1課題研究的目的和意義?

1.2國內外的研究情況?

1.3論文的主要研究內容?

1.4本章小結?

??第2章 系統的總體設計?

2.1太陽跟蹤方式?

2.1.1光電跟蹤?

2.1.2視日運動軌跡跟蹤?

2.2系統總體設計要求及分析?

2.2.1系統總體設計要求?

2.2.2系統總體設計分析?

2.3本章小結?

??第3章 系統的硬件設計?

3.1單片機控制電路?

3.1.1復位電路?

3.1.2晶振電路?

3.2光電轉換電路設計?

3.2.1光電傳感器?

3.2.2光電轉換電路工作原理及電路設計?

3.3 AD轉換模塊電路設計?

3.3.1AD轉換模塊?

3.4步進電機驅動電路設計?

3.4.1步進電機的介紹?

3.4.2步進電機及其控制方式?

3.4.3步進電機驅動電路?

3.5單片機外圍電路設計?

3.6系統實物平臺搭建?

3.7本章小結?

??第4章系統軟件設計?

4.1按鍵部分子程序?

4.2指示燈部分子程序?

4.3主程序模數轉換?

4.4驅動電路子程序?

4.5 AD電壓采樣子程序?

4.6本章小結?

??第5章結 ?論?

5.1總結?

5.2不足與進一步改進?

??參考文獻?

??謝 ?辭?

??附 ?錄?

第1章 緒論

1.1 研究的背景和意義

隨著社會的飛速發展,人們保護環境的意識也隨之提高,致力開發一些環保能源,比如,在風能,水力發電,太陽能等各種新型能源中,有很多專家學者都傾向于開發太陽能。風能、水能、潮汐能、生物質能等它們都屬于可再生能源,而且都來自于太陽能,所以,太陽能是那些可再生能源中最主要的基本能源。太陽能是一種新型節能能源,它與普通的能源比較有四個特點:?第一、 太陽能的總量十分巨大:每年輻射到地球表面上的太陽能大約相當于130萬億噸煤碳燃燒的熱量,并且跟據世界能源會議統計,世界已經探明可著手采煤炭儲量總計為15980億噸,估計還能開采200年,全世界可以開采的化石能源總量約相當于33730億噸原煤,由此可以說太陽能的總量是現今世界上可以開發的最大的能源。第二、太陽能具有無害性,太陽能是一種清潔無污染的能源,開發和利用太陽能不會污染環境,它是最干凈的能源之一,在環境污染愈發嚴重的今天,這一點是非常可貴的,所以人類對太陽能的普及已經是重中之重。第三、太陽能具有普遍性:它是我們可以利用的最豐富的能源,地球生命誕生以來,它們就主要以太陽提供的輻射能生活,太陽光它普照大地,在地球上,無論哪里都有太陽能,尤其是對于交通不發達的村莊、島嶼和偏遠地區更具有利用價值,也沒地域限制無論陸地或海洋,到處都有,都可以直接開發利用,而且不需要開采運輸。第四、太陽能還有長久性:科學家根據日前太陽產生的核能速率進行估算,得出結果,氫的儲存量可以維持上百億年,而且地球的壽命約為幾十億年,單從這一點上,就能夠說明太陽能量是用之不竭的。由此可見,大規模開發和利用太陽能是我們面向未來,實現可持續發展的必經之路。 ?

隨著社會日益發展,人類對電的需求每年以很大的幅度增加,所以對能源的需求也極速增長。全世界對這些能源的消耗在1970年約為83億噸的標準煤,但是在1995年,這種消耗竟然達到了140億噸的標準煤,也就是說在25年間增長了69.7%,據這種增長速率,科學家預計,到2020年全世界對能源的消耗會高達195億噸的標準煤。據公認的估計,假如人類對能源的需求一直以現在的速度增長,那么全世界的石油將在今后40年間被消耗完,還有天然氣和煤也最多分別能維持60年和200年左右。不僅如此,我們大量使用化石能源已經開始造成全球氣候變暖,燃燒煤碳會通過煤渣、煙塵釋放出大量的有化學毒性的重金屬和有放射性的物質,嚴重污染了我們的生活環境。 ?所以,利用和開發用新興能源和可再生能源來漸漸減少和替代化石原料的使用,是保護生態環境、走經濟社會可持續發展之路的重大措施。這個舉措對于世界尤其是我國來說是十分迫切的。太陽能不僅可以再生產,不污染環境,而且最主要是總量可觀,分布范圍廣泛,所以,它是世界上公認的理想新興清潔替代能源。

1.1.1課題研究的目的和意義

根據現況,開發利用太陽能受到科學家們越來越普遍的重視,因此,它是各國都在研究的重大課題。它對人類來說是一種取之不竭而且能自由免費利用的綠色能源。我國的太陽能資源非常豐富,它作為一種清潔無污染的能源,發展前景也是非常廣闊,太陽能發電已成為全球最受歡迎的利用新型能源的方法。但是也存在一些瑕疵,太陽能也有間歇性、光照方向和光照強度隨時間不斷變化等等問題,這樣我們就對太陽能的采集和利用提出了更高的要求。目前,我們都不能充分利用太陽能資源,因為很多太陽能電池板的排列規律基本上是固定的,所以發電的效率特別低。根據實驗,在太陽能光生電中,相同條件下,采用太陽跟蹤發電的裝置要比固定發電的裝置的發電量高出35% ,因此在太陽能利用中,進行追蹤是十分重要的!智能型自動跟蹤太陽的裝置設計是為了解決太陽能轉換效率低的問題,并且為了更大限度的利用太陽能。太陽光照射的角度不能固定,要想達到最大的集熱效果,太陽能電池板應和太陽光線保持垂直。本設計要求設計一種可以自動跟蹤太陽的控制系統,使太陽能電池板可以隨著太陽光線的移動而轉動方向,保持太陽板與太陽光線基本垂直,以達到最大的發電效率,成本低,有較好的推廣利用價值。

長期以來,世界能源主要消耗石油,煤炭等礦物燃料,但是這些都是不可再生能源數量有限,同時礦物燃燒時會產生大量的二氧化碳,污染環境。所以,根據現狀,各國加大力度開發新能源。于是,太陽能這個清潔可再生能源已經受到許多國家的重視和利用,充分利用太陽能資源,有著深遠的能源戰略意義。

1.2國內外的研究情況

我國很多科學家也都陸續展開了這方面的研究。1994年《太陽能》雜志簡述了單軸液壓的自動跟蹤器,完成了單向跟蹤,國家氣象局計量站在1990年研制出了FST型全自動太陽跟蹤器,成功用于太陽輻射觀測。2005年與以色列合作,在江蘇省南京市建立成了第一座功率為75kw的太陽能塔式熱發電示范電站,并成功運行發電。

此外,國外對太陽跟蹤研究也有了突破性進展。二十世紀50年代,太陽能利用的領域出現了兩項重大的技術突破:一是1954年在美國貝爾的實驗室研制出6%實用型單晶硅電池,二是1955年以色列Tabor提出選擇性吸收表面概念和理論并研制成功選擇性太陽吸收涂層。這兩項技術的突破為使太陽能的利用進入現代發展時期奠定了技術基礎。此外,1997年美國的Blackace研制出了單軸的跟蹤器,這種裝置根據赤道坐標系下的太陽運行原理完成東西方向的自動跟蹤,但南北方向通過手動的調節,接收器的接收效率提高了15%。1998年美國,加州成功的研制出了ATM兩軸的跟蹤器,使熱接收率得到進一步提高。??

據現階段國內外科學家對太陽跟蹤的研究情況來看,普遍采用單軸的跟蹤方式。隨著科學技術的發展,太陽跟蹤裝置會朝著雙軸的跟蹤方向發展,做到同步跟蹤太陽,太陽能的接收率有了很大提高。

1.3論文的主要研究內容

本設計要求設計一種自動的跟蹤太陽的智能控制系統,從而更有效的利用太陽能。所以采用雙軸跟蹤的方法對太陽進行跟蹤,使太陽能接受裝置能夠始終垂直于太陽。?

主要內容包括:

(1)分析太陽的變化規律,由此為基礎制定比較合理的跟蹤策略。

(2)分析所需要的傳感器(光敏電阻)的功能及工作原理,設計光電轉換電路。

(3)分析系統的硬件要求,選取符合條件的控制芯片,設計控制系統。

(4)設計控制方案,步進電機以及驅動電路。

(5)軟件設計及實物平臺搭建。

1.4本章小結

本章主要介紹了本課題的研究背景和意義,說明了太陽能是一種新型的清潔無污染能源,并且含量豐富,分布范圍廣,屬于可再生能源,國內外已經開始開發利用太陽能了,并且受到國際上認可,對社會主義建設有著深遠的戰略意義。還介紹了本設計的總體思路和需要研究的內容。

第2章 系統的總體設計

2.1太陽跟蹤方式

目前對太陽能利用最普遍的形式是通過太陽板將太陽能轉換成熱能,為了收集到盡可能多的太陽能,最好采取跟蹤方式,使太陽板始終正對太陽。傳統的跟蹤方法主要采用以下兩種方法:光電跟蹤和視日運動軌跡跟蹤,前者是閉環的隨機系統,后者是開環的程控系統。

2.1.1光電跟蹤

光電追蹤裝置利用光敏傳感器,如硅光電管進行太陽光的檢測。在這些裝置中,光電管的安裝靠近遮光板。通過調整遮光板的位置使遮光板對準太陽、硅光電池處于陰影區;當太陽西移時遮光板的陰影偏移,光電管受到陽光直射輸出一定值的微電流,作為偏差信號,經放大電路放大,由伺服機構調整角度使追蹤裝置對準太陽完成追蹤。光電追蹤靈敏度高,結構設計較為簡單;但受天氣的影響很大,如果在稍長時間段里出現烏云遮住太陽的情況,太陽光線往往不能照射到硅光電管上,導致追蹤裝置無法對準太陽,甚至會引起執行機構的誤動。

2.1.2視日運動軌跡跟蹤

?視日運動軌跡跟蹤方式有兩種可分為單軸和雙軸。

(1)單軸追蹤。單軸跟蹤又可分為水平單軸跟蹤、不同傾角單軸跟蹤、最佳傾角跟蹤單軸追蹤一般采用:①傾斜布置東西追蹤;②焦線南北水平布置,東西追蹤;③焦線東西水平布置,南北追蹤。這三種方式都是單軸轉動的南北向或東西向追蹤。單軸追蹤的優點是結構簡單,但是由于入射光線不能始終與主光軸平行,收集太陽能的效果并不理想。

(2)雙軸追蹤。如果能夠在太陽高度角和方位角的變化上都能夠追蹤太陽就可以獲得最多的太陽能,全追蹤即雙軸就是根據這樣的要求而設計的。雙軸追蹤又可以分為兩種方式:極軸式全追蹤和高度角方位角式全追蹤。 ?

2.2系統總體設計要求及分析

2.2.1系統總體設計要求

對于本設計課題的整體要求是造價低廉、結構簡單、性能可靠、充分考慮其經濟性。在結構設計過程中,避免復雜和浪費,力圖簡單整潔,并且要便于安裝和維護。另一方面,在控制單元設計中,要充分考慮到系統的全天候要求,要選用耐用和抗干擾性強的執行單元,避免發生故障。

本設計所要達到的目的是提高太陽能的利用率,確定使用太陽板將太陽能轉化為電能。通常對太陽能進行轉換的時候,因為太陽是不停運動的,所以如果接收裝置是固定的,則無法時刻做到與太陽光線垂直,只能在固定時間吸收某一部分太陽能,而在其他時間的吸收效率不高甚至根本無法吸收到太陽能,因此,如果使太陽的吸收效率提高,必須要使太陽能吸收裝置與太陽運行軌跡一致,從而可以持續吸收太陽能。在本設計中采用的是雙軸跟蹤法對太陽進行實時跟蹤,使太陽能板能夠始終正對太陽,從而提高吸收效率。

設計要求如下:

  1. 此裝置能根據天氣條件進行工作,晴天自動跟蹤,陰天或黑夜停止跟蹤。
  2. 在進行跟蹤時,能確保太陽板始終與太陽光線垂直,更充分吸收太陽能。
  3. 在本設計中,要求硬件部分和軟件部分能準確合理的配合和工作。

2.2.2系統總體設計分析

本設計主要模塊包括:單片機控制電路,光電轉換電路,AD轉換電路,電機驅動電路。本部分首先主要介紹各個模塊的硬件電路,以及整體實物平臺搭建部分的原理分析,還有軟件設計方面的研究。

硬件方面:采用雙軸跟蹤系統,能夠同時在方位角和高度角兩個方向進行跟蹤,由光電傳感器,信號處理及控制電路,方位角及高度角調整機構組成。傳感器把接收到的光信號轉換成電信號,然后經過信號處理及控制電路后,由控制電路輸出相應的控制信號驅動方位角調整機構和高度角調整機構實現相應的位置調整。

軟件方面:以單片機芯片為控制核心部分,經過數模轉換模塊,最后通過AD電壓采樣控制步進電機的正反轉。

綜上所述,本設計采用的具體方案是陽光照在光敏電阻上,通過光電轉換變成電壓值,輸入AD轉換電路,進行DA轉換,然后進行AD電壓采樣,輸入控制核心單片機,經處理后最后經過驅動芯片從而控制步進電機的正反轉,使太陽板始終與太陽光線垂直。

下圖為系統的總體設計方案

圖2.1系統總體設計方案

2.3本章小結

本章主要介紹了太陽跟蹤系統的兩種跟蹤方式,分別簡述了兩種跟蹤方式的特點和原理,并最終決定采用雙軸自動跟蹤的方式。此外,也大體上說明了總體設計方案和原理,總結出了流程圖。

第3章 系統的硬件設計

3.1單片機控制電路

為了使用方便,系統要求可以進行在線改寫,并能在斷電情況下保存數據而不需要保護電源,同時使系統使用盡可能少的外圍擴展芯片,提高系統運行的可靠性,要求使用的單片機具有片內電擦除可編程只讀存儲器,基于以上原因,選用STC89C51單片機。它是由復位電路和晶振電路構成。

STC89C51單片機是最早期也最典型的產品,STC89C51單片機學習板是一款基于8位單片機處理芯片STC89C52RC的系統。STC89C52RC是采用8051核的ISP(In System Programming)在系統可編程芯片,最高工作時鐘頻率為80MHz,片內含8K Bytes的可反復擦寫1000次的Flash只讀程序存儲器,器件兼容標準MCS-51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,具有在系統可編程(ISP)特性,配合PC端的控制程序即可將用戶的程序代碼下載進單片機內部,省去了購買通用編程器,而且速度更快。STC89C52RC系列單片機是單時鐘/機器周期(1T)的兼容8051 內核單片機,是高速/ 低功耗的新一代8051 單片機,全新的流水線/精簡指令集結構,內部集成MAX810 專用復位電路。

有如下功能:

·8位CPU·4kbytes程序存儲器(ROM) (52為8K) ?

·128bytes的數據存儲器(RAM) (52有256bytes的RAM)

·32條I/O口線

·111條指令,大部分為單字節指令

·21個專用寄存器 ?

·2個可編程定時/計數器

·5個中斷源,2個優先級(52有6個)

·一個全雙工串行通信口 ?

·外部數據存儲器尋址空間為64kB

·外部程序存儲器尋址空間為64kB ?

·邏輯操作位尋址功能

·雙列直插40PinDIP封裝

·單一+5V電源供電

?CPU:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能寄存器;

?RAM:用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據; ?

ROM:用以存放程序、一些原始數據和表格; ?

I/O口:四個8位并行I/O口,既可用作輸入,也可用作輸出

T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;

五個中斷源的中斷控制系統; ?

一個全雙工UART(通用異步接收發送器)的串行I/O口,用于實現單片機之間或單片機與微機之間的串行通信;

?片內振蕩器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振蕩頻率為6M—12M。

圖中各引腳連接:

LED1 ?LED2是兩個指示燈分別代表自動模式和手動模式;TX ?RX是指串口通訊接口即程序下載接口;KEY1-KEY5是代表五個按鍵,其中一個是手動和自動模式之間的切換,另外四個是手動模式下,手動控制電機的上下左右四個方向的轉動;X1 ?X2是連接晶振電路的;IN1-INT8是一個上拉排阻,它連接驅動芯片ULN2803,目的是提高輸出電平,增加單片機的驅動能力;SDA ?SCL分別代表連接I2C總線的數據線和時鐘線。

圖3.1單片機最小系統

3.1.1復位電路

單片機的置位和復位,都是為了把電路初始化到一個確定的狀態,一般來說,單片機復位電路作用是把一個例如狀態機初始化到空狀態,而在單片機內部,復位的時候單片機是把一些寄存器以及存儲設備裝入廠商預設的一個值。 ?單片機復位電路原理是在單片機的復位引腳RST上外接電阻和電容,實現上電復位。當復位電平持續兩個機器周期以上時復位有效。復位電平的持續時間必須大于單片機的兩個機器周期。具體數值可以由RC電路計算出時間常數。

?

圖3.2復位電路

3.1.2晶振電路

?單片機系統里都有晶振,在單片機系統里晶振作用非常大,全程叫晶體振蕩器,他結合單片機內部電路產生單片機所需的時鐘頻率,單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片接的一切指令的執行都是建立在單片機晶振提供的時鐘頻率。 ?在通常工作條件下,普通的晶振頻率絕對精度可達百萬分之五十。高級的精度更高。有些晶振還可以由外加電壓在一定范圍內調整頻率,稱為壓控振蕩器(VCO)。晶振用一種能把電能和機械能相互轉化的晶體在共振的狀態下工作,以提供穩定,精確的單頻振蕩。 ?單片機晶振的作用是為系統提供基本的時鐘信號。通常一個系統共用一個晶振,便于各 部分保持同步。有些通訊系統的基頻和射頻使用不同的晶振,而通過電子調整頻率的方法保持同步。 ?晶振通常與鎖相環電路配合使用,以提供系統所需的時鐘頻率。如果不同子系統需要不同頻率的時鐘信號,可以用與同一個晶振相連的不同鎖相環來提供。 STC89C51使用11.0592MHz的晶體振蕩器作為振蕩源,由于單片機內部帶有振蕩電路,所以外部只要連接一個晶振和兩個電容即可,電容容量一般在15pF至50pF之間。

3.2光電轉換電路設計

3.2.1光電傳感器

光敏電阻器是利用半導體的光電導效應制成的一種電阻值隨入射光的強弱而改變的電阻器,當它受到光的照射時,半導體片(光敏層)內 就激發出電子—空穴對,參與導電,使電路中電流增強。

光敏電阻的工作原理是基于內光電效應。在半導體光敏材料兩端裝上電極引線,將其封裝在帶有透明窗的管殼里就構成光敏電阻,為了增加靈敏度,兩電極常做成梳狀。入射光消失后,由光子激發產生的電子—空穴對將復合,光敏電阻的阻值也就恢復原值。在光敏電阻兩端的金屬電極加上電壓,其中便有電流通過,受到一定波長的光線照射時,電流就會隨光強的增大而變大,從而實現光電轉換。光敏電阻沒有極性,純粹是一個電阻器件,使用時既可加直流電壓,也加交流電壓。半導體的導電能力取決于半導體導帶內載流子數目的多少。

3.2.2光電轉換電路工作原理及電路設計

光電轉換裝置接收太陽光,將光信號轉換成電信號,根據所采集到的信號,由單片機分析得最終控制的步進電動旋轉與轉向來達到太陽能板,結果始終是垂直于入射光線,從而達到利用太陽能的最高效率。其中光電檢測A對左遠離光線進行檢測,當光線遠離電池板時A檢測會給單片機信號,單片機控制驅動芯片驅動電機M1正轉使電池板跟隨光線左轉。光電檢測B對右遠離光線進行檢測,當光線遠離電池板時B檢測到并實時傳輸給單片機信號,單片機控制驅動芯片驅動電機M1反轉使電池板跟隨光線右轉。光電檢測C與D對太陽垂直角度的變化進行檢測,并將檢測到的光線變化信號傳輸給單片機,單片機進行進一步處理后控制驅動芯片驅動電機M2的正反轉,從而實現電池板垂直角度的調整。光敏電阻的分布如圖所示

??????????圖3.3光敏電阻模型 ??????

圖3.4光電轉換電路

3.3 AD轉換模塊電路設計

3.3.1AD轉換模塊

1.AD模塊的組成

AD轉換電路包括電壓信號輸入部分, AD轉換部分和AD電壓采樣,信號輸出部分。

2.AD轉換原理及電路設計

由光電轉換電路所得到的信號為模擬信號,所以采用AD轉換器,將模擬信號轉換為數字信號,然后通過單片機進行處理。模擬量可以是電壓、電流等信號,但在AD轉換前,輸入到AD轉換器的輸入信號必須是電壓信號。AD轉換后,輸出的數字信號可以有8位、10位、12位和16位等。在本設計中采用的是PCF8591芯片,PCF8591 是一種具有 I2C 總線接口的 8 位 A/D D/A 轉換芯片,在與 CPU的信息傳輸過程中僅靠時鐘線 SCL 和數據線 SDA 就可以實現。 I2C 總線是Philips (飛利浦)公司推出的串行總線,它與傳統的通信方式相比具有讀寫方便,結構簡單 ,可維護性好, 易實現系統擴展, 易實現模塊化標準化設計, 可靠性高等優點。 ?

PCF8591 為單一電源供電(2.5 6 V)典型值為 5 V,CMOS 工藝 PCF8591 有 4 路 8 位 A/D 輸入,屬逐次比較型,內含采樣保持電路; 1 路 8 位 D/A 輸出,內含有 DAC的數據寄存器 A/D D/A 的最大轉換速率約為 11 kHz,但是轉換的基準電源需由外部提供。 PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I2C總線接口。PCF8591的3個地址引腳A0, A1和A2可用于硬件地址編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數據信號都是通過雙線雙向I2C總線以串行的方式進行傳輸。

圖3.5 AD轉換模塊???????????????????

3.4步進電機驅動電路設計

3.4.1步進電機的介紹

前面介紹了光電轉換電路,AD轉換電路,和單片機電路部分的設計,其最終的目的也就是要控制步進電機的正反轉。步進電機是將電脈沖轉化為角位移的開環控制執行機構。步進電機又稱為脈沖電動機,當步進驅動器接收到一個脈沖信號, 它就驅動步進電機按設定的方向轉動一個固定的角度,稱為“步距角”,它的旋轉是以固定的角度一步一步運行的。可以通過控制脈沖個數來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。其中步距角是對應一個脈沖信號,電機轉子轉過的角位移用θ表示。θ=360度(轉子齒數J*運行拍數),以常規二、四相,轉子齒為50齒電機為例。四拍運行時步距角為θ=360度/(50*4)=1.8度,八拍運行時步距角為θ=360度/(50*8)=0.9度。在負載能力范圍內這些關系不因電源電壓、負載大小、環境條件的波動而變化。因而可適用于開環系統中作為執行元件,使控制系統大為簡化。步進電動機可以在很寬的范圍內通過改變脈沖頻率來調速;能夠快速反轉和制動。它不需要變換可直接將數字脈沖信號轉換為角位移,很適合采用微型計算機控制。步進電動機是純粹的數字控制電動機。它將電脈沖信號轉變成角位移,即給一個脈沖信號,步動機就轉動一個角度,因此作常適合于單片機控制,推動了步進電動機的發展,為步進電動機的應用開辟了廣闊的前景。

3.4.2步進電機及其控制方式

本系統用到的是四相步進電動機,四相步進電動機是將電信號轉變成角位移或線位移的開關控制元件,其轉速、停止位置只與脈沖信號的頻率和脈沖數有關,具有誤差小,易控制等特點,廣泛用于儀器設計。選用28BYJ48型四相八拍電機,電壓為DC5V—DC12V。當對步進電機施加一系列連續不斷的控制脈沖時,它可以連續不斷地轉動。四相步進電機可以在不同的通電方式下運行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A),雙(雙相繞組通電)四拍(AB-BC- CD-DA-AB-),八拍(A-AB-B-BC-C-CD-D-DA-A)。

3.4.3步進電機驅動電路

步進電機單靠交流供電或直流電源無法運動,必須與驅動電路同時使用時才能發揮其功能,步進電機驅動器(驅動電路)由決定換向順序的控制電路(或稱為邏輯電路)與控制電機輸出功率的換相電路(或稱為功率電路(power stage))組成。本圖是步進電機驅動電路原理圖。驅動電路通過ULN2803構成比較多的驅動電路,8個NPN達林頓晶體管,連接在陣列非常適合邏輯接口電平數字電路(例如TTL,CMOS或PMOS上/ NMOS)和較高的電流/電壓,如電燈,電磁閥,繼電器,打印錘或其他類似的負載,廣泛的使用范圍:計算機,工業和消費應用。所有設備功能由集電極輸出和鉗位二極管瞬態抑制。該ULN2803是專為符合標準TTL。該電路為反向輸出型,即輸入低電平電壓,輸出端才能導通工作。

基本工作原理:如果1腳輸入高電平1,則16腳輸出低電平0,反之一樣!一般來說,步進電動機的工作電壓是5V,對應芯片的9腳接步進電動機的工作電壓5V。輸入接上拉電阻即接單片機引腳。引腳輸入低電平,ULN2003就輸出高電平,正反轉跟輸入電平有關。電路圖如圖所示。

圖3.6驅動芯片

3.5單片機外圍電路設計

1、電源模塊電路

其中J1是指開關按鍵

圖3.7電源電路

2、按鍵電路

其中S1是手動和自動模式之間的切換,默認為自動模式,S2,S3,S4,S5是手動模式下,利用手動按鍵來控制步進電機的正反轉。

圖3.8按鍵電路

3、指示燈電路 ???

系統默認為自動模式,接通電源后LED1亮,當按下S1按鍵時,切換成手動模式,LED2亮。 ??????

圖3.9指示燈電路

3.6系統實物平臺搭建

本設計要求:,機械部分主要由電池板支架,轉動軸,底座和步進電機構成,機械裝置由電機驅動,可使電池板在水平方向360度和垂直方向0~80度之間自由旋轉。控制部分主要由STC89C51單片機系統構成。 ?跟蹤系統機械結構大致為用螺絲把一個控制方位的步進電機控制在底座上,然后在步進電機上安裝轉動軸,上面連接水平方向步進電機的底座。水平步進電機也被用螺絲控制在垂直方向的底座上,也安裝了轉動軸,并且連接著太陽板和光敏電阻等部件。機機械結構的工作原理為用2個步進電機分別對高度角和方位角2個方向進行控制。跟蹤器的方位軸垂直地平面,控制水平方向;另一根軸與方位軸垂直稱為俯仰軸,控制垂直方向,最后兩個步進電機分別與單片機控制系統連接,具體是跟驅動芯片ULN2803連接,而此芯片又與AD轉換芯片連接,從而控制步進電機。工作時,太陽跟蹤器根據太陽運動的位置,通過方位軸轉動改變方位角來改變水平方向,通過俯仰軸作俯仰運動改變接收平臺的傾斜角來改變垂直方向,從而使太陽光線與太陽板垂直,以達到跟蹤的目的。

3.7本章小結

本章介紹了本系統各部分硬件模塊的簡介和工作原理,主要模塊有光電轉換電路,AD轉換模塊,步進電機控制電路,其中還有一些小部件,比如,按鍵模塊,LED顯示模塊,電源模塊,復位電路,晶振電路。最后介紹了實物平臺的具體搭建。

第4章系統軟件設計

本設計采用的是51單片機,它是控制這個系統的核心部分,軟件部分也由單片機來操作,其最終目的就是正確控制電機的正反轉。本部分以單片機為核心部件將各個電路模塊都連接起來,使我們更清楚設計本意。可設上下左右四個方向的光敏電阻的電壓值分別為U1、U2、U3、U4,設精度為10

圖4.1軟件流程圖

4.1按鍵部分子程序

按鍵電路默認狀態為自動模式。

if(!ENTER) ????

??{

???Delay_ms(20);

???while(!ENTER);

???k++;?

??}

4.2指示燈部分子程序

LED1輸出高電平說明此裝置在自動模式下。

if(k%2 == 0) ??????

??{

??LED1 = 1;

??LED2 = 0;

4.3主程序模數轉換

數模轉換是本設計的關鍵部分,光電轉換的電壓值輸入到AD模塊后,經過PCF8951芯片里的電壓采樣,最后輸出數字信號,再把信息傳送給單片機,從而控制步進電機正反轉。流程圖如下

????

圖4.2AD模塊流程圖

本設計AD轉換模塊用到的芯片是PCF8951,它有4路8位A/D輸入,屬于逐次比較型,內含采樣保持電路,1路8位輸出,內含有ADC數據寄存器。意思是芯片內有四個通道,所以分為以下程序的四種情況。

?Case0是用來讀取8951芯片第一通道所采集的到模擬量的值;0x41是控制發送的字節;IRcvByte(PCF8591)是用來接收讀取AD轉換的數據;本設計在AD模塊中,利用芯片PCF8951,輸入和輸出都進行了電壓保持采樣,即系統內部自己進行了兩次采樣,所以最后輸出電壓得需要IRcvByte(PCF8591)*2,這才保證輸入和輸出數據相同,確保了數據的準確性;ADC是用來寄存每一通道輸出的數據。以下通道同理。程序中,最后一個if語句是指在手動模式下的操作。

for(i=0;i<8;i++) ??????????

??{

???switch(AD_CHANNEL)

???{

????case 0: PCF8591_ISendByte(PCF8591,0x41);

????AD_Up=PCF8591_IRcvByte(PCF8591)*2; ?//ADC0 模數轉換1

????break; ?

????

????case 1: PCF8591_ISendByte(PCF8591,0x42);

????AD_Down=PCF8591_IRcvByte(PCF8591)*2; ?//ADC1 ?模數轉換2

????break; ?

????case 2: PCF8591_ISendByte(PCF8591,0x43);

????AD_Left=PCF8591_IRcvByte(PCF8591)*2; ?//ADC2 模數轉換3

????break; ?

????

????case 3: PCF8591_ISendByte(PCF8591,0x40);

????AD_Right=PCF8591_IRcvByte(PCF8591)*2; ?//ADC3 ?模數轉換4

????break;

???}

???Send_Hex(Table,4);

???if(++AD_CHANNEL>3)

???{

????AD_CHANNEL=0;

????Table[0] = AD_Up;

???Table[1] = AD_Down;

???Table[2] = AD_Left;

???Table[3] = AD_Right;

????}

??}

??}

??if(k%2 == 1)

??{

???LED1 = 0;

???LED2 = 1;

???AD_Up = 0;?//上

???AD_Down = 0;//下

???AD_Left = 0;//左

???AD_Right = 0;//右?

??}??

4.4驅動電路子程序

設定10為精度值,本設計中一共有上下左右四個光敏電阻,在光照下就會產生電壓,上邊電壓大于下邊電壓或者兩邊電壓值差大于10,或者手動模式下按下向下的按鍵,水平電機反轉,若下邊電壓大于上邊電壓或者兩邊電壓值差大于10,或者手動模式下按下向上的按鍵,水平電機正轉。同理,左邊電壓大于右邊電壓或者兩者差值大于10,或者手動模式下按下向右的按鍵,方位電機右轉,若右邊電壓大于左邊或者兩者差值大于10,或者手動模式下按下向左的按鍵,方位電機左轉。具體程序如下:

if(((AD_Up<AD_Down)&&(AD_Down-AD_Up>10))||(!UP))//上轉

??{

???for(i=0;i<10;i++)

???{

????for(j=0;j<4;j++)

????{

?????P0=Motor_Up[j];

?????Delay_ms(10);

????}??

???}?

??}

??//

??if(((AD_Up>AD_Down)&&(AD_Up-AD_Down>10))||(!DOWN))//下轉

??{

???for(i=0;i<10;i++)

???{

????for(j=0;j<4;j++)

????{

?????P0=Motor_Down[j];

?????Delay_ms(10);

????}??

???}

??}

??/

??if(((AD_Left<AD_Right)&&(AD_Right-AD_Left>10))||(!LEFT))//左轉

??{

???for(i=0;i<10;i++)

???{

????for(j=0;j<4;j++)

????{

?????P0=Motor_Left[j];

?????Delay_ms(10);

????}??

???}

??

??}

??//

??if(((AD_Left>AD_Right)&&(AD_Left-AD_Right>10))||(!RIGHT))//右轉

??{

???for(i=0;i<10;i++)

???{

????for(j=0;j<4;j++)

????{

?????P0=Motor_Right[j];

?????Delay_ms(10);

????}??

???}

??}

??

??Delay_ms(100);//延時,可適當修改

?}

}

4.5 AD電壓采樣子程序

將光電轉換電路中測得的電壓值通過AD轉換模塊轉換為數值采樣再存到單片機內存里,進行比較,AD電壓采樣可以決定采樣的精度,下面介紹芯片內部原理。

  1. I2C總線數據位的傳輸 ???

它是由串行數據線(SDA)和串行時鐘線(SCL)組成。連接到總線上的每一個器件都有一個唯一的地址,而且都可以作為一個發生器或接收器,SDA和SCL都是雙向線路,分別通過一個電阻連接到電源端。前提是連接到總線上的器件的SDA和SCL端必須是漏極或集電極開路型。I2C總線上的數據傳輸速率在標準模式下可達100Kb/s,快速模式可達400Kb/s,高速模式下可達3.4Mb/s。連接到總線的器件數量只由總線的電容(400PF)限制決定。 ????

?I2C總線上每傳輸一個數據位必須產生一個時鐘脈沖,I2C總線上數據傳輸的有效性要求SDA線上的數據必須在時鐘線SCL的高電平期間保存穩定,數據線的改變只能在時鐘線為低電平期間。在標準模式下,高低電平寬度必須大于4.7us(即每次時鐘線需延時4.7us后才能改變)。

2、I2C總線數據的傳輸 ?

數據傳輸的字節格式要求:發送到SDA線上的每一個字節必須為8位,每次發送的字節數量不受限制,從機在接收完一個字節后向主機發送一個應答位,主機在收到從機應答后才會發送第二字節數據,發送數據時先發數據的最高位。

??數據傳輸中的應答:相應的應答位由接收方(從機)產生,在應答的時鐘脈沖期間,發送方(主機)應釋放SDA線(使其為高電平)。在應答過程中,接收方(從機)必須將數據線SDA拉低,使它在這個時鐘脈沖的高電平期間保持穩定的低電平。 ?

#include <PCF8591.H> ???????

bit PCF859_ack; ????????????????/*應答標志位*/

???

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

?????????????????????起動總線函數 ??????????????

函數原型: void ?Start_I2c(); ?

功能: ????啟動I2C總線,即發送I2C起始條件. ?

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

void PCF8591_Start()

{

?PCF8591_SDA=1; ????????/*發送起始條件的數據信號*/

?_Nop();

?PCF8591_SCL=1;

?_Nop(); ???????/*起始條件建立時間大于4.7us,延時*/

?_Nop();_Nop();_Nop();_Nop(); ???

?PCF8591_SDA=0; ????????/*發送起始信號*/

?_Nop(); ???????/* 起始條件鎖定時間大于4μs*/

?_Nop();_Nop();_Nop();_Nop(); ??????

?PCF8591_SCL=0; ??????/*鉗住I2C總線,準備發送或接收數據 */

?_Nop();_Nop();

}

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

??????????????????????結束總線函數 ??????????????

函數原型: void ?Stop_I2c(); ?

功能: ????結束I2C總線,即發送I2C結束條件. ?

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

void PCF8591_Stop()

{

??PCF8591_SDA=0; ?????/*發送結束條件的數據信號*/

??_Nop(); ??????/*發送結束條件的時鐘信號*/

??PCF8591_SCL=1; ?????/*結束條件建立時間大于4μs*/

??_Nop();_Nop();_Nop();_Nop();_Nop();

??PCF8591_SDA=1; ?????/*發送I2C總線結束信號*/

??_Nop();_Nop();_Nop();_Nop();

}

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

?????????????????字節數據發送函數 ??????????????

函數原型: void ?SendByte(UCHAR c);

功能: ????將數據c發送出去,可以是地址,也可以是數據,發完后等待應答,并對

??????????此狀態位進行操作.(不應答或非應答都使ack=0) ????

???????????發送數據正常,ack=1; ack=0表示被控器無應答或損壞。

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

void ?PCF8591_SendByte(unsigned char ?c)

{

?unsigned char ?BitCnt;

?for(BitCnt=0;BitCnt<8;BitCnt++) ?/*要傳送的數據長度為8位*/

????{

?????if((c<<BitCnt)&0x80)PCF8591_SDA=1; ??/*判斷發送位*/

???????else ?PCF8591_SDA=0; ???????????????

?????_Nop();

?????PCF8591_SCL=1; ??????????????/*置時鐘線為高,通知被控器開始接收數據位*/

??????_Nop(); _Nop(); ????????????/*保證時鐘高電平周期大于4μs*/

??????_Nop();_Nop();_Nop(); ????????

?????PCF8591_SCL=0;

????}

????_Nop();_Nop();

????PCF8591_SDA=1; ???????????????/*8位發送完后釋放數據線,準備接收應答位*/

????_Nop();_Nop(); ??

????PCF8591_SCL=1;

????_Nop();_Nop();_Nop();

????if(PCF8591_SDA==1)PCF859_ack=0; ????

???????else PCF859_ack=1; ???????/*判斷是否接收到應答信號*/

????PCF8591_SCL=0;

????_Nop();_Nop();

}

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

?????????????????字節數據接收函數 ??????????????

函數原型: UCHAR ?RcvByte();

功能: ???????用來接收從器件傳來的數據,并判斷總線錯誤(不發應答信號),

??????????發完后請用應答函數應答從機。 ?

********************************************************************/ ???

unsigned char ?PCF8591_RcvByte()

{

??unsigned char ?retc;

??unsigned char ?BitCnt;

??

??retc=0;

??PCF8591_SDA=1; ????????????????????/*置數據線為輸入方式*/

??for(BitCnt=0;BitCnt<8;BitCnt++)

??????{

????????_Nop(); ??????????

????????PCF8591_SCL=0; ?????????????????/*置時鐘線為低,準備接收數據位*/

????????_Nop();_Nop(); ????????????????/*時鐘低電平周期大于4.7μs*/

????????_Nop();_Nop();_Nop();

????????PCF8591_SCL=1; ?????????????????/*置時鐘線為高使數據線上數據有效*/

????????_Nop();_Nop();

????????retc=retc<<1;

????????if(PCF8591_SDA==1)retc=retc+1; ?/*讀數據位,接收的數據位放入retc中 */

????????_Nop();_Nop();

??????}

??PCF8591_SCL=0; ???

??_Nop();_Nop();

??return(retc);

}

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

?????????????????????應答子函數

函數原型: ?void Ack_I2c(bit a);

功能: ?????主控器進行應答信號(可以是應答或非應答信號,由位參數a決定)

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

void PCF8591_Ack(bit a)

{

??

??if(a==0)PCF8591_SDA=0; ?????????????/*在此發出應答或非應答信號 */

??else PCF8591_SDA=1;

??_Nop();_Nop();_Nop(); ?????

??PCF8591_SCL=1;

??_Nop();_Nop(); ???????????????????/*時鐘低電平周期大于4μs*/

??_Nop();_Nop();_Nop(); ?

??PCF8591_SCL=0; ????????????????????/*清時鐘線,鉗住I2C總線以便繼續接收*/

??_Nop();_Nop(); ???

}

///

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

DAC 變換, 轉化函數 ??????????????

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

bit PCF8591_DACconversion(unsigned char sla,unsigned char c, ?unsigned char Val)

{

???PCF8591_Start(); ?????????????//啟動總線

???PCF8591_SendByte(sla); ???????????//發送器件地址

???if(PCF859_ack==0)return(0);

???PCF8591_SendByte(c); ?????????????//發送控制字節

???if(PCF859_ack==0)return(0);

???PCF8591_SendByte(Val); ???????????//發送DAC的數值 ?

???if(PCF859_ack==0)return(0);

???PCF8591_Stop(); ??????????????//結束總線

???return(1);

}

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

ADC發送字節[命令]數據函數 ??????????????

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

bit PCF8591_ISendByte(unsigned char sla,unsigned char c)

{

???PCF8591_Start(); ?????????????//啟動總線

???PCF8591_SendByte(sla); ???????????//發送器件地址

???if(PCF859_ack==0)return(0);

???PCF8591_SendByte(c); ?????????????//發送數據

???if(PCF859_ack==0)return(0);

???PCF8591_Stop(); ??????????????//結束總線

???return(1);

}

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

ADC讀字節數據函數 ??????????????

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

unsigned char PCF8591_IRcvByte(unsigned char sla)

{ ?unsigned char c;

???PCF8591_Start(); ?????????//啟動總線

???PCF8591_SendByte(sla+1); ?????//發送器件地址

???if(PCF859_ack==0)return(0);

???c=PCF8591_RcvByte(); ?????????//讀取數據0

???PCF8591_Ack(1); ??????????//發送非就答位

???PCF8591_Stop(); ??????????//結束總線

???return(c);

}

4.6本章小結

本章主要介紹了整個系統中各個模塊的軟件設計及原理,還有編寫的程序,主要模塊的軟件編程,比如,按鍵模塊,LED燈顯示模塊,步進電機驅動模塊,AD轉換還有AD電壓采樣模塊。具體解釋如上。

第5章結 ?論

5.1總結

本設計采取了傳統的硬件和軟件相結合的開發方法,使用了STC89C51單片機作為整個系統的控制處理中心,它具有硬件設計方便,資源豐富,軟件部分程序指令快速簡單,驅動能力強等優點,保證了該系統反應的快速性和靈敏性。從資料的查找到電路的設計,從程序的編寫到功能的基本實現,一路坎坷。在設計過程中不斷的發現問題,同時也不斷的解決問題,越來越發覺制作實物相比整體設計要難一些,實際制作過程中會遇到多種多樣的問題,要通過不斷的測試和實驗來解決。

5.2不足與進一步改進

當然,本設計也存在很多不足之處比如程序算法的設計不盡完美,各樣器件的參數不太準確等等,還有一些未發現的瑕疵之處,都需要在調試和實踐之后進行許多的改進。而且不能粗心大意,一開始就因單片機一腳沒連接導致單片機不起作用,浪費時間又浪費精力,因此,做任何事都要細心,要考慮的周全,不能因為一時的失敗而喪失信心,從哪里跌倒了要從哪里爬起來,只有有了這樣的精神,才會從問題中學到更多的知識,為我們以后更好的發展奠定了基礎。

最后,本太陽能自動跟蹤系統基本能滿足設計的要求,能實現按照所預先設計的思想運轉,各個模塊電路也都運行正常,但是由于本人的知識和水平的有限,在機械設計部分知識的欠缺,使得本系統在這方面有很大的不足。如果此系統能夠在機械設計上有較多改進,能夠加上液晶顯示模塊的話,相信本系統將會有很大的改進,在性能上會有很大的提高。

??參考文獻

?[1]李申生.太陽能[M].北京:北京人民教育出版社,1988:12-14.

?[2]王炳忠.太陽能—未來能源之星[M].北京:高教出版社,1990:20-21.

?[3]a b Philibert,Cedric(2005).”The ?Present and Future use of Solar Thermal Energy as a Primary Source of Energy ”.IEA.Archived from the original on[M] 2011-12-12.

?[4]言惠.太陽能21世紀的能源[J].上海大中型電機,2004,(04):16-18.

?[5]陳維,李戩洪.太陽能利用中的跟蹤控制方式的研究[J].能源工程,2003,(03):18-21.

?[6] 孫茵茵,鮑劍斌,王凡.太陽自動跟蹤器的研究[J].機械設計與制造,2005(7): 157-159

?[7] 陳維,李戩洪.太陽能利用中的跟蹤控制方式的研究[J].能源工程,2003,(03):18-21.

?[8] 歐陽名三,余世杰,沈玉樑.采用單片機的太陽能電池最大功率點跟蹤控制器[J]. 電子技術,2002(12):49-51

?[9] 王雪文.太陽能電池板自動跟蹤控制系統設計[J].西北大學學報(自然科學版). ?2004,34(2):163-164.

?[10]薛建國.基于單片機的太陽能電池自動追蹤系統的設計[J].長春師范學院學報,2005,24(3):26-30.

?[11]James F.Cox.Fundamentals of linear electronics:integrated and discrete. Cengage Learning. [M],91-. 26 June 2001[20 August 2011].

?[12]朱定華.單片機原理及接口技術[M].北京:電子工業出版社,2001:25-27.

?[13]周興華.光敏器件[J].電子世界,1999,(12):53-54.

?[14]范志剛.光電測試技術[M].北京:電子工業出版社,2004:24-26.

?[15] 余澤通,宋長源.硅光電池板自動跟蹤太陽機械裝置的設計[J].新鄉學院學報,2008(3):70-71

?[16] 李建庚.一種智能型全自動太陽跟蹤裝置的機械設計[J].太陽能學報,2003,24(03):330-333.?????????????????????????????????????????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/899520.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899520.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899520.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【硬件測試】基于FPGA的16QAM+幀同步系統開發與硬件片內測試,包含高斯信道,誤碼統計,可設置SNR

目錄 1.算法硬件測試效果 2.算法涉及理論知識概要 2.1 16QAM調制解調原理 2.2 幀同步 3.Verilog核心程序 4.開發板使用說明和如何移植不同的開發板 5.完整算法代碼文件獲得 1.算法硬件測試效果 本文是之前寫的文章: 《基于FPGA的16QAM幀同步系統verilog開發,包含testb…

多路徑 TCP 調度的另一面

參考前面的文章 一個原教旨的多路徑 TCP 和 MP-BBR 公平性推演&#xff0c;一直都破而不立&#xff0c;不能光說怎樣不好&#xff0c;還得說說現狀情況下&#xff0c;該如何是好。 如果 receiver 亂序重排的能力有限(拜 TCP 所賜)&#xff0c;如果非要在多路徑上傳輸 TCP&…

大數據學習(92)-spark詳解

&#x1f34b;&#x1f34b;大數據學習&#x1f34b;&#x1f34b; &#x1f525;系列專欄&#xff1a; &#x1f451;哲學語錄: 用力所能及&#xff0c;改變世界。 &#x1f496;如果覺得博主的文章還不錯的話&#xff0c;請點贊&#x1f44d;收藏??留言&#x1f4dd;支持一…

RAG - 五大文檔切分策略深度解析

文章目錄 切分策略1. 固定大小分割&#xff08;Fixed-Size Chunking&#xff09;2. 滑動窗口分割&#xff08;Sliding Window Chunking&#xff09;3. 自然語言單元分割&#xff08;Sentence/Paragraph Segmentation&#xff09;4. 語義感知分割&#xff08;Semantic-Aware Seg…

微信小程序引入TDesign組件后報錯一直提示路徑不對(Component is not found in path)的解決方法

最近在做微信小程序的項目&#xff0c;創建好項目后&#xff0c;按官方方式引入TDesign組件&#xff0c;但還是一直提示報錯&#xff08;Component is not found in path "miniprogram_npm/tdesign-miniprogram/button/button" (using by "pages/login/login&qu…

攔截器和過濾器詳解

在 Java Web 開發中&#xff0c;攔截器&#xff08;Interceptor&#xff09;和過濾器&#xff08;Filter&#xff09;是兩種常見的請求處理機制&#xff0c;它們用于對請求和響應進行預處理和后處理 1. 過濾器&#xff08;Filter&#xff09; 1.1 作用 Filter 主要用于對 請求…

【機械視覺】C#+VisionPro聯合編程———【六、visionPro連接工業相機設備】

【機械視覺】C#VisionPro聯合編程———【六、visionPro連接工業相機設備】 目錄 【機械視覺】C#VisionPro聯合編程———【六、visionPro連接工業相機設備】 前言&#xff1a; 連接步驟說明 一. 硬件連接 支持的相機接口類型&#xff1a; 連接步驟 2. 軟件配置 Visio…

筆記:基于環境語義的通感融合技術,將傳統通信由“被動接收”轉為“主動感知”

《基于計算機視覺的感知通信融合理論與關鍵技術研發進展》 介紹了聯合研發的基于環境語義的通感融合技術研發進展。 觀點&#xff1a;利用環境感知信息或環境語義輔助通信的通感融合技術成為6G重要方向之一 產出&#xff1a;基于環境感知的毫米波波束管理方案&#xff0c;并…

Kafka 多線程開發消費者實例

目前&#xff0c;計算機的硬件條件已經大大改善&#xff0c;即使是在普通的筆記本電腦上&#xff0c;多核都已經是標配了&#xff0c;更不用說專業的服務器了。如果跑在強勁服務器機器上的應用程序依然是單線程架構&#xff0c;那實在是有點暴殄天物了。不過&#xff0c;Kafka …

zynq7000 + ucos3 + lwip202_v1_2調試過程

1 現在裸機應用上驗證lwip 跑起來可能會報錯&#xff0c;看下面的鏈接解決 zynq 網卡Phy setup error問題 zynq 網卡Phy setup error問題-CSDN博客 2 ping同以后&#xff0c;在zynq上添加ucos系統 鏈接如下&#xff1a; ZYNQ移植uCOSIII_zynq ucos-CSDN博客 3 移植lwip協議…

Android7 Input(二)Linux 驅動層輸入事件管理

概述 在Linux系統中&#xff0c;將鍵盤&#xff0c;鼠標&#xff0c;觸摸屏等這類交互設備交由Linux Input子系統進行管理&#xff0c;Linux Input驅動子系統由于具有良好的和用戶空間交互的接口。因此Linux Input驅動子系統&#xff0c;不止于只管理輸入類型的設備。也可以將其…

Java內存中的Heap(堆)的作用

Java內存中的Heap&#xff08;堆&#xff09;的作用 在 Java 的內存模型中&#xff0c;Heap&#xff08;堆&#xff09; 是 JVM&#xff08;Java Virtual Machine&#xff09;管理的運行時數據區域之一&#xff0c;主要用于存儲程序運行過程中動態分配的對象和數據。它是 Java…

自行車模型與汽車模型的混合策略在自動駕駛中的多維度協同優化

基于動態架構與智能調度的自動駕駛系統設計 #mermaid-svg-1yvF1EzG07ktndY6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1yvF1EzG07ktndY6 .error-icon{fill:#552222;}#mermaid-svg-1yvF1EzG07ktndY6 .error-tex…

mysql.8.4.4--初始化報錯--libnuma.so.1缺失

錯誤 mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory解決辦法&#xff1a;下載相關依賴 sudo apt update sudo apt install numactl然后重新初始化 mysqld --initialize

【區塊鏈安全 | 第三篇】主流公鏈以太坊運行機制

文章目錄 1. 以太坊賬戶類型2. 以太坊網絡架構2.1 節點類型2.2 交易流程 3. 共識機制4. Gas 機制4.1 Gas 計算方式4.2 以太坊 EIP-1559 交易機制 5. EVM&#xff08;以太坊虛擬機&#xff09;5.1 EVM 結構5.2 EVM 指令5.3 EVM 運行機制 6. 智能合約7. ERC 代幣標準7.1 ERC-207.…

計算機三級信息安全部分英文縮寫

eip&#xff0c;指令寄存器&#xff0c;用于存放指向下一條將執行指令的指針&#xff0c;即返回地址棧頂指針esp基址指針寄存器EBP&#xff0c;基地址數據執行保護DEP(Data Execute Prevention)技術可以設置內存堆棧區的代碼為不可執行狀態&#xff0c;從而防范溢出后代碼的執行…

【Goalng】第九彈-----文件操作、JSON處理

&#x1f381;個人主頁&#xff1a;星云愛編程 &#x1f50d;所屬專欄&#xff1a;【Go】 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 長風破浪會有時&#xff0c;直掛云帆濟滄海 目錄 1.文件操作 1.1文件介紹 1.2.文件流 1.3.打開和關閉文件 1…

C#高級:啟動、中止一個指定路徑的exe程序

一、啟動一個exe class Program {static void Main(string[] args){string exePath "D:\測試\Test.exe";// 修改為你要運行的exe路徑StartProcess(exePath);}private static bool StartProcess(string exePath){// 創建一個 ProcessStartInfo 對象來配置進程啟動參…

猜猜我用的是哪個大模型?我的世界游戲界面簡單的模擬效果

我的羅里吧嗦的&#xff0c;根據小朋友的要求&#xff0c;邊聽邊寫邊輸入的提示詞&#xff1a; 請生成一段完整的在網頁中用html5和javascript代碼模擬“我的世界”中游戲場景的互動畫面&#xff0c;要求提供若干人物選項可以選擇&#xff0c;請自行選擇需要使用哪些庫或框架來…

AI知識補全(八):多模態大模型是什么?

名人說&#xff1a;人生如逆旅&#xff0c;我亦是行人。 ——蘇軾《臨江仙送錢穆父》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;AI知識補全&#xff08;七&#xff09;&#xff1a;AI Agent 智能…