Почему контакты Arduino не выдают 0 вольт?

void setup() {
  pinMode(5, OUTPUT);
}

void loop() {
  analogWrite(5, 0);
  // or
  //digitalWrite(5, LOW);
}

Выходное напряжение составляет 0,003 В, а из-за небольшого напряжения схема потребляет 20 мкА.

Можно ли как-то получить абсолютный 0 В от контакта ШИМ Arduino?

, 👍0

Обсуждение

Это совсем маленькое напряжение. Это не проблема кода, так как вы не можете сделать больше, чем перевести вывод в LOW (что и происходит, когда вы используете analogWrite(pin,0). Пожалуйста, покажите нам свою схему., @chrisl

@chrisl Я конвертирую ШИМ Arduino в аналоговый с RC и OA, а затем использую это напряжение в качестве опорного напряжения для другого OA ..., @ElectronSurf

Чтобы было ясно, установить такое точное напряжение может быть очень сложно (также потому, что оно находится в диапазоне шума). Я не уверен, исходит ли это даже от Arduino. С таким же успехом это может исходить от самой схемы операционного усилителя, поскольку они тоже не идеально построены. В зависимости от вашей конкретной схемы может быть лучше использовать дополнительную часть схемы для действительного отключения схемы операционного усилителя, вместо того, чтобы позволять ей усиливать шум., @chrisl

@chrisl 0,003 В от Arduino, в этом я уверен (проверено). он просто будет считать от 0 В до 0,5 В, а затем останется на уровне 0,5 В. не могли бы вы предоставить ссылку или что-нибудь, связанное с упомянутой вами «дополнительной схемой»?, @ElectronSurf

Где взять что-нибудь подсчитано? Я не вижу ничего подобного в вашем коде. О дополнительной схеме: это была просто мысль об отключении мощности операционных усилителей (возможно, через полевой МОП-транзистор) или понижении выходного сигнала ОУ через токоограничивающий резистор (также с помощью МОП-транзистора). Просто мысль, а не полноценная схема, на которую я мог бы дать ссылку, @chrisl

@chrisl я не добавлял этот подсчет в код, потому что он не имел отношения к вопросу. использование mosfet/транзистора - хорошая идея, я попробую это. Спасибо., @ElectronSurf

Вы, вероятно, не получите ниже 3 мВ даже с транзистором (это то, что уже делает Arduino). Вам действительно нужно получить ниже этого крошечного напряжения, я имею в виду, что оно в 4 раза меньше, чем разрешение ШИМ (идеально отфильтрованное) при работе на 3V3. Если да, то единственный шанс, который я вижу, это использование внешней схемы., @Sim Son

Внутри Arduino включается полевой транзистор, замыкающий выходной контакт на внутреннюю землю микросхемы. Если земля вашей внешней цепи не имеет того же потенциала, что и земля внутри микросхемы, ваша внешняя цепь будет иметь некоторое напряжение. Теперь… как два основания могут иметь разные потенциалы? Возможно, по проводу, соединяющему два заземления, проходит некоторый ток! Убедитесь, что в проводе, соединяющем заземление, нет тока., @user69795

@Sim Son Я предложил использовать MOSFET после усиления, потому что проблема заключается в том, что операционный усилитель усиливает 3 мВ до нежелательного большего сигнала. Подтягивания выхода усиления к низкому напряжению может быть достаточно, так что само усиление в этот момент не имеет значения., @chrisl

@newbie, как вы на самом деле проверили, что эти 3 мВ исходят от ардуино? Были ли удалены какие-либо внешние схемы при этом? В противном случае я бы заподозрил, что эти 3 мВ являются входным напряжением смещения операционного усилителя., @Sim Son

@SimSon Я отключил все от Arduino, а затем измерил напряжение на контакте 5., @ElectronSurf

https://majenko.co.uk/blog/what-exactly-gpio-pin, @Majenko


1 ответ


Лучший ответ:

3

Он не выводит 0v, потому что это почти невозможно. 0,003 В на самом деле очень мало. Выход LOW, согласно техническому описанию, может достигать 0,8 В (при питании от 5 В) и при этом считаться действительным.

LOW не означает 0v. Это означает «ниже порога напряжения, который считается НИЗКИМ».

,