Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   475 / 1210
(#) strapabirotibi hozzászólása Jan 4, 2014 /
 
Sziasztok!

Segítségeteket szeretnem kérni egy problémában...

Egy 18f46k22-es PIC-kel szeretnék kapcsolni egy relét. A PIC egy 6V-os zselés akksiról kapja a tápot egy low drop stabkockán keresztül (1000 µF puffer és 100nF-os kerámiakondik a helyükön).
A relé 12V-os, tekercse 360 Ohm. A relé tekercse egy 12V-os trafóról megy. Az akksi és a trafó közös GND-n van. A relét a PIC egy tranzisztor mezőn keresztül kapcsolja.
A relé tekercsével ellenpárhozamosan elhelyeztem egy 1N4007-es védődiódát.
A problémám az, hogy a PIC a relé sokadik számú kapcsolása után véletlenszerűen lefagy. Valószínűleg a relé kapcsolásakor keletkező tranziens okozza. Optocsatolós galvanikus leválasztást nem tudok beletenni, mert a NYÁK már adott.
Mellékeltem egy vázlatos, egyszerűsített rajzot is.
Tudnátok valami tippet adni, hogyan küszöbölhetném ki ezt problémát?
Előre is köszönöm a segítségeteket!

kapcsolas.jpg
    
(#) vicsys válasza strapabirotibi hozzászólására (») Jan 4, 2014 /
 
Nincs semmilyen más külső eszköz rárakva? (nyomógomb, LCD, stb...)
(#) ktamas66 válasza strapabirotibi hozzászólására (») Jan 4, 2014 /
 
Mit kapcsol a relé? Lehet onnan jön vissza valami zavar.
(#) strapabirotibi válasza vicsys hozzászólására (») Jan 4, 2014 /
 
6db mikronyomógomb van rákötve billentyűzet gyanánt, egy 2×16-os LCD kijelző és egy RTCC modul I2C-vel.
(#) strapabirotibi válasza ktamas66 hozzászólására (») Jan 4, 2014 /
 
Egy kis 230V-os motort kapcsolgat (kalickás forgórészű). De próbáltam már LADA ablaktörlő motort is kapcsolni, ami szintén ezektől külön tápról ment, ugyanígy fenn állt a probléma.
(#) Kovabe válasza strapabirotibi hozzászólására (») Jan 4, 2014 /
 
Szia
Pont nemrég (2 orája) hasonlo problémába ütköztem én is, nálam az LCD is megbolondul. A tesztelgetések alkalmával rájöttem hogy több hibát is vétettem, 1 az ICSP programozó csati tul közel van a trafohoz, 2 a pic illetve a gyengeáramú vezetékek tul közel vannak a kapcsolt áramhoz. Megoldás egy térelválasztó alulemez illetve az egész gyengeáram beleértve az ICSP csatlakozot, el kell távolitani az erösáramú résztöl legalább 6 cm-re és akkor tökéletesen müködik.
(#) ktamas66 válasza strapabirotibi hozzászólására (») Jan 4, 2014 /
 
És nem kötsz rá semmit, akkor is lefagy? Ha igen akkor nem a zavar okozza.
(#) strapabirotibi válasza ktamas66 hozzászólására (») Jan 4, 2014 /
 
Ha nem kell a PIC-nek relét kapcsolnia, akkor semmi baja, elég stabil a program. Kipróbáltam úgy is, hogy csak simán, kézzel érintgettem a relé tekercsének tápvezetékét a táphoz és le is fagyott rögtön... (mivel kézzel odaérintve alapból nem olyan határozott a kapcsolás, mint mikor a PIC kapcsolja)

A kapcsolt motor kb. 5 méterre van a relétől, a PIC-től meg még messzebb.

Pedig a tranzisztormezőben is van védődióda gyárilag a tokban (ULN2004) plusz még én is tettem a relé közvetlen közelébe, mint ahogy azt írtam is.

Lehet, hogy inkább Schottky dióda kellene, vagy olyan, ami gyorsabb? Esetleg a BOR-t is kikapcsolni a PIC-ben? (ígyis nem a legérzékenyebbre van állítva)...
(#) strapabirotibi hozzászólása Jan 4, 2014 / 1
 
Sziasztok!

Időközben sikerült megoldani a problémát. Volt itthon egy SB160-as Schottky diódám, amit ellenpárhuzamosan beforrasztottam közvetlenül a relé tekercskivezetéseihez. A PIC akkor sem fagy le így, ha a relé tápvezetékét csak kézzel oda-oda érintgetem a táphoz. Úgy látszik az általános célú dióda bizonyult lassúnak tranziensszűréshez.
(#) Bakman válasza strapabirotibi hozzászólására (») Jan 4, 2014 /
 
Ez hasznos infó, köszi!
(#) moltam hozzászólása Jan 4, 2014 /
 
Helosztok.
Adott lenne egy tachoszenzoros kefés mosógépmotor, ennek a fordulatát kellene nyomatéktartó módon szabályozni. C ben, 12F683 al gondoltam megoldani, a forulatmérő és a tm1618 kijelző meghajtó programrészlet készen is van, működik is. Ha az aktuális fordszámot ki akarom íratni probléma van, mert késleltetést visz a szabályzókörbe. Ezért sajnos szerintem csak a cél fordulatot tudom kijeleztetni, legalább is closed loop módban. Gondolom ez ellen nincs mit tenni. A másik problémám a zárthurkú szabályzás kialakítása. Hogy lehetne ezt a legjobban megoldani. Próbáltam úgy hogy ha a jelenlegi fordulat kívül esik a megengedett cél fordulat tartományon (pl2500+-50) akkor kivonom a cél fordulatból a jelenlegit és elosztom százzal. Az eredményt hozzáadom a pwm re kirakandó változóhoz. (persze úgy hogy ne legyen 0 nál kisebb vagy 255 nél nagyobb) Így elérném azt, hogy ahogy közeledik a cél fsz ablak, úgy egyre finomabban változzon a kitöltés. Szerintetek hogy kellene ezt megoldani?
(#) ktamas66 válasza strapabirotibi hozzászólására (») Jan 4, 2014 / 1
 
Örülök, hogy működik, még csak egy hozzáfűznivalóm lenne: elvileg TTL vezérléshez ULN2003 kellene. Nem tudom mekkora áramot igényel a relé, de nem lehet, hogy 5V-tól nem nyit ki rendesen az ULN2004 tranzisztora (esetleg mérj áramot)?
(#) c27 hozzászólása Jan 4, 2014 /
 
Még egy kis segítséget kérnék. Gondoltam letesztelem a 8 bitet szétválasztó részt, de némi problémám akadt így a programmal. Az mplab furcsán viselkedik teszteléskor, már a kurzorbeállítás résznél nem ugrik rá a call waitingre hanem még előtte átmegy a waiting függvényre. Később meg össze-vissza megy a processzor kihagyja a return-t vagy sorokat ugrik át csak úgy. Persze a valóságban sem működik, szóval én hibáztam, csak nem tudom mit.
A másik problémám, hogy az RA3 nem input, hiába annak konfiguráltam, kb a tápfeszültség van rajta, valamit ott is kihagytam volna?
Egyébként tényleg az volt a baja amit írták ktamas66, kösz a segítséget. Azt nem tudom mi történt a piccel látszólag működik kiadja a portjain az utasításokat, de az a példány már nem hajlandó működtetni az lcd-t.
A hozzászólás módosítva: Jan 4, 2014
(#) c27 válasza c27 hozzászólására (») Jan 4, 2014 /
 
Most látom az RA3-nál az Option_reg,7-et H-ba kéne állítani? A lemaradt programot is mellékelem.

proba1.txt
    
(#) moltam válasza moltam hozzászólására (») Jan 4, 2014 /
 
Megtaláltam mi kéne nekem: pid szabályzás. Ha a lényegét meg is értem, hogy fog ez beleférni ebbe a pic be?!
(#) Balagemann2031 válasza c27 hozzászólására (») Jan 4, 2014 /
 
Szia! Lehet, hogy csak én nem látom, de miután CALL-al belépsz a SETTINGS rutinba, nem térsz vissza sehol RETURN-nal, sőt még rá is hívsz várakozásokat.. SZerintem ezért ugrál a progi minden felé. Üdv: Balázs (látok ott egy return-t de azt szerintem cimkének fordítja a fordító, mert nem az utasítások helyén van)
A hozzászólás módosítva: Jan 4, 2014
(#) c27 válasza Balagemann2031 hozzászólására (») Jan 4, 2014 /
 
Igaz, de ha kijavítom, akkor is ugyan az a helyzet. A 2 soros mód beállítástól kezdi el a hülyeséget. Nem ugrik rá a call waitingre és mégis utána átmegy a waiting függvényre. A command fv-be már teljesen össze vissza megy, bár nem tudom mennyire szereti, ha egy függvénybe meghívok egy függvényt amibe meghívok még egyet. Tehet goto utasítást kéne használni?
Lehet túl összetett ez a settings rutin és azért nem szereti?
A hozzászólás módosítva: Jan 4, 2014
(#) Balagemann2031 válasza c27 hozzászólására (») Jan 4, 2014 /
 
A verem 8 szintes ennél a picnél, tehát 8 szint mélyen belemehetsz a rutin hívásokba. Egyébként ahogy látom rutinként kezelsz majdnem minden programrészt, ez nem feltétlenül jó ötlet. Én újra írnám az elejétől, és csak azt írnám rutinnak, amin többször is át kell hogy fusson a progi. A pic konfigurálása pl nem ilyen.
(#) Balagemann2031 válasza Balagemann2031 hozzászólására (») Jan 4, 2014 /
 
Felteszem egy régi lcd animáció teszt progimat, ebben találhatsz hasznosat.

simulator.asm
    
(#) c27 válasza Balagemann2031 hozzászólására (») Jan 4, 2014 /
 
Ok, kösz. Bár ha ilyen mélyen bele lehet menni akkor még működnie kellene. Persze a program egy ilyen tesztváltozat ki tudja még milyen lesz a végső. Először örülnék ha azt csinálná amit szeretnék. Az megoldható, hogy csak a többször lefutó programrészek legyenek rutinok, de magán a programelrendezésen még nem gondolkodtam sokat.
Majd megpróbálok én is a vége felé ilyen szép rendezett formát csinálni, de az az érdekes, hogy ha a command és a settings utolsó 3 sora nincs ott akkor normálisan működik. Tegnap még kiírta az A betűt a 2 sorba, most csak vissza kéne jönnie az első sorba a kurzornak de valahol megfagy a proci.
A hozzászólás módosítva: Jan 4, 2014
(#) ktamas66 válasza c27 hozzászólására (») Jan 5, 2014 /
 
Lehet az egymásba ágyazott WAITING, WAITING2 rutin nem tetszik neki. A WAITING BCF-BSF-jét tedd ki a Settings-be és csak a WAITING2-t hívjad meg.
A COMMAND-ot a főprogramból hívogasd (úgysem a beállításhoz tartozik), a sok ANDWF-et hagyd ki eddig is mindent BSF/BCF-el állítottál, azt meg megteheted a C porton is mielőtt kiadod az Enable-t. Gondolom úgyis akarsz írni egy adatkiíró rutint is (mondjuk a Command is inkább címbeállítás).
(#) strapabirotibi válasza ktamas66 hozzászólására (») Jan 5, 2014 /
 
Csakugyan, ebben igazad van! Úgy látszik ezt anno a tervezésnél benéztem az adatlapon... Köszönöm szépen az észrevételt!
(#) Elektroo hozzászólása Jan 5, 2014 /
 
Nekem egy olyan kérdésem volna hogy szerintetek 16f877a -ra rá akarok kötni egy ENC28J60 modult és mellette bővíteni akarom további 16f877 pic-el I2C kommunikáción keresztül hogy ez lehetséges e. Nem e zavarja a két kommunikáció egymást (Ethernet - I2C).
(#) Hp41C válasza Elektroo hozzászólására (») Jan 5, 2014 /
 
Szia!
A 16F877A -ban az MSSI modul kezeli az I2C és az SPI kommunikációt is. A sebességi igények miatt az ENC28J60 -at célszerű az MSSI -vel kezelni és programból megírni (másik lábakat használva) az I2C felületet. Az Ethernet kezelés adatmennyisége miatt célszerűbb nagyobb kapacitású kontrollerrel kezdeni: 18F4620, esetleg a szintillesztés elhagyását is lehetővé tevő 18F46K20. A 18F46K22 -ben pedig két MSSI modul van (a 16F877 árának 60% -áért).
A hozzászólás módosítva: Jan 5, 2014
(#) c27 válasza ktamas66 hozzászólására (») Jan 5, 2014 /
 
A waiting-wainting2-vel már egyszer működött, de javítottam. A commandnak más szerepe is lesz nem csak címzés, azon nem szeretnék tovább módosítani (egyelőre), de magába működik nem akad.
Megpróbáltam javítani egy kicsit ezt-azt vannak benne felesleges részek, de csak a teszt miatt ír ki egy A betűt, utána csak vissza kéne mennie az első sorba, de már a waitingnél megfagy. Nem ugrik tovább a xorlw D'200'-nál visszaugrik az waiting elejére és végig ezt csinálja. Nem értem az mplabbal lenne valami vagy én szúrtam el valamit? Csatolom a mostani a proba2, csak összehasonlításképpen a működik nevű txt az jó, alig van köztük különbség nem értem mi a baja.
A hozzászólás módosítva: Jan 5, 2014
(#) ktamas66 válasza c27 hozzászólására (») Jan 5, 2014 /
 
Az Enable BSF/BCF-ét kihagytad a beállításoknál.
A WAITING rutinban a XORLW és BTFSC között van valamilyen nem látható karakter ami miatt nem fordítja be a BTFSC parancsot (View/Program memory), töröld space-eket, és írd vissza tab-bal.
(#) ktamas66 válasza c27 hozzászólására (») Jan 5, 2014 /
 
Az a Waiting rutint gondold végig újra, szerintem nem azt csinálja amit szeretnél.
Itt néz körül:
Késleltetés generátor
A hozzászólás módosítva: Jan 5, 2014
(#) c27 válasza ktamas66 hozzászólására (») Jan 5, 2014 /
 
Ismét igazad van! Kösz! Ah ilyen apróságokkal mennyit lehet szívni. Na most szóköz mentesítve megy.
(#) c27 válasza ktamas66 hozzászólására (») Jan 5, 2014 /
 
Ok, majd fejlesztgetem a programom, az se rossz ha visszafelé számol.
(#) Tas84 válasza moltam hozzászólására (») Jan 6, 2014 /
 
Következő: »»   475 / 1210
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