In Bezug auf mein Programm ist es ein Programm, das einige Berechnungen durchführt und dann eine Spannung basierend auf dem Ergebnis unter Verwendung der AnalogWrite-Funktion ausgibt. Mein Problem ist jedoch, dass ich meine Programmierung aufgrund einer falschen Annahme durchgeführt habe, dass die analogWrite-Funktion über PWM eine analoge Spannung ausgibt, wobei sie stattdessen nur die analoge Spannung "simuliert".
Hier sind die relevanten Teile meines Codes:
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");
}
Der Ausgangspin 11 der Schaltung ist mit einem 1-Ohm-Widerstand und dann mit GND verbunden. (Wo ich die Spannung gemessen habe) Ich verwende Arduino Uno Board.
UPDATE :
Wie in den Kommentaren von @DatHa erwähnt, gibt pwm keine Spannung aus. Gibt es eine Möglichkeit, die Spannung wie gesagt auszugeben, ohne die Platine zu wechseln?
Antworten:
Sie haben grundsätzlich drei Möglichkeiten:
Von den drei Optionen verwende ich normalerweise einen MCP4822, da er die besten Ergebnisse liefert und nicht so viel kostet wie ein Due.
quelle
Bei 5 V versucht ein 1-Ohm-Widerstand, 1A abzusinken und die 40-mA-Spezifikationen weit zu überschreiten. Bitte verwenden Sie mindestens einen 5 / 0.040 = 125 Ohm Widerstand, um Ihren Pin zu schützen. Und wenn Sie den Kondensator a zwischen Ihren Widerstand und Masse legen, glättet der RC-Schaltkreis des Kondensators die PWM in eine analoge Spannung.
Bitte probieren Sie die vorgeschlagene @ Russell-Antwort mit einem 47K-Widerstand und einem 1uF-Kondensator aus. Sie erhalten eine analoge Spannung an der Verbindungsstelle, die Sie für Ihre elektronische Last verwenden können.
quelle
Soweit ich weiß, haben Arduinos ADC (Analog-Digital-Wandler), aber keinen DAC (Digital-Analog-Wandler). Sie können also keine eingestellte Spannung von Pins ausgeben, die auf einem digitalen Wert basieren.
quelle
NEIN. Es gibt keine Möglichkeit, eine analoge Spannung vom Arduino zu erhalten. Das Beste, was Sie tun können, ist, Arduino als Buck-Spannungswandler im linearen oder Boost-Modus mit einem Spannungsregler, einer Induktivität und dem Mosfet-Transistor zu verwenden. Möglicherweise müssen Sie auch eine Mega- oder Dulorme-Frequenz verwenden, die eine andere PWM-Frequenz als die Standard-50-Hz-Frequenz liefert.
Bestes Glück
quelle
Es gibt keinen direkten Weg.
Neben @Majenko
Alternative Methode: Sie können eine H-Brücke wie L293d verwenden, um einen kontinuierlichen Pegel bereitzustellen. Viele DIY-Wechselrichterschaltungen verwenden diese Technik.
http://www.instructables.com/id/How-to-Make-an-Inverter-Using-ARDUINO/?ALLSTEPS
quelle