Fórum témák

» Több friss téma
Fórum » Órakészítés PIC-kel
Lapozás: OK   1 / 12
(#) Slope hozzászólása Jún 14, 2006 /
 
Halihó mindenkinek!

Az elmúlt napokban sokat vacakoltam egy olyan óra elkészítésével, ami egy 2×16-os alfanumerikus LCD-n jeleníti meg az időt és a dátumot. Illetve rendelkezik az ébresztési funkcióval, pl. külső eszközök adott időpontbeli bekapcsolásához.
PIC 16F628A-n próbálkoztam belső oszcillátort használva. A programot Pascal nyelven írom...
ennyit az alap információkról.
Elsőnek írtam egy sima számlálót, de hamar rájöttem, hogy ez megszakítás nélkül bizony pontatlan. Így beállítottam TMR0 túlcsordulására a megszakítást. TMR0 kezdőértékét 55-re tettem, az előosztót pedig 1:8 osztásra állítottam. Figyelembe véve, hogy a beépített számláló minden 4. órajel impulzusra léptet, a végső leosztás az órajel 1:32-ed része vagyis a számláló 8us-ként léptet. Minden megszakításkor növeltem egy változó értékét, majd ha ennek értéke elérte az 1250-et, eltelt egy másodperc.
Sajnos azonban 10 perc elteltével az óra már 1 percet késett. Gondoltam magamban, hogy biztos pontatlan a belső oszcillátor, de külső rezonátor használatára már nem volt lehetőségem, mivel PIC azon lábait már lefoglaltam.
Ekkor jött az 5let, hogy szétszedek egy elektromechanikus órát, és kiszedem az 1Hz-es időalapját, mert annak pontosnak kell lennie. Ennek viszont két kimenete van (a léptető tekercs meghajtása miatt), amik 0,5Hz -es tűimpulzusokat adnak. Fogtam 2db diódát rákötöttem a két kimenetre a diódák másik végét is összekötöttem, így az összekötött ponton megjelentek az 1Hz-es impulzusok. Ezt rákötöttem a PIC megszakításkérő bemenetére (INT). És módosítottam a programot... így minden megszakitáskor 1-el növeltem a másodperc változóját. Bekapcsoltam, de valami nem stimmelt... minden második impulzusnál 1-nél többet urott a másodperc (általában 20-25 máodpercet). A páratlan impulzusoknál pontosan 1-et lépett.
Hamar rájöttem, hogy a gond az időalap két kimenetének összegzésére szolgáló diódáknál van. Ki is cseréltem gyorsan, amelyik hibás léptetést okozott, egy másikra. Egyből megjavult... Mondjuk ilyesmivel még nem találkoztam... szóval ha valaki meg tudná mondani, hogy egy látszólag jól működő dióda egy bemenő impulzus hatására miért csinál sok tűimpulzust, az jó lenne... olyan mint egy hazard.
A dióda cseréje után látszólag minden stimmelt, de...
bekapcsoltam az órát, és magárahagytam... 3óra elteltével megnéztem mit mutat, azon pedig közel 4óra volt. Szóval most meg siet (nem is keveset)! Én pedig ezt már végképp nem értem... az időalapnak pontosnak kell lennie, elvégre egy óráé volt. A PIC meg minden megszakításkor növeli a másodperc változót...
Kérdés pedig az, hogy okozhatja-e ezt a diódák hibája? Ha igen akkor milyen típust tudtok ajánlani ilyen célra.

Ugyancsak a témához kapcsolódóan... használt már valaki itt óra/kalendárium SPI buszos IC-t? Ha igen akkor érdekelne, hogy hogyan is kell ezeket használni.
Bocs, ha hosszú voltam... fő a pontos tájékoztatás
Előre is THX!
(#) bbatka válasza Slope hozzászólására (») Jún 14, 2006 /
 
Egyenlőre nem akarok nagyon elmélyülni a témában. Csak azt akarom mondani hogy TMR0 használatával nagyon pontos órát lehet készíteni. Valahol az osztások beállításánál követtél el valami hibát. Lucifernek egy fél éve készítettem egy ütemadót a link ITT található. Nagyon pontos. Számítási hibája egyáltalán nincs. 32768 Hz-es kvarcot használtam.
A másik témát tekintve ITT találsz példaalkalmazást. Lehet hogy I2C-s. Gondolom neked mindegy.
A szimuláció nagyon fontos. Így kiszűrhetők a hibák.
A helyedben én inkább visszatérnék a TMR-es módszerhez.
(#) Topi válasza bbatka hozzászólására (») Jún 14, 2006 /
 
olyan frekijű kvarcot használj, ami 2nek valahanyadik hatványa. Ha ezt nem így teszed, akkor sok bajod lesz a saját leosztásokkal...
Mivel az osztást 2hatványaival teszed a Timer0 ban pl., ezért ha 2hatványával osztod a 2hatványa frekis kristájt, akkor egész, vagyis 1000-es számokat kapsz. Mert így egy us mondjuk 1024 lépést jelent. Úgy meg ha a frekinél egy 256os osztót állítasz akkor kapsz 1ms-et... Vagyis a TMR0 halál pontosan ezred másodpercenként fog beesni... És onnantól meg hát tudod hogy 1mp = 1000ms... Így már semmi nem okozhat problémát...

Üdv. Topi.
(#) Slope válasza Topi hozzászólására (») Jún 14, 2006 /
 
Köszönöm a válaszokat, ezekszerint nem érdemes 4MHz-en próbálkozni, és legfőképp nem a belső oszcillátorral (aminek pontos értéke gonolom az üzemi hőmérséklettől is függ).
A belső oszcillátorral kapcsolatban egy kérdés: igaz az, hogy a PIC-ben van egy gyárilag beállított érték ami mellett a PIC belső oszcillátora a legpontosabb? Amit elvileg ki kéne olvasni írás elött, és visszaírni a programmal.

bbatka: azzal a 32768Hz-es kvarcal csak a TMR0-t hajtod nem? Ha igen akkor érdekelne, hogy azt hogyan lehet (még olyat nem csináltam). A második linket meg nem értem igazán, a fórum keresője jön be. Az oshonsoft-ot ismerem, de nem igazán szimpi. A pascal fordítóban van debugger ott minden változót figyelhetek, szimulációhoz meg jó a Proteus, bár egyik sem realtime futtat.

Az pedig továbbra is kérdés, hogy egy pontos és jól működő 1Hz-es időalap, miért siet PIC-hez kötve.
(#) Slope válasza Slope hozzászólására (») Jún 14, 2006 /
 
Közben néztem az ütemadót és láttam, hogy ott a 32KHz-es kristály magát a PIC-et hajtja. Ez az órajel nekem kevés... elég sok belső folyamat zajlik (feltételvizsgálat, lcd kiírás, stb.)

Szóval hogyan tudom ezzel a frekivel csak a TMR0-t hajtani?
(#) Tomee válasza Slope hozzászólására (») Jún 14, 2006 /
 
A csatolt filében megtalálod a chipcad által forgalmazott FD1 próba panel doksiját kapcsirajzzal eggyüt + a minta progikat. Van benne példa külső kvraccal hajtott Tmr1-re.
Talán jó lesz kiindulási alapnak.

Az I2c és SPI buszos óra ic-kel kinek mi a tapasztalata? (Gerjedékenység, pontosság, tápfesz ingadozás stb...)

pelda.zip
    
(#) Báddzsó válasza Slope hozzászólására (») Jún 14, 2006 / 4
 
Ne tmr0-át akard hajtani hanem a tmr1-et. Sokkal jobb lesz, mert az 16 bites, és a prescalerekkel beállítható, hogy 1 másodpercenként interruptoljon. Ilyen kor a 32768Hz-es kvarcot a t1osi és a t1oso lábakra kell kötni. (16F628-nál az rb6, rb7) nézd meg az adatlapot meg EZT, ezen van kapcsrajz!!
(#) Slope válasza Báddzsó hozzászólására (») Jún 14, 2006 /
 
Köszönöm szépen mindenkinek a segítséget!

Báddzsó által belinkelt pdf, segített a legtöbbet, a pdf-ben levő asembly forrás miatt. Igaz én pascal-ban mozgom otthonosan, az assembly-t inkább csak olvasom... szóval ezt már át tudom ültetni pascalba.

Az óra/kalendárium IC-k működtetése persze továbbra is érdekel. Néztem egy ricoh IC-t nem is drága (190Ft)... talán veszek egyet, bár ez csak óra ha jól tudom... naptár nincs benne.
THX mégegyszer!
(#) bbatka válasza Slope hozzászólására (») Jún 15, 2006 /
 
"óravezérlő" a címe a fórumnak ahol a 32768Hz-es ütemadót megtalálod. Ha gyorsabb kvarcot kell használnod akkor meg kövesd Topi útmutatását.
(#) Slope válasza bbatka hozzászólására (») Jún 15, 2006 /
 
Köszi!

Azthiszem maradok a belső oszcillátornál (4MHz), és a TMR1 16bites számlálót hajtom majd a 32768Hz-es kristályal. Így mivel 2^16 = 32768 pontosan 1s-ként fog beesni a megszakítás.
Viszont a kristály egyik kondiját trimerre akarom cserélni, hogy nagyon pontosra lehessen állítani. Ezzel kapcsolatban pedig az a kérdésem, hogy hova érdemes tenni T1OSO, vagy az T1OSI láb felöli oldalra? Vagy teljesen mindegy?

Bocs a sok hülye kérdésért...
(#) sirály12 válasza Slope hozzászólására (») Jún 15, 2006 /
 
maxim: ds1307

i2c buszos óra ic, tud risztani is, és biztos, hogy pontos. Én is ezt fogom használni, egy mostani projektemben.
(#) Slope válasza sirály12 hozzászólására (») Jún 15, 2006 /
 
Köszönöm az infót... utánanézek mit tud!
(#) Slope válasza Slope hozzászólására (») Jún 15, 2006 /
 
Siráj! Kezeli a dátumot is!
adatlap
Így egy csomó hely marad a PIC-ben más feladatokra.
A szoftveres I2C-ről mik a tapasztalatok?
(#) Slope válasza Slope hozzászólására (») Jún 15, 2006 /
 
Most nézem... "Siráj!" azaz Király! nem neked szólt

Rendelt már valaki mintát a maxim-tól? kiküldik rendesen? Van ilyen ic a kontha-nál is, de 640HUF akkor inkább ingyé minta
(#) bbatka válasza Slope hozzászólására (») Jún 15, 2006 /
 
Szerintem mindegy melyik oldalra teszed a kondit, de inkább a T1OSI-ra tedd. A ChipCAD-nél is lehet kapni naptár IC-t. Vettem is, de még nem használtam fel. Azthiszem RICOH. Olyan pici hogy már majdnem reklamáltam a ChipCAD-nél hogy hol van, aztán észrevettem hogy van valami kis piszok a csomagolásban. Fogalmam nincs hogy fogom beforrasztani. Kitaláltam egy teknikát, de csak nagyobb SMD csipnél használtam még. Finoman leónozom a nyákot és a csip lábainak alsó oldalát. Azután ráillesztem az SMD csipet a nyákra és a Weller páka lapos forraszfejével rányomom. Csak nagyon kevés ónt és sok fenyőgyantát kell használni.
Egyébként a kettős órajel megoldásod szerintem jól fog működni.
Tudom nem szereted a Picsimulatort, de az oldalon találsz naptárIC alkalmazására egy példát. Lefordítod a basic forrást és már is generál egy assembly kódot amit bárhol tudsz használni.
(#) Slope válasza bbatka hozzászólására (») Jún 15, 2006 /
 
Köszi! Elvileg nem jelent gondot ezen IC-k kezelése... úgy kell használni mint egy soros eepromot... kiadom az adott címet, és kiolvasom a tartalmát. Az év, hónap, nap, óra, perc, másodperc, mind külön memóriacímen érhető el ezekben...

A TMR1-el már egyszerű lesz órát készíteni, viszont ha külső IC-t használok akkor ezt a terhet levehetem a PIC válláról, csak le kell kérni az IC-től.

SMD alkatrészek beforrasztására pedig az a trükköm, hogy egy csepp melegragasztóval felnyomom az IC-t a nyákra. Aztán egybe leforrasztom az egész IC-t, az egyes lábak között is összefolyhat a forrasztóón... legalább biztos lesz a forrasztás. Aztán fogok 2-3cm kiforrasztó harisnyát ráfektetem az IC lábaira, és felitatom vele a felesleges ónt. Így csak ott marad ón ahol kell, és a kötés is tuti. Csak ne melegítsd sokáig az IC-t, bár szerintem így kisebb a hősokk mintha minden egyes lábat külön-küklön melegítenék.

Kiforrasztó harisnyát nem muszáj venni, csinálhatsz koax kábel harisnyából is, csak itasd be melegen gyantával.
(#) bbatka válasza Slope hozzászólására (») Jún 16, 2006 /
 
Az SMD IC beforrasztásával kapcsolatban van egy kérdésem feléd. Leszoktad ellenőrízni hogy a lábak között keletkezik-e zárlat beforrasztás után? Nekem csak multiméteres kontakt ellenőrzőm van, de az túl nagy teljesítménnyel dolgozik és ezért nem szoktam utólagos ellenőrzésre használni.
RS5C372A a tipusa az óra IC-nek (195Ft) amit a ChipCAD-től vettem anno. A lábtávolsága 1.27mm.
(#) Slope válasza bbatka hozzászólására (») Jún 16, 2006 /
 
Függ a nyák minőségétől, elkészítésétől is, de nem jellemző, hogy bekúszik az ón az IC alá. A multiméteres ellenőrzést nem kifejezetten ajánlom, főleg ezeknél az érzékeny cuccoknál.
Ha harisnyával felitatod az ónt, szinte garantált, hogy nem lesz rövidzár két láb között. Azért nagyító alatt érdemes átnézni, esetleg átvilágítani, ha van rá lehetőség.
(#) bbatka válasza Slope hozzászólására (») Jún 19, 2006 /
 
Tévedtem a RS5C372A lábtávolságát illetően csak 0,65mm. Mellékeltem egy képet róla. 53 oldalas az adatlapja !

372A.jpg
    
(#) Slope válasza bbatka hozzászólására (») Jún 19, 2006 /
 
Köszi!

Sajnos félretettem egy kis időre ezt a projectet... úgy belemélyedtem, hogy a fősulin közben elhasaltam az utolsó vizsgámon
Mégegyszer nem akarom elkövetni ezt a hibát, nem ér meg egy év csúszást.
(#) Dempsey hozzászólása Okt 14, 2008 /
 
Sziasztok!
Az lenne a kérdésem hogy valaki megépítette-e már a csatolt képen látható PIC-es órát? Ha igen akkor leirnátok a tapasztalatokat?Esetleg nyákrajz? Előre is köszi mindenkinek.
Üdv: Dempsey!

16f84_ora.JPG
    
(#) potyo válasza Dempsey hozzászólására (») Okt 14, 2008 /
 
Én pár ponton belekötnék

1. az óra beállításához a gombok látszólag jól ki vannak találva, de ha a két gombot lenyomod egyszerre, akkor a pic két lábát rövidrezárod. Mindkét nyomógombbal kellene sorba egy-egy 1k ellenállás, így ha le is nyomják mindkettőt, nem zárnak semmit rövidre.

2. 470 ohmos ellenállást tesz be a szegmensvezetékekre, aminek köszönhetően 15mA körüli áram folyik a szegmenseken. Ennyit simán tud a pic is, felesleges az alsó puffer.

3. A digitvezetékek számára viszont kevés az az áram, amit a felső puffer tud adni. Ide tranzisztoros erősítő kell.

4. Mi az, hogy a táp +7,5-12V lehet? A CMOS nagyon nem arra van kitalálva, hogy a tápja ennyivel magasabb legyen, mint amekkora jelszintek a bemeneteken vannak. Ha ráadsz 12V-ot, akkor a pic által kiadott 5V-ot még simán nullának veheti, és a kimenete örökké nulla marad.

5. A PIC mellől hiányzik a tápszűrő 100nF körüli kerámiakondenzátor.

Szóval inkább hanyagold ezt a kapcsolást ebben a formában. Ha esetleg átalakítod a fentiek figyelembevételével, akkor a szoftvere maradhat az eredeti, működni fog vele.
(#) Dempsey válasza potyo hozzászólására (») Okt 15, 2008 /
 
Köszi a választ! Belegondolva abba mit írtál teljesen igazad van. Pl: a tápfaszt én se értettem. Esetleg van valamilyen általad megépített óra amit tudnál ajánlani?
(#) potyo válasza Dempsey hozzászólására (») Okt 15, 2008 /
 
Ha az említett módosításokat elvégzed, akkor jó lesz ez is. Ha nem sürgős, akkor átrajzolom a kapcsolást ma vagy holnap.
(#) Dempsey válasza potyo hozzászólására (») Okt 15, 2008 /
 
Megköszönném ha varázsolnál belőle egy működőképes órát. Előre is köszi.
(#) Kallai Csaba hozzászólása Márc 3, 2009 /
 
Sziasztok!Én a mellékelt órát szeretném megépiteni csak az a problémám hogy nincs ithol f628-as pic-em csak f627-es,abbol legalább 5...És arra szeretnék kérni valakit aki tud C-nyelven programozni hogy irja át nekem a ''clock_temp628.c'-t f627-es hez és hogy forditsta le ''.hex'' be is.Ahogy igy elneztem bele kell férjen...Nagyon megköszönném!!!
(#) Kallai Csaba hozzászólása Márc 6, 2009 /
 
Nem tud segiteni senki ? Én probáltam volna de nem akar sikerülni....
(#) MPi-c válasza Kallai Csaba hozzászólására (») Márc 6, 2009 /
 
Türelem!

1. Ellenőrizted, hogy valóban elférne-e egy 16F627A-ban? Hogyan?
2. Ha próbáltad, de "nem akar sikerülni", akkor részletezd, hogyan, mivel próbáltad és mi nem sikerült?
Ezeket komolyan kérdezem!
Ha nem csak a sültgalambot várod, akkor tudsz is válaszolni, és akkor segítek!
(#) calibra válasza Kallai Csaba hozzászólására (») Márc 6, 2009 /
 
Szia!

Többször használtam már 628 helyett 627-et.Az a tapasztalatom,hogy ha a hex mérete miatt még belefér a 627-be,akkor simán lehet használni a 628-hoz írt hex-el.

Üdv!
(#) bbatka válasza calibra hozzászólására (») Márc 6, 2009 /
 
Szerintem is így van és még érvényes a 648-ra is.
Következő: »»   1 / 12
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