PTT評價

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

看板Coffee標題Re: [器材] 使用Arduino製作烘豆機控制盒-Part2 風扇控制&瓦斯讀取作者
plzza0dogs
(二兵 金 東 河 忠誠)
時間推噓 X 推:1 噓:2 →:0

主程式
軟體的部基本上就是在山姆大提供的.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,計算時間是500ms,乘以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 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.203.199 (臺灣)

※ 文章網址:
https://www.ptt.cc/Coffee/M.1636807207.A.D6F

※ 編輯: plzza0dogs (111.248.203.199 臺灣), 11/13/2021 20:44:26

celtics199711/13 21:33豪棒

mangobearx11/13 21:37推一下 猛

clutch556611/13 22:24很猛

※ 編輯: plzza0dogs (111.248.203.199 臺灣), 11/13/2021 23:48:16