注:1.這篇文章斷斷續續寫了很久,畫圖技術也不精,難免錯漏,大家湊合看.有問題可以留言. 2.論壇排版把我的代碼縮進全弄沒了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調制波,通過調整輸出信號占空比,從而達到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調制波。分辨率8 位即2 的8 次方等于 256 級精度。但是有時候我們會覺得6 個PWM 引腳不夠用。比如我們做一個10 路燈調光, 就需要有10 個PWM 腳。Arduino Duemilanove 2009 有13 個數字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。 二、Arduino 軟件模擬PWM Arduino PWM 調壓原理:PWM 有好幾種方法。而Arduino 因為電源和實現難度限制,一般 使用周期恒定,占空比變化的單極性PWM。 通過調整一個周期里面輸出腳高/低電平的時間比(即是占空比)去獲得給一個用電器不同 的平均功率。 如圖所示,假設PWM 波形周期1ms(即1kHz),分辨率1000 級。那么需要一個信號時間 精度1ms/1000=1us 的信號源,即1MHz。所以說,PWM 的實現難點在于需要使用很高頻的 信號源,才能獲得快速與高精度。下面先由一個簡單的PWM 程序開始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 這是一個軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測試此代碼。 程序解析:由for 循環可以看出,完成一個PWM 周期,共循環255 次。 假設bright=100 時候,在第0~100 次循環中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平; 然后第100 到255 次循環里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無 論輸出高低電平都保持30us。 那么說,如果bright=100 的話,就有100 次循環是高電平,155 次循環是低電平。 如果忽略指令執行時間的話,這次的PWM 波形占空比為100/255,如果調整bright 的值, 就能改變接在D13 的LED 的亮度。 這里設置了每次for 循環之后,將bright 加一,并且當bright 加到255 時歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應該是大家想的比較多的想法。 然后介紹一個簡單一點的。思維風格完全不同。不過對于驅動一個LED 來說,效果與上面 的程序一樣。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,這段代碼少了一個For 循環。它先輸出一個高電平,然后維持(bright*30)us。然 后輸出一個低電平,維持時間((255-bright)*30)us。這樣兩次高低就能完成一個PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運行起來不占CPU 時間,所以軟件模擬一個引腳的PWM 完全沒有實用意義。我們軟件模擬的價值在于:他能將任意的數字IO 口變成PWM 引腳。 當一片Arduino 要同時控制多個PWM,并且沒有其他重任務的時候,就要用軟件PWM 了。 多引腳PWM 有一種下面的方式: int brights[14] = {0}; //定義14個引腳的初始亮度,可以隨意設置 int StartPWMPin = 0, EndPWMPin = 13; //設置D0~D13為PWM 引腳 int PWMResolution = 255; //設置PWM 占空比分辨率 void setup() { //定義所有IO 端輸出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //隨便定義個初始亮度,便于觀察 brights[ i ] = random(0, 255); } } void loop() { //這for 循環是為14盞燈做漸亮的。每次Arduino loop()循環, //brights 自增一次。直到brights=255時候,將brights 置零重新計數。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是計數一個PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個PWM 周期均遍歷所有引腳 { if(i < brights[j])\ 所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調整LED 亮度的話,我們用64 級精度就行。這樣速度就是2x32x64=4ms。就不會閃了。
上傳時間: 2013-10-08
上傳用戶:dingdingcandy
pcb經驗(耗費多年整理于論壇)
上傳時間: 2013-11-06
上傳用戶:jcljkh
于博士CADENCE視頻教程之相關配套資料,個人覺得講的很不錯。
上傳時間: 2013-10-30
上傳用戶:zhang97080564
這個 天正建筑8.5破解版支持最新AutoCAD2012 CAD即計算機輔助設計(CAD-Computer Aided Design) 利用計算機及其圖形設備幫助設計人員進行設計工作 。簡稱cad。 在工程和產品設計中,計算機可以幫助設計人員擔負計算、信息存儲和制圖等項工作。CAD還包含:電氣CAD、外貿結算CAD、加拿大元、冠狀動脈性心臟病、計算機輔助診斷、服裝CAD等含義。 天正建筑8.5/8.0注冊機是一款通用的天正建筑注冊機,可以用于天正建筑8.5注冊算號,以及天正建筑8.0等低版本注冊算號 下面順便提供兩組免費天正建筑注冊碼 機器碼:nf0def108c175002682b52cda 注冊碼:2F1091EF97ADFD859F077AE93D14E388CBD52D128DBF8395DC 機器碼:N984BE1A8F64990004E4B4CB4 注冊碼:2F6F48D81D9E4A856BFBBF4798248713860848FC7DCCC4372C 使用方法:將壓縮包全部下載后解壓,安裝雖然顯示是試用版,但等下破解后就是正式版了! 加壓安裝后,打開軟件,會提示輸入注冊碼,這時打開注冊機,選天正建筑8.0破解,將授權碼復制到注冊機中,再點計算注冊碼,將計算出的注冊碼,復制到之前打開的天正軟件中,即注冊完成!! 1、墻、柱、墻體造型、凸窗擋板、門窗套全面支持繪保溫層。 2、門窗系統大幅度改進。新增在同一洞口插入多個門窗、門窗編號 利用AutoCAD圖形平臺開發的最新一代建筑軟件TArch 8.5,繼續以先進的建筑對象概念服務于建筑施工圖設計,成為建筑CAD的首選軟件,同時天正建筑對象創建的建筑模型已經成為天正日照、節能、給排水、暖通、電氣等系列軟件的數據來源,很多三維渲染圖也基于天正三維模型制作而成。 2008年9月天正建筑TArch軟件通過建設部科技成果的評估,在建筑設計領域二次開發方面達到國際先進水平。 天正表格使用了先進的表格對象,其交互界面類似Excel的電子表格編輯界面。表格對象具有層次結構,用戶可以完整地把握如何控制表格的外觀表現,制作出有個性化的表格。更值得一提的是,天正表格還實現了與Excel的數據雙向交換,使工程制表同辦公制表一樣方便高效。 強大的圖庫管理系統和圖塊功能 天正的圖庫管理系統采用先進的編程技術,支持貼附材質的多視圖圖塊,支持同時打開多個圖庫的操作。 【天正建筑8.5破解版特色功能】 主要包括交互技術、圖形變換技術、曲面造型和實體造型技術等。 在計算機輔助設計中,交互技術是必不可少的。交互式cad系統, 指用戶在使用計 cad系統 算機系統進行設計時,人和機器可以及時地交換信息。采用交互式系統,人們可以邊構思 、邊打樣、邊修改,隨時可從圖形終端屏幕上看到每一步操作的顯示結果,非常直觀。 圖形變換的主要功能是把用戶坐標系和圖形輸出設備的坐標系聯系起來;對圖形作平移、旋轉、縮放、透視變換 ;通過矩陣運算來實現圖形變換。 計算機設計自動化 計算機自身的cad,旨在實現計算機自身設計和研制過程的自動化或半自動化。研究內容包括功能設計自動化和組裝設計自動化,涉及計算機硬件描述語言、系統級模擬、自動邏輯綜合、邏輯模擬、微程序設計自動化、自動邏輯劃分、自動布局布線,以及相應的交互圖形系統和工程數據庫系統。集成電路 cad有時也列入計算機設計自動化的范圍
上傳時間: 2013-10-14
上傳用戶:wangrong
中望CAD2012是中望公司推出的最新CAD平臺產品,能夠兼容主流的CAD文件格式,并且簡單易學、操作方便,廣泛運用于機械、電子、建筑等行業的設計部門。中望CAD在技術上已處于國際先進水品,軟件的功能、速度、穩定性在同類產品種領先,獲得了廣大用戶的支持和信任。 中望CAD2012特色功能 參數化設計功能 類似于三維繪圖軟件中的設計方式,繪制的圖形可以通過幾何位置和尺寸來進行約束,從而達到最終的圖形效果,并且可以添加尺寸相關參數,以獲得更為準確的結果。 表格功能 提供基本的表格功能,可以直接創建表格并能更改表格的大小以適應填寫需求,表格中除了可以填寫文字,也可以填入字段。中望CAD中的表格可以導出為Excel,也可以從Excel將表格導入到CAD中。 圖紙比較 圖紙比較功能能夠對兩張相似的圖紙進行對比,不同的部分用彩色標識出以便用戶識別。該功能特別適用在圖紙的審核和修改上,只需一步即可辨別圖紙。 幫助系統 中望CAD提供完整的幫助系統,動畫教程也嵌入幫助中,為用戶提供詳盡的功能解釋。同時提供在線幫助,對于幫助的修改部分,可以通過網絡及時查閱到,在線幫助系統支持簡體中文,繁體中文,英文以及日文四個語言版本。 中望CAD2012新功能 900個細節改善 中望CAD對900多個細節進行了改善,使得軟件在功能完整、運行穩定性、交互方式、二次開發接口等方面有了進一步的提高,軟件更貼近客戶的使用方式,實際處理圖形的能力更強。 ECW圖片插入 在圖片插入功能中,增加對ECW格式圖片的支持,可以將該類文件以光柵圖像插入,同其它圖片格式一樣,插入后的圖像可以進行簡單編輯。 中望CAD附加工具 中望CAD安裝包中新增一些實用功能,這些功能在一些設計領域會經常用到。 引線標注XY坐標 利用引線的方式,標注出點的XY坐標值。采用這種方式可以在復雜標注的狀況下減少標注數量,是設計師較為常用的表達方式。
上傳時間: 2014-01-18
上傳用戶:yupw24
Verilog_實現任意占空比、任意分頻的方法
上傳時間: 2013-11-20
上傳用戶:ccxzzhm
伺服舵機作為基本的輸出執行機構廣泛應用于 遙控航模以及人形機器人的控制中。舵機是一種位 置伺服的驅動器,其控制信號是PWM信號.,利 用占空比的變化改變舵機的位置,也可使用FPGA、 模擬電路、單片機來產生舵機的控制信號舊。應 用模擬電路產生PWM信號,應用的元器件較多, 會增加電路的復雜程度;若用單片機產生PWM信 號,當信號路數較少時單片機能滿足要求,但當 PWM信號多于4路時,由于單片機指令是順序執 行的,會產生較大的延遲,從而使PWM信號波形 不穩,導致舵機發生顫振。
上傳時間: 2013-11-20
上傳用戶:cjh1129
介紹了多入多出-正交頻分復用(MIMO-OFDM)系統,并分析了其發射機的實現原理。充分利用Altera公司Stratix系列現場可編程門陣列(FPGA)芯片和IP(知識產權)核,提出了一種切實可行的MIMO-OFDM基帶系統發射機的FPGA實現方法。重點論述了適合于FPGA實現的對角空時分層編碼(D-BLAST)的方法和實現原理以及各個主要模塊的工作原理。并給出了其在ModelSim環境下的仿真結果。結果表明,本設計具有設計簡單、快速、高效和實時性好等特點。
上傳時間: 2013-11-01
上傳用戶:wpt
通用陣列邏輯GAL實現基本門電路的設計 一、實驗目的 1.了解GAL22V10的結構及其應用; 2.掌握GAL器件的設計原則和一般格式; 3.學會使用VHDL語言進行可編程邏輯器件的邏輯設計; 4.掌握通用陣列邏輯GAL的編程、下載、驗證功能的全部過程。 二、實驗原理 1. 通用陣列邏輯GAL22V10 通用陣列邏輯GAL是由可編程的與陣列、固定(不可編程)的或陣列和輸出邏輯宏單元(OLMC)三部分構成。GAL芯片必須借助GAL的開發軟件和硬件,對其編程寫入后,才能使GAL芯片具有預期的邏輯功能。GAL22V10有10個I/O口、12個輸入口、10個寄存器單元,最高頻率為超過100MHz。 ispGAL22V10器件就是把流行的GAL22V10與ISP技術結合起來,在功能和結構上與GAL22V10完全相同,并沿用了GAL22V10器件的標準28腳PLCC封裝。ispGAl22V10的傳輸時延低于7.5ns,系統速度高達100MHz以上,因而非常適用于高速圖形處理和高速總線管理。由于它每個輸出單元平均能夠容納12個乘積項,最多的單元可達16個乘積項,因而更為適用大型狀態機、狀態控制及數據處理、通訊工程、測量儀器等領域。ispGAL22V10的功能框圖及引腳圖分別見圖1-1和1-2所示。 另外,采用ispGAL22V10來實現諸如地址譯碼器之類的基本邏輯功能是非常容易的。為實現在系統編程,每片ispGAL22V10需要有四個在系統編程引腳,它們是串行數據輸入(SDI),方式選擇(MODE)、串行輸出(SDO)和串行時鐘(SCLK)。這四個ISP控制信號巧妙地利用28腳PLCC封裝GAL22V10的四個空腳,從而使得兩種器件的引腳相互兼容。在系統編程電源為+5V,無需外接編程高壓。每片ispGAL22V10可以保證一萬次在系統編程。 ispGAL22V10的內部結構圖如圖1-3所示。 2.編譯、下載源文件 用VHDL語言編寫的源程序,是不能直接對芯片編程下載的,必須經過計算機軟件對其進行編譯,綜合等最終形成PLD器件的熔斷絲文件(通常叫做JEDEC文件,簡稱為JED文件)。通過相應的軟件及編程電纜再將JED數據文件寫入到GAL芯片,這樣GAL芯片就具有用戶所需要的邏輯功能。 3.工具軟件ispLEVER簡介 ispLEVER 是Lattice 公司新推出的一套EDA軟件。設計輸入可采用原理圖、硬件描述語言、混合輸入三種方式。能對所設計的數字電子系統進行功能仿真和時序仿真。編譯器是此軟件的核心,能進行邏輯優化,將邏輯映射到器件中去,自動完成布局與布線并生成編程所需要的熔絲圖文件。軟件中的Constraints Editor工具允許經由一個圖形用戶接口選擇I/O設置和引腳分配。軟件包含Synolicity公司的“Synplify”綜合工具和Lattice的ispVM器件編程工具,ispLEVER軟件提供給開發者一個簡單而有力的工具。
上傳時間: 2013-11-17
上傳用戶:看到了沒有
PCB 被動組件的隱藏特性解析 傳統上,EMC一直被視為「黑色魔術(black magic)」。其實,EMC是可以藉由數學公式來理解的。不過,縱使有數學分析方法可以利用,但那些數學方程式對實際的EMC電路設計而言,仍然太過復雜了。幸運的是,在大多數的實務工作中,工程師并不需要完全理解那些復雜的數學公式和存在于EMC規范中的學理依據,只要藉由簡單的數學模型,就能夠明白要如何達到EMC的要求。本文藉由簡單的數學公式和電磁理論,來說明在印刷電路板(PCB)上被動組件(passivecomponent)的隱藏行為和特性,這些都是工程師想讓所設計的電子產品通過EMC標準時,事先所必須具備的基本知識。導線和PCB走線導線(wire)、走線(trace)、固定架……等看似不起眼的組件,卻經常成為射頻能量的最佳發射器(亦即,EMI的來源)。每一種組件都具有電感,這包含硅芯片的焊線(bond wire)、以及電阻、電容、電感的接腳。每根導線或走線都包含有隱藏的寄生電容和電感。這些寄生性組件會影響導線的阻抗大小,而且對頻率很敏感。依據LC 的值(決定自共振頻率)和PCB走線的長度,在某組件和PCB走線之間,可以產生自共振(self-resonance),因此,形成一根有效率的輻射天線。在低頻時,導線大致上只具有電阻的特性。但在高頻時,導線就具有電感的特性。因為變成高頻后,會造成阻抗大小的變化,進而改變導線或PCB 走線與接地之間的EMC 設計,這時必需使用接地面(ground plane)和接地網格(ground grid)。導線和PCB 走線的最主要差別只在于,導線是圓形的,走線是長方形的。導線或走線的阻抗包含電阻R和感抗XL = 2πfL,在高頻時,此阻抗定義為Z = R + j XL j2πfL,沒有容抗Xc = 1/2πfC存在。頻率高于100 kHz以上時,感抗大于電阻,此時導線或走線不再是低電阻的連接線,而是電感。一般而言,在音頻以上工作的導線或走線應該視為電感,不能再看成電阻,而且可以是射頻天線。
上傳時間: 2013-11-16
上傳用戶:極客