PWM és kezelése, felhasználása

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Amivel én számolni szoktam: 470..1000uF/1A
Avatar
DOGMAN
Chipgyilok
Hozzászólások: 293
Csatlakozott: 2006. augusztus 27. vasárnap, 6:00

Hozzászólás Szerző: DOGMAN »

Helló!

A következő PWM-es problémába ütköztem:

Készítettem egy 4x7 szegmenses kijelzővel ellátott órát.
4 szegmens van, ami az óra, perc-et jelzi ki.
Van DS1307-rajta és minden jól is működik egy kivételével:
Timer be van állítva (kb 5ms-re) ez adja a PWM meghajtást a szegmenseknek, vagyis minden túlcsorduláskor a következő szegmenst kapcsolja fel, a többit pedig le.
Vagyis minden szegmens, 5 ms-ig világít, 15 ms-ig le van kapcsolva.
A szegmens lábak egy-egy tranzisztort kapcsolnak ami ráengedi a kakaót a LED kijelzőre, a másik 7 porton pedig szintén tranzisztorokkal lehúzom földre a kívánt szegmenseket.
A rendszer 5V-ről megy.
A probléma: mivel csak 5ms ideig világít egy szegmens.
A láb ami a tranyót kapcsolja. kb 1.2 Volt feszt állít elő (szoftveres PWM miatt), és a kijelzőre is a névleges 3.7-nél jóval kevesebb jut ez miatt. Először BC 547-el kapcsolgattam ezeket (ezt találtam elsőre) akkor 1V alatt volt a ledekre jutó áram, most BC 337 van benne így lesz kb 1.2V.

Mivel a kijelzők nagyok (kb 50mm magasak, és egy szegmensben két led van) ekkore feszültségen sötétben szépen világít de napfényben szinte nem is látható.
Kérdésem: hogy lehet megoldani azt, hogy 1-1.2 Volt bázis fesz mellett kb 3.7 V feszültség jusson a kijelzőkre.
Kipróbáltam a timer lassítását egész 2 sec-ig akkor sem lesz fényesebb sokkal tehát nem a LED-ek lassúak.

Mi lenne ha a szegmenseket kapcsolgató tranzisztorokra nem 5V-t hanem mondjuk 7V feszt engednék? Több áram fog átfolyni a tranzisztoron ugyanazon (1.2V) bázis feszültség mellett?
Vagy keressek (van-e) olyan tranzisztort ami 1.2V-re teljesen kinyit? Mondjuk utóbbi lenne az egyszerűbb...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Tranzisztor helyett tegyél be FET-et.
Ezek belső ellenállása 0,1Ohm alatti!


Sok un LogicLevel FET is van a piacon (én azzal próbálkoznék)., Ha nem megy, a BF245 ill hasonló kaliberű bőven jó....
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Ott valami nagyon el van nézve. A tranyón, ha normálisan ki van hajtva, akkor max a 0.6V-os sat. fesz eshet (NPN van felül pl.), ha PNP van felül, akkor az sem. Akkor fordulhat ilyen elő, ha a tranzisztor erősítése nagyon kicsi, illetve nagy a bázisellenállás (a tranyó áramot erősít) és átmegy analógba. Rajzod van?
JAni
Avatar
DOGMAN
Chipgyilok
Hozzászólások: 293
Csatlakozott: 2006. augusztus 27. vasárnap, 6:00

Hozzászólás Szerző: DOGMAN »

AVR láb1-4-ig: NPN tranyó bázis, ez a tranyó 5V-ot kapcsol a LED kijelző közös pozitívjára.

AVR láb5-11-ig: NPN tranyó bázis, ez a LED kijelző egy-egy "pálcikájának" negatívját köti testre. (ezzel kapcsolok be , hogy milyen számjegyet akarok látni)

AVR láb1-4 timer túlcsordulásonként léptet 1-4-ig.
Cilkusonként 3-ből egyszer van nyitva ezért itt kb 1.2 volt fesz megy ki a bázisra.
Az erre kötött tranyó a LED kijelzőre az 5V-ből kb 2 voltot enged át. És azt gondolom azért mert nem nyit ki az alacsony bázis fesz miatt.

