Измерение ВАХ на батарейке АА с помощью ардуино уно

Тема в разделе "Arduino & Shields", создана пользователем Anastasiia, 6 июн 2018.

  1. Anastasiia

    Anastasiia Нерд

    Здравствуйте. Я хочу измерить ВАХ на батарейке и построить график с помощью ардуино уно.

    Нашла программы, которые написал человек, чтобы построить ВАХ подключив к ардуино солнечную батарею. Попробовала применить эти программы в моем варианте - работает. Но, непонятно как... Когда включен монитор порта результаты выдает, вроде все хорошо. Но оно выдает результаты даже в том случае, когда к входу А1, который указан в коде, ничего не подключено.

    График должен строиться в программе processing 3.3.7, но там открывается только пустое окно (с осями, но без графика).
    Кто знает, что может быть не так и как можно эту программу адаптировать к обычной батарейке? С программированием очень тяжело, на данный момент. Буду рада помощи.

    Программа для ардуино:


    Код (C++):
    #define axisY A1
    int x=0;
    void setup()
    {
      pinMode(axisY, INPUT);
      Serial.begin(9600);

    }
    void loop()
    {
      int Y = analogRead(axisY);
      if(x<=1000)
      {x=x+1;}
      else {
        x=1000;
      }
      int B=15;
    Serial.print(Y);
    Serial.print(",");
    Serial.print(x);
    Serial.print(",");
    Serial.print(B);
    delay(100);
    }

    Программа для processing:


    Код (C++):
    import processing.serial.*;

    Serial myPort;

    float xn,yn,yk,xk;

    int reset, axisX, axisY;

    void setup()
    {
      size(1000,500);
      stroke(255,0,0);
      line (0, height/2, width, height/2);
      line(0,499,0,0);
      line(0,499,1000,499);
      line(999,499,999,0);
      line(0,0,999,0);
      line(500,499,500,0);
      stroke (255,250,100);
      line(100,499,100,0);
      line(200,499,200,0);
      line(300,499,300,0);
      line(400,499,400,0);
      line(600,499,600,0);
      line(700,499,700,0);
      line(800,499,800,0);
      line(900,499,900,0);
      line(0,200,1000,200);
      line(0,100,1000,100);
      line(0,300,1000,300);
      line(0,400,1000,400);
     
      println(Serial.list());
      String portName = Serial.list()[0];
      myPort = new Serial(this, portName, 9600);
     
      myPort.bufferUntil('\n');
    }
    void serialEvent(Serial myPort)
    {
    String inputString = myPort.readStringUntil('\n');
    inputString = trim (inputString);
    int axises[] = int (split(inputString, ','));
    if(axises.length == 3)
    {
       axisY = axises[0];
       axisX = axises[1];
       reset = axises[2];
    }
    }

    void draw()
    {
      fill(#5fffff);
      noStroke();
      rect (900,350,980,370);
      fill  (255,0,0);
      text ("X="+axisX*0.005,910,380);
      text ("Y="+axisY*5.0/1024,910,420);
      text ("Z="+reset,910,460);
      text("0",3,490);
      text("0.5",110,490);
      text("1",210,490);
      text("1.5",310,490);
      text("2",410,490);
      text("2.5",510,490);
      text("3",610,490);
      text("3.5",710,490);
      text("4",810,490);
      text("4.5",910,490);
      text("1",3,390);
      text("2",3,290);
      text("3",3,190);
      text("4",3,90);
     
       fill(#5fffff);
       rect (400,5,200,20);
       fill (255,0,0);
       text("********* ГРАФИК F(x,y) *********", 410,20);
       float yn =500-(axisY*5.0/1024)*100;
       float xn =axisX;
       float xk =xn+2;
       float yk =yn+1;
       stroke (0);
       line (xn, yn, xk, yk);
     
    }
     
  2. b707

    b707 Гуру

    так и должно быть, когда к порту ничего не подключено, он выдает случайные значения.
    Покажите схему, как вы подключили батарейку к Ардуино
     
    arkadyf и Anastasiia нравится это.
  3. DIYMan

    DIYMan Guest

    https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ - цитата оттуда:

    Вопросы?

    З.Ы. Нет, это бесполезно - никто никогда не читает доку. Куда катится мир...
     
    arkadyf и Anastasiia нравится это.
  4. parovoZZ

    parovoZZ Гуру

    Есть ПРЕКРАСНЫЙ апноут на сайте атмела (микрочипа) по измерению напряжений. Скачайте и почитайте.
     
    Anastasiia нравится это.
  5. Anastasiia

    Anastasiia Нерд

    Подключено к ground и A1
     

    Вложения:

  6. Anastasiia

    Anastasiia Нерд

    Спасибо за ссылку. Не знала об этом.
     
  7. Anastasiia

    Anastasiia Нерд

    Спасибо большое, сейчас поищу.
     
  8. Anastasiia

    Anastasiia Нерд

    Так понимаю, это оно?
    http://www.microchip.com/wwwappnotes/appnotes.aspx?appnote=en598468
     
    arkadyf нравится это.
  9. b707

    b707 Гуру

    на фото негры грузят уголь темной ночью :) - крайне мало видно...

    Насколько я понял, у вас просто батаейка подключена к порту. И какой график вы надеетесь так построить? В первом приближении должна получится прямая горизонтальная линия. У вас батарейке не подключено никакой нагрузки, а значит напряжение на ней практически постоянно... саморазряд занимает месяцы и даже годы и так вы его не заметите.
    Для замера ВАХ нужно подключить к батарейке заранее рассчитанную нагрузку и наблюдать процесс разряда батарейки.
     
    arkadyf нравится это.
  10. parovoZZ

    parovoZZ Гуру

    угумс
    В таких случаях тренируются на кошках.
    Берётся конденсатор известной емкости (в первом приближении можно замерить тестером. Абсолютно все новые конденсаторы укладываются в свои 20%. Впрочем, китаяйский тестер даёт схожую погрешность), заряжается. Впоследствии снимается ВАХ с разряда конденсатора. И не надо ждать, пока котята внуки подрастут.
    Потом делаются расчеты. Если расчеты не делаются, то к чему вся эта канитель?
     
    arkadyf нравится это.