Con respecto a mi programa, es un programa que hace algunos cálculos y luego genera un voltaje basado en el resultado usando la función analogWrite. Sin embargo, mi problema es que había hecho mi programación en base a una idea errónea de que la función analogWrite a través de PWM genera una tensión analógica, donde en realidad solo "simula" la tensión analógica.
Aquí están las partes relevantes de mi código:
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");
}
En cuanto a los circuitos, el pin de salida 11 se está conectando a una resistencia de 1 ohm y luego a GND. (Donde medí el voltaje) Estoy usando la placa Arduino Uno.
ACTUALIZACIÓN :
Como se dijo en los comentarios de @DatHa, pwm no genera voltaje. ¿Hay alguna forma de salida de voltaje como se dijo, sin cambiar la placa?
Respuestas:
Básicamente tienes tres opciones:
De las tres opciones, usualmente uso un MCP4822 ya que brinda los mejores resultados y no cuesta tanto como usar un Due.
fuente
A 5 V, una resistencia de 1 ohmio intentará hundir 1 A y superar con creces las especificaciones de 40 mA. Utilice al menos una resistencia de 5 / 0.040 = 125 ohmios para proteger su pin. Y si coloca un condensador entre su resistencia y tierra, el circuito RC del condensador suavizará el PWM en un voltaje analógico.
Intente la respuesta @russell sugerida con una resistencia de 47K y un capacitor de 1uF, obtendrá un voltaje analógico en la unión para usar con su carga electrónica.
fuente
Hasta donde yo sé, los Arduinos tienen ADC (convertidores de analógico a digital) pero no tienen ningún DAC (convertidores de digital a analógico). Por lo tanto, no puede generar un voltaje establecido desde ningún pin basado en un valor digital.
fuente
NO. No hay forma de obtener un voltaje analógico del Arduino. Lo mejor que puede hacer es usar Arduino como un convertidor Buck Voltage en modo lineal o de refuerzo utilizando un regulador de voltaje, inductor y el transistor mosfet. También es posible que necesite usar un Mega o Dulorme que proporcione una frecuencia PWM distinta de la estándar de 50o Hz.
La mejor de las suertes
fuente
No hay forma directa.
Además de @Majenko
Forma alternativa: puede usar el puente H como L293d para proporcionar un nivel continuo. Muchos circuitos inversores de bricolaje están utilizando esta técnica.
http://www.instructables.com/id/How-to-Make-an-Inverter-Using-ARDUINO/?ALLSTEPS
fuente