資料介紹
描述
概述:
有一天,我正在閱讀 Arduino 論壇,發現一位年輕人想知道如何使用 Arduino 制作正弦波發生器。顯然,他是一名工科學生,這是他的任務。有人告訴他這是不可能的,其他人說是的,但速度只有 50 Hz。由于我們公司為 Arduino 制作了 I2C DAC 開發板,因此我認為(對我而言)使用 DAC 板制作正弦波發生器會很有教育意義。
關于這個項目
信號發生器通常有各種可以產生的信號,如正弦波、方波和三角波。其他具有掃描功能和任意波形。這些是研討會中的有用工具。它們可用于測試音頻電路、運算放大器電路和測試電路響應。大多數現代函數發生器可以輕松輸出高達 1 Mhz 的頻率。
因此,雖然我沒想到基于 Arduino 的正弦波發生器會取代我的桌面函數發生器,但我認為看看如何設計一個正弦波發生器以及它的性能會很有趣。
查找表
我決定最簡單的開始方法是創建一個值查找表,用于我的正弦波輸出。表中的值越多,輸出就越接近真正的正弦波。在創建要重復循環的查找表時,使用 2 的冪也非常方便。因此,8 個值是行不通的,而 128 個值可能會對 MCU 的能力造成負擔。我決定從 32 個值開始。
接下來,我需要決定提供多少分辨率。SF-5 基于 12 位器件 MCP4725 DAC。(注:您可以在 Tindie 上購買 SF-5,也可以購買設備的 DIP 封裝并直接放在您的無焊面包板上)。所以,它是 12 位。我打開一個 Excel 電子表格,記下從 0 到 31 的數字。我需要的下一列是以弧度表示的角度。這只是指數乘以 2 乘以 Pi 除以 32。下一列是信號的歸一化幅度。我只是在上一欄中取了角度的正弦值。這產生了一個峰峰值為 2 個單位且以零為中心的信號。它的最大值為+1,最小值為-1。
輸出范圍為 0 到 5V,我需要一個以 2.5V 為中心且幅度為 ± 2.5V 的信號。下一列只是將信號乘以 2.5。然后我們將其偏移 2.5V。信號顯示最大值為 5V,最小值為 0V。完美的!
現在我們只需要把它轉換成一個 12 位的數字放到我們的表中。由于我們希望電壓為 5V 時的值為 4095,因此我們乘以 4095 并除以 5。要檢查,請查看第 8 行。電壓輸出為 5V,位數為 4095。
桌子
32 個 2 字節的數字不是很多數據,可以很容易地存儲在 RAM 中,但這是一次學習體驗,我想學習如何將表存儲在 FLASH 中并根據需要讀取它。優點是有一天我會有太多的數據要放入 RAM 并且需要使用 FLASH,所以這是學習的好時機。命令是 PROGMEM,存儲數據的語句是:
const PROGMEM unsigned int mysine [] = {TABLE}
編碼
我編寫了一個簡單的循環程序,在串行線路上查找用戶輸入。在我的情況下,當看到數字 6 時,它會跳轉到通過 I2C 總線將表格轉儲到 DAC 的代碼中。在我第一次想到我可以索引我的數組并讀取數據之前從未直接使用過 FLASH。RTFM – 閱讀精美手冊。從 FLASH 讀取時,您使用不同的命令 -
temp = pgm_read_word_near(mysine + i);
這將從數組中讀取一個 16 位字或一個條目。我從 i=0 開始并增加到 31,然后再次將其設置回零(i = I & 0x1F;)。很高興我們可以從 FLASH 中讀取字,但我們只能以字節寫入 DAC。我們需要對我們的數據進行一些編輯。
首先發送 MSB。前兩位是速度,接下來的兩位是掉電選擇模式,接下來的 4 位是數據。使用 Wire.write 命令將其發送出去。接下來,我們發送低 8 位數據,同樣使用 Wire.write 命令。
頻率怎么樣?
當您進入一個循環并連續發送 32 個表條目時,這是您可以執行的最快速度和最高頻率。我得到的頻率是92Hz。然后我想調整頻率,我決定在每個表條目之后添加一個延遲()。每個周期將是 32 毫秒(大約)。因此,后續頻率為 23Hz、13Hz、9Hz。您最多可以延遲 256。我認為這給了我 8 秒的時間。
多么可怕的輸出!
看著原始輸出的圖片,您可能會想,“看起來多么糟糕的輸出。” 它有一個階梯圖案。那是因為這些是我們從 DAC 輸出的 32 個電壓。我們可以在表格中添加更多條目以使階梯模式變得更平滑,但這會降低最大頻率。我們可以做的另一件事是濾除在我們改變電壓電平時在波形中形成尖角的高頻。我使用了一個簡單的 RC 低通濾波器;R = 10K,C = 0.1uF,截止頻率約為 160Hz。如您所見,它看起來好多了,并且更接近真正的正弦波。
改進用戶界面
我允許用戶通過鍵盤修改延遲,方法是在收到“+”字符時將延遲增加一個單位,并在收到“-”字符時減少延遲。
我也不想將用戶鎖定在無限循環中,所以我檢查用戶是否發送了“e”或“E”(因為沒有什么比擔心區分大小寫更煩人的了)。當我得到它時,我將其視為退出請求并跳回主循環。我這樣做有點不雅,不考慮我將電壓輸出留在哪里。但請記住,我們只是在這里玩得開心。如果這是一個產品,我希望將輸出保持在已知狀態,可能是 0 伏。
改進
我使用了一個任何人都可以在 Arduino 上編寫的簡單用戶界面。我相信你可以在你的電腦上使用 Python 或其他東西來制作一個非常酷的界面。我也沒有這樣做的具體原因,所以如果你有一個有實際需求的項目,你可能會更改代碼以適應。
演示
我制作了一個演示視頻,其中包含菜單中的所有選項,包括 Sinewave 輸出 (6) 并將其放在 Youtube 上。如果你跳到最后,你可以看到正弦波的演示:
?
- FPGA實現基于ROM的正弦波發生器
- LT1037演示電路-1 kHz正弦波發生器
- LTC6258LTC6992演示電路-低功耗正弦波發生器
- 使用FPGA實現ROM的正弦波發生器詳細資料說明 16次下載
- DAC0832波形發生器protues仿真 正弦波 方波 三角波 183次下載
- 波形發生器protues仿真 PCF8591仿真源程序 正弦波 229次下載
- 正弦波信號發生器的設計 55次下載
- 方波_三角波_正弦波_鋸齒波發生器_課程設計報告 206次下載
- 基于AD9951射頻正弦波信號發生器的設計
- 正弦波發生電路基礎
- 使用集成運放LM324制作正弦波發生器
- 使用集成運放LM324制作正弦波發生器
- 正弦波信號發生器的設計及電路圖
- 正弦波信號發生器VHDL源代碼
- dsp正弦波發生器
- 正弦波控制器速度怎么解碼 821次閱讀
- 深入了解信號發生器類型及特點 1009次閱讀
- 基于STM32的波形發生器設計 3686次閱讀
- 分享三個簡單的正弦波發生器電路 2.2w次閱讀
- 鎖定同步正弦發生器覆蓋三十倍頻程 1645次閱讀
- 幾乎純DDS正弦波調發生器 2869次閱讀
- 正弦波到方波轉換器電路圖解析 1.8w次閱讀
- 正弦波逆變器的判定方法_如何將正弦波變成方波 1.6w次閱讀
- 正弦波逆變器和修正波有什么不同 2.5w次閱讀
- 正弦波濾波器原理_正弦波濾波器的作用 2.7w次閱讀
- 正弦波逆變器原理_正弦波逆變器的優缺點 3.4w次閱讀
- 正弦波逆變器介紹_正弦波逆變器工作原理 5w次閱讀
- 純正弦波逆變器哪個好_純正弦波逆變器排行榜 9.3w次閱讀
- 正弦波信號發生器基本原理與設計 8.3w次閱讀
- 一種新型的正弦信號發生器的設計與實現 2942次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多