如何在設計中使用Arduino的模擬功能

2021-01-14 電子發燒友
如何在設計中使用Arduino的模擬功能

電子設計 發表於 2019-03-08 08:47:00

為模擬而生

Arduino 秉承讓數位技術輕鬆地運用到現實應用中這一理念,推出 Arduino 硬體平臺,以實現將大多數模擬功能植入 Atmel 多功能 ATmega 8 位 MCU 系列。 在 Arduino 平臺上使用的所有 ATmega 變體均有一個片載多通道模數轉換器 (ADC)。 該 ADC 具有 10 位解析度,能以 0 到 1023 的整數方式實現高達每秒 15,000 次的採樣速率。 大多數 AVR MCU 支持 6 個模擬輸入通道,而一些變體則可支持 8 和 16 個輸入。 儘管模擬引腳的主要功能是讀取模擬輸入,但也可配置成數字式通用輸入/輸出 (GPIO) 引腳。 可根據需要為模擬引腳配備可選擇上拉電阻器,且採用與 MCU 數字引腳相同的上拉配置方法。

雖然一些 AVR MCU 採用了數模轉換器 (DAC),但在現有的這一代 Arduino 板上的 MCU 系列均能通過快速轉換其數字 I/O 引腳來產生脈寬調製 (PWM) 信號,以提供模擬輸出。 每個 PWM 輸出的 490 Hz(大約)方波的佔空比經過編程後,能提供一個大小為 0 至 5 V、周期為 256 毫秒、增量為 2 毫秒的等效 RMS 電壓(圖 1)。 Arduino 的輸出功能儘管在某種程度上受到一定限制,但可執行如驅動 LED 或控制電機等許多任務。

圖 1:利用脈寬調製 (PWM) 技術, Arduino 的數字 GPIO 引腳可用作模擬輸出(感謝 Arduino.cc 提供數據)。

通過板邊緣的母頭引腳連接器,大多數 Arduino 板能輕鬆連接 MCU 的模擬(和數字)I/O 信號。 模擬通道數及其物理引腳分配會隨正在使用的特定 MCU 以及板的外形發生變化,但許多變體還是遵循常見的「官方」設計所採用的引腳布局慣例,如 Uno(圖 2)、Mega 和 Nano。

圖 2:Arduino Uno 板(第 3 版)的模擬輸入 (A0-A5) 和模擬 PWM 輸出(數字式:3、5、6、9、10 和 11)) 可通過板邊緣的標準針座引腳進行物理連接(感謝 Arduino.cc 提供數據)。

因為 Arduino IDE 支持的程式語言中含有一組原生模擬 I/O 命令,因此採用模擬 I/O 功能開發代碼也易於進行。 通過這些指令可讀取模擬輸入、生成模擬 (PWM) 輸出以及配置 A/D 轉換器的基準電壓。

讀取模擬輸入

我們能輕而易舉地將 Arduino 的模擬輸入與實際應用連接,但需要為 AVR 的 A/D 轉換器選擇合適的基準電壓源。 此時,可以用默認 (DEFAULT)、內部 (INTERNAL) 或者外部 (EXTERNAL) 基準電壓來確定輸入電壓上限。 默認模式下,MCU 採用板載電源穩壓器的輸出作為基準電壓。 根據所使用的特定 Arduino 板,基準電壓可以是 5 V 或者 3.3 V。

在內部模式下,採用 AVR 的片載精密基準電壓源。 器件不同,基準源電壓也不同,但通常為 1.1 V(適用於 ATmega168 或 ATmega328)或者 2.56 V(在 ATmega8 和 Mega 系列中)。 在外部模式下,您可用一個 5K 電阻器將一個外部基準電壓連接至 AREF 引腳。 AREF 引腳內置一個 32K 保護電阻器,與 5K 外部電阻器一起作為分壓器。 所以,如果通過該外部電阻器施加 2.5 V 電壓,就會在 AREF 引腳上產生一個約為 2.2 V 的電壓,具體計算為 2.5 * 32 / (32 + 5) = 2.2 V。

