2021-08-23 23:51:05 索煒達(dá)電子 1417
項(xiàng)目編號(hào):E533
文件大?。?5M
源碼說(shuō)明:帶中文注釋
開(kāi)發(fā)環(huán)境:C編譯器
簡(jiǎn)要概述
示波器Pro版本,在原版的基礎(chǔ)上,擴(kuò)展了測(cè)量負(fù)電壓的功能,更新了UI設(shè)計(jì),屏幕升級(jí)為1.3寸OLED屏。你可以在doc文件夾,獲取設(shè)計(jì)報(bào)告和相關(guān)的芯片數(shù)據(jù)手冊(cè)。
3D仿真效果圖:
2D仿真效果圖:
實(shí)物效果圖:
系統(tǒng)架構(gòu)
Mini示波器采用了一套成本低廉但高效的硬件,配合層次化的軟件框架,實(shí)現(xiàn)對(duì)常規(guī)低頻信號(hào)波形的采集、分析、顯示。
硬件部分的主要工作有:電源管理(5V、2.5V、-5V);對(duì)信號(hào)的衰減、限幅、偏置。最后將處理好的電壓信號(hào)送入MCU的ADC外設(shè),進(jìn)行數(shù)據(jù)采集。由于ADC外設(shè)只能采集正電壓,因此我們通過(guò)增加偏置電壓的方式,將負(fù)電壓抬高來(lái)采集。
軟件部分的主要工作有:底層驅(qū)動(dòng)SDK框架、ADC濾波算法、波形數(shù)據(jù)處理、人機(jī)交互界面。SDK提供基本的模塊和外設(shè)驅(qū)動(dòng)支持,濾波算法去除噪聲和毛刺,波形處理計(jì)算電壓值和頻率,并為波形顯示做準(zhǔn)備;人機(jī)交互界面提供屏幕顯示(OLED屏)和操作方式(旋鈕和按鍵)。
與原版對(duì)比
這一版本的Mini示波器-Pro,相比于原版對(duì)硬件部分做了很大擴(kuò)展,使其可以測(cè)到負(fù)電壓。軟件部分修改了有30%,主要是在數(shù)據(jù)處理和UI顯示部分。
調(diào)參教程
示波器采樣的原理與原版一致,但是由于硬件上加了許多電路,導(dǎo)致信號(hào)呈非線性變化,因此需要對(duì)系統(tǒng)計(jì)算的結(jié)果進(jìn)行處理。
這里提供兩種辦法:
1. 對(duì)原采樣方法進(jìn)行改進(jìn)
原版的采樣模式,是利用了芯片自帶的12位ADC進(jìn)行采樣,所以可以對(duì)ADC的采樣函數(shù)進(jìn)行優(yōu)化。原版使用了查詢(xún)法,通過(guò)循環(huán)等待采樣完成標(biāo)志位,獲取采樣結(jié)果。
頻率的計(jì)算,是根據(jù)不同的采樣時(shí)間(delay延時(shí)等待法),來(lái)分段計(jì)算頻率值。這里可以通過(guò)定時(shí)器來(lái)控制采樣時(shí)間,提高精確度。
2. 對(duì)原采樣結(jié)果上進(jìn)行擬合
直接在原版的采樣結(jié)果上進(jìn)行數(shù)據(jù)擬合,這樣做比較快捷,也是我用的方法(主要是趕時(shí)間)。但是誤差較大,且需要測(cè)算的數(shù)據(jù)量有一點(diǎn)多。
具體的方法是,首先記錄原采樣的結(jié)果,電壓幅度的刻度為0.5V,范圍是從0V到20V。 頻率的刻度為1KHz,范圍是從0KHZ到20KHz。將測(cè)算的結(jié)果與輸入的信號(hào),一一對(duì)應(yīng)擬合出計(jì)算公式,我采用的Excel來(lái)操作,選擇的是對(duì)數(shù)函數(shù)來(lái)擬合,數(shù)據(jù)有誤差。
具體需要擬合的函數(shù)在chart.c文件中,函數(shù)名稱(chēng)如下:
/* 需要擬合數(shù)據(jù)的函數(shù)如下:*/
void getWaveFreq(void);
void AnalyseData(void);
/* 擬合數(shù)據(jù)的結(jié)果存放在如下變量:*/
VMax_m /* 存放電壓最大值 */
VMin_m /* 存放電壓最小值 */
Mvoltage /* 存放電壓平均值 */
WaveFreq /* 存放頻率值 */
開(kāi)發(fā)者在調(diào)參的時(shí)候,可以屏蔽我的擬合代碼,進(jìn)行原方法采樣結(jié)果的記錄,然后進(jìn)行數(shù)據(jù)擬合。我會(huì)在代碼中進(jìn)行標(biāo)注,方便開(kāi)發(fā)者查找和修改。
需要改進(jìn)的地方
1.硬件的性能還沒(méi)有全部發(fā)揮出來(lái),測(cè)量幅度還可以更高。 2.MCU的性能還沒(méi)有榨干,比如沒(méi)有用上硬件SPI,提高屏幕刷新率。
開(kāi)發(fā)后記
1.最一開(kāi)始設(shè)想的方案,我是想用上我寫(xiě)的AntOS操作系統(tǒng)的,但是初版操作系統(tǒng),為合作式調(diào)度,實(shí)際使用的過(guò)程中,并沒(méi)有達(dá)到我的預(yù)期效果,所以選擇在老劉示波器的基礎(chǔ)工程上修改和優(yōu)化。
2.硬件設(shè)計(jì)主要參考了B站唐老師講電賽大佬提供的方案,實(shí)際使用的過(guò)程中,我又微調(diào)了一部分,建議大家可以去閱讀一下硬件電路中使用的幾種芯片數(shù)據(jù)手冊(cè),這樣心里更有底,不然遇到問(wèn)題不好排查。
3.大多數(shù)元器件,我用的都是0603的封裝,這樣可以讓PCB板設(shè)計(jì)的更小巧更緊湊,但是不好焊接。
4.下一版本,我將使用STC8AxD4作為主控(因?yàn)橛蠨MA),軟件上使用我現(xiàn)在編寫(xiě)AntOS(已支持搶占式調(diào)度),進(jìn)一步提高示波器的性能。
目錄│文件列表:
└ mini-dso-pro
├ doc
│ ├ datasheet
│ │ └ STC8A-STC8F-20210308.pdf
│ ├ image
│ │ │ 2D反面.png
│ │ │ 2D正面.png
│ │ │ 3D正面.png
│ │ │ 實(shí)物圖正面.png
│ │ └ 系統(tǒng)原理圖.png
│ └ report
│ └ MinDSO-Pro設(shè)計(jì)報(bào)告.doc
├ pcb
│ │ BOM.xlsx
│ │ Mini示波器-Pro-sch.pdf
│ └ Mini示波器-Pro-pcb
│ │ Gerber_BoardOutline.GKO
│ │ Gerber_BottomLayer.GBL
│ │ Gerber_BottomSilkLayer.GBO
│ │ Gerber_BottomSolderMaskLayer.GBS
│ │ Gerber_Drill_NPTH.DRL
│ │ Gerber_Drill_PTH.DRL
│ │ Gerber_TopLayer.GTL
│ │ Gerber_TopPasteMaskLayer.GTP
│ │ Gerber_TopSilkLayer.GTO
│ │ Gerber_TopSolderMaskLayer.GTS
│ └ PCB下單必讀.txt
├ project
│ └ MiniDSO-Pro v1.0
│ │ adc_stc8.c
│ │ adc_stc8.h
│ │ bmp.h
│ │ chart.c
│ │ chart.h
│ │ Clear.bat
│ │ config_stc.h
│ │ delay.c
│ │ delay.h
│ │ EEPROM.bin
│ │ eeprom.c
│ │ eeprom.h
│ │ global.c
│ │ global.h
│ │ main.c
│ │ Mini DSO.uvgui.Administrator
│ │ Mini DSO.uvopt
│ │ Mini DSO.uvproj
│ │ settings.c
│ │ settings.h
│ │ ssd1306.c
│ │ ssd1306.h
│ │ ssd1306font.h
│ │ STARTUP.A51
│ ├ .vscode
│ │ │ c_cpp_properties.json
│ │ │ keil-assistant.log
│ │ │ uv4.log
│ │ └ uv4.log.lock
│ ├ Objects
│ │ │ Mini_DSO
│ │ └ Mini_DSO.hex
│ └ uart
│ │ drv_uart.c
│ └ drv_uart.h
└ tools
└ tl431計(jì)算器.zip