Fórum témák

» Több friss téma
Fórum » Szakdolgozathoz kérnék segítséget
Lapozás: OK   5 / 10
(#) baloghzoli1 válasza c27 hozzászólására (») Okt 29, 2011 /
 
Szia
Itt van egy frekiváltó teljes leirás hátha segit
(#) c27 válasza baloghzoli1 hozzászólására (») Okt 30, 2011 /
 
Helló.
Ezt a leírást már néztem, nem mondanám hogy nagyon segítene.
Viszont csináltam egy kis szemléltetést, igaz excelbe, de már tudom mibe kellene megcsinálni hogy jó legyen. Két hibája van egyik, hogy az x tengely skálázása nem jó így nem is tettem fel (nem lehet megadni 0 kezdőértéket) a másik gond, hogy a pwm-es jelre nem tudtam rátenni egy szinusz jelet, hogy szemléletesebb legyen hogy mi a különbség a kettő között. Bár lehet észreveszed, hogy a felsőnél a pwm jel bal sarka adná a szinusz jelet míg az alatta lévő pwm-nél a jel középső része adná. (Ez utóbbinál a szinusz jelen kívülre is esne jel ami nem annyira odavaló, de talán így "szebb" szinusz jel állítható elő.) Minden féle képpen megcsinálom normálisan majd és akkor világosabb lesz.
Talán a lényeg ezen is látszik valami ilyenre gondoltam.

szinusz.xls
    
(#) c27 válasza c27 hozzászólására (») Okt 30, 2011 /
 
Egy kis magyarázatot hozzáfüzök talán így még érthetőbb mit akarok csinálni:
Tehát az exceles fájlnál a felső pwm-es jelnél úgy vannak megadva az értékek, hogy 4.5 fokos felbontásban mindig a kezdőértékhez tartozó feszültség van megadva tehát: 0-4.5°-ig a 0°-hoz tartozó érték azaz 0V megy majd 4.5°-tól 9.0°-ig a 4.5°-hoz tartózó feszültség a ~25,499V ez egészen 9°-ig tart és így tovább.
Az alatta lévőnél szintén 4.5°-os felosztás van, de ott nem úgy vannak megadva a feszültség értékek mint az előzőnél, hanem:
0-4.5°-ig a 2.25°-hoz tartozó feszültség érték, 4.5°-tól 9°-ig pedig a 6.75°-hoz tartózó feszültség érték, a többi hasonlóan(Tehát a közrefogott szög közepéhez tartozó feszültség érték van megadva).
A kérdés melyik a jobb (talán az utóbbi)?
(#) c27 válasza foxi63 hozzászólására (») Okt 30, 2011 /
 
Végül is megcsináltam excelbe a görbe illesztését az előző 2 hsz-emhez kiegészítésnek. Bővebben: Link
(#) foxi63 válasza c27 hozzászólására (») Okt 30, 2011 /
 
Szia!
Teljesen mindegy, nem kell ennyire "morfondírozni" melyik a tökéletesebb,mert ígyis úgyis lépcsős lesz, ha kontroller diktálja az ütemet.Azért sincs jelentősége, mert a felhasználásban lehet a motor terheletlen, túlterhelt, és akkor már egész más áramértékek jönnek ki.Ráadásul 5% feszültség ingadozás még a hálózatban is lehet.A szinusz felbontásánál nem is a fokok számítanak igazán, hanem illeszkednie kellene a 16-os számrendszerhez programozás miatt, valamint a 360fokhoz, az oszthatóság miatt. Ha a pwm jel 0-255 ig vesz fel értéket, akkor elfér 1 regiszterben, ha azonban 10 bites, akkor tologatni kell a biteket. Szóval inkább a programozási oldala az, amin el kell gondolkodni, ebben viszont tudok segíteni.
(#) c27 válasza foxi63 hozzászólására (») Okt 30, 2011 /
 
Helló.
Azt hogy érted, hogy a pwm jel 0 és 255 között vesz fel értékeket? Mármint itt most arra gondolsz, hogy pl: 4,5°-os felbontásnál 80 különböző jelből állna össze a szinusz (360/4,5). Most erre a 80 jelre gondolsz, hogy ez férjen el vagy hogy?
Én úgy gondolnám ezt a programot (még nem programozói szemmel), hogy lenne ugye ez a 80 különböző jel. És úgy állna össze pl. az 50HZ, hogy 1/50=20msec=20000usec egy szinusz hullám hossza, ebben benne kell lennie mind a 80 különböző értékű jelnek így 20000/80=250usec hosszúnak kell lennie 1 jelalaknak. Mivel 20khz a kitűzött kapcsolási frekvencia az 1/20khz=50usec egy kibocsájtott impulzus hossza, mivel nekem 50Hz esetén egy adott jelnek 250usec hosszúnak kell lennie így 5db kell minden előre megírt értékű jelből.
És itt jön be a lényeg, hogy nekem ezt a 80 jelet kell megírnom ami igazából csak 20db (mert 90°-ig kell aztán tükrözni y tengely mentén majd az egészet x tengely mentén így jön ki a teljes szinusz remélem követhető.)
Szóval ezt a 80 jelet kell megírni és tárolni és a frekvencia függvényében majd annyit küldök ki amennyi szükséges pl: 50Hz esetén 5db-ot mind a 80 különbözőből, 0.5Hz esetén 500-at.
Ezeket az értékeket ki kell számolni illetve ki is vannak és ezekből már meghatároztam a kitöltési tényezőt azaz az 50usec-os (20khz-es) jelcsomagoknak milyeneknek kell lennie. A kapcsolás sajátosságából adódóan nekem a kiszámolt időtartamig ki kell küldenem a kimenetre egy 1-est majd az 50usec további részében egy 0-t. Így ezekből az 50usec csomagokból állna fell a szinuszjel lenne 80db akkor.
Ezt le kellett írnom hogy tudj segíteni, remélem ha nem is mindent de nagyjából érthetően írtam le.
A lényeg, hogy olyat kéne csinálnom, hogy a pwm kimenetre xusec ideig 1-est küldök majd yusec ideig 0-t. (Esetleg a nsec is jól jönne. Ezekből kéne 80 valahogy előre meg kellene írni ezeket és csak mindig hivatkozva rájuk küldeni őket kifele attól függően hogy majd az analóg bemeneten milyen helyzetben van a potiméter amivel lehetne szabályozni.) Első körben mondjuk legyen annyi, hogy kiküldök egy ilyen jelcsomagot. ASM-ben nagyon kezdő vagyok. MPLabot szedjem le tesztelni? Vagy van még az Oshon. Melyiket ajánlod program teszteléshez?
(#) Stefan válasza c27 hozzászólására (») Okt 30, 2011 /
 
-Kitalálsz egy mintavételi frekvenciát
Legyen mondjuk 2Khz, ez azt jelenti hogy minden 10.edik PWM periódus után állít a kitöltési tényezőn.

-Legenerálsz a legkisebb frekire egy táblázatot ezzel a mintavétellel.
Ha 0,5Hz akkor lesz 4000 mintád.

Ezek után kell 1 megszakítás a programban 2Khz(0,5ms) -enként, amikor kiolvasod a táblázat következő elemét, és berakod a PIC hardveres PWM regiszterébe.

Kb ennyi a kód:

  1. char tablazat[4000];
  2. int i = 0;
  3.  
  4. // n * 0,5hz
  5. //ez lesz az 50 hz
  6. freki = 100;
  7.  
  8. //megszakitas 0,5msenként
  9.  
  10. void valami( void )
  11. {
  12.  
  13.    PWM = tablazat[i];
  14.    i = i+ freki;
  15.    if( i >= 4000) i = i - 4000;
  16.  
  17. }
(#) foxi63 válasza c27 hozzászólására (») Okt 31, 2011 /
 
Hali!
Az Mplab-ot használom én is.
A következtetés jó, amit írtál, de külön kell választani a pwm egységet, és a színusz hullám felbontását, valamint a frekvenciát is. ezek lényegében különálló egységek.A pwm generátort tekintsd egy változtatható feszültségforrásnak, hiszen az is. Ezzel nem is érdemes tovább foglalkozni. A beadott 0-ff ig történő számmal kiadja a megfelelő tápfeszt, tehát át kell konvertálni a színusztáblázatodat 0-255 ös értéknek megfelelően..Mivel ez egy modul, nem igényel semmilyen számolást,semmilyen felügyeletet, teszi a dolgát. Marad egy időzítő a frekvenciának (0.5 - 50 Hz) illetve ennek a 80 szoros sebességű léptetése, ha ennyi a színusz felbontása. Nem járható az az út, hogy számolgatod az impulzusokat, mert emellett figyelni kell a motor áramát, a sebesség potméterét, az irányváltást, stop funkciót is.
Tehát az aktuális léptetési idő lejártakor generálódik egy megszakítás, ez lekezeli a léptetést,és beírja a következö értéket a pwm generátorba,és frissíti a következő léptetés idejét.
Ezek után a szabadidőben ráér a prg figyelni a potikat, stb.
Csak annyi kell még, hogy az adott színusz értéket szorozni kell az aktuális frekvenciához tartozó feszültség értékkel. és ezután kell betenni a pwm egységbe a számot.
(#) c27 válasza foxi63 hozzászólására (») Nov 1, 2011 /
 
Helló.
Van némi hiányosságom ezeket pótolgatom a héten, de esetleg ha elmondasz pár dolgot röviden gyorsabban megy a dolog.
A pwm kimenet, hogy működik? Nem a pwm funkció érdekel mert az tudom, csak hogy mit kell neki beadni gondolom a kapcsolási frekvenciát az úgy is fix és a kitöltési tényezőt? Ez hogy nézne ki konkrétan? Valahogy úgy kell megadni hogy beállítom a 20kHz-et és a 0-100%-nak megfelelő bináris számokat küldöm rá és akkor 50usec-ként látom a kitöltési tényezőt amit én vezérelek a táblázatból?
Akkor a kitöltési tényezőket kéne átkonvertálni 0-255-ig?
Az nem világos a pwm egységbe milyen számot kell adni?
(#) foxi63 válasza c27 hozzászólására (») Nov 1, 2011 /
 
A kapcsolási frekit a timer2 határozza meg ,azt pedig a kristály ami működteti a PIC-et alapból 20MHz esetén 19500Hz.
Azonban még befolyásolja a PR2 regiszter, mert amikor a kettő egyezik, akkor kezdődik elölről a periódusidő.
Ha a PR2 -be 250-es érték kerül, akkor pont 20kHz lesz a pwm freki. Azonban a pwm felbontás is arányosan kisebb lesz, tehát jelen esetben csak 0- 250 ig lehet értéket adni, nem pedig 255-ig. A pwm kitöltés nagyságát a CCPR1L nevű regiszterbe kell beírni.(A szám 0-255 ig lehet, ez 0% - 100% pwm. )Ennyi.
Ha bonyolítani akarod, mód van a 10 bites felbontásra is (pwm kitöltés) azonban teljesen felesleges. A pwm jelet a kimeneti híd felé egyszerűen egy meghajtó IC vel lehet kivinni mégpedig IR2111 . Azonban nem a katalógus ajánlása szerint,met a felső fet meghajtását máshogy kell megoldani.Az IC biztosítja, hogy ne nyissanak egymásra a fet-ek, és elég neki 1 bemenő jel. Hídkapcsoláshoz kell még egy inverter a másik oldalnak.
(#) foxi63 válasza c27 hozzászólására (») Nov 1, 2011 /
 
egy lehetséges megoldás, ami a galvanikus leválasztást is megolja.
(#) c27 válasza foxi63 hozzászólására (») Nov 2, 2011 /
 
Helló.
A fetek összenyitása elleni védelem másképp lesz megoldva. Az izolációhoz TLP250 lesz használva ami meg is tudja hajtani a feteket és a bemenete egy optocsatolónak felel meg.
A TLp bemeneteit meg úgy kötnénk be hogy alapesetbe az egyik félhíd mindig be lenne kapcsolva és amikor jelet kap kikapcsol az alapesetben bekapcsolt félhíd és utánna a másik kapcsol be. Lenne egy kis szinteltolás is köztük így biztos sose tudna a 2 félhíd egymásra kapcsolni. Egyetlen hátránya, hogy ha azt akarnám hogy álljon a motor mindig 50%-os pwm jelet kellene küldenem, de végül is nem feltétlenül szükséges ilyen funkció, de még ez is megoldható.
A microchip oldalán néztem most pár dolgot ott a kapcsolási frekvencia azt írják függ a felbontástól, tehát ha nem 10 bites felbontást használnék hanem csak olyan 7 bitest akkor jóval nagyobb frekvencia is elérhető. Persze nekem elég a 20kHz (vagy 20-on valamennyi, a lényeg hogy ne legyen zavaró kb 17-18kHz is megtenné, de jó lesz a 20 is.)

A lényegre térve a PR2 regiszterbe nekem most azt kell megadnom hogy mennyi a felbontás pl: ha maradna a 80 akkor 80 kerül bele. Ekkor a CCPR1L nevű regiszternél 0-80 jelentené a 0-100%-ot?
Erről nem tudod hol olvashatnék részletesebben? Majd még nézegetem a microchip honlapját is.
(#) foxi63 válasza c27 hozzászólására (») Nov 2, 2011 /
 
Hali!
Igen elvileg jó a 80 is, de akkor a pwm felbontása csak 128 lépés és nem 256. A színusz darabosabb lesz.A timer2 nek van előosztója, azzal csökkenthető a freki.
Végül is azért kellene a 255 höz ragaszkodni, mert bejön még később egy szorzási művelet is. Ha a váltófesz 0.5-50Hz ig változik, akkor az aktuális pwm értéket is szorozni kell 0.01 - 1.0 val. és ezután kell beírni. ezért lenne jó minél több lépcsős pwm.
(#) c27 válasza foxi63 hozzászólására (») Nov 2, 2011 /
 
Helló.
Akkor azt javaslod, hogy legyen a 80 helyett 255?
A szorzási művelettel nem 1 -100 között kell szorozni? Azaz 0.5Hz-nél szélesebb lesz a szinusz több azonos jelet kell bepakolni egymás mellé, mert akkora felbontást nem lehet csinálni, hogy külön jelből álljon össze a 0.5Hz.
Nem is tudom, hogy érdemes megcsinálni, hogy ha szorozni kell akkor azaz 50Hz-ről le kell menni pl: 0.5Hz-re akkor a pwm periódusidejét kell növelni 100 szorosára vagy 100 jelet küldjek ki és csak utána léptessem a következőre? Talán az utóbbi a jobb nem? A megkívánt frekvenciának megfelelően pl. 0.5Hz-nél minden jel 100-szor annyiszor ismétlődne mint 50Hz esetén és utána léptetné csak a következő jelre.

Néztem egy mintaprogramot a microchip honlapján és nem teljesen világos pár dolog.
A confignál ott az a sok H'xx' ott memóriaterületet foglal le vagy mit csinál pontosan? Nem igazán írták le mit csinál az equ, de főleg ezeket a H-s dolgokat nem értem:
-movlwH'01' itt pontosan mit kell beírni? vagy ez most a felbontásnak megfelelő bit lenne vagy mi?
-movlwH'00' itt a pwm kitöltési tényezőt lehetne bevinni azt írja, de ez is mibe van? Órajel, vagy usec?
-movlwH'2F';DC1B1 és DC1B0 érték bevitele, PWM indítása
A pwm indítása még oké lenne, de ezzel késleltetést is meg lehet adni? A DC1B1 és B0 nem értem mit csinál. Te talán kicsit jobban el tudnád nekem magyarázni ezeket.
Még annyit a végére, hogy ez a program és ahogy néztem a többi is csak 1 pwm jelet csinál legalább is én úgy gondolom, ha a újra-t áttenném a piros téglalap helyére akkor lenne tényleg végtelen ciklus nem?

progi.JPG
    
(#) Peter65 válasza c27 hozzászólására (») Nov 2, 2011 /
 
Szia!
Többet tudnánk segíteni, ha láthatnánk a főáramkört legalább vázlatosan. Nem teljesen világos, hogyan szeretnél aszinkron motort H híddal vezérelni.
Általában 3db félhídra kapcsolódnak a motor kivezetései, és az egyfázisú aszinkron motor esetében is így kellene eljárni. Mivel a félhidakat függetlenül kell egymástól vezérelni, ezért olyan processzort célszerű választani, amiben legalább 3db PWM egység (CCP) van. A 16F876-ban csak kettő van, ezért másikat processzor jobb lenne.
Ha sikerül megértened a pwm állítás mikéntjét, akkor látni fogod, hogy vagy számolsz (szorzás is szükséges), vagy jó nagy táblázatot kezelsz. A PIC16F-es család mind a két funkcióban viszonylag gyenge. Szerintem teljesen indokolt valamelyik 16 bites processzort választani, különösen ha C-ben szeretnél inkább programozni. A Microchip is ezeket ajánlja motorszabályozásra.
A pwm állítás elvét már másik fórumban kitárgyaltuk. A "Nagyteljesítményű DC-motorvezérlés" fórum utólsó évében erről is szó volt (ne tévesszen meg a cím, aszinkron motor szabályozásról olvashatsz).
Korábban készítettem egy szinuszgenerátort PIC16F54-gyel. Ez nem pwm-es, de a szinuszképzés elvét megértheted ezen keresztül is. Viszonylag részletes doksit, a felkommentezett assembly programot, néhány jelalakot találhatsz az alábbi linken: http://www.hobbielektronika.hu/forum/topic_hsz_875760.html#875760
(#) Peter65 válasza c27 hozzászólására (») Nov 2, 2011 /
 
Kellene valami anyagot keresned a assembly programozásról, mert így nagyon lassan fogsz haladni.
A hivatkozott program elején az "equ"-s sorokban változók értékeit adjuk meg. Ez nem kerül bele ilyen formán a processzorba, hanem a program írónak a dolgát könnyíti meg. Jobban átlátható a program, ha nem csak számok szerepelnek benne, hanem inkább olyan rövid szavakkal hivatkozunk rájuk, ami a szerepükre utal. Miután megírtuk a programot, a fordító majd befordítja a konkrét számokat a kódba.
A "H" arra utal, hogy utána hexadecimális formában adtuk meg a számértéket.
A pwm egység időalapját az a timer adja meg, amelyikkel össze van kötve (általában lehet több közül választani). Jelen esetben a Timer2-vel van összekötve. Ezzel a folyamatosan járó számlálóval hasonlítja össze a pwm egység a beírt számokat. Tehát az időalap a számláló időalapja. A számláló időalapja pedig a processzor ciklusideje 1:1-es leosztással. Ebből a néhány sorból nem derül ki, hogy mennyivel jár a processzor, de tételezzük fel, hogy 4MHz-es órajele van. Egy ciklus 4 órajelig tart (a PIC12F, PIC16F családokra jellemző), ezért a ciklusidő 1usec, azaz 1MHz-es jel lépteti a timert. Ebben az esetben tehát egy érték 1usecet jelent.
Amiket leírtam további pontosításra szorulnak, mert általában lehetőség van arra, hogy a pwm felbontása elérje az órajel periódus idejét is. Ahhoz, hogy előrébb juss, el kellene olvasni a processzorok adatlapját a pwm egységről.
(#) c27 válasza Peter65 hozzászólására (») Nov 2, 2011 /
 
Helló.
Nálam az egyfázisú aszinkron motor 2db H híddal van megoldva egyik az egyik tekercsnek, másik a másiknak. Egy H hídnak az összekapcsolás elleni védelme olyan lenne, hogy alapesetben egy tranzisztor mindig tápra húzza az egyik félhidat míg a másik ki van kapcsolva, de van egy másik tranyó is ami viszont lezárja az előző tranyót is bekapcsolja az eddig kikapcsolt félhidat. Ennél a megoldásnál sose lehet kikapcsolni mindkét félhidat az egyik mindig be van kapcsolva, de 50%-os kitöltésnél gyakorlatilag áll a motor. Kapcsolási rajz majd később, még azt is tökéletesíteni kell. A lényeg, hogy olyan, hogy vagy az egyik fél H híd van bekapcsolva vagy a másik ugyan így a másik tekercs H hídjánál is. Így elég a 2db pwm.
Még átnézem párszor a microchip honlapján az infókat és megpróbálok valami értelmeset kihozni belőle, kicsit átírom a saját adataimra hátha valami összejön.
(#) c27 válasza Peter65 hozzászólására (») Nov 2, 2011 /
 
Tegyük fel, hogy van egy 16F-es családból egy pic 4MHz-es kristállyal. Én azt szeretném, hogy 20kHz-es legyen a kapcsolási freki azaz 50usec legyen a ciklusidő (alapból 1 usec tehát az 50 kell). Mondjuk legyen 200-as a felbontás és mondjuk 25%-os a kitöltés.

UJRA
bsfSTATUS,5
bcfTRISB,3
clrfOPTI
movlwH'00'(nem tudom miért van itt mindig 00 vagy 01.)
movwfPR2
bcfSTATUS,5
bsfT2CON,0 (ez nemvilágos, mert it kell megadni az osztást, de 1-esés 4-es osztásnál 0 16-osnál 1-es van írva mi alapján lesz 1,4,16?.)
movlwH'00'(Elvileg itt kell beálítani a kitöltési tényező értékét de mindig csak 00-t látok vagy 01-et az össze minta progiban ez hogy van?)
movwfCCPR1L
movlwH'??' ( talán ennél vettem észre hogy ténylegesen megszabja a kitöltési tényezőt, de ez is elég változó.)
movwfCCP1CON
bsfT2CON,2
gotoUJRA

A héten megnézem azt a linket amit küldtél és még gondolkodok ezeken, de még nem látom át az egészet. Informálódik még, mert a tudásom nagyon minimális sajnos.
(#) Peter65 válasza c27 hozzászólására (») Nov 3, 2011 /
 
Értem, és ez a főáramköri elrendezés valóban elvileg jó. Azonban szembe kell majd nézned a dolgozat megvédésekor egy olyan kérdéssel, hogy miért ezt a megoldást választottad, hiszen több hátránya is van. Először is gazdaságtalan, mert 3db félhíd helyett 4 db van, a meghajtásával együtt.
Ha mégis a két H hídnál maradsz, szerintem akkor is normálisabb volna olyan processzort választani, amiben ECCP modulok vannak, azaz betudod állítani az egyes félvezetők kapcsolása közötti szünetidőt, és alaphelyzetben energia mentes lehetne a rendszered.
(#) Peter65 válasza c27 hozzászólására (») Nov 3, 2011 /
 
Ha azt szeretnéd, hogy 20kHz-es legyen a pwm frekvenciája, és egy pwm perióduson belül 200-as felbontást szeretnél, akkor a pwm timerjának léptetése 20kHz*200=4MHz. Ha könnyen és gyorsan akarod változtatni a kitöltési tényezőt, akkor ez az utasítások végrehajtásának sebessége. Az órajel ennek a négyszerese, azaz 16MHz. Ez egyébként reális, hiszen általában 20MHz-ig növelhető az órajel ezeknél a processzoroknál.
Egyébként a 200-as felbontás szerintem kevés lesz. Főleg kis frekvenciáknál, ahol az amplitúdó a névleges 5%-a körül mozog, nagyon ronda jelet lehet csak összehozni ezzel a felbontással.
Nem tudom hogy eredetileg mi a programozó célja, de szerintem a lehető leggyorsabb 50% kitöltési tényezőjű négyszög jelet szeretné előállítani a pwm-mel. Az az a peridus időt 2 ciklus hosszúra választja, ezért ír a timer időalapjába 1-et (a periódus idő PR2+1), és ezért van hogy állandóan 0-t és 1-t írogat. Neked 200-as felbontáshoz 199, azaz H'C7'-et kellene írnod, és ennek megfelelően 0...199 között a kitöltési tényezőt.
Nézd meg az adatlap Timer 2-nél a T2CON regiszter leírását: T2CKPS; 00= 1:1, 01=1:4, 1X=1:16.
(#) Stefan válasza Peter65 hozzászólására (») Nov 3, 2011 /
 
Sosem fogom megérteni amúgy, hogy miért mindig az ASM-t ajánljátok azoknak akik még sose programoztak PICet. Elég sok mindent csináltam már PIC-el, a szakdogámban is lesz 2-3, de ha eddig leírtam 3 utasítást ASM-ben sokat mondok. C vel mindent meg lehet csinálni, kevesebb szívással, átláthatóbb a kód, könnyebben hordozható más procira.
A másik dolog: Itt majd azért kelleni fog kicsit nagyobb számítási teljesítmény szerintem, mert a frekvencia függvényében állítani kell a kitöltési tényezőn, mivel kis frekvenciákon eléggé le fog esni a motor reaktanciája (omegaL). Én a helyedben 16 bites, gyorsabb kontrollert használnék. Én nemrég vettem chipcadnél PIC24HJ128GP202 80Mhz(40MIPS) 3V DIP tokos ráadásul ezeknél a digitális eprifériák is sokkal testreszabhatóak.
(#) vilmosd válasza Stefan hozzászólására (») Nov 3, 2011 /
 
Mar bocs hogy belevau, de egy kezdonek a programozason kivul meg a PIC felepiteset is meg kell ismerni. Ehhez viszont a C kevesbe alkalmas, mert eltakarja a reszleteket. Pontosan ezert ajanljuk minden kezdonek az ASM programozast, es az egyszerubb felepitesu 16F sorozatot. Biztos jo a C (en is hasznalom mar vagy 20 eve), de a PIC megismeresehez nagyon szukseges az ASM programozas. Melle meg esetleg hogy egyes C forditok elkepeszto ASM-et produkalnak, ami a sebesseg rovasara mehet. Mellesleg van motorvezerlo PIC: 18F2431, 18F4431. Kimondottan frekivaltokhoz terveztek. Van benne PowerPWM. En a 18F4431-el csinaltam frekivaltot. Nagyon jo lehet vele dolgozni.
(#) c27 válasza Peter65 hozzászólására (») Nov 3, 2011 /
 
Helló.
A főáramköri elrendezés azért is lett 2db H híddal, mert ha úgy csinálnám ahogy te mondod 3 félhíddal így ha jól gondolom a dolgokat a középső félhídon átfolyna mindkét tekercs árama és hát a választott fet irf740 elég szegényes a maga 10A-ével persze csúcsban tud annyit és indításnál nem árt ha van tartalék. Viszont ez a fet olcsó és ahhoz képest elég jó, de nagyon örülök hogy felteszel ilyen kérdéseket nagyon hasznos. Szívesen fogadok majd a vége felé bármilyen kritákát vagy tanácsot vagy akár most is.
A viták elkerülése végett most leírom, hogy ez a pic még csak tervbe van, nem biztos hogy ez lesz, de nem csak rajtam múlik, én felkérésre vállaltam és van egy bizonyos anyagi keret (bár akár én is belepótolhatnék, majd meglátom). A programozás része lehet könnyebb C-ben, de tényleg vannak olyan részek amiknél a sebesség az első, ez is még változhat, lehet mindkettőből lesz 1-1 rész.
A felbontás még mindig kérdéses és az alsó frekvencia is. Még sajnos nem tisztult le minden ehhez, de addig is próbálok vele foglalkozni. Átnézem még ezeket a leírásokat, meg a néhány pic adatlapot.
(#) vilmosd válasza c27 hozzászólására (») Nov 3, 2011 /
 
Mint az elobb leirtam ajanlanam a 18F2431, 4431 tipusokat, mert ezeket direkt erre a feladatra terveztek. A kicsi 870+ifa a CCAD-nal. Van benne 3 PowerPWM es komplementer kimenet minden PWM-nek. En felhidas meghajtokat alkalmazok: FSBF15CH60. Nem nagyon draga, kb 25$. Az IRF740 sajnos nem eleg meg egy 1/3 HP-s motorhoz sem. Probaltam (eldurrant vagy ket marekkal). En hasznaltam IRFP460 tipust, de sok alkatresz kell hozza, es ezert tertem at a komplett modulra. Sokkal olcsobban kijon.
(#) c27 válasza vilmosd hozzászólására (») Nov 3, 2011 /
 
10A-t tud az irf740. Lágy indítással meg lehet oldani és áramkorlát is kell kb. 9A-re indításnál, menet közbe meg kisebbre. Majd kiderül, hátha nem pukkannak el, kb 600-700W-os motorhoz kellenek, de az is szakaszos üzemű. Ha nem lesznek jók akkor majd gondolkodunk hogyan tovább, csak a próbához kell a pic ezért szeretnék vele haladni legalább a programozás terén.
(#) vilmosd válasza c27 hozzászólására (») Nov 3, 2011 /
 
A sokszori inditas a nagy problema. Mint tudjuk, az inditoaram 250, 350 % az uzemi aramnak. Ezert mondom hogy ez a FET nem igen alkalmas erre a feladatra. Inkabb akkor a masik. Az IRFP460 ha jol tevedek 20 amperos. De proba cseresznye.
(#) c27 válasza Peter65 hozzászólására (») Nov 3, 2011 /
 
Helló.
A programhoz lenne még pár kérdésem, az eleje tiszta egészen odáig, hogy a pwm jel 0-100% kitöltést a 0-199 adja, de a CCPR1L értéke a felső 8 bit, a CCP1CON meg az alsó 2 bit. Ennek, hogy lehet értéket adni 0 és 199 között? PL. 199-nél a binárisan a 196 kerülne a felső 8-ba és a 3 az alsó 2-be, de ez a hexadecimális elég bonyolult, nem tudom miért ebbe kell megadni. Az sem világos, hogy a péda programba, hogy adott meg 3F értéket a CCP1CON-nak vagy ez az elosztás felső 8 meg alsó 2, nekem ez zavaros. (Vagy talán úgy kéne megadni a 199-et, hogy azt csak mindig a CCP1CON-ba kell és 00 lenne a CCPRIL?)
(#) c27 válasza c27 hozzászólására (») Nov 3, 2011 /
 
Amúgy a felbontás akkor 20MHz-es kristállyal 20kHz-es kapcsolási frekivel 250-re korlátozódik? Mert a mirochip honlapján jóval nagyobb frekvencia van megadva maximálisnak. Vagy abba nincs belekalkulálva hogy ténylegesen 4 órajelig tart egy ciklus? Vagy más pic családra adták volna meg vagy ezt korrigálni kell a típusnak megfelelően? (Amúgy nekem van itthon egy 18F2550, még ha nagyon nagy gáz van akkor azzal is lehet valamit csinálni.)
(#) vilmosd válasza c27 hozzászólására (») Nov 3, 2011 /
 
A 16F876-nal 0xff PR erteknel, 20 MHz oszcinal 19,53 kHz lesz a PWM freki. A felbontas 10 bit, tehat a duty erteke 0-> 0x3ff lehet. Nem fontos azert ilyen magas frekit alkalmazni, a 4 kHz eppen eleg. Lehet hasznalni kulonben ugy is, hogy csak a CCPR1L-t irod 0-0xff ertekkel (0->100%), az also ket bitet hanyagolod. Lenyeges szempont, hogy a PR regiszter ertekenel nagyobbat nem lehet a CCPR1L regiszterbe tolteni, mert akkor soha nem fog mukodni a PWM. Mellekeltem egy ASM peldat 16F628-ra. Kb igy kell megoldani az altalanos 16F sorozatra a PWM kezelest.
(#) Peter65 válasza c27 hozzászólására (») Nov 3, 2011 /
 
Helló!
A processzorok binárisan kezelik a számokat. Mivel a bináris számok kezelése elég macerás, ezért általában hexadecimális formában szokás leírni. Egy nyolc bites bináris számot tehát nem 8db egymás utáni 0 vagy 1 formában írunk le, hanem két négy bites részre osztjuk, és a két négy bites szám értékét adjuk meg hexadecimális formában.
A pwm képzésekor a CCPR1L értékére igaz az amit korábban írtam, hogy az utasítás ciklus ideje adja a felbontást. Ezt lehet tovább növelni az órajel periódus idejére, azaz a negyedére. Ez további két bit felbontás javulást jelent. Ez a két bit van a CCP1CON-ban. Ez a felbontást 10 bitesre növeli, de véleményem szerint viszonylag nehézkesen kezelhető.
Ha a 200-as felbontásodat az órajel periódus idejével szeretnéd, és nem a ciklus idővel, akkor a kiszámított kitöltési tényező bináris alakjának alsó két bitjét a CCP1CON-ba írod, a többi legfeljebb 6 bitet pedig a CCPR1L-be.
Következő: »»   5 / 10
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem