步驟1:電路
Arduino的模擬輸入可接受0V至5V輸入。此輸入具有10位分辨率,這意味著信號被分成2 ^ 10個段或1024個計數。基于此,在允許同時按下的同時,我們最多可能輸入到模擬輸入中的是10個按鈕到1個模擬輸入。但是,這不是一個完美的世界。導體中存在電阻,外部來源的噪聲以及功率不完善。因此,為了給自己帶來足夠的靈活性,我計劃設計6個按鈕。這在一定程度上受到TinkerCAD Circuits具有6開關DIP開關對象這一事實的影響,這將使測試變得容易。
設計的第一步是確保每個按鈕在按下時單獨按下,將提供獨特的電壓。這排除了所有電阻器的值相同。下一步是,并聯添加電阻值時,電阻值不能與任何單個電阻器值相同。當電阻并聯時,可以通過Rx = 1/[(1/R1)+(1/R2)]來計算得到的電阻。因此,如果R1 = 2000和R2 = 1000,則Rx = 667。我推測通過將每個電阻器的尺寸加倍,對于任何組合我都不會看到相同的電阻。
因此,到目前為止,我的電路是有6個開關,每個開關都有自己的電阻。但是,完成該電路還需要一個電阻。
最后一個電阻有3個用途。首先,它充當下拉電阻。如果沒有電阻,則當沒有按鈕按下時電路將不完整。這將使Arduino模擬輸入上的電壓浮動到任何電壓電位。下拉電阻器實質上將電壓下拉至0V。第二個目的是限制該電路的電流。歐姆定律指出,V = IR或電壓=電流乘以電阻。在給定的電壓源下,電阻越大,電流就越小。因此,如果將5V信號施加到500ohm電阻,則我們可以看到的最大電流為0.01A或10mA。第三個目的是提供信號電壓。流過最后一個電阻的總電流為:i = 5V/Rtotal,其中Rtotal = Rlast + {1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R 5)+(1/R 6)]}。但是,對于每個按下了相應按鈕的電阻,僅包括1/Rx。從總電流中,提供給模擬輸入的電壓將為i * Rlast或i * 500。
步驟2:證明-Excel
證明該電路具有獨特的電阻和獨特的電壓的最快,最簡單的方法是使用Excel的功能。
我設置了所有可能的組合切換輸入并按照二進制模式順序組織這些。值“ 1”表示開關打開,空白表示開關關閉。在電子表格的頂部,我輸入了每個開關和下拉電阻的電阻值。然后,我計算了每種組合的等效電阻,但當所有電阻都關閉時除外,因為這些電阻在沒有電源的情況下不會產生影響。為了使我的計算變得容易,以便我可以復制和粘貼到每個組合,我通過將每個開關值(0或1)乘以其反向電阻值來將所有組合包括在計算中。如果開關斷開,這樣做可以從計算中消除其電阻。可以在電子表格的圖像中看到生成的方程式,但是Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6)。使用Itotal = 5V/Req,我們確定通過電路的總電流。這與流過下拉電阻的電流相同,并向我們的模擬輸入提供電壓。計算公式為Vin = Itotal x Rx。查看Req數據和Vin數據,我們可以發現我們確實有唯一的值。
在這一點上,我們的電路似乎可以正常工作。現在要弄清楚如何對Arduino進行編程。
第3步:Arduino編程
當我開始考慮如何對Arduino進行編程時,我最初計劃設置各個電壓范圍來確定開關是打開還是關閉。但是,有一天晚上躺在床上時,我想到應該可以找到一個方程式來做到這一點。怎么樣? EXCEL。 Excel能夠計算方程以最適合圖表中的數據。為此,我需要一個開關(二進制)的整數值與對應于該值的電壓輸入之間的等式。在我的Excel工作簿中,將“整數值”放在電子表格的左側。現在確定我的方程式。
下面是有關如何在Excel中確定直線方程式的快速教程。
1)選擇一個不包含任何數據的單元格。如果選擇了一個具有數據的單元格,Excel將嘗試猜測要趨勢的單元格。因為Excel很少能正確預測,所以這使設置趨勢變得更加困難。
2)選擇“插入”選項卡,然后選擇“散點圖”。
3)右鍵單擊圖表框,然后單擊“選擇數據。..”。這將彈出“選擇數據源”窗口。選擇“添加”按鈕繼續選擇數據。
4)給它指定一個系列名稱(可選)。通過單擊向上箭頭,然后選擇電壓數據,選擇X軸的范圍。通過單擊向上箭頭,然后選擇整數數據(0-63),選擇Y軸的范圍。
5)右鍵單擊數據點,然后選擇“添加趨勢線。..”。在“設置趨勢線格式”窗口中,選擇“多項式”按鈕。觀察趨勢,我們發現2的階數不太匹配。我選擇了3階,覺得這更準確。選中“在圖表上顯示方程式”復選框。現在,最終方程式顯示在圖表上。
6)完成。
確定。回到Arduino程序。現在我們有了方程式,對Arduino進行編程很容易。代表開關位置的整數以1行代碼計算。通過使用“ bitread”功能,我們可以獲取每個單獨位的值,從而了解每個按鈕的狀態。 (請參閱照片)
第4步:TinkerCAD電路
如果您尚未簽出TinkerCAD電路,請立即執行。等待!!!!完成閱讀我的Instructionable,然后將其簽出。 TinkerCAD Circuits使測試Arduino電路非常容易。它包括幾個電子對象和Arduino,甚至允許您對Arduino進行編程以進行測試。
要測試我的電路,我使用DIP開關組設置了6個開關并將它們與電阻器捆綁在一起。為了證明我的Excel電子表格中的電壓值正確,我在Arduino的輸入處顯示了一個電壓表。一切都按預期工作。
為證明Arduino編程工作正常,我使用Arduino的數字輸出將開關的狀態輸出到LED。
然后我將每個開關切換為一切可能的組合,并為能說“ IT WORKS”而感到自豪!!
-
按鈕
+關注
關注
0文章
134瀏覽量
12737 -
Arduino
+關注
關注
187文章
6464瀏覽量
186642 -
模擬輸入
+關注
關注
0文章
17瀏覽量
10669
發布評論請先 登錄
相關推薦
評論