程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

MicroPython內核開發筆記書內軟件用例 :ADC 相關實驗

編輯:Python

簡 介: 本文給出了 MicroPython內核開發筆記:書內嵌入實驗任務 中的ADC軟件用例部分內容。

關鍵詞MicroPythonMM32F3277

書稿內容 目 錄
Contents
基礎實驗 ADC,DAC聯合實驗 總 結 存在問題

 

  • 本書稿內容隸屬於 MicroPython內核開發筆記:書內嵌入實驗任務 中的內容。

軟件用例:
這部分書稿內容包括有:
1.
2.

  • 書稿內位置:

 

§01書稿內容


在MM32F3277中 ADC總共 有16 個通道,對應外部端口分別是:

ADC通道對應的端口:
CH0~7:PA0 ~ PA7
CH8,CH9: PB0, PB1
CH10~CH13:PC0 ~ PC3
CH14,CH15:NULL

一、基礎實驗

1、讀取ADC0電壓

下面代碼是讀取 ADC0 通道,對應 PA0 管腳上的電壓。 請注意,第一個 ADC 初始化的時候,需要將 init=True 參數代入。

讀取 ADC 轉換數值是通過 read_u16() 函數,它返回 0 ~ 0xffff 之間的數值,對應 ADC 輸入電壓 從 0V 到 參考電壓(3.3V) 之間的數值。

from machine import Pin,ADC,DAC
import utime
adc0 = ADC(0, init=True)
while True:
print(adc0.read_u16())
utime.sleep_ms(200)

通過電位器,手工調節 PA0 管腳的電壓,觀察程序輸出的數值,可以查看到隨著輸入電壓增加, ADC 轉換數值從 0 到 0xffff 變化。

2、ADC轉換速率

在應用中,ADC轉換速率是一個關鍵參數。下面代碼通過讀取 1024 個 ADC 轉換值,測量總共所需要的時間,可以確定 ADC 最大轉換速率。

from machine import ADC
import time
adc0 = ADC(0, init=True)
BUF_LENGTH = 1024
buf = [0] * BUF_LENGTH
startc = time.ticks_cpu()
for i in range(BUF_LENGTH):
buf[i] = adc0.read_u16()
endc = time.ticks_cpu()
print(endc - startc)
while True:
pass

程序運行,輸出結果為 25。 這表明通過 MicroPython 采集 1024 個 ADC數值 大約花費 25ms。 因此,最高的采樣頻率可以達到 40kHz 左右。

二、ADC,DAC聯合實驗

下面代碼演示了從ADC讀取數據之後,然後通過DAC通道將信號輸出。

from machine import DAC,ADC
import time
adc = ADC(0, init=True)
dac = DAC(0)
print("ADC to DAC .")
nowtime = time.ticks_ms()
while True:
dac.write_u16(adc.read_u16())
while True:
if time.ticks_ms() != nowtime:
nowtime = time.ticks_ms()
break

代碼中應用了 time 讀取系統時間,控制采樣頻率為 1kHz。

使用信號源,在 PA0 管腳輸入 頻率為 100Hz, 峰峰值為 1V,均值為 1.5V 的正弦波信號。下面顯示了輸入信號ADC信號與輸出DAC信號。

▲ 圖1.2.1 輸入ADC采集信號與輸出DAC信號

通過上述波形,可以看到在正弦波 一個周期(10ms)內完成了 8 次 AD,DA轉換,這個實驗結果也是驗證了,當前MicroPython內核中 time 延時存在系統誤差。實際延時時間需要乘以 1.25 倍。

 

※ 總 結 ※


本文給出了 MicroPython內核開發筆記:書內嵌入實驗任務 中的ADC軟件用例部分內容。

一、存在問題

第二個實驗中,由於需要使用到 time 讀取系統時間,會發現,現在這個版本中的 time 讀取的時間存在著系統誤差。 與實際的時間之間相差 1.25倍,估計還是在內核實現中,對於CPU 內部基准頻率常量沒有設置正確所引起的。


■ 相關文獻鏈接:

  • MicroPython內核開發筆記:書內嵌入實驗任務

● 相關圖表鏈接:

  • 圖1.2.1 輸入ADC采集信號與輸出DAC信號

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved