Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nem juthat. Nezd meg az adatlapon, mik a lehetosegeid
Ha le tudod forditani az ASM-et, es meg mukodik is a leforditott kod, akkor keresdd meg ezt:
es csereldd le a MOVLW-ket, pl:
stb stb stb
Milyen programmal fordítottad vissza?
PICDisasm-mal.
Sziasztok, ismét LCD kezelési gondom támadt. Van egy Seiko LCD-m, ami 8*24 karakteres. És valamiért csak 3 sorba hajlandó írni, de azt is úgy hogy a legelső karaktert is eltolja pár pixxellel lefelé. (Így nem pont a megfelelő sorokban van a szöveg.) Kiírja az első 2 sort, majd kihagy egyet. És kiír még egyet. Nem tudok rájönni hogy mi lehet a gond. Csatoltam az adatlapját. A rajta lévő vez. adatlapját és a forráskódot. (A vezérlő adatlapjában a 23. oldaltól lefelé mutatja az inicializálást.) Már elég sok variációt kipróbáltam, de eddig ez a legjobb eredmény. Remélem valaki tud valaki megoldást erre.
Megnézted az adatlapban a sorok címeit és a szerint címezve viszed ki az adatokat a kijelzőre?
Megjegyzem, hogy a kérdésednek nem sok köze van a PIC-ekhez, legközelebb erre figyelj és keress megfelelő témájú topicot!
Nem, de van egy olyan hogy kezdő cím beállítása. Ott egy 0-át küldök ki. Ami számomra azt takarja, hogy onnantól folyamatosan kellene írnia. Vagy nem jól gondolom, és soronként meg kell címeznem?
Soronként kell címezni. Tehát nem nézted meg az adatlapot! De ne offoljunk tovább!
Oks, köszönöm.
Sziasztok!
16F57-be szeretném letölteni a firmware-t. Propic2 és PICkit 2 clone programozóim vannak. Az MPLAB nem támogatja a PICkit 2-nél, a WinPic800 a Propic2-nél. Tudja valaki hogy lehet?
Megtaláltam benne, elvileg jó lesz, köszönöm!
Sziasztok!
Mezei 230V-60W páka hőfokszabályozóját tervezem megvalósítani PIC12F683-mal (illetve a próbaáramkörön 16F1936-tal), a szoftveres PWM alkalmazásával (CCP1 kimenet). Mivel mindkettőben tök egyforma a PWM generálás, ezért 1 kalap alatt kezelhető a kérdés. Maga az áramkör kész, jó (BT136/137 és MOC3041), csak a PWM nem akar sikerülni. Remélem, valamelyikőtök el tudja nekem magyarázni a PWM képzésének lényegét; mert úgy tűnik, valamit nagyon félreértek. Úgy értelmeztem a doksikat, hogy a PWM generátorban a PR2 értéke adja meg az impulzusszélességet, a CCPR1L és CCP1CON 5:4 pedig a kitöltési tényezőt. Nos, a PIC felhasználói kézikönyvben 4 MHz órajeles mikihez .63 PR2 értéket és .00-.255 CCPR1L;CCP1CON 5:4 értéket láttam megadva. ? Hogy lehet a kitöltési tényező nagyobb, mint maga az impulzusszélesség ? fejesg
Szia!
A PWM modul maximum 10 bites. Ha a T2 előosztója nincs bekapcsolva, akkor a belső órajel osztó két bitje, ha be van kapcsolva akkor az előosztó utolsó két bitje és a PR2 regiszter adja a 10 bitet. A valódi felbontás a (PR2)+1 értékének 2 alapú logaritmusa + 2. Ha a PR2 63, azaz 64 állapota van, akkor a belbontás 8 bit, azaz a szélesség 0 .. 255 között lehet. A szélesség alsó két bitjét a CCPxCON regiszter 5..4 bitjeibe, a többit a CCPxL regiszterbe kell írni.
Üdv.
Köszi a gyors választ. Szóval PR2 nem az impulzusszélesség hossza, hanem a felbontások száma? Hogyan tudom belőni akkor a PWM frekvenciáját? fg
A PR2 es a Timer eloosztoja egyuttesen hatarozzak meg a periodus idot. Az impulzus szelesseget a CCPR1L:CCP1CON adja meg.
Szia!
A Timer2 az Fosc / 4 frenvenciát kapja meg a bemenetén. Ezt a bekapcsolható előosztó 4 -gyel vagy 16 -tal tudja osztani. A PR2 regiszter a TMR2 számláló tartalmát figyeli, egyezés esetén törli a timer számlálót. Ebből adüdok ki a periódud. A CCP modul PWM módban a fent leírt módon figyeli a timer2 állapotát, ha a kitöltés nem 0, a periódus kezdetén magasba viszi a CCP modul kimenetét, az egyezéskor alacsonyba. Ha a beírt szélesség nagyobb, mint a periódus, akkor nem megy alacsony szintre a CCP modul kimenete. 0 szélesség esetén a kimenet alacsony szinten marad.
Köszi Neked is, Trudnai
Szóval ha jól értem, TMR2 kapja az 1 MHz-es jelet (a ketyegőm 4 MHz INTOSC), ha PR2= .63, akkor a PWM freki 1:1 előosztásnál 1.000.000/63=15.873 Hz lesz, 1:4-esnél 3968 Hz, 1:16-osnál pedig 992 Hz? Hogyan értelmezzem a kitöltési tényezőt? Ha CCPR1L-CCP1CON5:4 -et nézem, az szám szerint nagyobb is lehet, mint .63 (max. 255)?
A BT136 egy triak a moc meg egy optoriak, ha jól tudom. Triakkal vagy impulzus csomag szabályozást vagy fázishasítást lehet végezni ( vagy ha nagyon rosszul működik a dolog, akkor egyszerre mindkettő megtörténik ).
4MHz-es órajelnél a PWM modul kimenetén a legkisebb PWM frekvencia 245Hz. Ez túl nagy ahhoz, hogy bármelyik szabályozást meg tudd oldani. Impulzuscsomag szabályozásnál nullátmenettől nullátmenetig kell bekapcsolni a triakot n*360° időtartamra, ami n*20ms az 50Hz-es hálózaton. Ilyenkor mindig teljes hullámok mennek keresztül a meghajtott áramkörön és nem terheli a fogyasztót egyenáram. Igazából csak a bekapcsolásra kell odafigyelni, mert ha nincs kapcsolójel, a triak nullátmenetnél kikapcsol. A fázishasításnál hasonló az eljárás, tehát a pozitív és a negatív félhullámot illik egyenlő arányban hasítani. Ehhez a módszerhez 50Hz-es PWM-re volna szükség. A nullátmenet után x idővel ( x < 10ms ; 50Hz esetén ) kell egy impulzussal bekapcsolni a triakot és ha a bekapcsoló impulzus nincs jelen, akkor a nulla átmenetnél kikapcsol. Ezután újabb x idővel ismételten be kell kapcsolni, hogy mindkét félperiódus meglegyen. Mindkét megoldáshoz meg kell oldani azt, hogy a PIC érzékelje a nullaátmeneteket. Ennél sokkal egyszerűbb, ha SSR-t ( szilárdtest relét ) használsz, amiben a nullaátmeneti kapcsolás már meg van oldva. Fűtésnél csak ritka esetben érdemes másodpercesnél rövidebb ciklusidőt alkalmazni. Már csak azért sem, mert már másodperces bekapcsolások esetén is teljes hullámcsomagok kapcsolásával a szabályozási lépcső 2%-ra adódik ( 1másodpercen belül 50 hullámcsomag van. 1/50 = 0,02 ). Ahogy csökkented a ciklusidőt a lépcső mértéke egyre nő.>
Üdv.
Bevallom őszintén, csak részleteket értek a magyarázatodból; gépész vagyok, nem elektromos. Csatoltam a triakos adapter kapcsolási vázlatát, melyet a 16F1936-ossal generált PWM jelekkel (illetve van 1 teljes áramkör 230V-5V feszcsökkentővel és beforrasztott 12F683-mal pákahőszabályozás céljából). Jól értelmeztem, hogy ha a triak nem kapcsol ki/be elegendő idaig, akkor csak az egyik hullám megy át rajta, és diódaként viselkedve hullámzó egyenáramot ad a fogyasztóra? Miért rossz ez annak? fg
Sziasztok !
Elméleti kérdés: Ha muszáj néha órajelet váltanom, de szeretném, ha a timer0 azonos időnként lépjen, akkor elég ha az előosztóját simán magasabb fokozatba kapcsolom amíg magasabb órajellel üzemel a pic ? Alapban 2 -es osztóval megy most, és 8Mhz az órajel, de néha felküldeném 16Mhz re. (Pontosabban néha vissza kell venni 8Mhz re, a defektes ADC miatt) Van-e itt valami csapda ? És a következő kérdés: az tényleg lehet, hogy ha 4xPLL-t kapcsolom be, akkor 2ms mire felpörög az órajel, jól olvasom az adatlapot ? Az nekem nagyon soknak tűnik. (Ezért gondoltam, hogy csak 16 és 8Mhz között váltogatok, az megvan elvileg 2us alatt. 16F1824 )
Ha nem okoz gondot, hogy az előosztó változtatásakor néhány órajel kimarad a Timer2 léptetéséből, akkor elvileg csak ennyiből áll a dolog.
A PLL az ilyen, de ez csak bekapcsoláskor van. Muszáj a 16MHz? Biztosan nem elég a 8MHz?
Végül is elég a 8. Nekem is gyanús hogy lehet hogy csak akkor 2ms ha beindul, de ha mondjuk elkapcsolok róla szoftveresen, akkor vajon leáll ?
Vicces azért hogy mondjuk váltanék 16F684 -ről erre a 16F1824-re, mert több a ram, meg gyorsabb, csak épp errata ból meg kiderül, hogy adc defektes, pwm vezérlő szintén.
Mi van velük, mit rontottak el ami miatt órajelet kell változtatni?
Jó reggelt.
Hp41C & trudnai & Ideiglenes & Mezoas köszönöm tegnapi segítségeteket - rájöttem, mi a baj a PWM gyártásommal és az áramkörömmel. Ma hajnalban rákötöttem a 16F1936-os próbaáramköröm PWM kimenetére egy próbapanelen összedugott MJx3055-ös power mosfet-es áramköri részt, 15V-os egyenáram és 12V-os autóizzó segítségével. A fényerőt 0-100% között, fokozatmentesen tudtam szabályozni; tehét nem a PWM képzés volt a baj, hanem az egyenáram/váltakozóáram közötti különbségeket nem tudtam megfelelően értelmezni - de tegnap este / ma hajnalban megértettem ! Még 1x köszi Mindannyiótoknak !
Helyesbítenem kell. A MOC nem csak sima optotriak, benne van a nullátmeneti logika is. Megnéztem az adatlapját és tanultam belőle.
Ezután már nem javasolok a választásod helyett SSR-t, mert ez is ugyanazt tudja ( elvileg ) a nullaátmenetekkel. A pulzáló egyenáramot jól érted. Ez azért problémás, mert a rendszerben mindig van transzformátor, aminek a vasa nem egyenáramra van méretezve, illetve az egyenáramnak lehetnek galvanikus hatásai. A te esetedben nem jön szóba, de induktív fogyasztókra sem szerencsés ilyen lüktető egyenáramot engedni. A TRIAK működtetésénél azt kell tudni, hogy ha egyszer átváltott bekapcsolt állapotra ( vezet ), a továbbiakban nem kell neki a vezérlőlábra semmilyen jel, mert bekapcsolva marad. Nem is tudod kikapcsolni, csak akkor, ha a rajta átfolyó áramot megszünteted ( az alsó határérték alá csökkented ). Váltakozó hálózatnál ez a szinuszhullám nullátmeneteinél történik meg, ezért lehet ezt ott eredményesen használni. Feltételezem, hogy a MOC áramkörben levő logika megteszi azt, hogy a bejövő jelet követő nullátmenetnél fogja bekapcsolni a triakot és ha a logikai jel megszűnik, akkor úgy fejezi be a működtetést, hogy a szinuszcsomag teljes legyen ( egész számra jöjjön ki a hullámszám ). Ebből az adódik, hogy rövid vezérlőjelek hatására vagy nem megy ki teljesítmény a fogyasztódra, vagy legfeljebb egy szinuszhullám. Egy szinuszhullám időtartama 20ms ( 50Hz esetén ). Ha két szinuszhullámnyi teljesítményt akarsz a fogyasztóra küldeni, akkor a vezérlőjel hossza valahogy 20 és 40 ms között kell legyen. Ekkor gyakorlatilag 40ms időtartamra kapcsolod be a triakot. A sort lehetne folytatni tovább és oda lyukadunk ki, hogy ha 980 és 1000ms időtartamú vezérlőjelet adsz ki, akkor 50db szinuszcsomag fog kimenni a fogyasztóra, lévén a hálózati frekvencia 50Hz. Ha a bekapcsolási időt 0 és 2 másodperc között szabályozod, akkor 1 - 100db szinuszcsomagot tudsz küldeni a fogyasztóra. Ez felel meg az 1%-os lépcsőnek. A CCP modult sajnos 2 másodperces periódusidőre nem lehet beállítani, ezért ezt már szoftveresen kell megoldani. De az meg nem bonyolult. Ha CCP modult használod erre, annak a nagy kimeneti frekvenciája miatt szinte minden periódusban akad olyan helyzet, hogy a kapcsolóeszközöd átváltson és ez teljesen független lesz a szabályzási kimenetedtől. Mondhatni teljesen kaotikusan fog viselkedni a fűtési kör.
Az a baj, hogy még soha nem próbáltam "fényerő" szabályozni MOC-ot, főleg olyat, amiben van 0 átmenet kapcsoló, de egy próbát megérne, hogy ha a LED-et fényerőszabályoznánk egyenárammal, akkor milyen kimenet lenne a Triakon. Ha a dolog működik(Sima triak esetében ugye tudjuk, hogy igen, csak a MOC mit kavar azt nem...), akkor a PWM-ből egy integráló taggal fényerőszabályozható a LED. Fontos, hogy nem tiszta PWM kell, hanem integrált egyenáramot kell előállítani belőle.
Egy próbát megér, lehet, működik...
Szia!
Nemrég én is a PWM-modul számításainak nehézségeibe ütköztem. Írtam egy C-programot, azóta könnyen be tudok állítani bármilyen frekvenciát. Megkérdezi az órajelfrekvenciát, a kívánt pwm-frekvenciát, a kívánt kitöltési tényező értéket. Ezek után megadja, hogy a bekért értékekhez milyen CCPRxL, CCPCON<5:4>,PR2 értékek tartoznak a Timer2 1,4, és 16- os előosztásai mellett. Ha adott előosztásnál nem tudja megvalósítani a kívánt értékeket, akkor ki sem listázza. Az 1% és 99%-os kitöltési tényezőhöz is megadja a CCPRxL és CCPxCON<5:4> értékeit hexadecimális formában. Én ezt a programot csatolom is ide, aki akarja használja egészséggel, és ha valami problémát észlel benne, azt jelezze nekem. Nem nagy dolog, de legalább a számológép használatától megment. Köszönöm. Üdv!
Hopp, lemaradt a csatolmány.
Én ezt Excelben szoktam...
Viszont a felbontás kiszámításában sokszor ellentmondást vélek felfedezni. Pl. PR2=125, TMR2 Előosztás=4, Fosc=32MHz. Fpwm=15873,016Hz. Milyen a felbontás? Mert nekem a gyakorlatban 9 bit, a számítás szerint 10,977bit. Képlet: log(Fosc/Fpwm)/log(2). A képlet becsapós, mert a felbontást a PR2 határozza meg, kiegészítve a CCP1CON 5:4 bitjeivel. A 125 7bites szám + 2 = 9bit. Ezt a hibát a te programod is tartalmazza! |
Bejelentkezés
Hirdetés |