0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino波形發(fā)生器的制作

454398 ? 來源:工程師吳畏 ? 2019-08-26 11:34 ? 次閱讀

步驟1:技術(shù)注意事項(xiàng)

制作模擬信號(hào)

Arduino Uno和Nano的一個(gè)缺點(diǎn)是它沒有數(shù)字信號(hào) - 模擬(DAC轉(zhuǎn)換器,因此無法直接在引腳上輸出模擬電壓。一種解決方案是R2R梯形圖:8個(gè)數(shù)字引腳連接到電阻網(wǎng)絡(luò),因此可以達(dá)到256級(jí)輸出。通過直接端口訪問,Arduino可以通過一個(gè)命令同時(shí)設(shè)置8個(gè)引腳。對(duì)于電阻網(wǎng)絡(luò),需要9個(gè)值為R的電阻,8個(gè)值為2R的電阻。我使用10kOhm作為R的值,它將引腳的電流保持在0.5mA或更低。我猜R = 1kOhm也可以工作,因?yàn)锳rduino可以輕松地為每個(gè)引腳提供5mA電流,每端口40mA。重要的是R和2R電阻之間的比率確實(shí)為2.通過將2個(gè)R值的電阻串聯(lián)起來,總共25個(gè)電阻最容易實(shí)現(xiàn)。

相位累加器

生成波形然后重復(fù)向Arduino引腳重復(fù)發(fā)送一系列8位數(shù)字。波形存儲(chǔ)在256字節(jié)的數(shù)組中,并對(duì)該陣列進(jìn)行采樣并發(fā)送到引腳。輸出信號(hào)的頻率取決于通過陣列前進(jìn)的速度。一個(gè)強(qiáng)大,精確和優(yōu)雅的方法是使用相位累加器:32位數(shù)字以固定間隔遞增,我們使用8個(gè)最高有效位作為數(shù)組的索引

快速采樣

中斷允許在明確定義的時(shí)間采樣,但中斷的開銷將采樣頻率限制在~100kHz。無限循環(huán)更新相位,采樣波形并設(shè)置引腳需要42個(gè)時(shí)鐘周期,從而實(shí)現(xiàn)16MHz/42 = 381kHz的采樣率。旋轉(zhuǎn)或推動(dòng)旋轉(zhuǎn)編碼器會(huì)導(dǎo)致引腳更改和從環(huán)路中斷的中斷以更改設(shè)置(波形或頻率)。在此階段,重新計(jì)算陣列中的256個(gè)數(shù)字,以便不需要在主循環(huán)中執(zhí)行波形的實(shí)際計(jì)算??梢援a(chǎn)生的絕對(duì)最大頻率是190kHz的一半,但是每個(gè)周期只有兩個(gè)樣本,因此對(duì)形狀的控制不大。因此,接口不允許將頻率設(shè)置在100kHz以上。在50kHz時(shí),每個(gè)周期有7-8個(gè)采樣,并且在1.5kHz和低于所有存儲(chǔ)在陣列中的256個(gè)數(shù)據(jù)每個(gè)周期都被采樣。對(duì)于信號(hào)平滑變化的波形,例如正弦波,跳過樣本沒有問題。但對(duì)于具有窄尖峰的波形,例如占空比較小的方波,存在這樣的危險(xiǎn):對(duì)于高于1.5 kHz的頻率,單個(gè)樣本丟失會(huì)導(dǎo)致波形表現(xiàn)不盡如人意

頻率的準(zhǔn)確度

每個(gè)樣本相位遞增的次數(shù)與頻率成正比。因此,頻率可以設(shè)置為381kHz/2 ^ 32 = 0.089mHz的精度。實(shí)際上,幾乎不需要這種精度,因此界面限制以1mHz的步長設(shè)定頻率。頻率的絕對(duì)精度由Arduino時(shí)鐘頻率的精度決定。這取決于Arduino類型,但大多數(shù)指定頻率為16.000MHz,因此精度為~10 ^ -4。該代碼允許修改頻率和相位增量的比率,以校正16MHz假設(shè)的小偏差。

緩沖和放大

