A programommal kapcsolatban ez egy olyan program, amely elvégez néhány számítást, majd az eredmény alapján feszültséget ad ki az analogWrite funkció. A problémám azonban az, hogy egy tévhit alapján hajtottam végre a programozásomat, miszerint az analogWrite funkció PWM-en keresztül analóg feszültséget ad ki, ahol valójában csak az analóg feszültséget “szimulálja”.
Íme a releváns részek kódom:
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"); }
Ami az áramkört illeti, a 11-es kimeneti tűt 1 ohmos ellenálláshoz, majd a GND-hez csatlakoztatják. (Ahol mértem a feszültséget) Arduino Uno kártyát használok.
UPDATE :
Amint azt a @DatHa megjegyzéseiben elmondtuk, a pwm nem ad ki feszültséget. Van-e mód a feszültség kimenetére az említettek szerint, a tábla megváltoztatása nélkül?
Megjegyzések
- PS Az analóg írás PWM-et használ, és NEM hoz létre analóg feszültséget.
- @DatHa ez azt jelenti, hogy ezt nem lehet így megtenni? Van-e még egy funkció az analóg feszültség kimenetére?
- Lásd a @Russell választ a arduino.stackexchange.com/questions/10041/
- @dpw nem gondolom, hogy ez úgy működik, hogy a programomnak külső programozása révén csatlakoznia kell egy elektronikus terheléshez port és vezérelje 0-5V használatával.
- A PWM egy adott feszültséget ad ki, vagy I ' ma kalózot Urunk 1734. évében. Lehet ' t meghalad egy 8 bites értéket, és ott ' mindig olvashatatlan pontossággal.
Válasz
Alapvetően három lehetőséged van:
- Váltás Arduino Due-re, amelybe beépített DAC van amely valós feszültséget ad ki.
- Adjon hozzá egy külső DAC chipet (például MCP4821 / 2) a feszültség létrehozásához az Ön számára
- Használjon aluláteresztő szűrőt (RC hálózat) egy PWM tű.
A három lehetőség közül általában MCP4-et használok 822, mivel ez adja a legjobb eredményt, és nem kerül annyiba, mint a Due használata.
megjegyzések
- köszönöm. A 2. opció nagyon jól hangzik, de az idő korlátozása miatt folytattam a 3. lehetőséget, és meglett a kívánt eredmény.
- vagy használjon egy R-2R létra mint " szegény ember ' s DAC "
- @AndreHolzner Számolok egy R-2R létrát, amely megegyezik egy DAC chipdel, de túl sok vezetékkel rendelkezik ahhoz, hogy praktikus legyen az átlagos Arduino-n.
- @Majenko Csak azt akartam hozzátenni, hogy léteznek " digitális potenciométerek " vagy " digipotok " amelyek nagyjából R-2R létra egy DIP-8 chip belsejében. Olcsóbbak, mint a DAC-ok. (Például X9C103)
- @FilipFranik Kivéve, ha ' nem R-2R létra. ' csak egy ellenállások láncolatát képezik, amelyeknek FET-je van csatlakoztatva az egyes ellenállások közötti kapcsolatokhoz. Csak R. van, sok R egyformán. Igen, ha a potenciométer két végével felírja a VCC-re és a GND-re, akkor egyfajta DAC-ot kap, de ugyanolyan impedancia problémákat szenved, mint egy igazi potenciométer. Ez egy pár ellenállást biztosít, míg a DAC feszültséget biztosít.
Válasz
5 V feszültségnél a 1 ohmos ellenállás megpróbálja 1A-t süllyeszteni, és jóval meghaladja a 40mA specifikációt. Kérjük, használjon legalább 5 / 0,040 = 125 ohmos ellenállást a tű védelme érdekében. És ha a kondenzátort az ellenállás és a föld közé helyezi, a kondenzátor RC áramköre analóg feszültséggé simítja a PWM-et.
Kérjük, próbálja ki a javasolt @russell választ egy 47K-os ellenállással és 1uF kondenzátorral. Analóg feszültséget kap a csomópontban, amellyel használható az elektronikus terhelés.
Válasz
Ha jól tudom, az Arduinos rendelkezik ADC-vel (analóg-digitális átalakítók), de nincs DAC (digitális-analóg átalakítók). Tehát digitális érték alapján egyetlen feszültségről sem adhat ki beállított feszültséget.
Megjegyzések
- Az ARM-alapú Arduinos általában rendelkezik legalább egy DAC-tal csatorna.
Válasz
NEM. Az Arduinóról nem lehet analóg feszültséget kapni. A legjobb, amit tehet, hogy az Arduino-t Buck Voltage konverterként használja lineáris vagy boost módban, feszültségszabályozó, induktivitás és a mosfet tranzisztor segítségével. Szükség lehet egy Mega vagy Dulorme használatára is, amelyek a szokásos 50o Hz-től eltérő PWM frekvenciát biztosítanak.
Sok szerencsét
Válasz
Nincs közvetlen út.
A @Majenko mellett
Alternatív mód: a H szintet használhatja, mint az L293d, a folyamatos szint biztosításához.Sok barkácsoló áramkör használja ezt a technikát.
http://www.instructables.com/id/How-to-Make-an-Inverter-Using-ARDUINO/?ALLSTEPS
Válasz
Kíváncsi voltam, hogy ez stabilabb kimenetet eredményez-e. PWN bemutatták az RC-nek. Kupak tölt, a mintát egy másik analóg bemenet készíti. Amikor a PWN csap alacsonyra süllyed, a sapka lassan ürül. Talán nagy ellenállásra van szükség a kupakkal párhuzamosan a lassú kisütéshez?
Megjegyzések
- Hozzá kell adnia egy R párhuzamosan a C1-vel a C1 ürítéséhez.