在這個我會做一個小工具的項目中。
我將使用我需要的 3D 打印機打印所需的零件。你也可以使用其他材料,但準確度是組件中的關鍵因素。
Arduino NANO 進行計算。AtMega328p 只有一個 10 位 DAC,計算使用 Sine,所以會有限制。
使用1602顯示器來顯示結果——1602顯示器是每行2行16個字符的顯示器。
UV膠水
需要3D立體模型來打印二維器的長度。
點擊圖標可以下載分割臂的 STL 文件。
傳感器臂.stl
臂臂.stl
第1步:49E線性霍爾傳感器
霍爾傳感器的制造商有很多我附在我的數據表上,從霍尼韋爾發現。
我已經可以找到最便宜的了。
我制作了適合 49E 的塑料部件。
49E 只有 3 個連接。
+6 1 = 電源(+2.7.5伏)
密鑰 2 = 接地點。
(輸入通常在輸入3 = 輸入模擬之間 - 1 )
輸出是線性的,mV/Gauss。
[NS]顯示了它的磁強強度表的方向。
如果我們將要輸出的傳感器將與顯示的距離很近。
第2步:今天
我正在使用兩個用戶來改變傳感器周圍的磁場強度。
的意義為: 寬度 = 5 毫米,深度 = 5 毫米,高度 = 2 毫米。
北/南方向是從下到上。(在2毫米方向)
讓我們看看會產生的樣子。
集中在焦點的中心。
在向北移動的中心,從南,幾乎是平行的。
當返回磁體的時候,返回磁體的時候,會返回。
如果假設在一個磁極的位置,我們會選擇它到我們的位置,如果你會選擇移動返回,因為會跟著你返回。
傳感器非常敏感,任何雷達傳感器都沒有。
我們需要減少可能產生的錯誤。
如果我們能把手機當成只是簡單的一件事情就再理想了。
我降低風險的方法是使用兩個今天。
如果使用兩個同類的函數,我們應該會產生一個如果內部的區域。
如果我們把今天當當當當當當當當當當當當當當當當當相對戶戶用,那么每天的時間,將與父母的兩個區域,并且該是的
第3步:計算角度
我們將帶著手機。
未來智能手機上將啟動與未來將產生不同的輸出。
輸出將給出其旋轉角度的正弦值。
我已經做了一個嘗試來嘗試解釋輸出。
關鍵的焦點是圍繞著這個話題。
藍代表智能手機視角/旋轉時間的位置。
黃線傳感器從南到北看到的線性強度。
綠線顯示正弦計算。
紅色是準確的區域。
因為是的,所以你會認為準確的值對于我們來說可以將模擬結果轉換成小數據。
Arduino NANO DAC 是 10 位的。
Arduino NO 與 float 相同,float 數據類型只有 6-7 個復數的雙精度 NA。
因為正在旋轉是遠離傳感器,所以我們輸出的是輸出而不是輸出的正弦計算。
我們將擁有僅 10 個陽光燦爛的海灘 (DAC) 無法很好計算的區域
可以用正確的植物的藍色線條表示可以計算的尺寸。
象牙藍的藍線表示無法精確計算的角度。
可以看到,在旋轉時,磁力的分布有更多的度數。
我已經關注了它的全部領域,以。
我正在使用最簡單的哈爾傳感器。
為了獲得第一個傳感器,因此可以使用另一個傳感器。建立另一個傳感器,與達到 90 度,每個傳感器僅使用精度良好的區域。
是基本的,當我們集中思想的時候,我會證明一點。
第4步:讓我們做長線
我已經提到傳感器非常敏感的組件,就是它
的設置是準確的。它不應該移動。
可以在代碼中補償一些錯位。
第5步:安裝傳感器
傳感器需要在隔板的傳感器臂上粘上。印刷部件有一個異形孔,定位傳感器的安裝方式。、
第6步:走路方向
為了幫助我在手機上找到一個磁體方向應用程序。
手機需要包含磁力計,通常它有 GPS,它會顯示一個磁力計。
有磁力計的應用程序,我發現最好的應用程序是 3D 應用程序。
該圖有一個典型的 3d 應用程序程序。箭頭指向北方的中心。
我使用的是:3D羅盤和磁力計。
手機中的磁力計始終不在。
它用最方便的手機做一些可以在實驗
中找到的位置,就可以更方便地找到磁力計的位置。
我通常將手機定位在工作臺上的磁力計工作臺上。
第7步:將和第二臂安裝
安裝和第二個有點麻煩。
在將兩個臂膀牽涉到之前,請讓兩個移動臂在第一個臂膀的牽動下。
需要積極參與中。
你必須將一個真正的終點正確地,同時將第二個磁場極點確定在一個端點上。
這個必須在今天,第一個第二個展開。
兩個兩個組合,唯一的動作應該是:將一群人轉移到一起并拉近彼此。
不會有橫向移動或扭曲,否則會產生錯誤。
第8步:將電纜添加到分頻器
下一個是在傳感器上添加,電纜以便將其連接到Arduino NANO。
我的 Arduino NANO 分線,所以我在安裝一個杜邦母線連接器。
檢查步驟獲取正確的連接。
第9步:顯示屏(LCD)
為了從傳感器獲得反饋,我使用了每行 2 行 16 字符的 LCD。
我需要使用 PC28575 連接到 PCF。
我有電纜連接杜邦母連接器的4線,用于將它連接到我的Arduino NANO。
第10步:連接到Arduino NANO
點擊下載數據庫。
Tims電氣分離器_bb.pdf下載Tims電氣分離器
_schem.pdf
第11步:代碼
我如果你有一個 Arduino NANO,你已經對它進行了實驗,并且已經到Arduino.cc網站了解了有關它的信息。
如果這是您第一次使用 Arduino 架構的設備,請先訪問此處: Arduino IDE 2 教程
在這里,您可以下載 Arduino IDE,并且有來自創建 Arduino 的人的教程。
本教程展示了如何將草圖上傳到設備。
下面是代碼。
下面是代碼。
/* ?? ?Tims_Electronic_Deviders.ino ?? ?由 Tim Jackson.1960 ?? ?學分:阿杜諾 ?? ??? ?。 ?? ??? ?LiquidCrystal_I2C 基于 DFRobot 的工作。 ?? ?這是以下代碼:Tim 的電子分離器。 ?? ?我正在使用帶有 49E 線性霍爾效應傳感器和兩個磁鐵的 3D 打印分離器。 ?? ?我正在使用 Arduino NANO 根據從 49E 線性霍爾效應傳感器接收到的值來計算分頻器的位置。 ?? ?傳感器是線性的:3 mV/GS,但要獲得角度,需要計算值的正弦值。 ?? ?S=O/HC=A/HT=O/A ?? ?度到弧度 = 度 * (PI / 180) ?? ?弧度到度 = 弧度 * 180.0 / pi */ #include #include #define Hall_49R_Pin A1 // 定義霍爾效應引腳 #define CAL_0 377 // 0 角霍爾效應傳感器的 值 #define CAL_180 690 // 180 角霍爾效應傳感器的值 #define CAL_RANGE (CAL_180 - CAL_0) // 最高 CAL - 最低 CAL #define CAL_RAD ((double)CAL_RANGE / 2) // 用于正弦 H 值以獲得角度。 #define LEG_LENGTH 99 // 分隔線的長度。 #define MAG_BIOS -3.11 // 設置為零,然后更改為將測量值校正約 60 度的值。 雙角 = 0;?// 保存角度值的變量。 雙長度 = 0;?// 保存長度值的變量。 int SensorValue = CAL_0 + 1;// 保存傳感器值的變量。 LiquidCrystal_I2C lcd(0x27, 16, 2);?//20 到 27 // 將 LCD 地址設置為 0x27 以實現 16 個字符和 2 行顯示 無效設置() { ?? ?Serial.begin(115200);// 啟動串行。 ?? ?pinMode(Hall_49R_Pin,輸入);// 定義為輸入。 ?? ?液晶顯示器();// 啟動液晶顯示器。 ?? ?液晶背光();// 打開背光。 ?? ?lcd.setCursor(0, 0);?// 將光標設置在第 0 行(頂行)的開頭。 ?? ?lcd.print("角度:");?// 在頂行顯示角度標簽。 ?? ?lcd.setCursor(0, 1);?// 在第 1 行(底線)的開頭設置光標。 ?? ?lcd.print("長度:");?// 在底線顯示長度標簽。 } 無效循環() { ?? ?SensorValue = 模擬讀取(Hall_49R_Pin);// 從傳感器讀取值。 ?? ?Serial.println(SensorValue);?// 發送值到串口。 ?? ?計算角度();// 為角度做子路由。 ?? ?計算長度();// 為長度做子路由。 ?? ?序列號.println();?// 向串行發送一個新行以分隔值。 ?? ?延遲(200);// 稍等片刻,等事情發生。 } /* ?? ?使用來自傳感器的值計算角度。 ?? ??? ?S=O/H ?? ??? ?弧度到度數 = 弧度 * 180.0 / pi ?? ??? ?O = SensorValue - CAL_0 - CAL_RAD ?? ??? ?H = CAL_RAD ?? ??? ?弧度角 = asin(O / H) ?? ??? ?度角 = 弧度角 * 180.0 / pi; */ void CalcAngle() { ?? ?double O = (double)SensorValue - CAL_0 - CAL_RAD; ?? ?雙 H = (雙)O / CAL_RAD; ?? ?角度 = 90.0 + (asin(H) * 180.0 / PI); ?? ?Serial.print("角度"); ?? ?Serial.println(Angle + MAG_BIOS, 4); ?? ?lcd.setCursor(7, 0); ?? ?lcd.print(""); ?? ?lcd.setCursor(Xpos(Angle + MAG_BIOS), 0); ?? ?lcd.print(角度 + MAG_BIOS, 3); ?? ?lcd.print(""); } /* ?? ?使用從傳感器計算的度數計算長度。 ?? ??? ?C=A/H ?? ??? ?A=C*H ?? ??? ?度數為弧度 = 度數 * (PI / 180) ?? ??? ?C = (180 - 角度) / 2 ?? ??? ?H = LEG_LENGTH ?? ??? ?A = C * H ?? ??? ?長度 = A * 2 */ void CalcLength() { ?? ?雙 _angle = (180.0 - 角度) / 2; ?? ?雙 _rad = _angle * (PI / 180); ?? ?雙 C = cos(_rad); ?? ?雙 H = LEG_LENGTH; ?? ?長度 = C * H * 2; ?? ?Serial.print("長度"); ?? ?Serial.println(長度 + MAG_BIOS, 4); ?? ?lcd.setCursor(7, 1); ?? ?lcd.print(""); ?? ?lcd.setCursor(Xpos(Length + MAG_BIOS), 1); ?? ?lcd.print(長度 + MAG_BIOS, 3); ?? ?lcd.print(""); } /* ?? ?這是一個計算 LCD 上顯示值位置的函數。 ?? ??? ?檢查值是數百、數十還是單個。 ?? ??? ?保持數字一致。 */ byte Xpos(byte number) { ?? ?byte val = 8; ?? ?如果(數字 < 100){ val = 9;?} ?? ?if (number < 10) { val = 10;?} ?? ?返回值; } |
我已經附上代碼“Tims_Electronic_Deviders.ino”,您可以點擊這里下載它。
當你下載 Sketch 的時候,你需要把它放在一個沒有“.ino”的同名文件夾中。
12步:第一次替換
在零設置之前,MAG_BIOS 值需要設置為 0()。
#define MAG_BIOS -3.11 // 設置為零,然后更改為將測量值校正約 60 度的值。 |
卸妝器,需要流動。
關閉拆分線并下一個數字,即之前記錄/下一個數字。
打開一張圖,即早/早/的一個數字的數字顯示。
分頻器打開時記錄的數字應大于分頻器關閉時的記錄。
如果數字是錯誤的,那么看似是錯誤的。
根據標注的值更改 CAL_0 和 CAL_180 的 #defined 值。
#define CAL_0 377 // 0 角霍爾效應傳感器的值 #define CAL_180 690 // 霍爾效應傳感器的值 |
使用量角器將分頻器設置為60度,記下顯示的角度。
以前可用的時間,有60度并記錄下。
角度(度)和距離(毫米)的精度相似。
更改 MAG_BIOS 的#defined 以補償錯誤。
#define MAG_BIOS 0 // 設置為零,然后更改為將測量值校正約 60 度的值。 |
以后不同的情況。
0到15度。
165到180度。
這是因為這些區域是正弦曲線的地方,變化不大。
第13步:如何獲得更好的選擇
這是為了展示如何制作簡單的工具并展示霍爾傳感器的基礎知識。49E 只是一個線性模擬傳感器。
還有其他可以使用的傳感器,例如:
AS502是一個旋轉位置傳感器,有1個或PWM模擬接口。
?MLX90393 傳感器與沿 X、Y 和 Z 軸感應的磁密度成比例輸出的 1 位。
傳感器會帶來更多的使用價值。
評論
查看更多