Rajzot majd csak estefelé tudok feltenni...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A tranzisztor bázisellenállásást vedd le 1k alá.

Külön vezérled a H és az L ágát is a LED-nek?
Én FETben gondolkodnék, mert a 2 tranzisztoron 2x0,7V esik.... Ez necces 5V esetén. 5-1,4=3,6V! 2 LED-esetén (főleg ha áramkorlátozó ellenállás is van) LEdenként jut max 1,8V...


Germánium-tranzisztorod nincs? Azon 0,3V esne :)
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Alulra NPN, felülre PNP tranyót rakj és minden gondod megoldódik. A bázisellenállások lehetnek 1k-k is. Milyen színűek is a LEDek?
Avatar
DOGMAN
Chipgyilok
Hozzászólások: 293
Csatlakozott: 2006. augusztus 27. vasárnap, 6:00

Hozzászólás Szerző: DOGMAN »

Zöldek, és kettő van egy-egy "pálcikában" :)
Azért gondolom, hogy a szegmens vezérlő tranzisztor nem nyit ki az alacsony fesz miatt, mert ha egy pillanatra dróttal direktbe kötöm, akkor szép fényes lesz a LED, szóval a Robi által írt FET-et megpróbálom majd.
Az A változata elvileg kinyit teljesen már 0.8 V felett.

Ha felül PNP van akkor magas AVR láb esetén mindig vezet, és ha lehúzom a bázist földre akkor alszik ki a LED ugye?
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

PNP-nél a felül lévő tranyó akkor nyit, ha a bázisa legalább 0.6V-al alacsonyabb az emmiterénél (ami uyge +5V-on van). Ide kell soros ellenállás mindenképp, mert kilöheti a tranyót (1-10k elég). És természetesen akkor vezet, ha az AVR kimeneted 0-ban van.
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Ja, a két zöld, az lehet, hogy nem jön ki 5V-ból. (tipusfüggő, de amik nekem vannak, azok 3V környékén nyitnak).
Avatar
DOGMAN
Chipgyilok
Hozzászólások: 293
Csatlakozott: 2006. augusztus 27. vasárnap, 6:00

Hozzászólás Szerző: DOGMAN »

Következő rendelésemnél veszek kis fet-eket meg pnp tranyót is...

Visszatérve az ablaktörlő motor PWM vezérlésére:
Neten láttam videót ahol H-híddal vezéreltek motort, és minden irányváltáskor és megálláskor egy pillanatra felvillant egy nagyobb izzó. (munkaasztalon kb 200 kilométer kábel és vagy ezer alkatrész és szerszám között volt a dolog összehányva, szóval a bekötése nem látszott, csak az hogy ablaktörlő motort hajt és hogy 4 FET van hűtőbordán...)
Gondolom a motor által ilyenkor visszaadott felesleges áramot vezette el, de hogy oldották meg a bekötését?
Az a cél hogy az izzószál (ellenállás) csak akkor kapjon áramot ha a motor felől jön, de mivel DC motorról van szó ami mindkét irányban üzemel hogy oldom meg diódákkal???
A fet-eknél van dióda addig rendben is van, de jó lenne ha ez az áram nem a motort melegítené hanem pl egy nagyméretű ellenállást.
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Tegyél be a tápra párhuzamos stabilizátort, az elneyelheti az egész indukciós feszt (stepperekhez én be szoktam tenni, ha kicsi a szűrőkonsi vagy érzékeny a vezérlő a túlfeszre). A tápra felül egy Zenner (Utáp+1-2-3V értékkel), alatta ellenállás a test felé. A közös pont egy NPN tranyó bázisára, emmitere testre, kollektora meg a +Tápra. Így ha nő a fesz, akkor kinyit és levezeti a többletet. A tranyó emmiterébe tehetsz izzót, akkor azon disszipálódik a felesleges teljesítmény egy része (és szépen villog). Nem tudom, így csinálták-e, de ez működik.
Avatar
DOGMAN
Chipgyilok
Hozzászólások: 293
Csatlakozott: 2006. augusztus 27. vasárnap, 6:00

