Поломка ацп после перепиновки на vin

Тема в разделе "Arduino & Shields", создана пользователем AlexM625, 15 мар 2022.

  1. AlexM625

    AlexM625 Нуб

    Доброго всем вечера, кто не спит. И доброго утра тем, кто с утра читает это.
    Вопрос по поломке Arduino Uno (Китай)
    Что сломалось: сейчас все аналоговые порты от А0 до А5 дают одинаковую картину при подаче аналогового сигнала при всех значениях от 0 до 5В (скриншот прилагаю). Значения не меняются при изменении напряжения - то есть плоттер не сдвигается ни вниз, ни вверх. До поломки у меня работала там микропрограмма снятия показаний через А0 аналоговый - переменный регистр , график отражал текущее напряжение на пине без проблем.
    Состояние контроллера: внешне всё без изменений. прошивка происходит без нареканий, в Serial можно вывести то, что требуется. При замере на пинах 5V, 3.3V, соответствуют паспортным значениям. На Vin пине напряжение 4.8V
    Что случилось: подключил датчик с выходным сигналом на 250мВ - 2МОм, и при этом ошибся в распиновке: плюс (+) на А0, а вот минус(-) попал на Vin. При включении сразу началось вот это всё. Питание было от PC через USB.
    Что сделано: перепрошивал. Сменял в прошивке входные пины на А0 - А5. подавал опорное напряжение 3.3 и прошивал соответствующий скетч.
    Вопрос: что произошло (академический интерес) и можно ли и как это исправить, куда копать?
    Код, который работал до поломки и загружен в данный момент.
    Код (C++):
    // These constants won't change. They're used to give names to the pins used:
    const int analogInPin = A4;  // Analog input pin that the potentiometer is attached to
    const int analogOutPin = 5; // Analog output pin that the LED is attached to
    const int statusOutPin = 3;
    int pos=0;
    String str;

    int sensorValue = 0;        // value read from the pot
    int outputValue = 0;        // value output to the PWM (analog out)

    void setup() {
      // initialize serial communications at 9600 bps:
      Serial.begin(9600);
      pinMode(analogOutPin, OUTPUT);      // устанавливает режим работы - выход
      pinMode(statusOutPin, OUTPUT);      // устанавливает режим работы - выход

      // analogWrite(statusOutPin, 255);
    }

    void loop() {
      // read the analog in value:
      sensorValue = analogRead(analogInPin);
      // map it to the range of the analog out:
      outputValue = map(sensorValue, 0, 1023, 0, 255);
      // change the analog out value:
      analogWrite(analogOutPin, outputValue);

      // print the results to the Serial Monitor:
      Serial.print("{\"sensor\": ");
      Serial.print(sensorValue);
      Serial.print(",");
      Serial.print("\t \"output\": ");
      Serial.print(outputValue);
      Serial.println("}");
         if (Serial.available() > 0) {  
            str = Serial.readString();  
            if (str == "one"){pos = 1;}else
            if (str == "ten"){pos = 10;}else
            if (str == "ninety"){pos = 90;}else{
              pos = str.toInt();
            }

            Serial.println("echo: "+str);
        }

      // wait 2 milliseconds before the next loop for the analog-to-digital
      // converter to settle after the last reading:
      delay(2);
    }
    English version
    Good evening to all who are awake. And good morning to those who are reading this in the morning.
    Question about Arduino Uno (China) breakage
    What's wrong:
    now all the analog ports from A0 to A5 give this instead of 0 (screenshot attached). They do not respond to power supply. The values do not change, i.e. the plotter does not move up or down.
    State of the controller: Externally, everything is unchanged. The firmware is running without problems, it is possible to output what you need in Serial. When measuring on the pins 5V, 3.3V, correspond to the passport values. The voltage on the Vin pins is 4.8V.
    I connected a sensor with 250mV - 2MOhm output, and made a mistake in the pinout: plus (+) went to A0, but minus (-) went to Vin. When I switched it on, it started all this at once.
    What's done: reflashed the firmware. Changed the input pins in the firmware to A0 - A5. I fed the 3.3 reference voltage and flashed the appropriate sketch.
    Question: what happened (academic interest) and whether and how to fix it, where to dig?


    upload_2022-3-15_22-17-59.png
     
    Последнее редактирование: 16 мар 2022
  2. parovoZZ

    parovoZZ Гуру

    А почему они должны давать ноль? Они подтянуты к нулевой шине или есть внешнее устройство, которое выдаёт ноль?
     
    AlexM625 нравится это.
  3. AlexM625

    AlexM625 Нуб

    Поправил вопрос и отвечаю здесь Вам:
    дают одинаковую картину при подаче аналогового сигнала при всех значениях от 0 до 5В
     
  4. SergeiL

    SergeiL Оракул Модератор

    А до подключения датчика картина отличалась от того, что сейчас?
    А ардуина от чего питалась в этот момент?
     
  5. AlexM625

    AlexM625 Нуб

    Здравствуйте. Питание было от PC через USB. До поломки у меня работала там микропрограмма снятия показаний через А0 аналоговый - переменный регистр , график отражал текущее напряжение на пине без проблем. код приложил, он стандартный. Говорят, что при замыкании Vin на GND ломается контроллер с невозможностью прошиться. Здесь немного другая ситуация, плата почти работает
     
  6. parovoZZ

    parovoZZ Гуру

    ну раз так, значит внутри что-то отгорело.
     
  7. User248

    User248 Нерд

    А как вы подавали внешнее опорное напряжение?
    Нужно делать так:
    Код (C++):

    void setup()
    {
      analogReference(EXTERNAL); // use AREF for reference voltage
    }
     
    Подробности тут: https://arduinoplus.ru/arduino-aref-pin/
     
  8. поменяй мк и не парься
     
  9. Ariadna-on-Line

    Ariadna-on-Line Гуру

    1/ Коль вы используете АЦП - где команда выбора референсного напряжения ?. Каково в реале напряжение на пине референса ?
    2/ Чето вы темните - если вы датчиком (его концами V+ / V-), то есть просто резистором сопротивлением 2Мом, хоть ошибочно, хоть преднамеренно, подали напряжение с Vin на вход (А0) - да нифига им не будет, ни датчику, ни входу - при питании от USB !!!
    3/ При замыкании Vin-GND и питании от USB - не случится абсолютно ничего. При питании от внешнего источника - сгорит защитный диод, только и всего (стОит - рубль).
    4/ Похвально что знаете инглиш, его многие знают, но зачем он на русскоязычном форуме ?
     
    Последнее редактирование: 19 мар 2022