在這個(gè)我會(huì)做一個(gè)小工具的項(xiàng)目中。
我將使用我需要的 3D 打印機(jī)打印所需的零件。你也可以使用其他材料,但準(zhǔn)確度是組件中的關(guān)鍵因素。
49E霍爾傳感器*2——49E 是一款多功能智能顯示器。
Arduino NANO 進(jìn)行計(jì)算。AtMega328p 只有一個(gè) 10 位 DAC,計(jì)算使用 Sine,所以會(huì)有限制。
使用1602顯示器來(lái)顯示結(jié)果——1602顯示器是每行2行16個(gè)字符的顯示器。
UV膠水
需要3D立體模型來(lái)打印二維器的長(zhǎng)度。
點(diǎn)擊圖標(biāo)可以下載分割臂的 STL 文件。
傳感器臂.stl
臂臂.stl
第1步:49E線(xiàn)性霍爾傳感器

霍爾傳感器的制造商有很多我附在我的數(shù)據(jù)表上,從霍尼韋爾發(fā)現(xiàn)。
我已經(jīng)可以找到最便宜的了。
我制作了適合 49E 的塑料部件。
49E 只有 3 個(gè)連接。
+6 1 = 電源(+2.7.5伏)
密鑰 2 = 接地點(diǎn)。
?。ㄝ斎胪ǔT谳斎? = 輸入模擬之間 - 1 )
輸出是線(xiàn)性的,mV/Gauss。
?。跱S]顯示了它的磁強(qiáng)強(qiáng)度表的方向。
如果我們將要輸出的傳感器將與顯示的距離很近。
第2步:今天

我正在使用兩個(gè)用戶(hù)來(lái)改變傳感器周?chē)拇艌?chǎng)強(qiáng)度。
的意義為: 寬度 = 5 毫米,深度 = 5 毫米,高度 = 2 毫米。
北/南方向是從下到上。(在2毫米方向)
讓我們看看會(huì)產(chǎn)生的樣子。
集中在焦點(diǎn)的中心。
在向北移動(dòng)的中心,從南,幾乎是平行的。
當(dāng)返回磁體的時(shí)候,返回磁體的時(shí)候,會(huì)返回。
如果假設(shè)在一個(gè)磁極的位置,我們會(huì)選擇它到我們的位置,如果你會(huì)選擇移動(dòng)返回,因?yàn)闀?huì)跟著你返回。
傳感器非常敏感,任何雷達(dá)傳感器都沒(méi)有。
我們需要減少可能產(chǎn)生的錯(cuò)誤。
如果我們能把手機(jī)當(dāng)成只是簡(jiǎn)單的一件事情就再理想了。
我降低風(fēng)險(xiǎn)的方法是使用兩個(gè)今天。
如果使用兩個(gè)同類(lèi)的函數(shù),我們應(yīng)該會(huì)產(chǎn)生一個(gè)如果內(nèi)部的區(qū)域。
如果我們把今天當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)相對(duì)戶(hù)戶(hù)用,那么每天的時(shí)間,將與父母的兩個(gè)區(qū)域,并且該是的
第3步:計(jì)算角度