Hozzászólás Szerző: DOGMAN »

Helló!

Megvoltak az első tesztek, a motor mozgatással kapcsolatban.
Szépen megy, pwm-kitöltést ha csökkentem fokozatmentesen lassul stb..
Ahogy annak idején írtam, mivel a pwm hardveres, ADC meg ugye több órajel alatt fut le, ezért simán szinte mindig túlmegy a kivánt értéken, majd utána rögtön a helyére áll.

A program:
pwm hardveres: ütem 0,016 sec (több félével is kipróbáltam, majd még ezen is finomítok)
ADC do loopban mérve, ADC eredményétől (0-1024) függően motor megy balra, jobbra vagy áll.
Kellett egy "ablakot" is csinálnom mert ugrál néha a poti.
Ez az ablak kb 20 egység széles.
Ma megcsinálom úgy hogy az ADC eredményét elosztom 4-el, így a negyedére (0-255) csökken a felbontás 270 fok tartományban, de valószínűleg már majd meg fog tudni állni időben.
És a szimulátor szék mozgatásához az is bőven elég lesz.

Tudom írtátok hogy kell fék rá de az most már így marad...írtam rá hogy a csigahajtás miatt úgyis megáll, de szerintem az ADC "késése" miatt megy kicsit mindig tovább.
Megpróbálom majd úgy is ha nem lesz jó, hogy mikor már csak pár egységnyi van vissza, akkor arányosan csökkentem a pwm kitöltést.
De akkor meg kell oldanom azt is, hogy induláskor ezt ne használja csak megállás előtt.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Ha a célértéktől nem messze vagy (pl. 20 egységre), akkor a PWM-t a felére visszaveszed? szépen közelítéssel fut rá...
Avatar
DOGMAN
Chipgyilok
Hozzászólások: 293
Csatlakozott: 2006. augusztus 27. vasárnap, 6:00

Hozzászólás Szerző: DOGMAN »

Robert írta:Ha a célértéktől nem messze vagy (pl. 20 egységre), akkor a PWM-t a felére visszaveszed? szépen közelítéssel fut rá...
Túlmegy akkor is. Vagyis hát megáll de ahhoz akkora ablak kell ahonnan már lassít, hogy az ablakon belüli értékváltozáskor (kis értékeknél) már el sem indul.
Gyanítom hogy egyszerűen ilyen sűrű lépések közepette nem elég gyorsan ad vissza eredményt az ADC, Te írtad Bascom könyvben:
"A konverzió indítása után az eredmény 13-14 órajel alatt jelenik meg a regiszterekben"
Ebből következtetek arra hogy már rég túlmegy mire ADC-t ki tudnám értékelni, és szólni neki hogy ájjámeg:)

Nem megy ám túl sokat tovább...Megáll majd kb 1-4 fokot vissza pöccen :)
Ha a lassítási/megállási ablakméretet meg lejjebb veszem, egy érték alatt már csak leng előre hátra, és sosem áll meg :D
Majd teszek fel estére videót.

De mindenképp megpróbálom ezt kizárni, mert ha nem az ADC a lassú és időben szól, csak a motor forog tovább tehetetlensége miatt akkor valami féket kell rá tennem.

1. ADC értékét elnegyedelem így 4-szer több esély van rá hogy észlelem, a helyes értéket időben.
2. pwm timert belassítom akár 50 ms-ig és egy bizonyos értéken felül már minden lépésre reagálnia kell ADC-nek időben.
3. pwm-et gyorsítom, minél kissebb lépéseket adjon a motornak (mondjuk ettől lassulni is fog), ha igy nem megy túl akkor biztosan a megállás utáni lendület viszi túl, tehát kell rá fék...
Válasz küldése