iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

昨天我們談到如何控制 LED 的閃爍,當 time.sleep_ms() 延時小到一個數值,我們人眼就感覺不到閃爍了,那這時到底 LED 的通斷頻率是多少?很多人或許認爲 Micropython 控制硬體的時序因爲直譯器執行太慢而不準,然而到底有多不準呢? 我們可能需要使用工具或儀器來量測。這樣的硬體信號量測其實也是搞 IoT 或 MCU 控制的人士必備技能,但一般人都忽略了,直覺或許儀器太貴,使用繁雜且不容易學習!本日我們就來探討這個問題。

用三用電錶量測

有些三用電錶其實有頻率測量這樣的功能!例如昨天的例子改成:

import time
from machine import Pin
P1 = Pin(1, Pin.OUT)

while True:
    P1.value(not P1.value())
    time.sleep_ms(50)

亮 50 ms,滅 50 ms, 所以一個週期爲 100 ms, 一秒鐘有 1000 ms, 所以在一秒鐘內就有閃爍 10 次這樣的週期,這個次數,我們稱爲頻率,用三用電錶量測如下:
https://ithelp.ithome.com.tw/upload/images/20230927/20140037Rmm5QvYO3e.png

接着延時改爲 time.sleep_ms(5),電錶得到 100 Hz這個數值,但約莫幾秒鐘後會看到跳到 99 Hz,然而好像在一瞬間又跳回 100Hz。 由此我們可以估計,這段 Micropython 的程式碼,產生的頻率應該稍微略低於 100 Hz!(why? 這留給您思考一下。)

我們再將延時改成 time.sleep_us(500) (爲何不再用 sleep_ms(0.5)了,也請您思考一下),這時侯,我們預期在電錶上的頻率數值爲 1000 Hz, 結果電錶顯示爲 980 ~ 979 Hz 這樣的跳動,一樣的,略低於 1000 Hz (Why?)

用邏輯分析儀量測

上面那個電錶 YF-78,已經陪伴我超過三十幾年了,我記得當初購買的價格應該超過臺幣 2000 元,我上網查了一下,良興竟然還有 YF-78 的產品訊息,特價還要臺幣 1850 元。其實這樣的價格已經可以買到衆儀 的 ZOYI702S 了,這是結合示波器與三用電錶合而爲一的電錶。

雖然這對我來說,ZOYI電錶的價格真的是不可思議的便宜!然而還是有更便宜的方案!我們可以用 50-100 元臺幣買個XL830L三用電錶,我建議無論如何,三用電錶務必要挑選帶有蜂鳴器的機種,否則一定會後悔。然後再用 100-150元臺幣買一個我們在第9天文章中有提到的 山寨 Saleae 的邏輯分析儀。我是一個開源的推廣者,我們不建議大家買,因爲這樣的邏輯分析台,由於儀器上面已經燒錄了相容原廠應用軟體 “Logic” 的韌體,我們有可能去使用原廠的軟體,這樣有侵權的行爲!我建議大家使用開源的 “Pulesview” 軟體,甚至可以買沒有預先燒錄 Saleae 韌體的版本,例如:Muselab 的開源邏輯分析儀,不過會貴個幾十元臺幣,很諷刺吧!不燒錄韌體,竟然比有燒錄韌體的還貴,不過考慮 Muselab 一貫的優良硬體產品品質,我覺得很值得,而且這樣我們就不會不小心誤用了原版的 "Logic" 軟體。

在 Youtube 中有很多 Pulesview 的影片,一樣的,您可挑選您看得懂的影片學習,若有問題,非常您歡迎在底下留言提問。

下圖是 sleep_us(500) 用 pulesview 量測出來的結果:
https://ithelp.ithome.com.tw/upload/images/20230927/20140037U0ee3wP26O.png
可以看出,量出來的頻率是 980.352 Hz, 與電錶的數值差不多,我們目前只是業餘的實驗,這樣的精確度已經OK,若是一般正規的公司,儀器都有固定的時效,必須定時的送檢驗,以確保正確性。

最後這裡要說,若是想要再更省錢一點,Arduino Uno、 ESP32、RPI-pico 等開發板,都可以配合 pulesview 來當作是邏輯分析儀使用,這些也有待您自行上網研究。


上一篇
11.GPIO結合時序
下一篇
13.使用Timer
系列文
ESP32 Micropython 從入門到實用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言