我們將帶著手機(jī)。
未來(lái)智能手機(jī)上將啟動(dòng)與未來(lái)將產(chǎn)生不同的輸出。
輸出將給出其旋轉(zhuǎn)角度的正弦值。
我已經(jīng)做了一個(gè)嘗試來(lái)嘗試解釋輸出。
關(guān)鍵的焦點(diǎn)是圍繞著這個(gè)話(huà)題。
藍(lán)代表智能手機(jī)視角/旋轉(zhuǎn)時(shí)間的位置。
黃線(xiàn)傳感器從南到北看到的線(xiàn)性強(qiáng)度。
綠線(xiàn)顯示正弦計(jì)算。
紅色是準(zhǔn)確的區(qū)域。
因?yàn)槭堑?,所以你?huì)認(rèn)為準(zhǔn)確的值對(duì)于我們來(lái)說(shuō)可以將模擬結(jié)果轉(zhuǎn)換成小數(shù)據(jù)。
Arduino NANO DAC 是 10 位的。
Arduino NO 與 float 相同,float 數(shù)據(jù)類(lèi)型只有 6-7 個(gè)復(fù)數(shù)的雙精度 NA。
因?yàn)檎谛D(zhuǎn)是遠(yuǎn)離傳感器,所以我們輸出的是輸出而不是輸出的正弦計(jì)算。
我們將擁有僅 10 個(gè)陽(yáng)光燦爛的海灘 (DAC) 無(wú)法很好計(jì)算的區(qū)域
可以用正確的植物的藍(lán)色線(xiàn)條表示可以計(jì)算的尺寸。
象牙藍(lán)的藍(lán)線(xiàn)表示無(wú)法精確計(jì)算的角度。
可以看到,在旋轉(zhuǎn)時(shí),磁力的分布有更多的度數(shù)。
我已經(jīng)關(guān)注了它的全部領(lǐng)域,以。
我正在使用最簡(jiǎn)單的哈爾傳感器。
為了獲得第一個(gè)傳感器,因此可以使用另一個(gè)傳感器。建立另一個(gè)傳感器,與達(dá)到 90 度,每個(gè)傳感器僅使用精度良好的區(qū)域。
是基本的,當(dāng)我們集中思想的時(shí)候,我會(huì)證明一點(diǎn)。
第4步:讓我們做長(zhǎng)線(xiàn)

我已經(jīng)提到傳感器非常敏感的組件,就是它
的設(shè)置是準(zhǔn)確的。它不應(yīng)該移動(dòng)。
可以在代碼中補(bǔ)償一些錯(cuò)位。
第5步:安裝傳感器
傳感器需要在隔板的傳感器臂上粘上。印刷部件有一個(gè)異形孔,定位傳感器的安裝方式。、
第6步:走路方向

為了幫助我在手機(jī)上找到一個(gè)磁體方向應(yīng)用程序。
手機(jī)需要包含磁力計(jì),通常它有 GPS,它會(huì)顯示一個(gè)磁力計(jì)。
有磁力計(jì)的應(yīng)用程序,我發(fā)現(xiàn)最好的應(yīng)用程序是 3D 應(yīng)用程序。
該圖有一個(gè)典型的 3d 應(yīng)用程序程序。箭頭指向北方的中心。
我使用的是:3D羅盤(pán)和磁力計(jì)。
手機(jī)中的磁力計(jì)始終不在。
它用最方便的手機(jī)做一些可以在實(shí)驗(yàn)
中找到的位置,就可以更方便地找到磁力計(jì)的位置。
我通常將手機(jī)定位在工作臺(tái)上的磁力計(jì)工作臺(tái)上。
第7步:將和第二臂安裝

安裝和第二個(gè)有點(diǎn)麻煩。
在將兩個(gè)臂膀牽涉到之前,請(qǐng)讓兩個(gè)移動(dòng)臂在第一個(gè)臂膀的牽動(dòng)下。
需要積極參與中。
你必須將一個(gè)真正的終點(diǎn)正確地,同時(shí)將第二個(gè)磁場(chǎng)極點(diǎn)確定在一個(gè)端點(diǎn)上。
這個(gè)必須在今天,第一個(gè)第二個(gè)展開(kāi)。
兩個(gè)兩個(gè)組合,唯一的動(dòng)作應(yīng)該是:將一群人轉(zhuǎn)移到一起并拉近彼此。
不會(huì)有橫向移動(dòng)或扭曲,否則會(huì)產(chǎn)生錯(cuò)誤。
第8步:將電纜添加到分頻器

下一個(gè)是在傳感器上添加,電纜以便將其連接到Arduino NANO。
我的 Arduino NANO 分線(xiàn),所以我在安裝一個(gè)杜邦母線(xiàn)連接器。
檢查步驟獲取正確的連接。
第9步:顯示屏(LCD)

為了從傳感器獲得反饋,我使用了每行 2 行 16 字符的 LCD。
我需要使用 PC28575 連接到 PCF。
我有電纜連接杜邦母連接器的4線(xiàn),用于將它連接到我的Arduino NANO。
第10步:連接到Arduino NANO

點(diǎn)擊下載數(shù)據(jù)庫(kù)。
Tims電氣分離器_bb.pdf下載Tims電氣分離器
_schem.pdf
第11步:代碼

