Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   615 / 1319
(#) dinokal válasza szilva hozzászólására (») Dec 8, 2009 /
 
Bocs elnéztem! Rosszul értelmeztem a kapcsolást. A szabályozási kör adott, elég egyszerű kapcsolás, előállítja az egyenfeszültséget is. A picből kijövő kvarc pontosságú jelnek kell kb 60-70 Hz között lennie, a stabilizálandó jel felmehetne egészen 10 Mhz-ig, ennyit enged meg a cmos D flip-flop. Tehát a mért frekvenciát nem kell leosztani, csak a frekvenciamérő programot kellene egy timerrel bővíteni.
(#) szilva válasza dinokal hozzászólására (») Dec 8, 2009 /
 
Lehet így is csinálni, de mi értelme, ha már teszel oda egy PIC-et? Az elég rugalmas, mindenfélét meg lehet vele oldani, akár még a FLL/PLL működést is, csupán program kérdése az egész.
(#) dinokal válasza szilva hozzászólására (») Dec 8, 2009 /
 
El sem tudom képzelni hogyan?
(#) szilva válasza dinokal hozzászólására (») Dec 8, 2009 /
 
PLL:

1. Egy etalon frekvenciát kell előállítani.
2. A "szintetizált" frekvenciát annyival osztani, hogy a kívánt frekvencia esetén a leosztott frekvencia megegyezzen az etalonnal.
3. A két frekvenciát egy fáziskomparátorra kell vezetni, a fáziskomparátor kimenete lesz a szintetizált frekvenciát előállító oszcillátor vezérlő jele.

A gyakorlatban a legegyszerűbb fáziskomparátor, amit ilyen esetekben használni lehet, az a XOR kapu vagy egy oda-vissza élekkel billenthető (RS) tároló. A kapu vagy a tároló kimenetét persze átlagolni kell, hogy a megfelelő (egyen)feszültségű vezérlést kapjuk az oszcillátor számára.

PIC esetében a következő módszert alkalmaztam, sikerrel:
1. Etalon frekvenciát rendszeres megszakítással állítok elő, itt úgysem arról van szó, hogy meg is kell jelennie valamelyik kimeneten ennek a frekinek, csak az eseménynek kell bekövetkeznie mindig ütemesen.
2. Az FM vevő oszcillátorának jelét egy 64-es, nagyfrekis előosztás után a Timer1 külső bemenetére vezettem. A CCP modult úgy állítottam be, hogy egy határérték elérésekor generáljon megszakítást és nullázza a Timer1-et, így gyakorlatilag lett egy 16 bites, programozható arányú frekvenciaosztóm.
3. A kétféle megszakítás kiszolgáló rutinjai a PIC egyik kimenetét állították be: az egyik megszakításban magasra, a másikban alacsonyra. A kimenetre egy egyszerű RC tagot tettem, mint átlagoló áramkört.

Ez a módszer egy CCP modullal (de lehet, hogy csak ECCP-vel, a Timer1 nullázása miatt!) rendelkező 16F-fel is megoldható.


FLL:

1. A "szintetizált" frekvenciát megmérjük.
2. A mért frekvenciát összehasonlítjuk a kívánttal.
3. A hibajel értelmében változtatjuk a szintetizált frekvenciát előállító oszcillátor vezérlését.

Analóg áramkörökben a dolog úgy történik, hogy valamilyen, a frekvenciával arányos jelet állítunk elő, és ezt hasonlítjuk egy etalonhoz, a korábban belinkelt kapcsolás is ilyet csinál. Digitális megoldáskor, mint pl. a PIC-nél az egész mehet programból, mérsz, hasonlítasz, beavatkozol, aztán ezt csinálod végtelen ciklusban. Ilyet is proóbáltam a rádió kapcsán, ez is működött.
(#) dinokal válasza szilva hozzászólására (») Dec 8, 2009 /
 
Köszönöm, így már értem.
(#) c27 hozzászólása Dec 9, 2009 /
 
Sziasztok. Igazából kezdőnek számítok, de szükségem lenne egy picégetőre, amivel 16F628-et tudok égetni.
Olvasgattam és láttam, hogy a pickit2 elég jó kis szerkezet lehet, de ahhoz fel kell programozni egy 18F2550-et. Tehát elhatároztam megvalósítanám a watt féle lpt-s programozót, hogy a 18F2550-es picet felprogramozzam.
A gondom az, hogy nem teljesen értem pontosan hogy is van ez az egész pedig elolvastam watt oldalát.
Először is a tápellátást nem tudná ellátni komplettem a pc amihez majd csatlakoztatom az égetőt? Van minden gépen 12V és 5V biztos van szabad káben a gépben az oldalát kell csak kicsit megszellőztetni.
A másik kérdésem, hogy mellékelek egy képet amin a kapcsolási rajz van megszámoztam és megjelöltem azokat amikkel gondom van. Az 1.-es a nyomtatóport. Ott honnan tudom melyik az 1-es láb/vezeték? Veszek egy kábelt szerintem nincs megszámozva, bár ha mégis akkor bocs. A 2.-el jelönt kék vonal az nem tudom mi.
A 3. 74LS07 van 6db is belőle az nem tudom mi nem nagyon ismerem, tudom ez az én hibám. Ez egy db ic lenne? A 4.-et a pichez kell kötni? Mi alapján vagy hogy? Most spec egy 18F2550-et kéne felprogramoznom jó lenne pontosan ahhoz egy kapcsolási rajz ami elég részletes. A 5.-nél csak annyi a bajom, hogy azt abszolút nem értem hogy van. Vannak számok odaírva, de minek a számozása az?
Ha valakinek van lelki ereje nekem segíteni az kérem segítsen.
(#) potyo válasza c27 hozzászólására (») Dec 9, 2009 /
 
0. Jó a PC táp is, csak vigyázz vele, mert elég sok Ampert tud, és ha valamit rosszul kötöttél be, akkor ott a táp lesz az erősebb. Másrészt egy zárlattal a gépet is leállítod, zárlat meg néha előfordul kisérletezés közben. Ezért szoktunk inkább olyan tápot használni, ami egyrészt nem ad túl nagy áramot sem, másrészt nem megy róla más, csak az, amit épp csinálunk. A 78L12 az már 200mA körül lekorlátoz, jó eséllyel kisebb kárt tud egy elkötés csinálni. Egy PC táp a 12V-os ágon viszont akár 20-25A-t is le tud adni, mire lekapcsol.

1. Ha veszel egy nyomtatóport csatlakozót, azon meg szokták számozni a vezetékeket. De a neten ha rákeresel az "lpt port pinout" szavakra, akkor lesz egy adag találat, ahol le van írva, melyik láb melyik számú.

2. Az szerintem csak annyit akar jelenteni, hogy onnan egy kábellel megy tovább a portról az asztalon levő égetőig az a négy vezeték.

3. Egy darab IC, ami hat független kaput tartalmaz, ezért van U3a...U3f-el jelölve.

4. Igen, a PIC-hez kell kötni. Watt honlapján nézd át az ICSP-ről szóló írást.

5. Ez az IC lábszámozása, így van jelölve, hogy melyik lábát hová kell kötni.
(#) szkrep hozzászólása Dec 9, 2009 /
 
Sziasztok!
Egyszerű mobil robotot építek, ma végre feléledt az áramkör, de....
Mikor a motor forgásirányt vált(ana), resetel a pic. Írtam rá próbának annyit, hogy 5s -ig balra forog- 5s-ig jobbra forog- 5s-ig áll. Mikor elindítom, 8V-n csak remeg (elindul-megáll), lényegében egy négyszögjelet kap. 12V-n elindul, forognak a motorok, de mikor 5s múlva irányváltás jönne (pontos az 5s, és rántást érezni, tehát végrehajtja a programot), megint reseteli, és forog tovább az eredeti irányba. Próbának rátettem egy kisebb motort, azzal működik szépen, az nem zavar semmit. A táp most egy 12V 500mA dugasztáp (2200µF szűrőkondival) a motorok együtt 300-350 mA-t vesznek fel, gondolom nem az árammal van a baj, hanem a feszültség ugrik valamerre. (az akksi valószínűleg 12V 1-4Ah lesz, meglátom mi jön )
Hogy tudnám megoldani, hogy a PICet ne zavarja a nagyobb motor? (a motorokon van 100n kerámikakondi, pic táplábakon, stab ic-n is). L293D van benne, elvileg a diódák abban integrálva vannak.
Lehet, hogy simán gyenge neki a táp?
(#) potyo válasza szkrep hozzászólására (») Dec 9, 2009 /
 
A stabilizátor IC elé tegyél be egy soros diódát és utána egy mondjuk 2200µF-os kondenzátort, hogy a motorok árama ne rántsa le a PIC tápját. Irányváltáskor szerintem akkora áramot húz, hogy leesik a feszültség az eddigi 2200µF-os pufferen és emiatt resetel a PIC.
(#) szkrep válasza potyo hozzászólására (») Dec 9, 2009 /
 
Így? Holnap tudok csak próbálgatni, mert nincs kéznél semmilyen alkatrész, így ha több ötlet is van, szólajtok, hogy egyszerre bevásárolhassak
A kondenzátort úgy érted, hogy mégegyet tegyek be? Van itt egy 4700µF is, majd megnézem azzal. Esetleg mindkettővel. A diódának ott mi a szerepe?
(#) potyo válasza szkrep hozzászólására (») Dec 9, 2009 /
 
Így. A dióda akadályozza meg, hogy a motor lerántsa a 7805 előtti kondenzátoron is a feszültséget, tehát úgy lenne a felállás hogy az eddigi 2200µF-os puffer marad, utána jön a dióda, és utána jön a másik 2200µF vagy akár nagyobb is lehet. Amikor a feszültség elég magas, akkor a diódán keresztül feltöltődik a kondenzátor, amikor leesik a feszültség, akkor meg a kondenzátorból még egy ideig el bir futni a PIC, nem fog az alacsony feszültség miatt resetelni.
(#) c27 válasza potyo hozzászólására (») Dec 9, 2009 /
 
Oké, köszönöm. Még annyit az 5.-hez, hogy akkor az ic 8,10,12 lába szabadon marad?
(#) c27 válasza c27 hozzászólására (») Dec 9, 2009 /
 
Még azt kihagytam, hogy tápellátásra jó adapter is? Adapternél is 10-13V között kell, hogy tudjon kimérve vagy gyárilag ráírva? (Nekem van egy 9V-os 500mA és multiméterrel terhelés nélkül 13V.)
Elolvastam közbe a ICSP-ről szóló írást, de annak csak az értelmét fogtam fel, de konkrétan nincs benne, hogy hogy kell egy 18F2550-re rákötni.
(#) potyo válasza c27 hozzászólására (») Dec 9, 2009 /
 
Adapter is jó, ha utána stabilizálva van a feszültsége. Üresjáratban 13V, de már kis terhelés hatására is leesik 10-11V környékére, és elméletileg 500mA terhelésnél fogja a 9V-ot adni, tehát nem felel meg a célnak. Ha viszont át lehet billenteni 12V-os állásba, az már elég lehet, ha utána egy 7812 vagy 78L12-vel stabilizálod a feszültséget.

A 18F2550 adatlapját kell elővenned, és megkeresni benne, hogy melyik lábak a PGD, PGC, MCLR, GND és Vdd. Néha a PGD helyett ICSPDAT, PGC helyett ICSPCLK, GND helyett Vss, Vdd helyett Vcc jelölés szerepel, ezek egymás szinonímái.

Az a három láb szabadon marad.
(#) Ktulu válasza c27 hozzászólására (») Dec 9, 2009 /
 
Figyelmedbe ajanlom az Oshon programozot is.
Magatol kapcsolgatja a VDD es VPP vonalakat.
Bővebben: Link
(74LS06 helyett 74LS07-et hasznalj)
(#) c27 válasza Ktulu hozzászólására (») Dec 9, 2009 /
 
Értem köszönöm mindkettőtöknek a segítséget. Azt hiszem támnak egy nagyon régi pc tápegységét használom. Van rajta 5V és 12V gondolom azt nem kell szűrni meg semmi más hanem mehet rá egyből?(Annyira régi a táp, hogy ha bedugom akkor egyből adja a feszt terhelés nélkül viszonylag pontosan 1-2 tizedvolt eltéréssel. A főkapcsoló a 220-at adta a tápra ill. vette el.)
(#) kepitu hozzászólása Dec 9, 2009 /
 
Sziasztok!

PIC programozásnál az alábbiaknál /Opciók/ mit kell beállítani? /Osc: WDT: PWRT: CP /
Alapból minen be volt állítva és ellenőrzéskor hibát jelez, valamint a beirt fájl-t összehasonlítva az eredetivel nem egyezik!!!
Ezekután feltételetzem, hogy nem is működne megfelelően.

Köszi: Kepitu

Dok1.doc
    
(#) trudnai válasza kepitu hozzászólására (») Dec 9, 2009 /
 
Az, hogy mit kell beallitani, az az alkalmazasodtol fugg! Ha lenne tuti es egy az igaz beallitas, akkor nem lenne ertelme az opcionalis beallitasi lehetosegnek

Mivel beallitottad a CP-t (ha megnezed az adatlapot lathatod az a code protection) akkor ugye nem tudod kiolvasni a PIC programot, ezert ellenorzes sem lesz sikeres! Ennek ellenere a program lehet benne van mar es helyesen mukodik...
(#) kepitu válasza trudnai hozzászólására (») Dec 9, 2009 /
 
Köszi a gyors segítséget.

Minden pipát kiveszek az égetésnél, akkor sem egyezik, és a mellékelt hibaüzenet jön.

további segítséget várok.


Dok2.doc
    
(#) potyo válasza kepitu hozzászólására (») Dec 9, 2009 /
 
Nem tudnád a képet csak simán képként csatolni?
(#) kepitu válasza potyo hozzászólására (») Dec 9, 2009 /
 
Sajnálom, úgy tűnik nem megy, de a lényeg ezen is látszik.

(#) potyo válasza kepitu hozzászólására (») Dec 9, 2009 /
 
Pedig csak annyiból állna, hogy nem a Word-be illeszted be, hanem Paint-be, és lementenéd JPG vagy PNG formátumban...
(#) trudnai válasza kepitu hozzászólására (») Dec 9, 2009 /
 
Es miutan kivetted a pipakat csinaltal teljes torlest, vagy csak megprobaltad megint megirni? A CP ha egyszer be van kapcsolva akkor csak es kizarolag a teljes torles az ami kiszedi -- de az mindent kiszed, programot es egyeb beallitasokat is... epp ez a lenyege a "kod vedelemnek" (code protection). Igy ugye mas nem tudja kiolvasni a programodat, nem tudjak meg milyen fantasztikus kodot krealtal, nem tudjak ellopni az aramkorod meg akkor sem ha esetleg magat az aramkort felterkepezik (ugye mivel a kodod nelkul az mukodni nem fog...)

[OFF]Amugy egyet ertek potyoval, mostanaban nagyon nagy divat lett, hogy PDF-be vagy Word-be illesszenek be kepeket. Ennek nincs sok ertelme, csak noveli az inkompatibilitast es mivel mindket formatum virusozhato felesleges riziko faktor.

Ahogy potyo javasolta: Futtatashoz be kell irni: "mspaint" (idezojelek nelkul) es beillesztes utan File/Mentes maskent, a "filenev" alatt a formatumban beallitani vagy a JPG vagy PNG-t... Nem nehezebb mint Wordben megcsinalni ugyanezt...

(#) kepitu válasza potyo hozzászólására (») Dec 9, 2009 /
 
Köszi, küldöm.

Progr.JPG
    
(#) lóri hozzászólása Dec 10, 2009 /
 
'Sziasztok!
Teljesen kezdő vagyok a témában, de szeretnék egy pic-es hangerőszabályozót csinálni.
Van két nyomógomb (fel, le) 15 led, a hangerősség skálának, és 1 cd 4067 ellenálláshálózattal.
Én basic-ben próbálnám megcsinálni. Mivel ez az első programom, légyszi nézzétek át , (gondolom van benne hiba bőven) hogy működhet-e egyáltalán.



' Project name:
' Picvol
' Revision History:
' 2009.12.08.
' Description:
' Nyomógombos hangerőszabályozó. 15 lépéses.
' PortB és PortC -re decimálisan kiküldeni az értéket, egy lednek.
' PortA 5:2-re BCD -ben kiküldeni az értéket. CD4067.nek.


program picvol


TRISA = %000011 ' Alsó két bit a gomb, felső négy BCD kimenet
TRISB = 0 ' B port kimenet
TRISC = 0 ' C port kimenet

BUTTON1 VAR PORTA.0
BUTTON2 VAR PORTA.1

dim i, a, as byte

for i = 1 to 15 ' 15 lépésben szabályozunk
i = 8 ' Feltöltjük egy kezdőértékkel

a = Dec2BCD (i) ' Konverzió
a = PORTA 5:2 ' Adatküldés

main:

BUTTON1

while TRUE
if (Button(PORTA, 0, 1, 1)) then ' detect logical one on RA0 pin
oldstate = 1
end if
if (oldstate and Button(PORTA, 0, 1, 0)) then
' detect one-to-zero transition on RA0 pin
i = i+1
oldstate = 0 ' Hangerő nő 1-el
end if
wend ' endless loop


BUTTON2

while TRUE
if (Button(PORTA, 1, 1, 1)) then ' detect logical one on RA1 pin
oldstate = 1
end if
if (oldstate and Button(PORTA, 1, 1, 0)) then
' detect one-to-zero transition on RA1 pin
i = i-1 ' Hangerő csökken 1-el
oldstate = 0
end if
wend ' endless loop

sub function mask as Byte
select case i
case 1 result = PORTB.7
case 2 result = PORTB.6
case 3 result = PORTB.5
case 4 result = PORTB.4
case 5 result = PORTB.3
case 6 result = PORTB.2
case 7 result = PORTB.1
case 8 result = PORTB.0
case 9 result = PORTC.7
case 10 result = PORTC.6
case 11 result = PORTC.5
case 12 result = PORTC.4
case 13 result = PORTC.3
case 14 result = PORTC.2
case 15 result = PORTC.1
end select 'case end
end sub

end
(#) MPi-c válasza lóri hozzászólására (») Dec 10, 2009 /
 
Szia!
Én a basic-hez nem értek, de az biztos, hogy nyomógomb használatánál a pergésmentesítést meg kell oldani. Ezt nem látom a programodban.
A program elején látok viszont egy for-ral kezdődő sort, azt lezárja valami? (Pl. még a régi időkre visszaemlékezve egy next?, mert különben mi szükség van rá?)
while TRUE gondolom végtelen ciklus, hogyan "szabadul ki" belőle a végrehajtás... és hogyan jut a select case-re...
(#) lóri válasza MPi-c hozzászólására (») Dec 10, 2009 /
 
Köszi az észrevételt. Én nem vagyok programozó, ennyi telt tőlem, majd még gondolkodom.
(#) icserny válasza lóri hozzászólására (») Dec 10, 2009 /
 
Idézet:
„Mivel ez az első programom, légyszi nézzétek át”

Hiába nézzük, ha azt sem tudjuk, hogy mi volt a szándékod, milyen PIC-re szánod, milyen fordítót használsz!

Mindenestre annak alapján, hogy a kimenetnek deklarált portokat értékadások jobboldalán szerepelteted, bennem felmerül a gyanú, hogy egyszerűbb mintapéldákon keresztül először a választott programnyelv elemeivel kellene megismerkedned!

Utána jöhetnek a bonyolultabb vezérlési szerkezetek (for, select), függvények, eljárások, azután pedig alaposan végig kelen gondolnod a tervbe vett program feladatait és felépítését.
(#) lóri válasza icserny hozzászólására (») Dec 10, 2009 /
 
Amiből néztem ezeket, az a picbasic project nevű könyv, és ott láttam ezeket a felépítéseket. Persze ott is ledvillogtatással kezdték, de ez sem tűnt sokkal nehezebbnek. Két gomb 15 led. 16F72 lenne. A szándék nyomógombos hangerőszabályzás lenne 15 lépcsőben, cd4067-et vezérelve.A ledek egy 15-ös skálát alkotnának, hogy látni lehessen hol jár a hangerő. Köszi.
(#) icserny válasza lóri hozzászólására (») Dec 10, 2009 /
 
1. A LED-eket vezérlő portok kimenetek, tehát értékadó utasításokban baloldalt van a helyük.
2. A BUTTON1 és BUTTON2-ről el kellene dönteni, hogy változó, vagy címke.
3. Két végtelen ciklus kicsit sok lesz egy programba! Az első is elég lassan fut le...
Idézet:
„A szándék nyomógombos hangerőszabályzás lenne 15 lépcsőben, cd4067-et vezérelve.”
Ez így értelmezhetetlen. Algoritmizálni kell... (pl. nézz az A portra. Ha a BUTTON1-hez tartozó 0. bit alacsony állapotba került, akkor csináld ezt és ezt...)
Következő: »»   615 / 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