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   1018 / 1210
(#) patrik81 válasza bbalazs_ hozzászólására (») Feb 6, 2018 /
 
Mind a 10 bitet kiírattam lcd kijelzőre.Az alsó 6 bitből szinte semmit nem látok.A felső 4 bitből 3 változik,de az sem 111-ig,hanem csak 100-ig.Ez összesen 5 variáció: 100,011,010,001,000. Nagyon kevés!0-tól 5V-ig helyett 0-tól 1,5V-ig megy fel.Ja és ha nem tekergetem a potit,akkor is ugrál az alsó 3 bit, olyan másodpercenként bevillan.
(#) pipi válasza patrik81 hozzászólására (») Feb 6, 2018 /
 
Hali!
Milyen poti az, ami a tápra/földre kötve, a két véghelyzetében, nem a táp/föld értéket adja?
Mekkora értékű az a poti? Az ad bemenet 10k körüli bemenőellenállását figyelembeveszed?
Nézd 1-2kohm potival. vagy egyszerűen kösd az ad bemenetet tápra/földre direktben.
Az ad lábra is tegyél szűrőkondit. A táp mennyire zajos?
Milyen pic? Az ad konverzió értéke merre(jobbra/balra) van igazítva?
Guglizz ehhez a pichez egy ad mintapéldát, esetleg az adatlapban is lehet...
A hozzászólás módosítva: Feb 6, 2018
(#) bbalazs_ válasza patrik81 hozzászólására (») Feb 7, 2018 /
 
Attoól tartok, iígy nem jutunk sehova.
Valoósziínuűleg a taáppal kellene kezdeni. A potmeéter sem lehet topon.
Csinaálj egy egyszeruű feszosztoót, mondjuk 22k/22k eérteékekboől.
A hozzászólás módosítva: Feb 11, 2018
Moderátor által szerkesztve
(#) ktamas66 válasza patrik81 hozzászólására (») Feb 7, 2018 /
 
Az AdcInit-ben az ADCON0 értékét rosszul állítod be (másik bemenet), de ez nem okozna problémát, mivel az AdcRead úgyis törli az egészet, habár azt nem látjuk milyen paraméterrel hívod meg. Próbaként állítsd be fixen az ADCON0 regisztert (ne paraméterezve), és úgy teszteld. Ha jobbra rendeznéd az eredményt (mint az AdcInit-ben van), a fele tologatást megspórolhatnád.
(#) Saggitarius válasza patrik81 hozzászólására (») Feb 7, 2018 /
 
MEegeshet nekem iígy egyszeruűbb, de regiszter parameéterezeésneél binaárisan szoktam megadni az eérteékeket, koönnyebb visszakeresni mire is van beaálliítva. Naálad az ADCON0 = 0x81 ami 0b10000001 ami azt jelenti: jobbra rendezett, ref a taáp, AN0 kivaálasztva, Go/done 0, es ADC engedeélyezett. Viszont a mainban TRISC6 a bemenet ami AN8!

2., ADCON1 = 0x10 OK (00010000) vagyis TAD fOSC/8, adatlap szerint OK 4MHz oórajel eseten.

Ha az AN8 amit valoóban hasznaálsz (8. lab), akkor az ADCON0 = 0b10100001; (ha ragaszkodsz a hexhez: 0xa1)
A hozzászólás módosítva: Feb 7, 2018
Moderátor által szerkesztve
(#) ativagyok hozzászólása Feb 8, 2018 /
 
Sziasztok!
Újra előhoznám a léptetőmotoros projektem: Végül a PWM modullal történő meghajtás mellett döntöttem és egyelőre visszacsatolás nélkül, az impulzusokat számolva vezérlem. Az impulzusok számolása úgy történik, hogy a PWM kimetetet visszavezettem egy másik lábon az egyik Timer léptető bemenetére. Leggyorsabb sebesség esetén 20us van a STEP jelek között. A kontroller egy 18F45k22, órajele jelenleg 16MHz, belső oszcillátorról.
A jelenlegi felállásban elég pontatlannak tűnik, tippem szerint az impulzus számláló kihagy pár impulzust, ezzel kapcsolatban szeretnék most segítséget kérni. Timer6 a PWM modul időalapja, Timer3 a számláló, DIR az irányt meghatározó láb állapota. Az alábbi részlettel számolom a pozíciót. Valaki tud tanácsot adni, hogy hol bukik el a dolog?

  1. if(TMR6ON_bit){
  2.  
  3.   if(DIR){    // Egyik irányba
  4.       pos+=TMR3H<<8;
  5.       pos+=TMR3L;
  6.       TMR3H=0x00;
  7.       TMR3L=0x00;
  8.   }else{          // Másik irányba
  9.       pos-=TMR3H<<8;
  10.       pos-=TMR3L;
  11.       TMR3H=0x00;
  12.       TMR3L=0x00;
  13.     }
  14.   }
(#) benjami válasza ativagyok hozzászólására (») Feb 8, 2018 /
 
Mivel TMR3H árnyék regiszter, így csak TMR3L regiszter írásakor és olvasásakor történik a valódi regiszterrel történő adatcsere, ezért:
- olvasáskor először TMR3L-t kell kiolvasni, utána lehet csak a TMR3H-t (ezt nem jól csináltad)
- íráskor először TMR3H-t kell írni, utána lehet csak TMR3L-t (ezt jól csináltad)
(#) ktamas66 válasza ativagyok hozzászólására (») Feb 8, 2018 /
 
Amíg a regisztert tologatja, meg számolgat, addig is jöhet be jel, amit később törölsz. Amikor hasonlót programoztam, úgy oldottam meg, hogy nem töröltem, hanem mindig elmentettem az előző értéket, és a különbséggel számoltam.
(#) ativagyok hozzászólása Feb 8, 2018 /
 
Köszönöm a válaszokat.

benjami: Elkerülte ez az információ a figyelmem. Megfordítottam a kiolvasást, köszönöm...Viszont sajnos nálam valami más van elrontva, továbbra is hibázik néha.

ktamas66: Igen, valami ilyesmire gondoltam én is a hibák okaként. Megnézem mi történik a javasolt módszerrel.
(#) sonajkniz válasza ativagyok hozzászólására (») Feb 9, 2018 /
 
Szia!
Számíts ki előre egy fékezési szakaszt. Ha azt elérted, kezd el csökkenteni a frekvenciát. A motor is hálás lesz érte, ha nem hirtelen kell megállnia, és a lecsökkent sebességnél a PIC-nek is több ideje marad számolni.
(#) AZoli hozzászólása Feb 9, 2018 /
 
Sziasztok!

30F6012A SPI kommunikációt nem sikerül életre keltenem. Master módban SCK pin-en nem látok órajelet amikor SPI2BUF -ba adatot írok, és fogalmam sincs mit csinálok rosszul. Már vagy 10 másik PIC -en elsőre megcsináltam, -igaz utoljára évekkel ezelőtt- most meg tegnap óta ezzel küzdök.
SPI -t kikapcsolva, a LATG6 segítségével tudom billegtetni a pin-t. Viszont master módba SPI -t bekapcsolva ezt a lábat fel tudom húzni logikai magas szintre egy 10k -s ellenállással. (Mintha slave módban lenne).
Kipróbáltam hogy SPI2CONbits.CKP = 1; esetén se húzza fel SPI modul az SCK vonalat.
init:
  1. TRISG = 0b0000000010000000; //
  2.         SPI2CON = 0;
  3.         SPI2STAT = 0;
  4.         SPI2CONbits.CKE = 1;
  5.         SPI2CONbits.MSTEN = 1;
  6.         SPI2CONbits.SPRE = 0b110; //Fcy.: 20MHz -> CLK: 20MHz / 32 = 625kHz
  7.         SPI2CONbits.PPRE = 0b01;
  8.        
  9.         SPI2STATbits.SPIEN = 1;


Később:
  1. IFS1bits.SPI2IF = 0;
  2.             MCP_CS = 0;
  3.             SPI2BUF = 0x55; // ..és nincs semmi se SCK2-n se SDO2-n...
(#) ativagyok válasza sonajkniz hozzászólására (») Feb 9, 2018 /
 
Szia!
Van most fékezési algoritmus a kódban, valóban sokkal szebben áll meg. Sőt, ha nincs benne ez a fékezés, akkor nagy sebesség esetén túl is tud ugrani a motor egy lépésnyit.
(#) usane hozzászólása Feb 9, 2018 /
 
Ezzel kapcsolatban.
Eldőlt, hogy lesz megoldva. A lapok egyéni vezérlőt kapnak DS18B20 szenzorral.
Viszont lesz egy master vezérlő ami a kijelzőt és a aombokat fogja tartalmazni és valószínűleg csak az elérni kívánt hőmérsékletet adja át az egyes alvezérlőknek amikor az változtatva van.
A Master és a slave-k közötti kommunikációt még nem döntöttem el, ebben kellene egy kis segítség. javaslatok, ellenvélemények, miért ne egyik és nem másik a célszerűbb. Az erek száma minél kevesebb kell legyen. Mivel a távolság a master és a legtávolabbi slave között lehet akár 5-6m is, az I2C nem valószínű, hogy működni fog. A Maxim szenzor 1-wire gondoltam ide is azt teszek. Esetleg ha 2 érrel számolok akkor lehetne CAN, vagy RS232, és akkor talán ezeket hardverra is bízhatom. Egyéb lehetőségek...
A lényeg, hogy nem akarok semmi extra vezetéket mint sodort érpár és hasonlók. Sima 5 méter 1 éren vagy 2 éren működnie kell. A sebesség ugyebár nem kritikus mivel csak beállitáskor lesz adat. Mondjuk itt későbbiekben gondoltam ellenőrzésre is, akkor nagyobb sebesség kell.
Hogy miért bonyolítom így? Az alegységeknek egyenként is vagy akárhányat összekapcsolva is működnie kell a Masterral.
Várom a véleményeket.
(#) pipi válasza usane hozzászólására (») Feb 9, 2018 /
 
5-6m nem távolság...
Nyilván olyan kommunikációt kell választani, ahol az egységekek egyesével is tudják hajtani a vonalat. Az rs232 nem ilyen, vagy trükközöl a meghajtóval... Inkább rs485 ott a vonalmeghajtók leválaszthatók a drótról. Az I2C-t egy készüléken belüüli kommunikációra találták ki, nem tudom 5-6m-en működne-e, valószinűleg komolyabb meghajtás kellene neki. Ne felejtsd el az eszközeid bemenetei/kimenetei ekkora darabszám esetén jelentős terhelést képviselhetnek a meghajtáson, számolnod kell vele. Hardveresen/szoftveresen talán a legegyszerűbb, legolcsóbb az rs485-öt megvalósitanod. A can is jó lehet, nem ismerem, nem használtam. Az 1wire-t ennyi mikrovezérlő között én nem használnám, macerás a pontos időzítések betartása mindkét oldalon.
(#) pajti2 válasza usane hozzászólására (») Feb 9, 2018 /
 
Ha légtávolságban viszed a jelet olyan eszközök között, amik nincsenek közös földelési rendszerben, nyáron a száraz szeles időben a statikus feszültség simán ki fogja nyírni a meghajtóidat 5-6 méternél nagyobb távolságon. Az 5-6 méter légtávolság már a határ eset. Semmikor máskor semmi egyéb baj nem lesz vele, éppen csak nyáron, amikor kajak forróságban még a szél is megérkezik, na az halála az rs232-vel "okosan" számítógéphez huzalozott pénztárgépeknek is minden egyes évben. Nem viccnek van az rs485 kitalálva.

Persze tudom, mi jár a fejedben. Fogni egy invertált jelet ttl uart kimenetről, meghajtani vele nyitott kollektorokat felhúzó ellenállással, és akkor egyetlen éren viheted a soros jelet half duplexxel mondjuk 300 bauddal, mert az is bőven elég tud lenni - véges sebességű fűtőtestek vezérlésekor nem kerget a tatár. Ha rendesen egybe kötött cumóról van szó, ami erősen van földelve, és a jel csak a helyi cucchalmazon belül kell kolbászoljon, okés is lesz minden. De ha szétpakolnád azokat a radiátorokat, és vinnéd a jelet szanaszét, utólag majd ne sirdogálj, hogy miért nem szólt neked senki egy árva szót sem arról, hogy földhurok probléma is létezik a világon. Az ipari elektronikáknál például kajak erősen figyelnek a földelési szabványokra. Épp csak néha egy-egy emberi nemtörődömségi eset közbeszól az elmélethez képest alkalmazott gyakorlatban, és menetrend szerint érkezik meg a baj is utána. Ott még az rs485-öt is kiszorítja az ethernet. És nem, nem a sebesség a döntő, hanem a mindkét oldalon trafós leválasztás a kábelezéshez. A statikus feltöltődés annyira gonosz ellenfél tud lenni, hogy még az a dupla trafós leválasztás is kell a gyakorlatban.

A mindenféle logikai szabványokon egyébként semmi sem múlik. Saját magad legyártotta 1 bites half duplex kommunikáció is elég lesz, ha biztosan tudod, mit csinálsz, mert akkor elég jó lehet bármi. Épp csak figyelj oda
(#) usane válasza pajti2 hozzászólására (») Feb 9, 2018 /
 
Pipi: Igen én is hasonló szempontok szerint gondolkodtam, viszont mivel én sem csináltam még minden fajta kapcsolatot, és ha igen akkor sem ilyen körülmények között, ezért kellenek vélemények.

Pajti2: Valóban ilyesmi járt a fejemben Az egyszerűség domináns szempont
A környezetről annyit, hogy a műhelyben lesz, fémlapok tehát a földelés eszenciális és még a földhukot is figyelembe veszem. .Valamint a lapok alatt fog a vezeték haladni. Összerakva kb egy 1,5x3m terület, plusz még számoltam rá 2m-t hogy a Mastert el tudjam húzni a munkafelülettől. 15-16 alegység (fűtött lap) lesz.
(#) sonajkniz válasza usane hozzászólására (») Feb 9, 2018 /
 
Most elbizonytalanítottatok.
Jelenleg egy olyan projekten dolgozom, ahol csupán egyirányú a kommunikáció, viszont egy magról indul csillagpontosan 1-Wire kommunikációval, 15-30 méter vezetékhosszokon.
1 master 1 slave 25 méteren műhelykörülmények között jól vizsgázott, de mire lehet számítani talajban vitt vezetékekkel?
(#) pajti2 válasza sonajkniz hozzászólására (») Feb 9, 2018 /
 
Rs485-ön a vezetékpár között ott egy 130 ohm (vagy kevesebb), és a két szálon 1-1 720 ohm (vagy kevesebb) ellenállás a táp és a föld felé. Megtalálod wiki-n is. Bővebben: Link Ha valami extra töltést kap, és mondjuk fújni kezdi az elektronokat az elektron-szél, annak a töltésnek valamerre szét kell oszlania, mert az elektromotoros erő, ami munkát tud végezni, feszültséget tud generálni. Rs485 esetében a táp szűrő kondi fogja fel végül, és odáig relatíve kicsike ellenállásokon keresztül tud eljutni (kicsi feszültséget dob csak), miközben befelé szivárog a töltés valahonnét. Ha folyamatosan van levezetve, elég csak egy kicsit levezetni. Ha elszigetelve van valahol, és fel tud halmozódni, vagy túl nagy a levezető ellenállás, vagy eleve azért jön be a töltés, mert szerelgetik, és olyankor pont szét van kötögetve, na olyankor tud bajt csinálni a statikus feszültség. Bármit is kötögettél, terveztél, nézd végig a kapcsolásodat, és egészítsd ki úgy, hogy a töltés biztosan le tudjon szivárogni még karbantartások esetén is. Ha máshogy nem, egy nagyon nagy halom diódát pakolássz be, amik a táphoz képest levezetik a túl negatív / pozitív töltéseket a táp szűrő kondira. Kevésbé lesz elegáns, de a legrosszabbat segíteni tud az is kivédeni.

Sztori. Bárhol is laksz, van a közeledben valami régebbi Auchan áruház? Az én közelemben van egy, és meg tudtam figyelni a régi bevásárló kocsikat, meg az újakat. A régieken van egy darabka lánc elöl a kocsi alján középen, ami folyamatosan a földet söpri, és csilingel rajta, amikor keresztül tolom a járólapok közötti fugán. Néha szórakoztat, máskor zavar. Aztán fogtam inkább egy újabb kocsit (tudod, kevésbé rozsdás is, meg minden), és azokon nincs ott a lánc. Csörögni nem csörög, helyette _ráz_. Néztem is, mi a roseb, hogy miután elgyalogoltam vele pár métert, pakolok a kocsiba, aztán újra elindulásnál hozzáér a kezem a fém részhez is, időnként megcsíp. Csak az a kicsike levezetés, ami lánc söpri alul a talajt a régi kocsikon, és felületre le tud szórni mindig egy picike töltést, elég is ahhoz, hogy el tudjon szivárogni a statikus feszültség. De ha az a kicsike sincs ott, akkor összegyűlik, és egyszer csak megráz. Részemről visszatértem a régi rozsdásabb bevásárló kocsikra, és azóta imádom azt a kicsike csörömpölést is Az újabb kocsikat meg egye meg a fene, hogy miféle dilettánsok tervezték őket
(#) progee hozzászólása Feb 9, 2018 /
 
Sziasztok!

Egy 433Mhz-es projectel bajlódok, talán tudtok segíteni!
A forrás innét letölthető mikropascalban: Manchester Code Library Demo

2db 16F887 PIC-el szeretnék adatot átadni, ami vezetékkel összekötve hibátlanul működik, viszont a rádiós adót és vevőt csatlakoztatva már ákombákomokat kapok az LCD-n.
Ugyan ez a hibajelenség lép fel, ha vezetékkel összekötöm a két PIC-et, és külön-külön áramforrásról indítom őket.
(#) icserny válasza progee hozzászólására (») Feb 9, 2018 /
 
Tápfeszültség és a föld sínek közé dugdoss kondenzátorokat! (pl 220 uF)
A képen is látható breadboard tápegység nagyon gagyi ilyen szempontból, én a bemeneti pufferkondenzátorát is nagyobbra cseréltem.
(#) progee válasza icserny hozzászólására (») Feb 10, 2018 /
 
Kipróbáltam! Sajnos semmit sem használt.
Szinkronizálási problémára gyanakszok.
(#) Bakman válasza progee hozzászólására (») Feb 10, 2018 /
 
Oszcilloszkóppal tudod ellenőrizni a vett jelalakot?
(#) progee válasza Bakman hozzászólására (») Feb 10, 2018 /
 
Sajnos nem.
(#) Bakman válasza progee hozzászólására (») Feb 10, 2018 /
 
Akkor lehet tippelni kb. a végtelenségig.
(#) bbalazs_ válasza progee hozzászólására (») Feb 10, 2018 /
 
A legegyszerubbel kell kezdeni.
Ado oldalon mondjuk 0,1,2,3,4...255-ig adni.
A vevo oldalon mi jon meg, hany byte erkezik tenylegesen.
Jo lenne tudni, hogy a 433-as cuccod bit vagy byte szintu.
Mennyit vesz le a PIC vallarol es mit kell a PIC-nek csinalnia.
(#) Bakman válasza progee hozzászólására (») Feb 10, 2018 /
 
A mellékletben látható RF modulod van?

RF-modul.jpg
    
(#) progee válasza Bakman hozzászólására (») Feb 10, 2018 /
 
Igen pontosan ilyen...
(#) Bakman válasza progee hozzászólására (») Feb 10, 2018 /
 
Ehhez komoly szoftveres zajszűrés kell. Ha nem kap jelet a vevőegység, a kimenetén folyamatosan ugrál a feszültség a két végpont között (0 és 5 V), véltlenszeű frekvenciákat generálva. Én eddig jutottam vele aztán félreraktam.
(#) progee válasza Bakman hozzászólására (») Feb 10, 2018 /
 
Milyen típust tudnál helyette ajánlani ami működik is?
(#) Bakman válasza progee hozzászólására (») Feb 10, 2018 /
 
Én olyat használok, amelyik eleve UART kapcsolattal rendelkezik, nem kell időt tölteni azzal, hogy egyáltalán a kommunikáció működjön. Persze kinek a pap, kinek a paplan. APC220-as modulokat merem ajánlani, nálam bizonyítottak.

Adón bemegy 10 bájt, vevőn kijön. Sőt, a modul oda-vissza képes kommunikálni a másikkal. A rendszerben lehet akárhány modul, ha a transzparens kommunikáció van kiválasztva, mindegyik modul "látja" a másik forgalmát. Így egyszerre több modulhoz lehet eljuttatni a közös adatokat.
Következő: »»   1018 / 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