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   885 / 1210
(#) don_peter hozzászólása Dec 11, 2016 /
 
Uraim, valaki meg tudna erősíteni?
A 12F629 és a 12F675 teljesen kompatibilisek, azon kívül, hogy a 675-ösben van 4db 10bit-es ADC?
Előre is köszi..
(#) Bakman válasza don_peter hozzászólására (») Dec 11, 2016 /
 
Egy adatlapjuk van. A 675-ösben (és sok kontrollerben is) csak egy ADC van.
(#) don_peter válasza Bakman hozzászólására (») Dec 11, 2016 /
 
Igen, azt látom, hogy egy adatlap van és csak az ADC ami különbözik.
Ha az nincs használatban ADC 629-ben, akkor simán futnia kell a programnak 675 is igaz?
Legalább is én erre következtetek...
(#) gyoran válasza don_peter hozzászólására (») Dec 11, 2016 /
 
Yes. Én is így látom.
A hozzászólás módosítva: Dec 11, 2016
(#) icserny válasza don_peter hozzászólására (») Dec 12, 2016 / 1
 
Idézet:
„Ha az nincs használatban ADC 629-ben, akkor simán futnia kell a programnak 675 is igaz?”
Egy dologra azért ügyelni kell, amibe kezdőként én is belefutottam annak idején: PIC12F675 és PIC12F683 esetében az ANSEL regisztert is törölni kell ahhoz, hogy zavartalanul fussanak a PIC12F629-re írt programok. PIC12F629-ben értelemszerűen nincs ilyen regiszter, így nem gondol rá az ember, azután meglepődik ...

  1. BANKSEL GPIO ;
  2. CLRF GPIO ;Init GPIO
  3. MOVLW 07h ;Set GP<2:0> to
  4. MOVWF CMCON0 ;digital I/O
  5. BANKSEL ANSEL ;
  6. CLRF ANSEL ;digital I/O
  7. MOVLW 0Ch ;Set GP<3:2> as inputs
  8. MOVWF TRISIO ;and set GP<5:4,1:0> as outputs
(#) don_peter válasza icserny hozzászólására (») Dec 12, 2016 /
 
Uhhh, ez igaz.. Erre nem is gondoltam... köszi, hogy szóltál..
(#) gazspe válasza Hp41C hozzászólására (») Dec 12, 2016 /
 
Idézet:
„Egy ellnállás egy potenciométer és egy kondenzátor segítségével megoldható a finomabb "mérés" is.A potenciometer egyik oldala az ellenálláson keresztül a Vdd -re van kötve, a csúszkája egy kétirányú portra és a kondenzátorra. A kondenzátor másik kivezetése a Vss -re megy.
Kimenetnek és alacsony szinre állítjuk a port lábat egy időre - kisütjük a kondenzátort.
Bemenetnek állítjuk a port lábak és időmérést indítunk. Az időmérést akkor éllítjuk le, ha a port lábról magas szint olvasható be. A mért időből "számítható" a potenciométer ellenállása.
A megoldás kombinálható a komparátorral is.”

Szóval ez c-ben úgy néz ki, hogy meghívok egy függvényt, ami egy időváltozó szerint állítja tris regisztert, valamint földre húzza, majd t1 után átdobja a kimenetet inputra, elindít egy számlálót, majd mikor a bemenet átbillen, akkor az időből visszaszámol, számláló változóját nullázza, trisregisztert visszarakja inputra, majd kezdődik előről?
Milyen reális felbontás érhető el ezzel a módszerrel, ha finomítom a függvényt mennyire "pontos" eredményt lehet kapni?
U(t)=Q×R/t képlettel közelíthető? (t=R×C-ből visszaszámolva (remélem jól), Q×R=Const.)
A hozzászólás módosítva: Dec 12, 2016
(#) gazspe válasza gazspe hozzászólására (») Dec 12, 2016 /
 
Nem enged szerkeszteni, input-outputokat kicsit bekavartam. Szóval kezdi egy kisütéssel, földre húzott outputtal, majd komparátor input, majd vissza
(#) Hp41C válasza gazspe hozzászólására (») Dec 12, 2016 /
 
Több app note is van az ADC nélküli kontrollerekhez:
AN611,
AN513
És az, amit p_istván linkelt be.
(#) kriszrap hozzászólása Dec 14, 2016 /
 
Sziasztok )
mikroC be hogy kell használni OneWire Library-et???
És miben kapom meg az eredményt (kell vele m ég büvészkedni vagy egyböl a celzius kapom meg)???
link
(#) kriszrap hozzászólása Dec 14, 2016 /
 
Uhh kimaradt (már nem tudtam szerkeszteni)
PIC16f628 képes OneWire ???
(#) Pali79 válasza kriszrap hozzászólására (») Dec 14, 2016 /
 
Bármelyik képes, mert az 1wire szoftveres megoldás, nem hardveres.
(#) Elektro.on válasza kriszrap hozzászólására (») Dec 14, 2016 /
 
MikroC -ben nyomsz egy F1 et. Ott kikeresed a leírást. Még kapcsolási rajz is van hozzá meg példa is. Szépen le van írva. Én MikroPascalt használom de a lényeg ugyan az. Megnézed a DS18(B)20 adatlapját és abban megtalálod milyen formátumba küldi az adatot. Azt neked kell feldolgoznod.
A MikroC OneWire Lib -je csak a kommunikációt biztosítja. Valóban a leggyakoribb alkalmazása a hőmérséklet mérés , de sok más is használja ezt a kommunikációt. Ezért nem °C a függvények eredménye.
(#) kriszrap válasza Elektro.on hozzászólására (») Dec 14, 2016 /
 
Valamit próbálok ügyködni
Amit kültem link abba a
RESETEt mire használom és mikor???
Read azzal természetesen az adatokat olvasom ki
Write az mire jó???
(#) Elektro.on válasza kriszrap hozzászólására (») Dec 14, 2016 /
 
Ez mind benne van a DS18B20 adatlapjában. Azt olvasd végig!
(#) kriszrap válasza Elektro.on hozzászólására (») Dec 14, 2016 /
 
5 oldal megtaláltam csak hogy kell ezt olvasni????
mint 2 --> 10be váltanék át???
(#) Hp41C válasza kriszrap hozzászólására (») Dec 14, 2016 /
 
Angolul...
A DS18B20 adatlap 10. oldaláról:
Idézet:
„All transactions on the 1-Wire bus begin with an initialization sequence. The initialization sequence consists of a reset pulse transmitted by the bus master followed by presence pulse(s) transmitted by the slave(s).”

Ami ennyit tesz magyarul:
Minden az 1-Wire buszon történő tranzakció egy inicializáló szekvenciával kezdődik. Ez az inicializáló szekvencia egy RESET pulzusból és az azt követő presence pulzusból (amit a buszon levő eszközök adnak ki) áll.
(#) kriszrap válasza Hp41C hozzászólására (») Dec 14, 2016 /
 
Ha jól gondolom RESETelem majd kiolvasom....
(#) Hp41C válasza kriszrap hozzászólására (») Dec 14, 2016 /
 
A 1-Wire buszon egy master (főnök) és többg slave (eszköz) lehet.
A tranzakció a követketzőképen zajlik:
1. A master kiad egy RESET pulzust. A buszon levő slave eszközök (mind) kiadják a PRESENCE pulzust.
2. A master megvizsgálja a PRESENCE pulzust, amiből rájön, hogy van-e egyáltalán eszköz a buszon. Ha nincs eszköz, vége a tranzakciónak.
3. A master kiad egy SEARCH_ROM parancsot, amivel felderíti, hogy hány egység van a buszon és mi az egyedi címük.
4. A mastar a címek alapján egyedileg megcímezve tud parancsot adni az egyes eszközöknek és adatot tud fogadni tőlük.

Részeletesebben Ibutton standard
Ne ijedj meg, lapozz a 44. oldalra...
(#) menyus hozzászólása Dec 14, 2016 /
 
Sziasztok!

Kis segítséget szeretnék kérni... Az adatlapon nem igazán egyértelmű számomra hogy a kontroller (PIC 12F675) mennyi a minimum tápfeszültség igénye. Több grafikonon 2V tól ábrázol, van ahol 3V... Hány V tól ketyegnek ezek üzembiztosan? Egy Makita csavarbehajtóhoz szeretnék csinálni egy kontrolleres szabályzást ami adott nyomaték (soros ellenálláson mért feszültség / komparátor) elérése esetén leállítja a motort. A gondom az hogy a motor indulásakor hatalmasat ránt a tápfeszen, 3V alá is leesik pár 0,01 sec re. Aztán ahogy elindul a motor szépen visszakúszik persze a kapocsfeszültség közelébe, de az indulási árama hatalmas, főleg ha eleve terhelésen indítják (csavar meghúzása) A tápfesz egy Li-ON akku 2300mAh kapacitással. Esetleg bele tudok suvasztani párhuzamosan még egy iulyen akkut, az már 4600mAh... Ha ez a megoldás. De mindenképpen stabilizálni kéne a PIC tápfeszét (és / vagy a referenciát is..) de mennyire? A chipen olvasható felirat szerint ez 12675 I / SN0929 Tehát kérdésem hogy ennek a PIC nek mennyi a minimum tápeszültség igénye? És ha leesik a tápfesz a működési feszültség alá olyankor mi történik? Resetel? Köszi.
A hozzászólás módosítva: Dec 14, 2016
(#) kriszrap válasza Hp41C hozzászólására (») Dec 14, 2016 /
 
Köszii. Adatokat ahogy néztem 12db bitbe kapom de hogy értelmezze ??(visszab írtam)
(#) Bakman válasza menyus hozzászólására (») Dec 14, 2016 / 1
 
Az adatlapjában benne van, hogy milyen feltételek mellett mennyi a minimális tápfesz. igénye. ADC engedélyezve, letiltva, illetve a hőmérséklethatárok, ahol szeretnéd használni. Ha nagyobb frekvencián járatod de a grafikon szerinti kissebb feszültséggel, bizonytalanná válhat a működése. A gyártó abban a területben nem garantálja a működést. Lásd még: Brown-out Detect az adatlapban.
(#) mrobi válasza menyus hozzászólására (») Dec 14, 2016 / 1
 
Szia. Sorosan egy dióda, és párhuzamosan egy nagyobb kapacitású kondi.
(#) Hp41C válasza kriszrap hozzászólására (») Dec 14, 2016 /
 
Adatlap 3 - 4. lapja szerint:
Idézet:
„The temperature data is stored as a 16-bit sign-extended two’s complement number in the temperature register (see Figure 2).”

Kettes komplemens kód, a legkisebb helyiérték 1/16 fokot jelent.
float Homerseklet = (float)(kod)/16.0;
(#) menyus válasza mrobi hozzászólására (») Dec 14, 2016 /
 
Köszönöm!
(#) menyus válasza Bakman hozzászólására (») Dec 14, 2016 /
 
Akkor elvileg tudja a 2 V ot is, tehát 2,5V ra stabilizálom. Az ADC t nem használom és szobahőmérsékleten lesz használva. Hálás köszönetem Uraim!
(#) kriszrap válasza Hp41C hozzászólására (») Dec 15, 2016 /
 
Hajaj ez nehez lesz de igyekszom
Kettes komplemens masodik bit jobbrol???
"Float" helyere mi megy ??? "Kod" gondolom egy read parancs
(#) benjami válasza kriszrap hozzászólására (») Dec 15, 2016 /
 
Nem ártana pótolnod a hiányosságaid, mert ilyen alapvető fogalmak ismerete nélkül nem fogsz boldogulni.
Fagypont felett (ha celsius fokban adja a mért hőmérsékletet):
0x0000 -> 0fok, 0x0001 -> +1/16fok, 0x0002 -> +2/16fok ... 0x7FFF -> +32767/16fok.
Fagypont alatt:
0xFFFF -> -1/16fok, 0xFFFE -> -2/16fok ... 0x8000 -> -32768/16 = -2048fok.
Azaz a legfelső helyiértékű bit az előjel bit, a többi bit az érték, ahol a negatív értékek abszolút értékre való konvertálásához kell kettes komplemens értéket képezni.
A float pedig a lebegőpontos számot jelenti.
(#) Hp41C válasza kriszrap hozzászólására (») Dec 15, 2016 /
 
C nyelven így kellene konvertálni.
  1. float Homerseklet = (float)(kod)/16.0;

float - lebegőpontos típus, hogy a tört fokok is eltárolódjanak.
kod a read paranccsal kiolvasott hőmérséklet kód.
Ha assembly -ben programozol:
a (kod) értékét eltárolod két byte -ban, eltárolod az előjelet kiíráshoz.
Ha negatív, minden bitet negálsz és hozzáadsz 1 -et (16 bitesen).
Az alsó 4 bitet átteszed egy harmadikba, a (kod) értékét 4-szer jobbra lépteted (balról mindig 0 értéket lépteted be). Az eredmény az egész fok az első két byte -ban, a harmadik alsó négy bitjén a tört fok. Előjelet pedig eltároltad már.
A hozzászólás módosítva: Dec 15, 2016
(#) pajti2 válasza menyus hozzászólására (») Dec 15, 2016 /
 
Magához a feladathoz biztosan kell neked mikrovezérlő? Egy csavarbehajtónak teherbírónak kellene lennie, és működnie olyankor is, amikor izmos a probléma. Ha adott nyomaték szabályozása a feladat, az lefordítva áramkorlátozás egy maximum értékre, ahol is visszaszabályozod a feszültséget. Arra vannak egyszerű analóg példák is, pld tranzisztoros áramkorlát.
Következő: »»   885 / 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