電阻網(wǎng)絡(luò)具有高輸出阻抗,因此如果負(fù)載是,則其輸出電壓會(huì)快速下降連接。這可以通過緩沖或放大輸出來解決。這里,緩沖和放大是用運(yùn)算放大器完成的。我使用的是LM358,因?yàn)槲矣幸恍?。它是一個(gè)慢速運(yùn)算放大器(壓擺率為每微秒0.5V),因此在高頻和高幅度時(shí)信號(hào)會(huì)失真。一個(gè)好處是它可以處理非常接近0V的電壓。然而,輸出電壓限制在低于軌道約2V,因此使用+ 5V功率將輸出電壓限制為3V。升壓模塊結(jié)構(gòu)緊湊,價(jià)格低廉,為運(yùn)算放大器提供+ 20V電壓,可產(chǎn)生電壓高達(dá)18V的信號(hào)。 (注意,原理圖說LTC3105,因?yàn)槟鞘俏以贔ritzing中發(fā)現(xiàn)的唯一升級(jí)。實(shí)際上我使用的是MT3608模塊,請(qǐng)參閱后續(xù)步驟中的圖片)。我選擇對(duì)R2R DAC的輸出應(yīng)用可變衰減,然后使用其中一個(gè)運(yùn)算放大器緩沖信號(hào)而不放大,另一個(gè)放大5.7,這樣信號(hào)可以達(dá)到約20V的最大輸出。輸出電流相當(dāng)有限,約為10mA,因此如果信號(hào)要驅(qū)動(dòng)大型揚(yáng)聲器或電磁鐵,則可能需要更強(qiáng)的放大器。

步驟2:所需組件

核心波形發(fā)生器

Arduino Uno或Nano

16x2 LCD顯示屏+ 20kOhm微調(diào)和100歐姆用于背光的串聯(lián)電阻器

5針旋轉(zhuǎn)編碼器(帶集成按鈕)

25個(gè)10kOhm電阻

用于緩沖器/放大器

LM358或其他雙運(yùn)算放大器

升壓模塊基于MT3608

50kOhm可變電阻

10kOhm電阻

47kOhm電阻

1μF電容

步驟3:構(gòu)造

我在7x9cm原型板上焊接了所有東西,如圖所示。由于所有電線都有點(diǎn)亂,我試著給帶正電壓紅色的引線和帶黑色的引線涂上顏色。

我使用的編碼器有5個(gè)引腳,一邊是3個(gè),2個(gè)是另一邊。有3個(gè)引腳的一側(cè)是實(shí)際的編碼器,帶有2個(gè)引腳的一側(cè)是集成按鈕。在3引腳側(cè),中央應(yīng)接地,另外兩個(gè)接到D10和D11。在2引腳側(cè),一個(gè)引腳應(yīng)連接到地,另一個(gè)應(yīng)連接到D12。

這是我做過的最丑陋的事情,但它有效。放入一個(gè)外殼會(huì)很好,但是現(xiàn)在額外的工作和成本并沒有真正證明它的合理性。 Nano和顯示器附有針頭。如果我要建一個(gè)新的,我不會(huì)再那樣做了。我沒有在板上放置連接器來拾取信號(hào)。相反,我用突出的銅線上的鱷魚引線拾取它們,標(biāo)記如下:

R - 來自R2R DAC的原始信號(hào)

B - 緩沖信號(hào)

A - 放大信號(hào)

來自引腳9的T - 定時(shí)器信號(hào)

G - 接地

+ - 來自升壓的正“高”電壓模塊

步驟4:代碼

代碼是一個(gè)Arduino草圖,附上并應(yīng)上傳到Arduino。

已有20個(gè)波形預(yù)定義。添加任何其他wave應(yīng)該是直截了當(dāng)?shù)摹U?qǐng)注意,隨機(jī)波填充具有隨機(jī)值的256值數(shù)組,但每個(gè)周期都會(huì)重復(fù)相同的模式。真正的隨機(jī)信號(hào)聽起來像噪聲,但這種波形聽起來更像是哨聲。

該代碼在引腳D9上用TIMER1設(shè)置1kHz信號(hào)。這對(duì)于檢查模擬信號(hào)的時(shí)序非常有用。這就是我如何計(jì)算時(shí)鐘周期數(shù)為42:如果我假設(shè)41或43,并產(chǎn)生1kHz信號(hào),它顯然與引腳D9上的信號(hào)具有不同的頻率。使用值42,它們完全匹配。

通常,Arduino每毫秒都會(huì)中斷以使用millis()函數(shù)跟蹤時(shí)間。這會(huì)干擾準(zhǔn)確的信號(hào)生成,因此禁用特定的中斷。

編譯器說:“Sketch使用7254字節(jié)(23%)的程序存儲(chǔ)空間。最大值為30720字節(jié)。全局變量使用483字節(jié)(23%)動(dòng)態(tài)內(nèi)存,為局部變量留下1565個(gè)字節(jié)。最大為2048個(gè)字節(jié)?!耙虼?,有足夠的空間可以使用更復(fù)雜的代碼。

