ESP32 wroom и драйвер VNH2SP30, выход CS драйвера подключен к GPIO 32. AnalogRead(32) стабильно выдавал 56-100 при работе двигателя (коллекторный 12В), до 180 при перегрузке (застревание двигателя), функция сравнения с максимальным значением 180 отключала двигатель.
В процессе отладки других функций AnalogRead() стал вести себя предельно странно - как будто подгоняет измеряемое значение, делая его чуть выше максимального, хоть какое поставь туда.
Например (на коде ниже):
56 >= max 50 (если установить maxCurrent = 50)
136 >= max 120
2345 >= max 2000 и т.д.
При этом естественно, измеренное в каждом цикле значение все время меняется, но в указанных выше пределах, как будто опорное напряжение стало зависимым от переменной maxCurrent (в коде обращение к этой ноге и этой переменной больше нигде не встречаются).
Или это нога дак странно накрылась (сгорела)? НО как оно привязалось к значению maxCurrent?
Функциями из adc.h аналогично...
int maxCurrent = 200; //ограничение максимального тока привода ( на контакте CS ~200)
..setup().........
pinMode(CS, INPUT);
..loop()......
txCurrent = analogRead(CS);
if (txCurrent >= maxCurrent) { //превышение максимального тока привода (застревание)
Serial.print(txCurrent);
Serial.print(">= max ");
Serial.println(maxCurrent);
//Stat = "Overload";
digitalWrite(EN, LOW);
}
В процессе отладки других функций AnalogRead() стал вести себя предельно странно - как будто подгоняет измеряемое значение, делая его чуть выше максимального, хоть какое поставь туда.
Например (на коде ниже):
56 >= max 50 (если установить maxCurrent = 50)
136 >= max 120
2345 >= max 2000 и т.д.
При этом естественно, измеренное в каждом цикле значение все время меняется, но в указанных выше пределах, как будто опорное напряжение стало зависимым от переменной maxCurrent (в коде обращение к этой ноге и этой переменной больше нигде не встречаются).
Или это нога дак странно накрылась (сгорела)? НО как оно привязалось к значению maxCurrent?
Функциями из adc.h аналогично...
int maxCurrent = 200; //ограничение максимального тока привода ( на контакте CS ~200)
..setup().........
pinMode(CS, INPUT);
..loop()......
txCurrent = analogRead(CS);
if (txCurrent >= maxCurrent) { //превышение максимального тока привода (застревание)
Serial.print(txCurrent);
Serial.print(">= max ");
Serial.println(maxCurrent);
//Stat = "Overload";
digitalWrite(EN, LOW);
}