Re: [器材] 使用Arduino製作烘豆機控制盒-Part2 風扇控制&瓦斯讀取

看板Coffee作者 (二兵 金 東 河 忠誠)時間2年前 (2021/11/13 20:40), 2年前編輯推噓-1(120)
留言3則, 3人參與, 2年前最新討論串1/1
主程式 軟體的部基本上就是在山姆大提供的.ino中再額外多加一些不同功能的區塊 https://github.com/Sam3258/TC4-Simulator/blob/master/UnoTC4/UnoTC4.ino 需要安裝的Library從程式裡面就可以看出端倪 #include <Arduino.h> #include <SoftwareSerial.h> #include <MAX6675.h> #include "SevSeg.h" PWM風扇控制 第一步影片,講解了關於可變電阻控制電壓,經過Arduino偵測後輸出不同的PWM控制燈泡 https://youtu.be/gczUU6O47mg
再看第二個影片,說明了各式風扇控制的方式與程式碼,其中的4線PWM就是我們需要的程式 https://youtu.be/UJK2JF8wOu8
將這兩個概念結合起來,我們就可以得到一個利用可變電阻(VR)控制PWM風扇的方法了 已經知道,電壓讀取值為0~1023,PWM訊號為0~255,所以在轉換時可以用 讀取值*(255/1023)來得到duty cycle,但是這樣的數據並不實用,所以我改用另一種方 式將他以每5%為一個調節,0~100%就可以切成20塊,1023/20=51 255/20=12.75,但是20 *12=240,所以可以再+1,另外風扇是有最低轉速的,不是PWM=0就會停轉,所以我們不需 要太在意過低的PWM輸出,而且烘豆過程中也不適合風扇完全停轉 因此我將算式改為 fan_pwm= 1+(FAN_CTRL_VR/50); //將電壓值轉換為Dutycycle fan_pwm= fan_pwm*12; 另外經過測試,風扇最低轉速約為960rpm,最高轉為5000轉 那麼風扇的開度就是 fan_percent =fan_pwm*(5/12); //風門開度百分比 if(fan_percent<21) fan_percent=20; if(fan_percent>99) fan_percent=100; 另外關於計算rpm的部分 while((millis()-fan_time)<500){} fan_rpm = fan_count*60; //0.5s內的plus訊號*2*60/2 = 分鐘轉速 因為2個rise訊號是一次波的周期,所以要除以2,每60秒為一分鐘,故*60,計算時間是5 00ms,乘以2才是1秒,所以*2*60/2=*60 在這個部分出現了一個奇怪的BUG,這個程式在我另外分開寫的小程式內執行沒有任何問 題,但當他被丟到主程式中,只要fan_count不經過Serial.xxxxx 就沒有值,具體原因不 得而知,不過只要在在他後面加一句串口指令就可以解決了,問題不大,再者,風扇轉速 其實沒有什麼參考價值,純粹寫身體健康的附加功能,沒有的話也無所謂。 最後風扇的小程式如下 https://i.imgur.com/WJ0oqVI.jpg
瓦斯Bar值讀取 瓦斯讀取就簡單多了,只是讀類比值而已,當然為了避免浮動過大,還是將他進行多值平 均才吐出數值,利用millis(),讓瓦斯的數值不斷累加,累加1秒後才進行數值平均 https://i.imgur.com/d3oHaYt.jpg
-----待續----- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.203.199 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Coffee/M.1636807207.A.D6F.html ※ 編輯: plzza0dogs (111.248.203.199 臺灣), 11/13/2021 20:44:26

11/13 21:33, 2年前 , 1F
豪棒
11/13 21:33, 1F

11/13 21:37, 2年前 , 2F
推一下 猛
11/13 21:37, 2F

11/13 22:24, 2年前 , 3F
很猛
11/13 22:24, 3F
※ 編輯: plzza0dogs (111.248.203.199 臺灣), 11/13/2021 23:48:16
文章代碼(AID): #1XZx8drl (Coffee)