步驟5:用法

只需通過Arduino的mini-USB線纜即可為設(shè)備供電納米。最好使用移動(dòng)電源,這樣它就不會(huì)與可能連接的設(shè)備發(fā)生意外的接地回路。

接通電源時(shí)會(huì)產(chǎn)生100Hz的正弦波。通過旋轉(zhuǎn)旋鈕,可以選擇其他20種波形中的一種。通過按下旋轉(zhuǎn),可以將光標(biāo)設(shè)置為頻率的任何數(shù)字,然后可以將其更改為所需的值。

可以使用電位計(jì)調(diào)節(jié)振幅,也可以使用緩沖器或可以使用放大的信號(hào)。

使用示波器檢查信號(hào)幅度非常有用,特別是當(dāng)信號(hào)向另一個(gè)設(shè)備提供電流時(shí)。如果汲取的電流太大,信號(hào)將被削波并且信號(hào)嚴(yán)重失真

對(duì)于非常低的頻率,輸出可以通過LED與10kΩ電阻串聯(lián)來顯示。用揚(yáng)聲器可以聽到音頻。確保將信號(hào)設(shè)置為非常小~0.5V,否則電流過高,信號(hào)開始削波。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 波形發(fā)生器
    +關(guān)注

    關(guān)注

    3

    文章

    294

    瀏覽量

    31466
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6477

    瀏覽量

    188114
