Доброго всем вечера, кто не спит. И доброго утра тем, кто с утра читает это. Вопрос по поломке 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?
А почему они должны давать ноль? Они подтянуты к нулевой шине или есть внешнее устройство, которое выдаёт ноль?
Поправил вопрос и отвечаю здесь Вам: дают одинаковую картину при подаче аналогового сигнала при всех значениях от 0 до 5В
А до подключения датчика картина отличалась от того, что сейчас? А ардуина от чего питалась в этот момент?
Здравствуйте. Питание было от PC через USB. До поломки у меня работала там микропрограмма снятия показаний через А0 аналоговый - переменный регистр , график отражал текущее напряжение на пине без проблем. код приложил, он стандартный. Говорят, что при замыкании Vin на GND ломается контроллер с невозможностью прошиться. Здесь немного другая ситуация, плата почти работает
А как вы подавали внешнее опорное напряжение? Нужно делать так: Код (C++): void setup() { analogReference(EXTERNAL); // use AREF for reference voltage } Подробности тут: https://arduinoplus.ru/arduino-aref-pin/
1/ Коль вы используете АЦП - где команда выбора референсного напряжения ?. Каково в реале напряжение на пине референса ? 2/ Чето вы темните - если вы датчиком (его концами V+ / V-), то есть просто резистором сопротивлением 2Мом, хоть ошибочно, хоть преднамеренно, подали напряжение с Vin на вход (А0) - да нифига им не будет, ни датчику, ни входу - при питании от USB !!! 3/ При замыкании Vin-GND и питании от USB - не случится абсолютно ничего. При питании от внешнего источника - сгорит защитный диод, только и всего (стОит - рубль). 4/ Похвально что знаете инглиш, его многие знают, но зачем он на русскоязычном форуме ?