使用Arduino进行磁场强度测量
原文地址:https://circuitdigest.com/microcontroller-projects/arduino-magnetic-field-measurement
使用Arduino進行磁場強度測量
ARDUINO的
經過**迪利普·拉賈(Dilip Raja)** 2015年8月18日16
在這個項目中,我們使用ARDUINO UNO中的ADC(模數轉換)概念。我們將使用霍爾效應傳感器和Arduino uno測量磁體的場強。我們在這里使用的傳感器是UGN3503U。這是一個霍爾傳感器,可感應磁場強度并在輸出端提供與磁場強度成比例的變化電壓。該傳感器以“ GAUSS ”為單位拾取場強。
因此,使用此傳感器,我們將獲得隨著電壓變化而產生的場強。通過使用ADC功能,我們可以將該電壓轉換為數字。此數字代表場強,并顯示在LCD上。[也檢查:與Arduino的16x2 LCD接口]
Arduino具有六個ADC通道。在這些情況下,它們中的任何一個或全部都可用作模擬電壓的輸入。UNO ADC的分辨率為10位(因此(0-(2 ^ 10)1023中的整數值))。這意味著它將把0到5伏之間的輸入電壓映射為0到1023之間的整數。因此,每單位(5/1024 = 4.9mV)。
所有這些我們都將電位計或電位計連接到“ A0”通道,并且將以簡單的顯示方式顯示ADC結果。簡單的顯示是16x1和16x2顯示單元。16x1顯示單元將包含16個字符,并在一行中。的16×2將具有16英寸的總1 32個字符第一線和另一條16在2次線。在此必須理解,每個字符中都有5x10 = 50像素,因此要顯示一個字符,所有50像素必須一起工作,但是我們不必擔心,因為人機界面中還有另一個控制器(HD44780)可以執行此操作。控制像素的工作(您可以在LCD單元中看到它,它是背面的黑眼圈)。
所需組件
硬件: ARDUINO UNO,電源(5v),JHD_162ALCD(16x2LCD),100uF電容器(2個),UGn3503U。
軟體: arduino IDE(Arduino每晚)
電路圖和說明
上圖顯示了 使用arduino uno進行磁場測量的電路圖。
在16x2 LCD中,如果有背光,則全部有16個引腳,如果沒有背光,則有14個引腳。一個人可以給背光燈插針供電或離開。現在,在14個引腳中,有8個數據引腳(7-14或D0-D7),2個電源引腳(1&2或VSS&VDD或GND&+ 5v),第三個用于對比度控制的引腳(VEE控制字符的粗細)如圖所示)和3個控制引腳(RS&RW&E)。
在上面的電路中,您可以觀察到我只用了兩個控制引腳,不經常使用對比度位和READ / WRITE,因此它們可以接地。這使LCD處于最高對比度和讀取模式。我們只需要控制ENABLE和RS引腳即可相應地發送字符和數據。
LCD的連接如下所示:
- PIN1 or VSS to ground
- PIN2 or VDD or VCC to +5v power
- PIN3 or VEE to ground (gives maximum contrast best for a beginner)
- PIN4 or RS (Register Selection) to PIN8 of ARDUINO UNO
- PIN5 or RW (Read/Write) to ground (puts LCD in read mode eases the communication for user)
- PIN6 or E (Enable) to PIN9 of ARDUINO UNO
- PIN11 or D4 to PIN10 of ARDUINO UNO
- PIN12 or D5 to PIN11 of ARDUINO UNO
- PIN13 or D6 to PIN12 of ARDUINO UNO
- PIN14 or D7 to PIN13 of ARDUINO UNO
ARDUINO IDE允許用戶以4位模式使用LCD。這種通信類型使用戶可以減少ARDUINO上的引腳使用,這與其他ARDUINO無需單獨編程以在4 it模式下使用有關,因為默認情況下,ARDUINO設置為以4位模式進行通信。在電路中,您可以看到我們使用了4位通信(D4-D7)。因此,僅從上表的觀察,我們就將LCD的6個引腳連接到控制器,其中4個引腳是數據引腳,另外2個是控制引腳。
在職的
要將LCD連接到ARDUINO UNO,我們需要了解一些事情。
AnalogRead(pin);AnalogReference();AnalogReadResolution(bits);首先,UNO ADC通道的默認參考值為5V。這意味著我們可以在任何輸入通道上為ADC轉換提供5V的最大輸入電壓。由于某些傳感器提供的電壓范圍為0-2.5V,使用5V基準電壓時,我們獲得的精度較低,因此我們有一條指令使我們能夠更改該基準值。因此,為了更改參考值,我們可以使用(“ analogReference();”)
默認情況下,我們獲得的最大板載ADC分辨率為10位,可以使用指令(“ analogReadResolution(bits);”)更改此分辨率。在某些情況下,此分辨率更改可能會派上用場。
現在,如果上述條件設置為默認值,我們可以通過直接調用函數“ analogRead(pin);”從通道“ 0”的ADC讀取值,這里的“ pin”代表我們連接模擬信號的引腳,在這種情況下,它將為“ A0”。來自ADC的值可以取為一個整數,例如“ int ADCVALUE = AnalogRead(A0); ”,則該指令會將ADC之后的值存儲在整數“ ADCVALUE”中。
現在讓我們談談16x2 LCD。首先,我們需要啟用頭文件(’#include <LiquidCrystal.h>’),該頭文件中寫入了指令,這使用戶能夠以4位模式將LCD連接到UNO,而不會產生任何絨毛。使用此頭文件,我們不必將數據一點一點地發送到LCD,這一切都將得到解決,我們也不必編寫用于向LCD發送數據或命令的程序。
其次,我們需要告訴主板我們在這里使用哪種類型的LCD。由于我們有許多不同類型的LCD(例如20x4、16x2、16x1等)。在這里,我們將16x2 LCD連接到UNO,因此得到“ lcd.begin(16,2);”。對于16x1,我們得到’lcd.begin(16,1);’。
在此說明中,我們將告訴主板我們引腳的連接位置,所連接的引腳應按“ RS,En,D4,D5,D6,D7”的順序表示。這些針腳必須正確表示。由于我們已將RS連接到PIN0等,如電路圖所示,我們將板上的引腳號表示為“ LiquidCrystal lcd(0,1,8,9,9,10,11);”。
在此之后,剩下的就是發送數據了,需要在LCD上顯示的數據應寫為“ cd.print(“ hello,world!”);“。使用此命令,LCD會顯示“ hello,world!”。如您所見,我們不必擔心其他任何事情,我們只需要初始化即可,UNO將準備顯示數據。我們不必在此處編寫程序循環來通過BYTE發送數據BYTE。
一旦將磁鐵放到傳感器附近,傳感器就會在輸出端代表與磁場成比例的電壓,該值由Uno
吸收并顯示在LCD中。通過下面的C代碼進一步解釋了該磁場測量項目的工作。
Code
#include <LiquidCrystal.h> // initialize the library with the numbers of the interface pinsLiquidCrystal lcd(8, 9, 10, 11, 12, 13);/// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN char ADCSHOW[5];//initializing a character of size 5 for showing the ADC result void setup() {// set up the LCD's number of columns and rows:lcd.begin(16, 2); }void loop() {lcd.print("FluxDensity");//showing namelcd.setCursor(0, 1);//move to second linelcd.print("(in Gauss):");// showing unitsString ADCVALUE = String((analogRead(A0) - 515) / 3.76);/* Now since the default reference if 5V and resolution is 10bit so for every 5/1024 = 5mV, we get one increment is count, The sensor provides increment voltage of 1.3V for every 1Gauss increment if field. So we need to divide ADC value by 3.76 for getting the gauss value, now the 0 gauss output of sensor is 2.5V so we need to subtract that first. To hold a 0V read at 0Gauss field. */// Convert the reading to a char arrayADCVALUE.toCharArray(ADCSHOW, 5);lcd.print(ADCSHOW);//showing the field strength valuelcd.print("G ");lcd.setCursor(0, 0);// set the cursor to column 0, line 0 }總結
以上是生活随笔為你收集整理的使用Arduino进行磁场强度测量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fop文档
- 下一篇: Solution: X3100集成显卡宽