學習目標
- ✓理解 Rev. P 與 Rev. C 的供電與補償差異。
- ✓讀取風速輸出與溫度補償電壓。
- ✓建立外部電源、共地與 ADC 輸入的安全觀念。
SENSOR / WINDREVP
Wind Sensor Rev. P 是改良版熱線式風速計,使用 PTC 與環境溫度補償,並提供風速與溫度類比輸出。它需要外部 9–12V 供電,Arduino 只負責讀取符合電壓範圍的訊號。
先確認這一課要學會什麼,以及桌面上需要哪些材料。
Rev. P 以 PTC 熱敏元件與硬體溫度補償改善穩定性;風速輸出最高約 3.3V,但模組本身需要約 9–12V 供電。
用外部 9–12V 讓熱敏元件達到工作溫度。
外部電源 GND 與 Arduino GND 相連。
分別讀風速電壓與溫度補償電壓。
電壓轉風速仍需使用實際版本的校準曲線;溫度輸出也要依文件解讀。
Rev. P 的 9–12V 電源與 Arduino 類比輸入必須分開處理;只把低電壓類比訊號接入 A0/A1。
| 模組腳位 | 接到控制板 | 訊號方向 | 檢查重點 |
|---|---|---|---|
| V+ | 9–12V 外部電源 | 電源 | 依 Rev. P 版本規格,不能接 UNO 5V。 |
| GND | 外部 GND+Arduino GND | 共同地 | 沒有共地,ADC 讀值會失真。 |
| Wind Out | A0 | 風速類比輸出 | 輸出最高約 3.3V。 |
| Temp Out | A1 | 溫度補償輸出 | 先讀電壓,再依版本資料換算。 |
已將 4 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。
積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。
playrobot_wind_rev_p_setup設定類比腳位與外部供電提醒
位置:感測器 → 環境感測器 → Wind Sensor Rev. Pplayrobot_wind_rev_p_raw讀取風速 ADC 原始值
位置:感測器 → 環境感測器 → Wind Sensor Rev. Pplayrobot_wind_rev_p_voltage讀取風速輸出電壓
位置:感測器 → 環境感測器 → Wind Sensor Rev. Pplayrobot_wind_rev_p_temperature_voltage讀取溫度補償輸出
位置:感測器 → 環境感測器 → Wind Sensor Rev. P安全供電後,將兩個類比輸出列印到序列埠。
playrobot_wind_rev_p_setuparduino_delayarduino_delayplayrobot_wind_rev_p_voltageplayrobot_wind_rev_p_temperature_voltagearduino_serial_printplayrobot_wind_rev_p_setuparduino_delayarduino_delayplayrobot_wind_rev_p_voltageplayrobot_wind_rev_p_temperature_voltagearduino_serial_print量測 Wind Out 與 Temp Out,再接 Arduino。
為什麼:避免超過 ADC 輸入範圍。通電後等待約 10 秒。
為什麼:熱線式元件需要達到工作狀態。在不同室溫下記錄兩個輸出。
為什麼:理解溫度補償輸出的用途。playrobot_wind_rev_p_setup:設定類比腳位與外部供電提醒
下載桃園版 Blockly 專案或對應的文字程式。
| 測試情境 | 可能讀值 | 判讀 |
|---|---|---|
| 風扇加強 | 風速輸出改變 | 氣流帶走熱量的速度改變。 |
| 環境溫度改變 | 溫度輸出也會改變 | 它可協助解讀風速訊號的溫度影響。 |
這段程式把「Wind Sensor Rev. P 類比風速計」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。
const int WIND_PIN = A0;
const int TEMP_PIN = A1;
void setup() {
Serial.begin(115200);
pinMode(WIND_PIN, INPUT);
pinMode(TEMP_PIN, INPUT);
delay(10000);
}
void loop() {
float windVoltage = analogRead(WIND_PIN) * 5.0f / 1023.0f;
float tempVoltage = analogRead(TEMP_PIN) * 5.0f / 1023.0f;
Serial.print(windVoltage, 3);
Serial.print(", ");
Serial.println(tempVoltage, 3);
delay(200);
}// Wind Sensor Rev. P 類比風速計 library函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 playrobot_wind_rev_p_setup 就算接線正確也無法使用。
const int WIND_PIN = A0;本頁接線是 V+ → 9–12V 外部電源、GND → 外部 GND+Arduino GND、Wind Out → A0、Temp Out → A1。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。
void setup() {啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。
void loop() {重複執行區先讓感測器更新,再讀取 Wind Sensor Rev. P 初始化。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。
delay(10000);先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。
先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。
先檢查:確認接入的是 Wind Out/Temp Out 而非供電腳。
處理方式:先用電表確認輸出電壓,禁止把 9–12V 接到 ADC。
先檢查:是否提供 9–12V 外部電源。
處理方式:依 Rev. P 規格使用獨立供電,並與 Arduino 共地。
先檢查:檢查預熱、環境溫度與校準。
處理方式:固定預熱時間並保留原始電壓,不直接套用別的版本曲線。
從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。
題目:畫出供電線與訊號線,標註不能互接的腳位。
這題要延伸「Wind Sensor Rev. P 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。
題目:比較無風與風扇下的兩個輸出。
這題要延伸「Wind Sensor Rev. P 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。
題目:設計實驗觀察溫度輸出如何協助解讀風速。
這題要延伸「Wind Sensor Rev. P 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。
確認 PTC、9–12V 供電、3.3V 輸出與溫度補償。
補充 PTC 與溫度補償的設計差異。
對照 setup、raw、voltage 與 temperature voltage 積木。