我如果你有一個(gè) Arduino NANO,你已經(jīng)對(duì)它進(jìn)行了實(shí)驗(yàn),并且已經(jīng)到Arduino.cc網(wǎng)站了解了有關(guān)它的信息。
如果這是您第一次使用 Arduino 架構(gòu)的設(shè)備,請(qǐng)先訪(fǎng)問(wèn)此處: Arduino IDE 2 教程
在這里,您可以下載 Arduino IDE,并且有來(lái)自創(chuàng)建 Arduino 的人的教程。
本教程展示了如何將草圖上傳到設(shè)備。
下面是代碼。
下面是代碼。
|
/* ?? ?Tims_Electronic_Deviders.ino ?? ?由 Tim Jackson.1960 ?? ?學(xué)分:阿杜諾 ?? ??? ?。 ?? ??? ?LiquidCrystal_I2C 基于 DFRobot 的工作。 ?? ?這是以下代碼:Tim 的電子分離器。 ?? ?我正在使用帶有 49E 線(xiàn)性霍爾效應(yīng)傳感器和兩個(gè)磁鐵的 3D 打印分離器。 ?? ?我正在使用 Arduino NANO 根據(jù)從 49E 線(xiàn)性霍爾效應(yīng)傳感器接收到的值來(lái)計(jì)算分頻器的位置。 ?? ?傳感器是線(xiàn)性的:3 mV/GS,但要獲得角度,需要計(jì)算值的正弦值。 ?? ?S=O/HC=A/HT=O/A ?? ?度到弧度 = 度 * (PI / 180) ?? ?弧度到度 = 弧度 * 180.0 / pi */ #include #include #define Hall_49R_Pin A1 // 定義霍爾效應(yīng)引腳 #define CAL_0 377 // 0 角霍爾效應(yīng)傳感器的 值 #define CAL_180 690 // 180 角霍爾效應(yīng)傳感器的值 #define CAL_RANGE (CAL_180 - CAL_0) // 最高 CAL - 最低 CAL #define CAL_RAD ((double)CAL_RANGE / 2) // 用于正弦 H 值以獲得角度。 #define LEG_LENGTH 99 // 分隔線(xiàn)的長(zhǎng)度。 #define MAG_BIOS -3.11 // 設(shè)置為零,然后更改為將測(cè)量值校正約 60 度的值。 雙角 = 0;?// 保存角度值的變量。 雙長(zhǎng)度 = 0;?// 保存長(zhǎng)度值的變量。 int SensorValue = CAL_0 + 1;// 保存?zhèn)鞲衅髦档淖兞俊?br /> LiquidCrystal_I2C lcd(0x27, 16, 2);?//20 到 27 // 將 LCD 地址設(shè)置為 0x27 以實(shí)現(xiàn) 16 個(gè)字符和 2 行顯示 無(wú)效設(shè)置() { ?? ?Serial.begin(115200);// 啟動(dòng)串行。 ?? ?pinMode(Hall_49R_Pin,輸入);// 定義為輸入。 ?? ?液晶顯示器();// 啟動(dòng)液晶顯示器。 ?? ?液晶背光();// 打開(kāi)背光。 ?? ?lcd.setCursor(0, 0);?// 將光標(biāo)設(shè)置在第 0 行(頂行)的開(kāi)頭。 ?? ?lcd.print("角度:");?// 在頂行顯示角度標(biāo)簽。 ?? ?lcd.setCursor(0, 1);?// 在第 1 行(底線(xiàn))的開(kāi)頭設(shè)置光標(biāo)。 ?? ?lcd.print("長(zhǎng)度:");?// 在底線(xiàn)顯示長(zhǎng)度標(biāo)簽。 } 無(wú)效循環(huán)() { ?? ?SensorValue = 模擬讀取(Hall_49R_Pin);// 從傳感器讀取值。 ?? ?Serial.println(SensorValue);?// 發(fā)送值到串口。 ?? ?計(jì)算角度();// 為角度做子路由。 ?? ?計(jì)算長(zhǎng)度();// 為長(zhǎng)度做子路由。 ?? ?序列號(hào).println();?// 向串行發(fā)送一個(gè)新行以分隔值。 ?? ?延遲(200);// 稍等片刻,等事情發(fā)生。 } /* ?? ?使用來(lái)自傳感器的值計(jì)算角度。 ?? ??? ?S=O/H ?? ??? ?弧度到度數(shù) = 弧度 * 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(""); } /* ?? ?使用從傳感器計(jì)算的度數(shù)計(jì)算長(zhǎng)度。 ?? ??? ?C=A/H ?? ??? ?A=C*H ?? ??? ?度數(shù)為弧度 = 度數(shù) * (PI / 180) ?? ??? ?C = (180 - 角度) / 2 ?? ??? ?H = LEG_LENGTH ?? ??? ?A = C * H ?? ??? ?長(zhǎng)度 = A * 2 */ void CalcLength() { ?? ?雙 _angle = (180.0 - 角度) / 2; ?? ?雙 _rad = _angle * (PI / 180); ?? ?雙 C = cos(_rad); ?? ?雙 H = LEG_LENGTH; ?? ?長(zhǎng)度 = C * H * 2; ?? ?Serial.print("長(zhǎng)度"); ?? ?Serial.println(長(zhǎng)度 + MAG_BIOS, 4); ?? ?lcd.setCursor(7, 1); ?? ?lcd.print(""); ?? ?lcd.setCursor(Xpos(Length + MAG_BIOS), 1); ?? ?lcd.print(長(zhǎng)度 + MAG_BIOS, 3); ?? ?lcd.print(""); } /* ?? ?這是一個(gè)計(jì)算 LCD 上顯示值位置的函數(shù)。 ?? ??? ?檢查值是數(shù)百、數(shù)十還是單個(gè)。 ?? ??? ?保持?jǐn)?shù)字一致。 */ byte Xpos(byte number) { ?? ?byte val = 8; ?? ?如果(數(shù)字 < 100){ val = 9;?} ?? ?if (number < 10) { val = 10;?} ?? ?返回值; } |
我已經(jīng)附上代碼“Tims_Electronic_Deviders.ino”,您可以點(diǎn)擊這里下載它。
當(dāng)你下載 Sketch 的時(shí)候,你需要把它放在一個(gè)沒(méi)有“.ino”的同名文件夾中。
12步:第一次替換
在零設(shè)置之前,MAG_BIOS 值需要設(shè)置為 0()。
| #define MAG_BIOS -3.11 // 設(shè)置為零,然后更改為將測(cè)量值校正約 60 度的值。 |
卸妝器,需要流動(dòng)。
關(guān)閉拆分線(xiàn)并下一個(gè)數(shù)字,即之前記錄/下一個(gè)數(shù)字。
打開(kāi)一張圖,即早/早/的一個(gè)數(shù)字的數(shù)字顯示。
分頻器打開(kāi)時(shí)記錄的數(shù)字應(yīng)大于分頻器關(guān)閉時(shí)的記錄。
如果數(shù)字是錯(cuò)誤的,那么看似是錯(cuò)誤的。
根據(jù)標(biāo)注的值更改 CAL_0 和 CAL_180 的 #defined 值。
|
#define CAL_0 377 // 0 角霍爾效應(yīng)傳感器的值 #define CAL_180 690 // 霍爾效應(yīng)傳感器的值 |
使用量角器將分頻器設(shè)置為60度,記下顯示的角度。
以前可用的時(shí)間,有60度并記錄下。
角度(度)和距離(毫米)的精度相似。
更改 MAG_BIOS 的#defined 以補(bǔ)償錯(cuò)誤。
| #define MAG_BIOS 0 // 設(shè)置為零,然后更改為將測(cè)量值校正約 60 度的值。 |
以后不同的情況。
0到15度。
165到180度。
這是因?yàn)檫@些區(qū)域是正弦曲線(xiàn)的地方,變化不大。
第13步:如何獲得更好的選擇
這是為了展示如何制作簡(jiǎn)單的工具并展示霍爾傳感器的基礎(chǔ)知識(shí)。49E 只是一個(gè)線(xiàn)性模擬傳感器。
還有其他可以使用的傳感器,例如:
AS502是一個(gè)旋轉(zhuǎn)位置傳感器,有1個(gè)或PWM模擬接口。
?MLX90393 傳感器與沿 X、Y 和 Z 軸感應(yīng)的磁密度成比例輸出的 1 位。
傳感器會(huì)帶來(lái)更多的使用價(jià)值。
電子發(fā)燒友App















































評(píng)論