衡阳派盒市场营销有限公司

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>Arduino正弦波發生器

Arduino正弦波發生器

2022-11-08 | zip | 0.42 MB | 次下載 | 2積分

資料介紹

描述

概述:

有一天,我正在閱讀 Arduino 論壇,發現一位年輕人想知道如何使用 Arduino 制作正弦波發生器。顯然,他是一名工科學生,這是他的任務。有人告訴他這是不可能的,其他人說是的,但速度只有 50 Hz。由于我們公司為 Arduino 制作了 I2C DAC 開發板,因此我認為(對我而言)使用 DAC 板制作正弦波發生器會很有教育意義。

關于這個項目

信號發生器通常有各種可以產生的信號,如正弦波、方波和三角波。其他具有掃描功能和任意波形。這些是研討會中的有用工具。它們可用于測試音頻電路、運算放大器電路和測試電路響應。大多數現代函數發生器可以輕松輸出高達 1 Mhz 的頻率。

因此,雖然我沒想到基于 Arduino 的正弦波發生器會取代我的桌面函數發生器,但我認為看看如何設計一個正弦波發生器以及它的性能會很有趣。

poYBAGNo9HqAHOcnAAiqzeGE-vQ934.jpg
DAC PCB、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 秒的時間。

pYYBAGNo9H6AP9sYAAVU6upnQC0257.jpg
來自 DAC 的原始輸出
?

多么可怕的輸出!

看著原始輸出的圖片,您可能會想,“看起來多么糟糕的輸出。” 它有一個階梯圖案。那是因為這些是我們從 DAC 輸出的 32 個電壓。我們可以在表格中添加更多條目以使階梯模式變得更平滑,但這會降低最大頻率。我們可以做的另一件事是濾除在我們改變電壓電平時在波形中形成尖角的高頻。我使用了一個簡單的 RC 低通濾波器R = 10K,C = 0.1uF,截止頻率約為 160Hz。如您所見,它看起來好多了,并且更接近真正的正弦波。

poYBAGNo9IKAa7p-AAWUMQL4pPs244.jpg
過濾輸出
?

改進用戶界面

我允許用戶通過鍵盤修改延遲,方法是在收到“+”字符時將延遲增加一個單位,并在收到“-”字符時減少延遲。

我也不想將用戶鎖定在無限循環中,所以我檢查用戶是否發送了“e”或“E”(因為沒有什么比擔心區分大小寫更煩人的了)。當我得到它時,我將其視為退出請求并跳回主循環。我這樣做有點不雅,不考慮我將電壓輸出留在哪里。但請記住,我們只是在這里玩得開心。如果這是一個產品,我希望將輸出保持在已知狀態,可能是 0 伏。

poYBAGNo9ISAQrjzAAAo2HT1-nE509.jpg
這是主菜單(數字應該是連續的,但沒有很好地復制)
?

改進

我使用了一個任何人都可以在 Arduino 上編寫的簡單用戶界面。我相信你可以在你的電腦上使用 Python 或其他東西來制作一個非常酷的界面。我也沒有這樣做的具體原因,所以如果你有一個有實際需求的項目,你可能會更改代碼以適應。

演示

我制作了一個演示視頻,其中包含菜單中的所有選項,包括 Sinewave 輸出 (6) 并將其放在 Youtube 上。如果你跳到最后,你可以看到正弦波的演示:

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
百家乐2珠路投注法| 百家乐玩法开户彩公司| 百家乐官网网盛世三国| 百家乐官网赌博牌路分析| 百家乐官网猜大小规则| 百家乐官网技论坛| 最新百家乐官网网评测排名| 蓝盾百家乐官网网址| 极速百家乐官网真人视讯| 电子百家乐官网假在线哪| 罗盘24山图是什么| 太阳城百家乐杀祖玛| 百家乐游戏介绍与分析| 二八杠怎么玩| 六合彩公式| 网上百家乐官网骗人| 百家乐官网微笑玩法| 金殿百家乐官网的玩法技巧和规则| 罗盘24山度数| 百家乐tt娱乐平台| 大发888充值100| 棋牌下载| 太谷县| 百家乐官网赌大小| 百家乐浴盆博彩通排名| 百家乐正网| e世博官网| 百家乐官网赌博软件下载| 百家乐官网真人视频出售| 百家乐高额投注| 百家乐黏土筹码| 喜達博彩网| 丽都百家乐官网的玩法技巧和规则| 百家乐官网单机版的| 百家乐网络游戏平台| 百家乐和的打法| 边坝县| 百家乐官网遥控洗牌器| 上海百家乐赌博| 大发888手机版下载| 葡京百家乐官网玩法|