利用 Aegunio 程式語言讀取模擬電壓時,需用 analogReference(type) 命令選擇基準電壓源,然後引用一個 analogRead(pin) 讀數命令,其中,(pin) 表示您希望採樣的針座引腳編號。 基準電壓一旦選定,基準類型便不再改變,除非進行另外編程。 雖然 AVR MCU 能支持高達每秒 15k 次採樣的轉換率,但 Arduino 的軟硬體環境通常將其限制在每秒 10k 次採樣左右。

構建 PWM 模擬輸出

在某一個 Arduino PWM 引腳上生成模擬電壓的具體做法是,用 pinMode(pin, mode) 命令將該引腳配置成輸出引腳,然後引用一個 analogWrite(pin, value) 命令,其中,(pin) 表示您希望用於輸出的針座引腳,(value) 表示將要產生的基準電壓的一部分(增量為 1/255)。 配置完成後,該引腳將連續產生一個具有規定佔空比的 490 Hz 穩定方波,直至收到下一個 analogWrite() 請求(或者針對該引腳發出的一個 digitalRead() 或 digitalWrite() 請求)。

這些 I/O 引腳支持高達 40 mA 驅動電流,因此可直接驅動中型 LED 陣列。 對於功率較高的照明或者直流電機,模擬輸出可用於驅動功率電晶體或橋式電路。 對於要求更苛刻的應用,這種輸出可通過簡單的 R/C 網絡濾波,且可用作放大器或者電流源的控制電壓。

更多的模擬技巧

一些 AVR MCU(包括 MEGA8 和 MEGA168)內置了比較器,能將一個輸入電壓與另一個外部輸入進行比較,如與某個 PWM 輸出產生的電壓或者基準器件的內部基準電壓比較。 比較器的電壓可以被輪詢或者用於觸發一個中斷。 儘管涉及了更多的軟體, 但中斷驅動式排列能讓處理器直接檢測欠壓和過壓條件,無需再對模擬通道進行重複採樣。 對於從可調閾值的運動探測器、衝擊傳感器到生物醫學監視的每一種應用,這都是一項非常方便的功能。

對於 MCU 無內置比較器的 Arduino 板,可相對容易地在一些 Arduino 板上的 「Kluge」 區域添加一個外部器件,如 LM741、LM339N 或 TLC3704。 如您的板子上沒有用戶電路安裝空間,則可通過一塊價格低廉的原型設計擴展卡添加用戶電路(圖 3)。

圖 3:利用原型設計擴展卡,您能方便地將自己的模擬或者數字 I/O 添加到幾乎任何一塊標準的 Arduino 板上。

總結