收藏 1人收藏

    評(píng)論

    相關(guān)推薦

    是德33220A 函數(shù)任意波形發(fā)生器

    是德33220A 函數(shù)任意波形發(fā)生器 儀器特性 *33220A 函數(shù)發(fā)生器包括 USB、GPIB 和 LAN 接口 *用于信號(hào)設(shè)置視覺驗(yàn)證的圖形模式 *選件 001 提供支持同步信道的多元鏈路
    的頭像 發(fā)表于 02-07 15:55 ?88次閱讀

    任意波形發(fā)生器的基本架構(gòu)

    任意波形發(fā)生器(Arbitrary Waveform Generator,AWG)是從信號(hào)發(fā)生器演進(jìn)過來的一款信號(hào)源,其架構(gòu)的設(shè)計(jì)旨在提供高精度、高穩(wěn)定性和靈活可編程的波形信號(hào)輸出。
    的頭像 發(fā)表于 10-18 16:29 ?446次閱讀

    是德任意波形發(fā)生器應(yīng)用領(lǐng)域

    在現(xiàn)代電子設(shè)計(jì)與測(cè)試領(lǐng)域,任意波形發(fā)生器(AWG)作為一種強(qiáng)大的信號(hào)源,扮演著不可或缺的角色。它能夠生成各種復(fù)雜的模擬波形,滿足從基礎(chǔ)研究到復(fù)雜系統(tǒng)開發(fā)的廣泛應(yīng)用需求。是德科技作為全球領(lǐng)先的電子
    的頭像 發(fā)表于 10-18 16:25 ?281次閱讀
    是德任意<b class='flag-5'>波形</b><b class='flag-5'>發(fā)生器</b>應(yīng)用領(lǐng)域

    任意波形發(fā)生器和矢量信號(hào)發(fā)生器有什么區(qū)別

    在電子測(cè)試與測(cè)量領(lǐng)域,任意波形發(fā)生器(Arbitrary Waveform Generator,簡稱AWG)和矢量信號(hào)發(fā)生器是兩種常見的信號(hào)源設(shè)備。它們各自具有獨(dú)特的功能和應(yīng)用場(chǎng)景,對(duì)于工程師
    的頭像 發(fā)表于 05-30 16:02 ?3532次閱讀

    什么是任意波形發(fā)生器

    在電子測(cè)量、通信、科研以及音樂創(chuàng)作等多個(gè)領(lǐng)域中,波形發(fā)生器作為一種能夠產(chǎn)生特定波形信號(hào)的電子設(shè)備,發(fā)揮著不可或缺的作用。而任意波形發(fā)生器(A
    的頭像 發(fā)表于 05-30 15:53 ?1214次閱讀

    任意波形發(fā)生器波形生成方法

    任意波形發(fā)生器(Arbitrary Waveform Generator,簡稱AWG)作為電子測(cè)試領(lǐng)域的重要工具,能夠生成各種復(fù)雜波形信號(hào),以滿足不同的測(cè)試需求。在通信、音頻處理、雷達(dá)系統(tǒng)等領(lǐng)域
    的頭像 發(fā)表于 05-29 17:13 ?1101次閱讀

    什么是任意波形發(fā)生器?任意波形發(fā)生器是干什么用的?

    任意波形發(fā)生器是一種高度靈活的電子測(cè)試設(shè)備,它能夠生成幾乎任何類型的電信號(hào)波形
    的頭像 發(fā)表于 05-28 16:19 ?992次閱讀

    任意波形發(fā)生器的使用方法

    任意波形發(fā)生器(Arbitrary Waveform Generator,簡稱AWG)是現(xiàn)代電子測(cè)試與測(cè)量領(lǐng)域中不可或缺的重要工具。它能夠產(chǎn)生復(fù)雜、非周期性的波形信號(hào),為電子系統(tǒng)的研發(fā)、測(cè)試和生產(chǎn)
    的頭像 發(fā)表于 05-21 17:26 ?1664次閱讀

    任意波形發(fā)生器的定義、特點(diǎn)及應(yīng)用

    任意波形發(fā)生器(Arbitrary Waveform Generator,簡稱AWG)是電子測(cè)試與測(cè)量領(lǐng)域中的一種重要設(shè)備。隨著電子技術(shù)的飛速發(fā)展,對(duì)信號(hào)源的需求也日益復(fù)雜和多樣化。傳統(tǒng)的信號(hào)源設(shè)備
    的頭像 發(fā)表于 05-21 17:19 ?1453次閱讀

    任意波形發(fā)生器如何輸出電壓

    任意波形發(fā)生器(Arbitrary Waveform Generator,簡稱AWG)是一種電子測(cè)試設(shè)備,它能夠產(chǎn)生各種形狀、頻率和振幅的電壓信號(hào),以滿足電子電路、自動(dòng)控制以及教學(xué)實(shí)驗(yàn)等領(lǐng)域的多種
    的頭像 發(fā)表于 05-15 15:38 ?966次閱讀

    任意波形發(fā)生器與示波器怎么連接

    在電子測(cè)試領(lǐng)域中,任意波形發(fā)生器和示波器是兩種非常重要的測(cè)試設(shè)備。任意波形發(fā)生器能夠產(chǎn)生多種波形信號(hào),用于模擬各種實(shí)際環(huán)境中的信號(hào);而示波器
    的頭像 發(fā)表于 05-15 15:38 ?1170次閱讀

    任意波形發(fā)生器可以產(chǎn)生哪些波形

    在電子測(cè)試和測(cè)量領(lǐng)域,任意波形發(fā)生器是一種功能強(qiáng)大的電子測(cè)試設(shè)備。它能夠產(chǎn)生各種復(fù)雜且多變的波形信號(hào),為電子產(chǎn)品的設(shè)計(jì)、調(diào)試和測(cè)試提供了極大的便利。本文將詳細(xì)介紹任意波形
    的頭像 發(fā)表于 05-15 15:10 ?833次閱讀

    函數(shù)發(fā)生器、信號(hào)發(fā)生器波形發(fā)生器的區(qū)別

    在電子測(cè)試和測(cè)量領(lǐng)域,函數(shù)發(fā)生器、信號(hào)發(fā)生器波形發(fā)生器都是重要的測(cè)試儀器,它們各自具有獨(dú)特的功能和應(yīng)用場(chǎng)景。本文將詳細(xì)介紹這三種發(fā)生器的原
    的頭像 發(fā)表于 05-15 14:49 ?1817次閱讀

    波形發(fā)生器的詳細(xì)解析

    在電子工程、通信、教育與研究等多個(gè)領(lǐng)域中,波形發(fā)生器都扮演著不可或缺的角色。它作為一種重要的電子測(cè)試設(shè)備,可以產(chǎn)生各種類型、頻率、幅度和相位的電子信號(hào),為各種電子設(shè)備和系統(tǒng)的測(cè)試、測(cè)量、校準(zhǔn)和研究
    的頭像 發(fā)表于 05-15 14:39 ?1641次閱讀

    proteus波形發(fā)生器怎么找 proteus波形發(fā)生器叫什么

    Proteus是一款常用的電子電路仿真軟件,它提供了各種元件和工具,方便工程師進(jìn)行電路設(shè)計(jì)、仿真和調(diào)試。其中,Proteus波形發(fā)生器是一種常見的模塊,可用于產(chǎn)生各種類型的波形。本文將詳細(xì)介紹
    的頭像 發(fā)表于 02-23 16:49 ?8813次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品