Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   972 / 1319
(#) bbalazs_ válasza Dokikaa hozzászólására (») Máj 20, 2011 /
 
Nem juthat. Nezd meg az adatlapon, mik a lehetosegeid
(#) trudnai válasza berkesandor hozzászólására (») Máj 20, 2011 /
 
Ha le tudod forditani az ASM-et, es meg mukodik is a leforditott kod, akkor keresdd meg ezt:

  1. MOVLW 0x42           ;   b'01000010'  d'066'  "B"
  2.     CALL LADR_0x002E
  3.     MOVLW 0x41           ;   b'01000001'  d'065'  "A"
  4.     CALL LADR_0x002E
  5.     MOVLW 0x54           ;   b'01010100'  d'084'  "T"
  6.     CALL LADR_0x002E
  7.     MOVLW 0x54           ;   b'01010100'  d'084'  "T"
  8.     CALL LADR_0x002E
  9.     MOVLW 0x45           ;   b'01000101'  d'069'  "E"
  10.     CALL LADR_0x002E
  11.     MOVLW 0x52           ;   b'01010010'  d'082'  "R"
  12.     CALL LADR_0x002E
  13.     MOVLW 0x59           ;   b'01011001'  d'089'  "Y"
  14.     CALL LADR_0x002E
  15.     MOVLW 0x3A           ;   b'00111010'  d'058'  ":"


es csereldd le a MOVLW-ket, pl:

  1. MOVLW 0x00           ;   b'01010010'  d'082'  "R"
  2.     CALL LADR_0x002E
  3.     MOVLW 0x01           ;   b'01011001'  d'089'  "Y"
  4.     CALL LADR_0x002E


stb stb stb
(#) Ideiglenes válasza berkesandor hozzászólására (») Máj 20, 2011 /
 
Milyen programmal fordítottad vissza?
(#) berkesandor válasza Ideiglenes hozzászólására (») Máj 20, 2011 /
 
PICDisasm-mal.
(#) bankimajki hozzászólása Máj 20, 2011 /
 
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.
(#) watt válasza bankimajki hozzászólására (») Máj 20, 2011 /
 
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!
(#) bankimajki válasza watt hozzászólására (») Máj 20, 2011 /
 
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?
(#) watt válasza bankimajki hozzászólására (») Máj 20, 2011 /
 
Soronként kell címezni. Tehát nem nézted meg az adatlapot! De ne offoljunk tovább!
(#) bankimajki válasza watt hozzászólására (») Máj 20, 2011 /
 
Oks, köszönöm.
(#) PHARO hozzászólása Máj 21, 2011 /
 
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?
(#) watt válasza PHARO hozzászólására (») Máj 21, 2011 /
 
Próbáld a PK2 saját programjával!
(#) PHARO válasza watt hozzászólására (») Máj 22, 2011 /
 
Megtaláltam benne, elvileg jó lesz, köszönöm!
(#) fejesg hozzászólása Máj 23, 2011 /
 
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
(#) Hp41C válasza fejesg hozzászólására (») Máj 23, 2011 /
 
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.
(#) fejesg válasza Hp41C hozzászólására (») Máj 23, 2011 /
 
Ü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
(#) trudnai válasza fejesg hozzászólására (») Máj 23, 2011 / 1
 
A PR2 es a Timer eloosztoja egyuttesen hatarozzak meg a periodus idot. Az impulzus szelesseget a CCPR1L:CCP1CON adja meg.
(#) Hp41C válasza fejesg hozzászólására (») Máj 23, 2011 / 1
 
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.
(#) fejesg válasza trudnai hozzászólására (») Máj 23, 2011 /
 
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)?

(#) Ideiglenes válasza fejesg hozzászólására (») Máj 23, 2011 / 2
 
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ő.>
(#) fejesg válasza Ideiglenes hozzászólására (») Máj 23, 2011 /
 
Ü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
(#) lidi hozzászólása Máj 23, 2011 /
 
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 )
(#) potyo válasza lidi hozzászólására (») Máj 23, 2011 /
 
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?
(#) lidi válasza potyo hozzászólására (») Máj 23, 2011 /
 
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.
(#) watt válasza lidi hozzászólására (») Máj 24, 2011 /
 
Mi van velük, mit rontottak el ami miatt órajelet kell változtatni?
(#) fejesg hozzászólása Máj 24, 2011 /
 
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 !
(#) Ideiglenes válasza fejesg hozzászólására (») Máj 24, 2011 /
 
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.
(#) watt válasza Ideiglenes hozzászólására (») Máj 24, 2011 /
 
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...
(#) levi18 válasza fejesg hozzászólására (») Máj 24, 2011 /
 
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!
(#) levi18 válasza levi18 hozzászólására (») Máj 24, 2011 /
 
Hopp, lemaradt a csatolmány.
(#) watt válasza levi18 hozzászólására (») Máj 24, 2011 /
 
É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!
Következő: »»   972 / 1319
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