Otázka:
Jak vydávat skutečné analogové napětí na výstupním kolíku
bytk
2016-11-28 07:10:41 UTC
view on stackexchange narkive permalink

Pokud jde o můj program, jedná se o program, který provádí určité výpočty a poté na základě výsledku vysílá napětí pomocí funkce analogWrite. Mým problémem však je, že jsem programování provedl na základě mylné představy, že funkce analogWrite přes PWM vydává analogové napětí, přičemž ve skutečnosti pouze „simuluje“ analogové napětí.

Zde jsou relevantní části mého kódu:

  int pwmOutput = 11; int pwm = 0; void compareNewOldVoltageYes (void) {if (pv_Vnew > pv_Vold && pwm! = 255) {++ p // zvýšení hodnoty} else if (pwm! = 0) {--pwm; // klesající}} 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); // plovoucí displej analogWrite PWMvolt = pwm * 0,0196; Serial.print ("Výstupní napětí:"); Serial.print (displayPWMvolt); Serial.println ("V"); pv_OldP = pv_NewP; Serial.print ("Předchozí výkon:"); Serial.print (pv_OldP); Serial.println ("W");}  

Pokud jde o obvody, výstupní pin 11 je připojen k rezistoru 1 ohm a poté k GND. (Kde jsem změřil napětí) Používám desku Arduino Uno.

UPDATE :

Jak bylo řečeno v komentářích od @DatHa, pwm nemá výstup Napětí. Existuje způsob, jak vydat napětí, jak bylo řečeno, aniž byste měnili desku?

P.S. Analogový zápis používá PWM a NEVYDÁVÁ analogové napětí.
@DatHa to znamená, že to nelze udělat tímto způsobem? Existuje další funkce pro výstup analogového napětí?
Viz odpověď @Russell na http://arduino.stackexchange.com/questions/10041/can-i-connect-a-pwm-pin-on-one-arduino-to-an-analog-input-on-another
@dpw Nemyslím si, že to funguje, protože můj program se musí připojit k elektronické zátěži přes svůj externí programovací port a ovládat jej pomocí 0-5V.
PWM vydává specifické napětí, nebo jsem pirátem v roce našeho Pána 1734. Nemůžete jít nad 8bitovou hodnotu a při čtení je vždy nějaká nepřesnost.
šest odpovědi:
Majenko
2016-11-28 16:26:20 UTC
view on stackexchange narkive permalink

V zásadě máte tři možnosti:

  1. Přepnout na Arduino Due, který má vestavěný DAC, který vydává skutečné napětí.
  2. Přidejte externí DAC čip ( například MCP4821 / 2) pro vytvoření napětí pro vás
  3. Použijte low-pass filtr (RC síť) na PWM kolíku.

Ze tří možností Obvykle používám MCP4822, protože poskytuje nejlepší výsledky a nestojí tolik jako použití splatnosti.

Děkuji. Možnost 2 zní opravdu dobře, ale vzhledem k časovým omezením jsem pokračoval s možností 3 a získal požadované výsledky.
nebo použijte [R-2R žebřík] (https://en.wikipedia.org/wiki/Resistor_ladder) jako „DAC chudáka“
@AndreHolzner Počítám žebřík R-2R stejně jako čip DAC, ale s příliš mnoha vodiči, aby to bylo praktické pro vaše průměrné Arduino.
@Majenko Chtěl jsem jen dodat, že existují „digitální potenciometry“ nebo „digipoty“, které jsou v podstatě čipy R-2R uvnitř čipu DIP-8. Jsou levnější než DAC. (Například X9C103)
@FilipFranik Až na to, že to nejsou žebříky R-2R. Jsou to jen řetězec rezistorů s FET připojeným ke každému spojení mezi rezistory. Existuje pouze R. Mnoho R stejných. Ano, pokud to napíšete dvěma konci potenciometru na VCC a GND, dostanete jakýsi DAC, ale trpí stejným druhem problémů s impedancí jako skutečný potenciometr. Poskytuje dvojici odporů, zatímco DAC poskytuje napětí.
Dave X
2016-11-28 08:56:47 UTC
view on stackexchange narkive permalink

Při 5 V se 1 ohmový rezistor pokusí potopit 1 A a daleko překročí specifikace 40 mA. K ochraně svého kolíku použijte alespoň odpor 5 / 0,040 = 125 ohmů. A pokud vložíte kondenzátor mezi odpor a zem, RC obvod kondenzátoru vyhladí PWM na analogové napětí.

Vyzkoušejte navrhovanou odpověď @russell s rezistorem 47K a kondenzátorem 1uF, na křižovatce získáte analogové napětí, které lze použít s vaší elektronickou zátěží.

Andre Courchesne
2016-11-28 07:43:52 UTC
view on stackexchange narkive permalink

Pokud vím, Arduinos mají ADC (analogově-digitální převaděče), ale nemají žádný DAC (digitálně-analogové převaděče). Na základě digitální hodnoty tedy nemůžete vyslat nastavené napětí z žádného pinu.

Arduinos založená na ARM mají obvykle alespoň jeden DAC kanál.
Jose Enrique Calderon
2016-11-28 11:28:52 UTC
view on stackexchange narkive permalink

NE .. Neexistuje způsob, jak získat analogové napětí z Arduina. Nejlepší, co můžete udělat, je použít Arduino jako převodník napětí Buck v lineárním nebo zesilovacím režimu pomocí regulátoru napětí, induktoru a tranzistoru MOSFET. Také možná budete muset použít Mega nebo Dulorme, které poskytují PWM frekvenci jinou než standardní 50o Hz.

Hodně štěstí

acs
2016-11-29 03:12:40 UTC
view on stackexchange narkive permalink

Neexistuje přímá cesta.

Kromě @Majenko

Alternativní způsob: pro zajištění nepřetržité úrovně můžete použít H můstek jako L293d. Mnoho obvodů invertoru používá tuto techniku.

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

T. Kane
2020-08-21 21:21:38 UTC
view on stackexchange narkive permalink

Přemýšlel jsem, jestli by to poskytlo stabilnější výstup.

PWN presented to RC.  Cap charges, sample is made by another analog input.  When PWN pin goes low, slow discharge of cap.  Maybe a large resistor is needed in parallel with the cap for slow discharge?

K vybití C1 musíte přidat R paralelně s C1.


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...