Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   368 / 1319
(#) szilva hozzászólása Dec 27, 2008 /
 
A múltkor felvetődött a DS182x-ekkel történő 1-wire kommunikáció CCS C-ben. Nos, én ma délután nekiültem, mert nekem is szükségem volt ilyesmire, a meglévő kvarcórámba kellett hőmérsékletkijelzést építeni, és ehhez egy DS1821-et vettem elő. A mellékelt kódokból látható, hogy tisztán C-ből is meg lehet korrekten oldani a dolgot.

A Dallas tápellátását az egyik portláb adja, így energiatakarékoskodási szempontból akár teljesen ki is kapcsolható, amikor nem akarunk hőmérsékletet mérni. Nálam jelenleg 10 másodpercenként történik egy mérés, a közbülső időben csak a standby áramot (2-3uA) fogyasztja a Dallas, ami nem olyan vészes, ezért ezt nem használtam egyelőre ki. Az érzékelő egy kb 10m-es árnyékolt mikrofonkábel (viszonylag vastag) végén lóg, és a kommunikáció teljesen stabilnak tűnik.
(#) gulasoft válasza szilva hozzászólására (») Dec 28, 2008 /
 
Hát ez iszonyat bonyeszos lett. Nekem ezzel a 16F726-al nem akar menni, a 18F458-al simán ment, most fogom átrakni egy 18F452-re megcsináltam hozzá a felületszerelt panelt, csak kicsit nagy lett, mert a 44 lábat terítettem ki két oldalra ami egy 6 centi hosszú panelt eredményezett, és mivel a feliratokat is rátettem, ezért 6*6-os lett a panel, ami a próbapanelre háááát elég szűkösen fér el. Azután sok időm nem volt, mert ugye karácsony is volt, meg ps3-ra vettünk egy little big planet nevű gamet, ha valaki veszi a fáradságot hogy utánaolvas rájön hogy mivel megy az idő mostanság.
De most már összerakom ezt a 18-ast és megnézem ezzel megy e, azután egy 16f877-et is kipróbálok, hogy kiderüljön tényleg csak azzal az egy nyomorult ic-vel nem megy e, azután majd megírom mi lett a vége.
(#) Mate12345 hozzászólása Dec 28, 2008 /
 
Sziasztok!
Van egy PICkit 2-m, amihez járt egy PIC16F690 is.
Gondoltam, kicsit játszok vele, és megirtam a következő programot:

  1. #include <p16F690.inc>
  2.     __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
  3.  
  4. cblock 0x20
  5.  
  6. endc
  7.      
  8.      org 0
  9. Start:
  10.      bsf       STATUS,RP0          ; select Register Page 1
  11.      clrf      TRISC               ; A C portot kimenetre
  12.      movlw     0xFF
  13.      movwf     TRISA               ; Make PortA all input
  14.      bcf       STATUS,RP0          ; back to Register Page 0
  15.  
  16.      bcf       STATUS,RP0     ; address Register Page 2
  17.      bsf       STATUS,RP1    
  18.      movlw     0x0            ; I want all Port A pins digital
  19.      movwf     ANSEL
  20.      bcf       STATUS,RP0     ; address Register Page 0
  21.      bcf       STATUS,RP1
  22. Loop2:
  23.      movf      PORTA,w
  24.      movwf     PORTC
  25.      goto      Loop2
  26. end


Ez elvileg annyit csinálna, hogy a PORTA bemenetére kapott adatokat átmásolja a PORTC-re.

Működik is szépen, egy kivételtől eltekintve: Ha az RA2 lábra rakok egy minimális töltést, (mondjuk a két karommal összekötöm a táppal, tehát a logikai 1-et bőven nem éri el) akkor is másodpercekig világit azután is, hogy a kezemet elvettem. Ha dróttal kötöm össze, (tehát adok neki kb. 5 voltot), akkor már 7 mp-ig világit magátől.

Megnéztem, hogy milyen szerepe van ennek a lábnak és rájöttem, hogy a komparátornak valamije rá van kötve.

Hogy mi az a komparátor, azt csak sejtem. Ha az be van kapcsolva, talán okozhat ilyesmit. Hogyan lehet lekapcsolni? De az is lehet, hogy hülyeséget irok és valami teljesen más okozza ezt a jelenséget. Ti találkoztatok már hasonlóval? Mi volt a megoldás?

Szerk: A kódommal valami csúnyaság történt, pedig én kódtegek közé raktam... Mindjárt csatolom fileként.


Szerk2: Csatoltam.

kod.asm
    
(#) pici válasza Mate12345 hozzászólására (») Dec 28, 2008 /
 
Szia
Ha egy lábat nem kötsz se a tápra (H) se a földre (L), és az inputként használod, akkor az értéke bármi lehet.
És mivel az éterben vannak elektromos zavarójelek és maga az elektronika is okoz zavarjeleket, így az értéke nem meghatározható.
Ha a kontroller lába felhúzó ellenállású, akkor lehet a lábon alapból H, de a kézzel való érintés során nem csak a zavarjelek mennek át mint antenna, hanem nagyfeszültségű szikra is, föleg, ha puloverben tapizod.
Szóval tegyél oda egy felhúzó, vagy lehúzó ellenállást 10Kohm, akkor stabilabb lesz a jel (és ezt büntetlenül használhatod, a digit jelnek a 10Kohm nem akadály)
(#) Mate12345 válasza pici hozzászólására (») Dec 28, 2008 /
 
Király. Megirtam a választ, erre át lett helyezve az egész ide és ezért nem küldte el.
Egyébként ha van megfelelő témabesorolás és konkrét kérdés, akkor miért ne nyithatnék neki külön topikot, amit tudok pontozni is? Na mindegy.

De látom, a kódom is ki lett javitva. Azért köszönet.

Nem hiszem, hogy a zavarójelek okozzák, mert ahhoz túl szabályos a viselkedés. És nem az érintésemre reagált, hanem arra, hogy a testemmel összekötöttem a táppal.
Ha dróttal kötöm össze (nagyobb feszültséget kap) akkor tovább marad úgy.

És az is a zavarójelek ellen szól, hogy a többi láb nem viselkedik igy.

És lenne még egy kérdésem. (Nem nyitok neki külön topikot, mert sejtem a sorsát. :sonic

Ha egy láb kimenetre van állitva és logikai 0-át küldök ki rajta, de rákötöm a tápot, (tehát a logikai 1-et) akkor az károsithatja a PIC-et? Elsőre hülyeségnek hangzik, mert egy kimenetre állitott lábra nem szokás feszültséget kötni. Igazság szerint valóban hülyeség, de esetemben jó lenne, ha lehetne...
(A kimeneten nem csak 0 hanem egy is lehet, amikor rákerül a tápfeszültség. Remélem, egyik sem okoz a PIC-nek gondot.)
(#) szilva válasza gulasoft hozzászólására (») Dec 28, 2008 /
 
Azért olyan nagyon bonyolult nem lett, mivel a gyári rutinokat vettem elő és pofoztam kicsit át, valamint egyetlen rutin (get_temp()) csinálja a hőmérsékletlekérdezést. Az összes többi maga az óra.
(#) gulasoft válasza szilva hozzászólására (») Dec 28, 2008 /
 
Aha látom. Így persze sokkal barátságosabb. Köszi ki fogom próbálni.
(#) kissi válasza Mate12345 hozzászólására (») Dec 28, 2008 /
 
"Ha egy láb kimenetre van állitva és logikai 0-át küldök ki rajta, de rákötöm a tápot, (tehát a logikai 1-et) akkor az károsithatja a PIC-et?" Ilyet ne tégy, mert könnyen elénekelheti a "hattyúdalát"
A kimenetnek az a szerepe, hogy adott logikai szinttel meghajtson egy áramköri részt. Ha Te oda tápot teszel, akkor ő nem tudja rákényszeríteni a megfelelő szintet ( viszont túl nagy áram alakulhat ki, amit nem tud elviselni!!)!
De ha szeretnéd, hogy néha tápfesz is kerülhessen az adott lábra, akkor olyankor mindig kapcsold bemenetnek a lábat ( nem tudom mit akarsz, de valószínűleg megoldható a problémád felhúzóellenállással!).

Steve
(#) feki00 hozzászólása Dec 28, 2008 /
 
Heloo

Ez jó hosszú lesz remélem lesz aki végig olvassa

Egy 4csatornás áram és feszültségmérőt építek, egyenlőre egy 16f877 az agy, de ez redukálódni fog egy kisebb picre mivel nagyon sok kihasználatlan erőforrás van benne.
Problémákba ütköztem egy két helyen ezért kérem a véleményeteket.

Az első (nem is annyira probléma) dilemmám hogy jól oldottam-e meg a feszültség mérést?
Feszültség osztóval 25voltot 5voltra csökkentek. A feszültséget 1 tizedesig szeretném mutatni, ezért a 10bites(1023) eredményt tulajdonképpen elosztom 4el és akkor kapok 255öt. Ezt konvertálom bcdbe és az lcdre kiírom a százasokat és a tizeseket, kiírok egy pontot és végül kiírom az egyeseket, ami ez esetben a tizedes.
Ez a módszer, kisebb javításra váró hibákkal, csak arra lennék kíváncsi hogy ez helyes módja a megoldásának?

Hogy tudom megakadályozni hogy 5voltnál több kerüljön a bemenetekre?
Egy-egy zener dióda elég a feladatra? Eddig csak 5.1voltosat láttam, az az 1 tized volt elhanyagolható?

A következő gondom hogy az analóg lábon összegyűlő zavarok miatt változik a mért adat ami az lcdn úgy jelentkezik hogy 2 érték között ugrál a kijelzett érték. Persze ez olyan gyorsan hogy csak annyit lát az ember mintha 2 számot egymásra írtak volna.
Próbáltam úgy megoldani hogy timer megszakításokban írok csak az lcdre vagy hogy akkor mintavételezek az analóg csatornán de semmi változás nem lett. Erre mi a megoldás?

A 16f877es picen épp van 8 analóg csatorna (4 feszültségre és 4 áramra) de ha kisebb picet használnék kevesebb analóg bemenettel akkor egy analóg multiplexerrel megoldható a bemenetek sokszorozása?

Áram mérésére eddig semmi ötletem nincs, egy két tippet kaphatok hogy hol kezdjem a keresést?

Előre is köszönöm a válaszokat...
(#) brugo hozzászólása Dec 28, 2008 /
 
AMD-es platformon mukodik a PICSTART + ?
(#) googa válasza brugo hozzászólására (») Dec 28, 2008 /
 
Hogy a kutyamindenségibe ne működne... Szerintem igen.
(#) MPi-c válasza brugo hozzászólására (») Dec 28, 2008 /
 
A PICSTART + az MPLAB-ből vezérelhető. Az MPLAB windows-os alkalmazás. Ha a windows nálad megy, akkor a többi, gondolom következtethető...
(#) brugo hozzászólása Dec 28, 2008 /
 
Ez zavart meg : " The following minimum configuration is required run the MPLAB IDE : PC compatible Intel Pentium class system " ezt a Microchip honlapjan olvastam.
(#) potyo válasza brugo hozzászólására (») Dec 28, 2008 /
 
=Intel pentium osztályú=Intel pentium fejlettségű.
(#) brugo hozzászólása Dec 28, 2008 /
 
Koszonom segitsegeteket , de jo lenne ha olyasvalaki szolalna meg aki AMD chipsettet hasznal .
(#) potyo válasza brugo hozzászólására (») Dec 28, 2008 /
 
Megy rajta.
(#) brugo hozzászólása Dec 28, 2008 /
 
Koszonom szepen a segitsegeteket !
(#) icserny válasza feki00 hozzászólására (») Dec 28, 2008 /
 
Idézet:
„Eddig csak 5.1voltosat láttam, az az 1 tized volt elhanyagolható?”

Nem "elhanyagolni" kell, hanem az adatlapon előírtakat ellenőrizni és betartani! Pl. a PIC16F690 adatlapjában ez áll: a lábakra -0,3V és VDD+0,3 V közötti feszültség kapcsolható. Ha VDD=5V, akkor az 5,1 V belefér a specifikációba.

Idézet:
„A következő gondom hogy az analóg lábon összegyűlő zavarok miatt változik a mért adat”

Árnyékolás, szűrés, több mérés átlagolása...

Idézet:
„ha kisebb picet használnék kevesebb analóg bemenettel...”

PIC16F690 12 db. analóg bemenettel nem jó?

Idézet:
„Áram mérésére eddig semmi ötletem nincs”

Áram-feszültség konverter...
(#) icserny válasza Mate12345 hozzászólására (») Dec 28, 2008 /
 
Idézet:
„Megnéztem, hogy milyen szerepe van ennek a lábnak és rájöttem, hogy a komparátornak valamije rá van kötve.”

Nézd meg az adatlapot! Úgy tudom, hogy a PIC16F690-nél RESET-kor kikapcsolódnak/letiltódnak az analóg komparátorok.
(#) watt válasza feki00 hozzászólására (») Dec 28, 2008 /
 
A feszmérés rendben van. Az 5.1V-os zener is jó.

A villódzást csak úgy lehet megszüntetni, hogy ritkábban jelezteted ki. (megszakításban még egy számlálót indítasz és így meg lehet nyújtani az időket.)

Az áram mérést át kell alakítani feszültségméréssé, azaz egy áram/feszültség átalakítót kell építeni egy OPA-val (pl. MCP6294) és ezt a feszültséget mérni.
(#) trudnai válasza brugo hozzászólására (») Dec 29, 2008 /
 
Erdekes, hogy a "PC comtabile" nem zavart, csak az "Intel Pentium Class"

Amugy azt szabadna kerni, hogy a "Valasz" gombra kattintva valaszolj, hogy lehessen latni mire is valaszoltal?
(#) Isti hozzászólása Dec 29, 2008 /
 
Sziasztok.
Kezdő vagyok, és tanácstalan.

Milyen PIC-et ajánlotok, ha összesen 7 dolgot kellene róla kapcsolni ( low és high jelszintet), kellene egy potméter állapotát A/D porton bevezetni (viszonylag gyorsan, mert szervó jelezne vissza), és kommunikálni kellene neki egy másik PIC-cel két vezetéken, soros átvitellel?

1 PWM port sem ártana neki...
(#) icserny válasza Isti hozzászólására (») Dec 29, 2008 /
 
Pl. PICkit2 Starter Kit (PIC16F690)

Persze, az sem mindegy, hogy milyen programnyelven akarod elkövetni a fejlesztést, kell-e hardveres debug, milyen sebesség kell, milyen méretű a program, mennyi adatmemória kell?
(#) PWM hozzászólása Dec 29, 2008 /
 
Sziasztok!
Lenne egy gyors kérdésem. Ezen a programozón milyen szerepet tölt be az a poti? Bővebben: Link
(#) trudnai válasza PWM hozzászólására (») Dec 29, 2008 /
 
En a helyedben el sem gondolkodnek ezen, az egy un. JDM tipusu programozo, ami erosen kerulendo!
(#) PWM válasza trudnai hozzászólására (») Dec 29, 2008 /
 
HElló!
itt találtam ezt a kapcsolást az oldalon. Megépítettem és műkszik, csak nemtom mire jó a poti.
(#) MPi-c válasza PWM hozzászólására (») Dec 29, 2008 /
 
Hátha "műkszik", de "nemtom" mire jó, akkor ne is foglalkozz vele! :bummafejbe:
(#) feki00 válasza icserny hozzászólására (») Dec 29, 2008 /
 
Köszönöm a válaszokat icserny, watt!!

Ez a áram>fesz átalakító sokat segített, bár műveleti erősítőkkel nem vagyok jóba úgyhogy szenvedés lesz bőven

(#) Isti válasza icserny hozzászólására (») Dec 29, 2008 /
 
Köszi!

Programozáshoz nem értek, meg nem is az én feladatom.

Nekem csak az áramkört kellene megoldani, amivel lehetne...
(#) icserny válasza Isti hozzászólására (») Dec 29, 2008 /
 
Idézet:
„Nekem csak az áramkört kellene megoldani, amivel lehetne...”

Akkor "add tovább" a kérdéseket, mert ezeket tisztázni kell, mielőtt megteszed az első kapavágást...
Következő: »»   368 / 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