在这个项目中,我们使用ARDUINO UNO中的ADC(模数转换)概念。我们将使用霍尔效应传感器和Arduino uno测量磁体的场强。我们在这里使用的传感器是UGN3503U。这是一个霍尔传感器,可感应磁场强度并在输出端提供与磁场强度成比例的变化电压。该传感器以“ GAUSS ”为单位拾取场强。
因此,使用此传感器,我们将在变化的电压下具有磁场强度。通过使用ADC功能,我们可以将该电压转换为数字。此数字代表场强,并显示在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或VSS接地
PIN2或VDD或VCC至+ 5v电源
PIN3或VEE接地(为初学者提供最大对比度)
ARDUINO UNO的PIN4或RS(寄存器选择)至PIN8
PIN5或RW(读/写)接地(将LCD置于读模式可简化用户的通信)
ARDUINO UNO的PIN6或E(启用)至PIN9
ARDUINO UNO的PIN11或D4至PIN10
ARDUINO UNO的PIN12或D5至PIN11
ARDUINO UNO的PIN13或D6至PIN12
ARDUINO UNO的PIN14或D7至PIN13
ARDUINO IDE允许用户以4位模式使用LCD。这种通信类型使用户能够减少ARDUINO上的引脚使用,这与其他ARDUINO无需单独编程以在4 it模式下使用有关,因为默认情况下ARDUINO设置为以4位模式进行通信。在电路中,您可以看到我们使用了4位通信(D4-D7)。因此,仅从上表的观察,我们就将LCD的6个引脚连接到控制器,其中4个引脚是数据引脚,另外2个用于控制引脚。
加工
要将LCD与ARDUINO UNO接口,我们需要了解一些事情。
|
首先,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
其次,我们需要告诉主板我们在这里使用哪种类型的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代码进一步解释了该磁场测量项目的工作。