So geben Sie eine echte analoge Spannung am Ausgangspin

aus In Bezug auf mein Programm ist es ein Programm, das einige Berechnungen durchführt und dann eine Spannung basierend auf dem Ergebnis mit ausgibt analogWrite-Funktion. Mein Problem ist jedoch, dass ich meine Programmierung auf der Grundlage eines Missverständnisses 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"); } 

Bei der Schaltung wird der Ausgangspin 11 mit einem 1-Ohm-Widerstand und dann mit GND verbunden. (Wo ich die Spannung gemessen habe) Ich verwende eine Arduino Uno-Karte.

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 Karte zu wechseln?

Kommentare

  • PS Analoges Schreiben verwendet PWM und erzeugt KEINE analoge Spannung.
  • @DatHa bedeutet das, dass dies nicht auf diese Weise möglich ist? Gibt es eine andere Funktion zum Ausgeben einer analogen Spannung?
  • Siehe @ Russell-Antwort auf arduino.stackexchange.com/questions/10041/…
  • @dpw Ich ' glaube nicht, dass dies funktioniert, da mein Programm über seine externe Programmierung eine Verbindung zu einer elektronischen Last herstellen muss Portieren und steuern Sie es mit 0-5 V.
  • PWM gibt eine bestimmte Spannung aus, oder ich ' bin ein Pirat im Jahr unseres Herrn 1734. Sie können ' überschreitet nicht einen 8-Bit-Wert, und ' weist beim Lesen immer eine gewisse Ungenauigkeit auf.

Antwort

Grundsätzlich haben Sie drei Möglichkeiten:

  1. Wechseln Sie zu einem Arduino Due mit integriertem DAC Fügen Sie einen externen DAC-Chip (z. B. den MCP4821 / 2) hinzu, um die Spannung für Sie zu erzeugen.
  2. Verwenden Sie ein Tiefpassfilter (RC-Netzwerk) einen PWM-Pin.

Von den drei Optionen verwende ich normalerweise einen MCP4 822, da es die besten Ergebnisse liefert und nicht so viel kostet wie die Verwendung eines Due.

Kommentare

  • Vielen Dank. Option 2 klingt wirklich gut, aber aus Zeitgründen habe ich Option 3 gewählt und die gewünschten Ergebnisse erzielt.
  • oder verwenden Sie einen R-2R Leiter als " armer Mann ' s DAC "
  • @AndreHolzner Ich zähle eine R-2R-Leiter wie einen DAC-Chip, aber mit zu vielen Drähten, um sie für ein durchschnittliches Arduino praktisch zu machen.
  • @Majenko Ich wollte nur hinzufügen, dass es sie gibt " digitale Potentiometer " oder " Digipots " das sind so ziemlich R-2R-Leitern in einem DIP-8-Chip. Sie sind billiger als DACs. (Zum Beispiel X9C103)
  • @FilipFranik Außer, dass sie ' keine R-2R-Leitern sind. Sie ' sind nur eine Kette von Widerständen mit einem FET, der mit jeder Verbindung zwischen Widerständen verbunden ist. Es gibt nur R. Viele Rs alle gleich. Ja, wenn Sie es mit den beiden Enden des Potentiometers auf VCC und GND schreiben, erhalten Sie eine Art DAC, aber es hat die gleichen Impedanzprobleme wie ein echtes Potentiometer. Es liefert ein Widerstandspaar, während ein DAC eine Spannung liefert.

Antwort

Bei 5 V ist eine 1 Der Ohm-Widerstand versucht, 1A zu senken und die 40-mA-Spezifikationen bei weitem zu überschreiten. Bitte verwenden Sie mindestens einen Widerstand von 5 / 0,040 = 125 Ohm, um Ihren Pin zu schützen. Und wenn Sie einen Kondensator zwischen Ihren Widerstand und Masse legen, glättet die RC-Schaltung des Kondensators die PWM in eine analoge Spannung.

Bitte versuchen Sie die vorgeschlagene @ russell-Antwort mit einem 47K-Widerstand und einem 1uF-Kondensator. Sie erhalten eine analoge Spannung an der Verbindungsstelle, mit der Sie arbeiten können Ihre elektronische Last.

Antwort

Soweit ich weiß, haben Arduinos ADC (Analog-Digital-Wandler), aber keine DAC (Digital-Analog-Wandler). Sie können also keine eingestellte Spannung von Pins basierend auf einem digitalen Wert ausgeben.

Kommentare

  • Die ARM-basierten Arduinos haben normalerweise mindestens einen DAC Kanal.

Antwort

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 Linear- oder Boost-Modus mit einem Spannungsregler, einer Induktivität und dem Mosfet-Transistor zu verwenden. Möglicherweise müssen Sie auch ein Mega oder Dulorme verwenden, das eine andere PWM-Frequenz als die Standardfrequenz von 50 Hz liefert.

Viel Glück

Antwort

Es gibt keinen direkten Weg.

Zusätzlich zu @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

Antwort

Ich habe mich gefragt, ob dies zu einer stabileren Ausgabe führen würde.

PWN wird RC vorgestellt. Cap Ladungen, Probe wird von einem anderen Analogeingang gemacht. Wenn der PWN-Pin niedrig wird, wird die Kappe langsam entladen. Möglicherweise wird parallel zur Kappe ein großer Widerstand für eine langsame Entladung benötigt?

Kommentare

  • Sie müssen hinzufügen ein R parallel zu C1, um C1 zu entladen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.