使用ATtiny1614微處理器及其內(nèi)部數(shù)模轉(zhuǎn)換器(DAC)構(gòu)建的微型函數(shù)發(fā)生器。
硬件部件
- Microchip Technology ATtiny1614× 1個
軟件應(yīng)用程序和在線服務(wù)
- Arduino IDE
手動工具和制造機
- 3D打印機(通用)
- 烙鐵(通用)
ATtiny1614是新型ATtiny微處理器的一部分。其功能之一是內(nèi)置的數(shù)模轉(zhuǎn)換器或DAC。該項目開始時是一項實驗,目的是發(fā)現(xiàn)使用內(nèi)部DAC產(chǎn)生正弦波的局限性。
這個概念很簡單,填寫一個正弦波各個點的電壓電平表,然后通過DAC反復(fù)播放它們。考慮為一個完整的波形周期存儲256個點。要以1Hz的頻率輸出此波
形,需要在一秒鐘內(nèi)輸出256個點。因此,執(zhí)行此操作所需的時鐘速度為256Hz。在10Hz時,時鐘速度需要為2560Hz,在10kHz時,時鐘速度需要為2.56MHz。請注意,這意味著輸出點的“循環(huán)”必須能夠從查找表中讀取值并將其以1 / 2,560,000或0.39uS的速率發(fā)送到DAC。因此,處理器的速度將決定最大頻率是多少。
提高速度的一種方法是在查找表中每隔一秒鐘輸出一次語音。這種效果使速度加倍,但導(dǎo)致輸出效果不盡人意。我使用這種方法來允許振蕩器以比處理器可以提供的速度高得多的速度運行,但是輸出質(zhì)量因此受到了影響。
隨著更高頻率跳過更多點而導(dǎo)致輸出性能下降
構(gòu)建一個簡單的振蕩器模塊
因為ATtiny1614處理器僅采用SMD封裝,所以我決定在振蕩器PCB上主要使用SMD封裝。用戶界面是一個由MAX7219 LED驅(qū)動器和旋轉(zhuǎn)編碼器驅(qū)動的5位7段顯示模塊。該板上還包含用于每個旋轉(zhuǎn)編碼器觸點的施密特觸發(fā)器及其按動開關(guān)。這將消除機械觸點的反跳。