Fórum témák
» Több friss téma |
Hali
A PR2 regiszter valtoztatasaval valtozik a frekvencia. A PWM periodus vegen ( a TM2IF bit bebillen) lehet valtoztatni a PR2 regisztert, de elotte illik leallitani a TMR2-t, es utana ujra berugni. Adatlapot erdemes tanulmanyozni! Egy kis irodalom
Kösz a választ, meg az olvasnivalót!
Sze rin tem el leszek most egy darabig...
Sziasztok
Végig olvastam ezt a fórumot de sajnos nem találtam a kérdésemre a választ így felteszem nektek. szeretnék építeni egy futófényt ami csóvát húz maga után (a sima már sikerült) és írták nekem, hogy pwm-el csináljam meg de ez pontosan hogyan működik és kell hozzá valami különleges bekötés ? Ugyan találtam csóvás megoldású futófényt de csak asm-ben volt én pedig c-ben szeretném meg érteni. esetleg azt szeretném kérdezni hogyha minden led-hez kötök kondikat meg felelő mennyiségben akkor is elérhető a kívánt csóva?
Én a ledek közös tápjába egy PWM kimenet által vezérelhető tranzisztort tetem .A ledeket a PWM timerével szinkronizálva gyújtottam ki egyesével (konkrétan ,mikor a timer megszakítása történt egy leddel arrább léptettem,valamint a PWM kitöltési tényezőjét átállítottam az új lednek megfelelő fényerőre.Így a tápot emelni kell,és ha véletlen leáll akkor az aktuális lednek vége,de mivel multiplexelt kijelző fényerőszabályzója volt ,így erre mindenképpen vigyázni kellett.(ASM-ben írtam ,így csak ezt elv miatt írtam le.) Így minden led fényerejét egyedileg tudod állítani.Szerintem 8-10 hosszú ledsorig.(efelett már nagyon rövid impulzus jut egy ledre szerintem.)
Köszi mondjuk így meg mondom őszintén nekem elég nehéz meg érteni ezt így
A kondis változathoz itt :http://mickey5.fw.hu/knight_rider.htm találsz kapcsolási rajzot
Első lépés a megértés felé: A futófényedet képzeld el mint egy multiplexelt kijelző oszlopai .Ha a futófényedet meg tudod alkotni multiplexelt változatban ,akkor már csak a multiplexelés változtatását kell megérteni.
Viszont ha sok szabad portod van leegyszerűsítheted,minden ledhez 3 portbit tartozzon,három különböző ellenállással (három fényerő).Így már csak a futófényed programját kell megháromszoroznod.(teljes /0.7/0.3) fényerővel futóra.Ha ezek fázisban lesznek ,meg lesz a csóva.
Az utóbbi verzió jobban tetszik (mivel nem tudom mi az a multiplexelés)
Az elkészült áramkör ez És meg található a cikkben a csóvás futófény programja is de asm-be én ugyan ezt szeretném meg csinálni csak c-be, hogy meg tudjam érteni a működését.
Tételezzük fel,minden leded világít.Ezt elérheted úgy, hogy a hozzájuk tartozó portbitet magasra állítod,és türelmesen vársz míg azt akarod hogy világítsanak.
A folyamatos világíttatásnak van egy bonyolultabb módja is,ekkor felkapcsolsz egy ledet ,vársz egy kicsit,lekapcsolod,felkapcsolod a másodikat ,vársz egy kicsit majd lekapcsolod... egészen az utolsóig.Mikor véget ért a sor kezded az egészet elölről.Ha ezt kellően gyorsan csinálod folyamatos fényűnek fog tűnni az összes led. Ha ezt belátod a következő lépés ,hogy azon ledeknek amelyeket sötéten akarsz tartani az őrájuk jutó időben nem adsz vezérlést.Illetve a rájuk jutó ídőnek csak egy kis részében adsz nekik vezérlést ,ha a fényerejüket akarod csökkenteni.(a futófény futási sebessége egy ettől független dolog.)
Igy értem már csak a megvalósítás nem megy
AVR-el meg csináltam c-ben a simát. kb úgy működik mint a a közlekedési lámpa amit csináltam switch -el és folyamatosan ugrik a következő állapotra de a fényerő csökkenést még mindig nem értem :S pontosan Mondjuk ha villogtatom az összes ledet olyan gyorsan, hogy folyamatosan világítónak tűnjön (már azt sem tudom meg oldani :S)de utána csak lejjebb kell fennem a villogási sebességet ?
Találtam egy ilyet :
így kell megoldani ? Erről azt írta az oldal, hogy elhalványítja és felerősíti a led fényét. de nem értem belőle azt a trisc:= -t ez mi ?meg a pwm1_Change_Duty(i) meg az inc()?
Nem a villogás sebességét ,hanem az egységnyi időre jutó impulzus szélességet kell csökkenteni.
pl ha egy 4 ledes fényt akarsz,akkor ugye az idő 1/4 részében világít a leded. pl a teljes ciklus 20ms akkor egy led 5ms ig világít majd jön a következő.... Tételezzük fel így minden led teljes fényerővel világít.(bár a szem számára egyenletesen ,a valóságban gyorsan vibrálva. Ha te fényerőt akarsz szabályozni egyszerűen azt mondod hagy a led a rendelkezésre álló 5 ms helyett csak 2ms ben világítson a maradék 3 világítás nélkül teljen el.Így ha a rövidített ciklusokat csak egy lednél alkalmazod ,annak a fényereje csökken.A teljes ciklusidő változatlanul 20 ms egy ledre 5 ms jut de a led ezt sem kapja meg mindet csak mondjuk felét.A kieső részben egy led sem kap vezérlést. A PWM modul tanulmányozása segíthet megérteni.Próbáld csak egy led fényerejét szabályozni vele. Ha a kimenetre két ledet kötsz egymás mellé,és a másik végüket egy egy portbitre akkor könnyen megoldható, hogy szoftveresen váltogasd melyik led fényerejét szabályzod.Ha ez megvan akkor azt is meg tudod oldani,hogy a két led különböző fényerővel világítson .(egyik led bekapcsol,PWM átír,mikor visszakapcsolsz a másik ledre a PWM visszaír) Ha ezt a kapcsolgatást gyorsan végzed ,kapsz két ledet ,ami külön külön szabályozható fényerővel rendelkezik.(Pl a timmer felprogramozva PWM nek, de a megszakítása is engedélyezve van.Minden megszakításkor ledet váltasz,ÉS PWM kitöltést is a soron következő lednek megfelelően.(a beírt érték csak a következő ciklusban érvényesül csak.)
Sziasztok
Egy pwm jelet szeretnék létrehozni 50%-os kitöltési tényezővel,ahol a Frekvencia változik menet közben. Itt találtam egy videót: http://shahrulnizam.com/pic-lesson-pwm-module/ Ugye látom, hogy a PR2-őt kéne változtatnom, és a CCPR1L meg feleződik. De sehogy nem tudom menet közben változtatni. PIC16f690. Próbáltam úgy is hogy figyeltem a túlcsordulás bitet amikot TMR2 és PR2 egyezik utána módosítsam a PR2-őt. Valakinek esetleg 5lete? előre is köszi
A CCP1CON (5:4) is a képlet része. A CCPR1L+CCP1CON<5:4> nem feleződik, hanem a PR2 fele lesz(lehet, hogy ezt akartad írni, de nem így sikerült.).
Azt nem értem miért nem változik, változnia kellene! Jó bankot választasz ki? A PR2 a BANK1-ben van. (Egyébként ez a jel nem PWM jel... )
Igen úgy akartam írni, tulajdonképpen egy analóg feszültséget nézek (poti) 8 bit, az értéket (x) megy a PR2, x/2 megy CCPR'L.
Banksel PR2, banksel CCPR1L-el választottam bankot. Csak most nézem mindenem a munkahelyen hagytam, nem tudom 10-edszer is átnézni Akkor azt mondod, ha elindítom a PWM-et akkor csak a CCPR1L-t és PR2-őt bármikor módosíthatom , természetesen megfelelő bankon?
Szerintem igen, de akkor próbáld úgy, hogy a változtatás előtt leállítod a modult.
Sziasztok!
Segítséget szeretnék kérni Tőletek... A következő projektemben többek között egy 20-70 kHz között működő full bridge invertert kell építenem és persze programoznom. Ezt CCS C-ben akarom megcsinálni a power_pwm funkciók használatával PIC18F4431-as MCU-val. Kapcsolástechnikailag a PIC 4 db pwm portja meghajt 2 db ir2110-et és azok pedig a FEt-eket. Szóval szeretném alaposan megérteni a power_pwm működését, a négy pwm csatorna vezérlési trükkjeivel együtt, mert nem csak pwm, hanem PWM/PDM vezérlést kell csinálnom, esetenként tehát "torzítanom" kell a szokványos full bridge időzítési kapcsolási sémát. Arra gondolok pl., hogy van olyan ciklus állapot, amikor a 4 fet-ből csak 1 van nyitva, a másik három zárva, stb. Hagyományos, 1 pár pwm csatornával rendelkező PIC esetében ezt a vezérlést a PIC és az ir2110 között elhelyezett dual d tárolóval és 4x2 bemenetű AND kapukkal oldják meg. Nos, ezt szeretném én úgy megoldani (ha lehet), hogy kihasználjam a PIC18F4431 6db pwm csatornájából legalább négyet. Ehhez vannak a CCS C-ben a power_pwm funkciók. Szóval már napok óta kutatok a neten olyan doksi után, amiből alaposabb ismereteket tudnék szerezni a power_pwm programozásának témájában, de eddig még csak példaprogramokat találtam eléggé kevés kommenttel a CCS fórumon. Nagyon hálás lennék, ha valaki tudna javasolni valamilyen használható doksit (az MCU adatlapján kívül, mert eddig még az volt a legjobban használható, de alapozás nélkül azért a jó megértéshez nehéz)... Persze, ha nem lesz ilyen doksi, akkor nekiesek az adatlapnak és csinálok majd demó áramkört is magamnak, amin kísérletezhetek, de addig is jó lenne valami alapinformáció, hogy mégis sejtsem, mit is csinálok, amikor programozok... Előre is köszönöm a segítséget.
Fiúk, tudja valaki, hogy a set_power_pwm_override() funkció mit csinál és milyen összefüggése van a setup_power_pwm() funkció pwm_override_sync paraméterével?
Tesztelem, de nekem semmilyen reakciót nem mutat...
Sajnos kevesen használjuk a CCS-t, ezért csak remélheted, hogy van aki érdemben tud segíteni. Jó szerencsét!
En kihagytam a CCS C specialis fvenyeit, es irtam sajat inicializalo reszt a problemak elkerulesere. Hasznalom en is a 18F4431 tipust. Majd kesobb teszek fel valami peldat.
Köszönöm, várom, jó lenne többet tudni erről.
Sziasztok!
Nem teljesen ide illik a téma de a keresőben ez volt a leginkább hasonló eredményt adó találat. Szóval arduino->4N35->irl3705 fet pwm szabályozó építésénél az alábbi problémába ütköztem. A szabályos 490Hz es pwm jellel jól működik a kapcsolás nem melegszik a fet (borda sincs) 16-17 A értéknél 12V akkumulátorral mint táppal. Az opto bemenetén a pwm jel védő ellenállással. A kimeneten meg a 12V ot kapcsolja feszültségosztóval a fetre. De mivel ez a kapcsolás egy DC áramszabályzó lenne 30A ig ezért az arduino keretein belül a pwm frekvenciát felemeltem ~3900Hz re (időzítő előosztó miatt ennyi). A bajok itt kezdődnek. Ugyanis a fet nyitása ebben az esetben nem egyenletes hanem nagyon alacsony pwm kitöltésnél is (8bit es pwm nél 1-3 bit ) kinyit de nem teljesen és innentől kezdve a max kitöltésnél sem éri el a 16A -t. A fetek (2db) extrém melegedést produkálnak, bordával is. A kapcsolás gyártói ajánlások alapján van megépítve számításokat nem végeztem (sicc!) de a katalógus adatok alapján el kéne vinnie a teljesítményt. Valami ötlet.
Ez így soha nem fog 30A-t kapcsolni. Az OPTO után szükség van egy FET driverre.
Ez egy logikai kapus fet. Opto nélkül is kapcsolt 200W ot, direkt az avr ről meghajtott fet. Az opto feszültségszint különbség illetve avr kimenet védelem miatt van beépítve. Vagy arra gondolsz hogy túl lassú a kapu működése. Nincs szkópom de ezek elvileg 10kHz fölött is tudnak dolgozni, nem?
Gyakran félreértik a logikai "kapus" FET tulajdonságot. Ez csak annyit jelent, hogy nem kell 10V ahhoz, hogy teljesen kinyisson. A bemeneti kapacitása ettől még ugyanolyan nagy, ha nem nagyobb! Ennek a FET-nek az adatlap szerint 3,6nF a bemeneti kapacitása, ami nagyon nagy érték! A kapcsolásodban szereplő kohm nagyságrendű soros tagok borzasztóan lelassítják a FET nyitását, ami hővé alakul. Az OPTO elég gyors, de kell utána egy FET driver!
Most is tanultam újat. Köszönöm. Akkor viszont a panelt át kell terveznem.
Kövesd a választott driver ajánlott kapcsolását, a puffer és hidegítő kondik nagyon fontosak és a megfelelő vastagságú huzalozás és az áramsorrend. pl ez jó lehet: TC4420
A FET gate elé tegyél egy 10..22ohm-ot. A hozzászólás módosítva: Dec 11, 2012
Sziasztok!
Szükségem lenne egy PWM szabályzóra LED-ek fényerőszabályzásához. Annyit kellene tudnia, hogy 2db nyomógombbal tudjam fel-le venni a frekvenciát. Valaki tud ilyen kapcsolást? Más megoldás is érdekel, ami nem PIC-kel van megoldva, azért lenne fontos a nyomógombos megoldás, mert távirányítósra szeretném. Először motoros potméterrel akartam megoldani, hogy menjen kézzel és távirányítóval is, de nem tudok beszerezni potit sajnos. Jó lehet még esetleg azzal a "végállás nélküli" potméterrel is. Köszön szépen a segítségeteket előre is! mhatalyak.
Hello!
A PWM-nél nem a frekvenciát, hanem a kitöltést állítjuk. (Ha frekvencia eltérés is van, az csak a kapcsolás sajátossága, de nem a teljesítmény szabályozás szerves része.) Megoldás mikrokontroller, esetleg feszültség vezérelt PWM, számláló, és DA átalakító vezérléssel. De úgy azért alkatrész temető. De a felbontás, vagy is a szükséges lépésszám is számít egy kapcsolásnál. Digitális poti is van. üdv! proli007
Ezt nem tudtam a PWM-ről, köszönöm szépen a felvilágosítást. Egyébként sikerült találnom egyet belinkelem, hátha szüksége lesz rá valakinek. Bővebben: Link Erre már csak egy FET kell és gondolom ennyi.
|
Bejelentkezés
Hirdetés |