Arduino 器件憑藉自身的低成本、多功能優勢,在商業硬體開發人員中培養了一批忠實擁躉。 Arduino 硬體平臺旨在將大多數模擬能力植入 Atmel 的 ATmega 8 位 MCU 系列中。 這些 MCU 的所有變體均有一個片載多通道模數轉換器 (ADC)。 本文旨在介紹 Arduino 模擬功能的基本軟硬體資源組成,為能夠用這些功能完成未來設計的工程師們提供一個新起點。 為此,我們討論了如何讀取模擬輸入、構建 PWAM 模擬輸出和添加外部模擬 I/O。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • arduino從零開始(4)PWM與呼吸燈
    你將了解脈衝寬度調試(PWM)的原理你將使用PWM製作一個呼吸燈的效果脈衝寬度調試PWM,也就是脈衝寬度調製,用於將一段信號編碼為脈衝信號(方波信號)。是在數字電路中 達到 模擬輸出效果的一種手段。即:使用數字控制產生佔空比不同的方波(一個不停在開與關之間切換的信號)來控制模擬輸出。我們要在數字電路中輸出模擬信號,就可以使用PWM技術實現。
  • 如何使用Qt為arduino製作圖形界面
    如何使用Qt為arduino製作圖形界面 網絡整理 發表於 2019-11-13 11:11:39 步驟1:安裝Qt
  • Arduino教程┃模擬土壤溼度傳感器的介紹
    它是一個模擬輸入模塊,可以實現土壤溼度的檢測,有DO、AO兩種模式。注意不同土壤介質的測量值會存在差異,土壤中的水分存在分布不均勻的情況,數據僅能代表局部溼度。點擊下面的連結觀看視頻了解詳細情況。Arduino學習:認識模擬土壤溼度傳感器一、傳感器簡介本模塊可以實現土壤溼度的檢測,土壤溼度指的是土壤的含水量,能直接影響到作物的水分供應狀況。
  • 萬能超的arduino學習日記(一)
    本科時候有接觸過arduino,但是由於導師方向原因,轉做了3D列印和動力學分析,所以這裡是啥都會一點點的萬能超,希望能夠和大家一起學習討論。最近由於興趣原因,決定重新撿起arduino,所以決定寫這個萬能超的arduino學習日記跟大家一起重新學習。最開始的入門學習,我選擇跟B站太極創客的學習視頻,因為有基礎,選擇二倍速觀看學習。
  • 【Arduino教程】Arduino Mega 2560的PCB設計與編譯器使用
    首先,如果一個線路足夠簡單,很多的傳感器是可以直接接線然後連接到Mega 2560的控制器上面的。例如,如圖4所示,一個薄膜式開關可以直接和Arduino Uno控制器用杜邦線直接相連,因為薄膜式開關的外接口是母線,所以可以通過兩頭公頭的杜邦線連接。
  • 數碼管與ARDUINO 開發板的連接使用
    上升沿時移位寄存器中的數據依次移動一位,即Q0中的數據移到Q1中,Q1中的數據移到Q2中,依次類推;下降沿時移位寄存器中的數據保持不變。ST_CP:存儲寄存器的時鐘輸入。上升沿時移位寄存器中的數據進入存儲寄存器,下降沿時存儲寄存器中的數據保持不變。應用時通常將ST_CP置為低點平,移位結束後再在ST_CP端產生一個正脈衝更新顯示數據。
  • Arduino使用光敏電阻實驗
    打開APP Arduino使用光敏電阻實驗 發表於 2018-01-24 17:18:02 它構建於開放原始碼simple I/O介面版,並且具有使用類似Java、C語言的Processing/Wiring開發環境。主要包含兩個主要的部分:硬體部分是可以用來做電路連接的Arduino電路板;另外一個則是Arduino IDE,你的計算機中的程序開發環境。
  • [新課推薦]人工智慧科普活動資源包配套課程Micro:bit+ Arduino...
    課時名稱內容第一章1Micro:bit主板及編程網頁介紹簡要介紹microbit主板及編程網頁2運動軌跡利用主板、拓展板(含光線傳感器)製作一個模擬運動軌跡系統課程的第一章會介紹arduino控制板、arduino編程軟體的使用以及簡單的基礎傳感器的使用。第二章主要講程序的邏輯關係以及複雜傳感器的應用。第三章主要講課程的綜合應用,通過搭建一個小車、編寫程序實現小車不同的功能。通過本課程的學習,大家可以掌握arduino編程以及arduino開源硬體的使用。
  • 十個中文例程教會你輕鬆上手製作Arduino智能小車
    你可以自己自己動手製作,也可以購買成品套裝;Arduino所使用到的軟體都可以免費下載。硬體參考設計 (CAD 文件)也是遵循availableopen-source協議, 你可以非常自由地根據你自己的要求去修改他們。本文精選了Arduino教程、例程、設計案例,集結了國內外官方資料和資深工程師的經驗,是學習AArduino的必備寶典。
  • Arduino+Processing模擬雷達掃描效果教程
    一、前言閱讀此文前請戳這個視頻觀看使用Arduino超聲波傳感器模擬雷達掃描教程,先了解效果,有直觀感受再來看下文。圖4 Processing備註:1、上述軟體版本是我自己調試成功的版本,略低版本可能會有兼容問題,請注意你的軟體版本號;2、如果Processing的程序編輯器內不能輸入、顯示中文,請在「文件」、「偏好設定」裡,選擇「啟用複雜字體輸入」並在「編輯器和控制臺字體」中選擇
  • 功能齊全的Arduino遊戲手柄
    而不同於大家常見的Arduino板,這塊板子外觀呈常見的遊戲手柄樣式,內置了加速度傳感器以及光線傳感器等,同時設備上還預留了LCD顯示屏接口,在不需要其他外設的情況下就能實現多種功能。Arduino Esplora使用的控制晶片依舊是Leonardo上所使用的Atmega32U4,其可以直接控制USB與上位機的通信,並且可模擬PC機的鍵盤和滑鼠等外設。
  • 音頻路徑中模擬開關的設計考慮事項
    在許多情況下,會有來自多個源頭的信號通過模擬開關被「饋入」音頻放大器,而設計人員每每必須了解從編解碼器到耳機的整個音頻路徑的保真度。本文將闡釋音頻模擬開關的微小特性,以及如何利用總諧波失真(THD)、布局和性能來優化音頻路徑的保真度。
  • 如何使用聲納距離傳感器作為對象計數器
    打開APP 如何使用聲納距離傳感器作為對象計數器 發表於 2019-10-11 14:18:34 LCD顯示器(我使用20 * 4 IC2顯示器,因為它只需要4根線) 步驟2:全部連接起來。
  • Arduino教程┃初學者要知道的5個Arduino基本功能,高手勿點
    現在回想起來主要是當時對於Arduino的基礎性知識不明確、不系統,因此想分享一些系統的基礎知識給初學者,先和你聊聊5個Arduino的基本功能。1、數字輸出我們可以使用數字輸出功能,控制一個LED燈,確保此電路正確,還可以控制電機,製造出聲音甚至操控更多設備。
  • 一文看懂arduino驅動uln2003操作步進電機的方法
    arduino驅動uln2003操作步進電機的方法   1、網上買的步進電機,很多接線順序都不對。   代碼如下:   //使用arduino IDE自帶的Stepper.h庫文件   #include 《Stepper.h》   // 這裡設置步進電機旋轉一圈是多少步   #define STEPS 100   //設置步進電機的步數和引腳(就是注意點2裡面說的驅動板上IN1~IN4連接的四個數字口)。
  • 【Arduino極簡教程】-04模擬輸入和輸出
    Arduino中的數位訊號特指只能取0或者1(LOW或者HIGH)的信號,雖然簡單但我們已經能用它來實現按鍵控制、流水燈等豐富的功能。但有時候只用0或1不能表示中間狀態,這時就需要用到模擬信號。Arduino中處理的模擬信號和通常所說的模擬信號有一點區別,它並不是連續的,通常只能取0-1023之間的整數值,更像是通常所說的數位訊號。
  • Arduino在嵌入式開發中應用案例之arduino點亮LED
    本分享一個通過arduino點亮LED的案例。一般大部分的電子產品都有自己的cli用來和產品通信,很多情況如果要開發新的功能,就增加一條新的command,然後PC端的driver可以發送這個新的command給嵌入式設備,這樣它就可以執行新的功能了。 command line interface源碼, 裡面可以輸入指令使Arduino的LED開啟或者關閉。
  • 用Arduino讀取霍爾流量傳感器的脈衝數
    Arduino 可以實現很多功能,今天我們用它來讀取高速脈衝信號。Arduino 可以實現很多功能,今天我們用它來讀取高速脈衝信號。安裝好開發環境,接好線,選擇好通道,點亮板子,連接霍爾流量傳感器至arduino板子,黃線接pin 2.紅色接5V,黑色接GND.把霍爾流量傳感器接在管路上接好小水泵都接好之後,打開水泵開關,水流流過,監視窗口就會顯示脈衝數,每秒鐘更新一次。
  • 如何使用外部模擬電壓控制數字電位器
    使用Microchip的PIC12F683型微控制器將模擬電壓轉換至控制數字電位器的I²C數據流。數字電位器DS1803作為本應用中的示例器件,另外還用到極少數其他外部器件。這裡介紹的方法適用於其他控制器輸入和其他數字電位器/可變電阻。硬體配置圖1顯示了使用PIC12F683的控制電路原理圖。
  • 模擬電源設計的LDO低噪聲電源解決方案
    、測量和無線電應用的噪聲敏感型系統設計電源時,經常遇到的一個問題是如何更大限度地降低噪聲。這種設計方法更大限度減少了電源噪聲和紋波,並在負載電流低於2A左右時保持良好的性能。然而,隨著負載增加,LDO中的功率損耗會引發效率和熱管理問題,例如,後置穩壓LDO會在典型的模擬前端應用中增加1.5W的功率損耗。低噪聲的高效設計是不是無法實現?倒也未必。