Как выводить истинное аналоговое напряжение на выходной вывод

Что касается моей программы, это программа, которая выполняет некоторые вычисления, а затем выводит напряжение на основе результата с использованием функции analogWrite. Однако моя проблема заключается в том, что я сделал свое программирование на основе ошибочного представления о том, что функция analogWrite через PWM выводит аналоговое напряжение, где на самом деле оно только «имитирует» аналоговое напряжение.

Вот соответствующие части моего кода:

int pwmOutput = 11;
int pwm = 0;

void compareNewOldVoltageYes(void)
{
  if(pv_Vnew > pv_Vold && pwm != 255)
  {
    ++pwm;           //increasing value
  }
  else if(pwm != 0)
  {
    --pwm;           //decreasing
  }
}

void compareNewOldVoltageNo(void)
{
  if(pv_Vnew > pv_Vold && pwm != 0)
  {
    --pwm;
  }
  else if(pwm != 255)
  {
    ++pwm;
  }
}

void loop() 
{
   reading();
   PowerCalculation();

   if(pv_NewP > pv_OldP)
   {
      compareNewOldVoltageYes();
   }
   else
   {
      compareNewOldVoltageNo();
   }

   analogWrite(pwmOutput, pwm);           //analogWrite

   float displayPWMvolt = pwm * 0.0196;

   Serial.print("Output Voltage: ");
   Serial.print(displayPWMvolt);
   Serial.println(" V");

   pv_OldP = pv_NewP;

   Serial.print("Previous Power: ");
   Serial.print(pv_OldP);
   Serial.println(" W");

}

Что касается схемы, выходной вывод 11 подключается к 1 Ом резистору, а затем к GND. (Где я измерил напряжение) Я использую плату Arduino Uno.

UPDATE

Как сказано в комментариях @DatHa, pwm не выводит напряжение. Есть ли способ вывода напряжения, как сказано, без изменения платы?

9 голосов | спросил bytk 28 12016vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2016 04:10:41 +0300 2016, 04:10:41

5 ответов


10

В основном у вас есть три варианта:

  1. Переключитесь на Arduino Due, у которого есть встроенный ЦАП, который выводит реальное напряжение.
  2. Добавьте внешний ЦАП (например, MCP4821 /2), чтобы создать напряжение для вас.
  3. Используйте низкочастотный фильтр (сеть R-C) на выводе PWM.

Из трех вариантов я обычно использую MCP4822, так как он дает наилучшие результаты и не стоит столько же, сколько с помощью функции Due.

ответил Majenko 28 12016vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2016 13:26:20 +0300 2016, 13:26:20
5

На 5В резистор на 1 Ом попытается опуститься на 1 А и значительно превысить характеристики 40 мА. Для защиты штыря используйте резистор 5 /0,040 = 125 Ом. И если вы положите конденсатор между резистором и землей, RC-схема конденсатора сгладит ШИМ в аналоговое напряжение.

Попробуйте предложенный ответ @russell с резистором 47K и конденсатором 1uF, вы получите аналоговое напряжение на стыке для использования с вашей электронной нагрузкой.

ответил Dave X 28 12016vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2016 05:56:47 +0300 2016, 05:56:47
2

Насколько я знаю, Arduinos имеют ADC (аналого-цифровые преобразователи), но не имеют ЦАП (цифро-аналоговые преобразователи). Таким образом, вы не можете выводить заданное напряжение из любых контактов на основе цифрового значения.

ответил Andre Courchesne 28 12016vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2016 04:43:52 +0300 2016, 04:43:52
0

НЕТ. Невозможно получить аналоговое напряжение от Arduino. Лучшее, что вы можете сделать, это использовать Arduino в качестве преобразователя напряжения Buck в линейном или импульсном режиме с использованием регулятора напряжения, индуктивности и транзистора MOSFET. Вам также может потребоваться использовать Mega или Dulorme, которые обеспечивают частоту ШИМ, равную стандарту 50o Гц.

Удача

ответил Jose E Calderon 28 12016vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2016 08:28:52 +0300 2016, 08:28:52
0

Нет прямого пути.

В дополнение к @Majenko

Альтернативный способ: вы можете использовать H-мост как L293d для обеспечения непрерывного уровня. Многие схемы инверторных диодов используют эту технику.

http: //www. instructables.com/id/How-to-Make-an-Inverter-Using-ARDUINO/?ALLSTEPS

ответил acs 29 22016vEurope/Moscow11bEurope/MoscowTue, 29 Nov 2016 00:12:39 +0300 2016, 00:12:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132