小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

NO.22 基于Arduino的數(shù)字示波器(完成)

 lhktija 2014-10-10
基于Arduino的數(shù)字示波器


         

                    

一、概述

       經(jīng)常在網(wǎng)上 看到有人制作數(shù)字示波器,數(shù)字示波器必須有數(shù)模轉(zhuǎn)換單元,根據(jù)數(shù)模轉(zhuǎn)換方式可以將電路分為兩種模式:1.專用ADC芯片+單片機(jī),2.利用單片機(jī)內(nèi)部的ADC作數(shù)模轉(zhuǎn)換。對于第一種模式我也做過兩種(見我的博客: http://blog.sina.com.cn/ntwhq ),這種模式電路要復(fù)雜一點(diǎn),元器件也較難配齊,對初學(xué)者來說比較困難。第二種結(jié)構(gòu)比較簡單,容易制作,但有一個明顯的缺點(diǎn),就是帶寬比較窄,其中一個比較典型的作品是國外網(wǎng)友制作的:http://www./circuits/AVR_oscilloscope/avr_oscilloscope.htm ,這個示波器的帶寬只有7.7KHz。國內(nèi)也有網(wǎng)友用AVR和STC單片機(jī)制作的,但實(shí)際帶寬均不超過10KHz。
        最近看到有網(wǎng)友用Arduino做示波器,這可以說比上面的第二種方式還要簡單,但觀察其制作的效果卻不理想,帶寬很窄。因此我也想試一下,看看又沒有好的方法來解決這一問題。通過實(shí)驗(yàn)制作,不斷修改代碼,提高數(shù)模轉(zhuǎn)換的取樣率,取得了很好的效果。
        最終作品的主要參數(shù)
        頻率響應(yīng):  10Hz-50KHz
     電    源:  5V
     LCD液晶屏: 128x64(ST7920)
     測量顯示區(qū):96x64
     信息顯示區(qū):32x64,顯示測試信號的頻率、Vpp等內(nèi)容
     同步方式:上升沿觸發(fā)
        掃描速度:0.02ms/div~10ms/div,按1-2-5進(jìn)位分九檔
        Hold功能:凍結(jié)顯示波形和參數(shù)

二、基礎(chǔ)試驗(yàn)

      使用Arduino 做項(xiàng)目的最大優(yōu)勢就是其豐富的資源,同時也不需要了解太多單片機(jī)的知識。我下面的制作就利用了一個LCD的資源庫u8glib,使得編程變得簡單多了,不然LCD的驅(qū)動會花費(fèi)你好多時間。
      u8glib 下載: u8glib_arduino_v1.13.zip (989.55 KB, 下載次數(shù): 858)    
       下面是我先用Arduino UNO搭建的試驗(yàn)電路,LCD使用ST7920控制的12864液晶屏。
      

只要輸入法下列代碼,編譯下載后就能實(shí)現(xiàn)數(shù)字示波器的基本功能了,是不是很簡單?

[C] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <U8glib.h> //聲明庫
 U8GLIB_ST7920_128X64_4X u8g(13, 12, 11); // 聲明液晶屏 SPI Com: SCK =13, MOSI = 12, CS =  11
 int x,y; //繪點(diǎn)坐標(biāo)
 int Buffer[128]; //緩存值儲存數(shù)組
 void setup( ) {  }
 //采樣
 void sample( ) 
 for(x = 0;x < 128;x++)
   Buffer[x] = analogRead(A0);  //信號采樣
 for(x = 0;x < 128;x++) 
   Buffer[x] = 63-(Buffer[x]>>4); //計(jì)算縱坐標(biāo)值
}
//顯示
void draw( ) 
  for(x = 0;x < 127;x++) 
     u8g.drawLine(x,Buffer[x],x,Buffer[x+1]);  //畫相鄰兩點(diǎn)連線 
 u8g.drawLine(64,0,64,63); // 畫坐標(biāo)軸
 u8g.drawLine(0,32,128,32);
 for(x=0;x<128;x+=8)   //畫坐標(biāo)軸刻度
   u8g.drawLine(x,31,x,33);
 for(x=0;x<64;x+=8)
   u8g.drawLine(63,x,65,x);
 u8g.drawFrame(0,0,128,64); //畫邊框
}  
void loop( )
 {
   sample();         //采樣
   u8g.firstPage();  //清屏
   do  draw( );      //顯示
   while( u8g.nextPage( ));
 }


顯示效果:

         
            
           利用這個試驗(yàn)電路,我測量了Arduino 直接使用analogRead() 函數(shù)完成一次數(shù)模轉(zhuǎn)換的時間約為111微秒,轉(zhuǎn)換速度很慢,因此其帶寬只有1KHz多點(diǎn), 接下來的首要任務(wù)就是提高數(shù)模轉(zhuǎn)換速度,同時增加其它功能。

三、最新程序
         下面是最新的源代碼,使用時請保留我的開機(jī)LOGO,呵呵。
          Arduino_oscilloscope.rar (2.44 KB, 下載次數(shù): 813)

四、整機(jī)制作

       上面做試驗(yàn)用的是Arduino UNO,實(shí)際制作時使用Arduino PRO mini,這樣才能有小體積。

        電路圖:



       主要元器件清單:        
        名稱                                                            數(shù)量
       Arduino PRO mini                                        1
        LCD12864液晶屏(ST7920)                       1
        電解電容器(100μ 25V)                              1               
        電位器(50k)                                             1
        洞洞板                                                           2
        按鈕開關(guān)                                                       3
        電源開關(guān)                                                       1
        電池盒(配7號充電電池)                            1
        機(jī)殼                                                              1

      1、焊接Arduino PRO  mini 插針。





2、 焊接電路板元件





3、制作LCD洞洞板





4、組裝電路板







5、制作機(jī)殼
       我用了一個充電寶的塑料包裝盒改制機(jī)殼,在相應(yīng)的地方打上孔。



6、總裝
      將電路板裝入機(jī)殼,用厚點(diǎn)的白紙做一個面板,貼在前面板內(nèi)側(cè)。














五、程序下載與測試
        
      由于 Arduino PRO mini 不自帶USB轉(zhuǎn)串口的電路,所以要通過一根USB轉(zhuǎn)串口的下載線才能下載程序。
      示波器的調(diào)試很簡單,只要調(diào)節(jié)50k電位器使水平掃描線居中即可。
      我用一臺信號發(fā)生器作信號源。

  

   開機(jī)LOGO


      
   測試圖:





六、測試視頻

       測試過程中在調(diào)節(jié)信號源的頻率輸出方法,調(diào)節(jié)示波器的掃描速度按鍵和Hold按鍵。



七、幾點(diǎn)說明

        1、這是一個最簡單的數(shù)字示波器,可以在此基礎(chǔ)上進(jìn)一步完善;
        2、大家可能注意到我沒有使用 I/O端口0-7,這正好是AVR單片機(jī)的一個8位并口,這是我為后續(xù)升級準(zhǔn)備的,在使用專用ADC芯片的時候它可以作為數(shù)據(jù)輸入,如果大家對這個示波器感興趣,以后我會考慮升級;
       3、作品完成得比較倉促,有什么缺陷和不足的地方,請大家指教,你制作中有什么問題也可以在這里交流。
       謝謝大家!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多