我需要帮助读取arduino mega2560中的模拟电压

时间:2013-10-27 05:10:32

标签: arduino

我是微控制器的新手,我需要帮助读取电压并在串行监视器中打印它们。我用电位器完成了这个,但我想知道我是否可以只用电压做同样的事情。下面是我读取电位计值时使用的代码:

我尝试过读取电压但是当我在A0针输入一个小于3-5V的电压时,我在串口监视器中得到0

int potPin = 0;    // select the input pin
int val = 0;       // variable to store the value coming from the function generator
void setup()
{
  Serial.begin(9600);   // opens serial port, sets data rate to 9600 bps
}
void loop() {
  val = analogRead(potPin); // read the value from the function generator
  Serial.println(val);
  delay(1000); //Sampling rate for the signal
}

3 个答案:

答案 0 :(得分:1)

正如Udo Klein所说,这看起来像硬件问题。尝试设置你的电路:http://imgur.com/PYbeqLq

请注意,函数发生器和arduino之间共用接地 - 这对于确保正确测量电压非常重要。请记住,电压实际上是电位的差值,因此您需要一个公共参考点来测量。

答案 1 :(得分:0)

要回答您的问题,是的,您可以从其他硬件中读取电压。

正如gearbot告诉你的那样,在arduino和其他硬件之间保持一致是很重要的。

另外要注意,arduino只能测量0到5伏之间的电压。不要在没有调整电路的情况下测量更高的电压,因为你可能会破坏你的arduino电路板。

如果您不确定在使用万用表连接到arduino之前测量电压。

Uno有6个模拟输入,标记为A0到A5,每个输入提供10位分辨率(即1024个不同的值)。默认情况下,它们可以测量从地电压到5伏,但可以使用AREF引脚和analogReference()函数更改其范围的上限。

编辑:

我没有在帖子底部看到添加的评论。这表明确实存在硬件问题(可能在您的电路中)

为了确保arduino做正确的事情,在硬件连接和工作时用万用表在A0和GND引脚之间测量电压。你应该能够在那里读取正确的电压。

我怀疑它会提供与Arduino相同的值。 然后用万用表追踪电路(保持GND连接),找出出错的地方。

答案 2 :(得分:0)

尝试缩放0到5或1-5v输入 使用地图功能。

int setValue = map(ana1Value,0,1023,0,100);

可能对你有帮助。

模拟输入电压是缩放0-100然后你可以使用