![]() |
發布時間: 2021-3-28 21:04
正文摘要:下圖是一個電壓測量的代碼,電壓測量范圍比較寬,是從0V測到100V,實際測試發現,如果不用那些if語句,讓temp乘以一個固定的倍數,12V的時候測的比較準,電壓越高,測量結果偏差越大,50V的時候,測量偏差已經有1.5V ... |
jkluzi 發表于 2023-12-13 15:40 不可以,不然你寫一個讓大家樂一樂? |
我做過測量0-100V,并沒有發現你說的如此嚴重的非線性問題,只需要手工校準一個系數,是不是你的硬件有問題或者軟件配置ADC采樣時間不符 |
用switch應該也行吧 |
提供一個最簡單的改正方法,新設置一個變量c,讓c=e*10;,10是你的分壓倍數。這樣就避免了判斷失誤。 |
條件語句錯誤 |
yytda 發表于 2021-3-28 21:58 由于樓主判斷條件是變量e的值,符合判斷條件改變的也是e的值。依次判斷時就有可能前面的結果成為后面的依據而發生錯誤。改為if(temp<=0.14) e=temp*35;....... 或 if.......else if........else if......寫法避免發生錯誤。 |
if 。。。else if。。。 |
通常要想用ACD盡量準確測量遠大于單片機VCC的電壓不宜只用一套分壓電路,要根據實際被測電壓自動換擋。而不是在算法補償下功夫。 |
上面各朋友都說得沒有錯 用if 和 else iif這是兩種不同的結果 再例如: 前提:e==1 if(e==1) {e=10;} if(e==10)//上面計算的e結果會進入此條件語句進行判斷 {e=100;} 上述運行結果是e=100 if(e==1) {e=10;} else if(e==10) {e=100;} 上述運行結果是e=10 |
你一直用if當然會出現混亂,你要用if{}else if{},意思是如果...否則....這樣的條件判斷邏輯才對 |
謝謝啊,這個可能性很大,晚一點我試試 |
你這個程序是有問題的 不能怎么使用if 要用if ... else if... |
除第一個if外,后面的if換成else if,不然可能重復換算 |
花心的劉備 發表于 2021-3-28 21:30 可當實際電壓5V的時候,它并沒有滿足后面那些if語句的條件,為什么卻能進入后面那些if語句里面呢? |
是進制問題么? |
順序執行了一遍 |