Fórum témák

» Több friss téma
Fórum » I2C vonali jeltovábbításra
 
Témaindító: andpet, idő: Márc 15, 2008
Témakörök:
Lapozás: OK   1 / 2
(#) andpet hozzászólása Márc 15, 2008 /
 
Ahoy Mindenkinek!
Lenne egy problémám, melyhez segítséget kérnék.
Lenne egy PIC16f877A-m és egy TCN75 hőmérőm, melyel külső hőmérsékletet szeretnék mérni. a problémám viszont az hogy a proci és a hőmérő modul között minimum 10 méter távolság lenne, amit vezetéknélküli jelátvitellel (nem RFPIC) vagy valamilyen buszerősítővel szeretnék megoldani, viszont ezeket a buszerősítőket nem ismerem, a google-val sem boldogúltam. Ötleteket kérnék, és a segítséget előre is köszönöm,
üdv: andpet
(#) pipi válasza andpet hozzászólására (») Márc 15, 2008 /
 
túloldalra is kell egy mikrovezérlő, és ketten már egész jól el tudnak beszélgetni a rádiós adatátvitel jelalak/időzítések tanulmányozásához javaslom pl távirányitók doksijának tanulmányozását,
pl um3750, ht12, microchip hcs
(#) kobold válasza andpet hozzászólására (») Márc 15, 2008 /
 
10 m-re nem biztos, hogy rádiós cuccal bajlódnék, ha van lehetőség pár vékony vezeték elhelyezésére is (a buszerősítés említése miatt gondolom, van). Inkább az I2C feszültségszintjeivel áramgenerátort vezérelnék mindkét oldalon, ami két jól megkülönböztethető áramerősséget hajt át a vezetéken (mint a 4-20 mA-es távadók, itt persze köztes értékek nélkül), a másik oldalon egy ellenállással az áramot feszültséggé tudod alakítani, és csak az áramerősséget kell az ellenállásokkal összehangolni. Igen zavarvédett, és halálbiztos átvitel.
(#) andpet hozzászólása Márc 15, 2008 /
 
Köszi a választ Pipi, de az a probléma hogy mindenképp I2C kell, hiába kötök össze 2 pic-et, mert a max távolság amit bír a busz az nem valami sok, nem tom hogy pontosan mennyi, de 10 méter biztos nincs meg.
Azért köszi
(#) dcsabi válasza andpet hozzászólására (») Márc 15, 2008 /
 
kell egy pic a I2c-s szenzorod mellé, ami tud pl uart-ot is,
a 16f876 megfelel ... a szenzor adatait (Byte-jait) átalakítod (ha szükséges) pl:rs 232-re a pic-en belül, és a pic már meg tudja hajtani a rádiós modult, ami soros adatokat képes adni-venni. Természatesen a tuloldalon is
akkor soros adat fog megjelenni a mért paramétarként, de gondolom ez nem probléma, sőt... Ilyen pl: chipcad-nál
RXQ2-433, van egy kicsit olcsóbb is itt a fórumon is foglalkoztak vele, viszont ez egy kissé "komplettebb"... kinek melyik...
Aztán még lehet variálni,... de az I2c-t szerintem direktbe nemt udod rátenni rádióra, ha belenézel rendesen a müködésébe szerintem rájössz...
(#) andpet hozzászólása Márc 15, 2008 /
 
Tudom hogy I2C-t nem lehet rádióra rárakni, mivel 2 vezetéken történik a kommunikáció (SCL, SDA), ezért kértem segítséget.
De RFPIC-e se szeretnék használni, nem akarok arra is programot írni (az a fránya lustaság... ).
Azért kösz h. foglalkoztál a témámmal.
(#) kobold válasza andpet hozzászólására (») Márc 15, 2008 /
 
Ezek szerint nem jó a vezetékes összekötés.
A hőszenzorod elemről megy, illetve van körülötte más elem, meg hely?
(#) andpet hozzászólása Márc 15, 2008 /
 
Jó a vezetékes összeköttetés, csak az a baj, hogy az I2C az egy kétirányu port, és nem ismerek buszerősítő IC-ket, de a feszültség vezérelt áramgenerátoros ötleten elgondolkozok.
(#) dcsabi válasza andpet hozzászólására (») Márc 15, 2008 /
 
Arra nem kell programot írni,hogy "rádiót" használsz, csak a soros kommunikációra, és az adat úgy megy tovább "mintha vezetéken menne", illetve úgy is érkezik mintha vezetéken jönne... Apropó, ezzel a módszerrel rádió nélkül is akár 50 méterre elviheted a jeledet, illetve fogadhatod, nem kell áramgenerátoros illesztővel kisérletezned.
Ha az I2C buszt lekezelted a PIC-el akkor azt az UART-ra tenni negyed akkora tudást igényel, sőt ha csak venni a karod akkor csak elég egy szál vezetéket használni, az RS232-re. Ha megkevertelek volna, összefoglalom...
A hőszenzorod mellé teszel egy PIC 16f876-ot, vagy 877-et. A szenzorból a pic-el I2C-n kiolvasott adatokat elküldöd,
az UART-on (rs232) egy szál drót is elég az adatnak mert, csak adsz ezzel a PIC-el (TX) ...adatillesztő Ic (pl max232) sem szükséges, mert, maradsz az 5V-os redszeren belül.
A vevő oldalon a másik PIC UART-on vételre (RX) lábon veszi az adataidat, ezen kivül kell még természetesen +5V és test (-) is a dróton, 3 szál vezeték... Ha idegenkedsz az Uart-tól kükdök PC-re egy kommunikáló segédprogit PIC felé...Szerintem ez a legkönnyebb kommunikáció a PIC-el kifelé...Ez müködő dolog, mert egy PCF8583-as óra Ic-t kérdeztem le
I2C-n és elküldtem az adatokat egy másik PIC-nek UART-on ...
(rs232)-vel...

RSCheck.exe
    
(#) andpet hozzászólása Márc 15, 2008 /
 
Köszi a választ Dcsabi!
Nem rosz ötlet, de sajna nem jó nekem. Asszem nem fogalmaztam egyértelműen. A feladatom az, hogy csináljak egy olyan Pic vezérelte I2C-n kommunikáló eszközt, ami tud külső, belső hőmérsékletet mérni, ill egy I2C-s Real time-al méri az időt, és mindezt Lcd-n kijelzi. A prblémám az, hogy a külső hőmérő (ő egy TCN75) kb 10 méterre van a PIC-től, és az I2C busz ezt a távolságot nem tudja áthidalni. Ehez kéne valami olyan cucc ami min. 10V-ra felnyomja a busz 5V-os jelszintjét és kétirányú kommunikációt tesz lehetővé, vagy valamilyen 2oldali (lehetőleg nem drága) rádiós adóvevő.
(#) dcsabi válasza andpet hozzászólására (») Márc 15, 2008 /
 
Nos majdnem megérttetem magam,... ez a cucc ami neked kell kint, itt a rajza... bent meg az általad említett, azzal kiegészítve, hogy a kinti hőmérséklet adatai RS232-n jönnek áttettük az I2Ct rs232-re, hogy el tudd vinni távolra gond nélkül... Bent meg, másik PIC, I2C (RTC), LCD és Uart (külső adat)...
(#) dcsabi válasza andpet hozzászólására (») Márc 15, 2008 /
 
Ennél olcsóbb megoldást nem találsz, 970Ft +áfa..+60ft a 9-pólusu dsub...
Melyik részét nem értedaz előzőeknek, illetve melyiktől idegenkedsz?...
(#) kobold válasza dcsabi hozzászólására (») Márc 15, 2008 /
 
Nem mondom biztosra, de ő mintha azt a tízméteres távot mindenképp I2C-vel akarja áthidalni (ami a hagyományos módon úgysem megy). Csak ezért tiltakozhatott más átviteli mód ellen, gondolom én...
(#) kobold válasza andpet hozzászólására (») Márc 15, 2008 /
 
Még azon töprengek, hogy jelentős többlet-programozással talán lehet ilyet csinálni. Ha mindig a PIC a Master (bár nem tudom, nincs-e több is), akkor a hardveres I2C helyett meg kellene írni a protokollt szoftveresre; ekkor az adat- és óravezetékek mellett további vonalakat is lehetne kezelni, attól függően, hogy küld, vagy fogadna a proci. Egész konkrétan van pár SP485-ös félduplex RS485 meghajtóm, ez adta az ötletet. Mindkét oldalra 2-2 kellene, egy az órajelnek, egy az adatnak. Amikor a PIC küld, letiltja az adatmeghajtó fogadó részét, kimenetre állítja az adatlábat, és órajellel kilépteti a címet, parancsot, adatot stb (órajel meghajtója mindig csak küld, ezért Master). Ezután, ha választ vár, a küldő részt tiltja le, adatvonalát bemenetre állítja, és folytatja az órajel kiadását, amíg az utolsó bit is vissza nem jött, aztán kiküldi az ACK-ot, és kész.
A hőszenzor oldalára viszont kellene valami, akár egy másik proci is lehet, ami eldönti, hogy mikor kell a vonalat fogadásról küldésre állítani, meg vissza. Ezt lehet, hogy egy jóval "butább" PIC, a 10F-12F sorozatból pl., is meg tudná csinálni, bitminta, időzítések, vagy valami egyértelmű feltétel alapján.
Így megmaradna az I2C, bár vezetékesen; az RS485-nek megfelelően csavart érpáron, differenciális jelként továbbítódna az órajel, másik csavart érpáron meg az adat, a szintillesztéseket pedig megoldják az éppen engedélyezett meghajtók.
Ha tényleg az I2C megőrzése a feladat, akkor valószínűleg ez a legbonyolultabb eljárás, de most ez jutott eszembe
(#) dcsabi válasza kobold hozzászólására (») Márc 15, 2008 /
 
Én egy olyan megoldást javasoltam, amit már csináltam és majdnem úgyanez a hardware környezet.
A kinti panelon van az I2c_s hőszenzor es veszi a vele egy panelon lévő pic (én 877,vagy 876 mellett döntenék mert könnyü az I2C-t és UART-ot ráprogramozni) a hőmérséklet adatokat. ugyanez a pic a másik "lábán" kiadja a vett adatokat egy másik protokoll szerint, amit lehet együtt használni... Ez az rs232 és csak TX lábat kell használni mert csak adni kell a hőmérséklet adatait. Bent 10m-re van a másik panel amin rajt van az "Ő általa" említett rtc (I2C-vel) , az LCD kijelző és a pic RX lábára kötve az egyetlen szál drót ami a kinti adatot hozza. A külső készülékhez ,még ki kell vinni a +5V-ot és a testet...
Ez egy kipróbált dolog azzal a külömbséggel, hogy én az rtc (I2C) adtait küldtem tovább rs232-n Pic 16f877-el...
Tehát az áhított illesztést egy pic végzi, a hosszú dróton rs232-vel megy az adat, amit 10m-re minden probléma nélkül el lehet küldeni...
(#) andpet hozzászólása Márc 15, 2008 /
 
Tehát ha jól értem amit mondasz, akkor a kinti hőmérőhöz rakjak egy pic-et, és UART-on tolja a jelet be, mondjuk egy max232 segítségével. Ez nagyon tetszik, és elegáns megoldás. köszi a segítséget, még gondolkodok rajta
(#) dcsabi hozzászólása Márc 15, 2008 /
 
Itt a vevő kapcsi rajza. Az előbb az adóban a pic lábát tévesen jelöltem itt van helyesen...
(#) dcsabi válasza andpet hozzászólására (») Márc 15, 2008 /
 
Nem szükséges szerintem Max232 sem, ha árnyékolt kábelt használsz... csak egyszerüen kösd össze ahogy rajzoltam, amit említettem cuccot ott én sem használtam, és müködik...
(#) potyo válasza dcsabi hozzászólására (») Márc 15, 2008 /
 
Az árnyékolt kábel szerintem jóval drágább, mint két chip. Én inkább UTP kábelt használnék (vagy esetleg telefonkábelt, ha van kéznél, mert abból duplán kell, és akkor már drágább, mint az UTP), és MAX232 helyett SN75176 meghajtót, tehát szimmetrikus átvitelt az egyik csavart érpáron. Bonyolultabbnak hangzik, de nem az, sőt még kevesebb helyet is igényel, és nem kell semmi árnyékolás. Ráadásul az SN úgy nézem olcsóbb, mint a MAX.

Az szenzorhoz inkább 16F882 kontrollert tennék, olcsóbb, mint a 16F876.
(#) deguss válasza andpet hozzászólására (») Márc 15, 2008 /
 
Én úgy oldanám meg, hogy a bázisállomásról nem I2C-n, hanem szoftveresen Manchester kódolva küldeném ki a jelet egy vezetéken, de nem direkt, hanem egy FET-tel közötte, hogy jó magas feszültséggel lehessen küldeni, pl. 24V-al, vagy épp árammal.
A kinti egységhez mindenképpen kell egy PIC, ami dekódolja a Manchestert, és I2C-n kiteszi a hőmérőnek. A bázisállomás PIC-e és a kinti egységé összhangban kell hogy legyen, tehát kelleni fog pár parancs, ami megmondja, hogy mikor melyik irányba történik a kommunikáció. Szerintem kivitelezhető, csak kis programozás kérdése.

A Manchester kódolás további előnye, hogy abszolút egyenáram mentes, és hogy az órajel is benne van a kódolásban. Egyszerűen szólva data + clock = Manchester. Tényleg csak az irányra kell figyelni.

Ha egyszerűbb megoldás kell, használj 6 optocsatolót! A clock a mastertól megy a slavehez, a datánál pedig egyszer így, egyszer úgy. A feszültség az átviteli szakaszon meg legyen amilyen nagy csak rendelkezésre áll. Akár 24V, ahogy mondtam. De a PIC-et nem spórolod ki a kültéri egység mellől.

Remélem tudtam segíteni.
(#) deguss válasza deguss hozzászólására (») Márc 15, 2008 /
 
Közben eszembe jutott, nem lehet használni más hőmérő IC-t? Pl. onewire IC-ket a Dallas Semitől? Ezek mind azok.
(#) andpet hozzászólása Márc 16, 2008 /
 
Azt mondod Deguss h. a PIC-et nem spórolom ki a kültéritől? Az nem biztos, mert gondolkoztam és kíváncsi vagyok a véleményetekre hogy ez így működne e.
Két szembefordított max232-t használtam, abból úgyis van 2 darabom talonba.

Terv.JPG
    
(#) deguss válasza andpet hozzászólására (») Márc 16, 2008 /
 
Ez is egy megoldás, csak sok vezeték kell hozzá! Tulajdonképpen az órajel csak a Mastertól a Slavehez irányul, miért duplikáltad azt is? A szenzor nem lesz Master soha.

De az ötleted nem elvetendő!
(#) andpet hozzászólása Márc 16, 2008 /
 
Ez egy jó ötlet
Igazad van, erren nem gondotam. Itt a módosított cucc, a lábbekötéseket átnéznéd, mert még életemben nem használtam max-ot. A diódát a biztonság kedvéért bennehagytam, vagy nem kell?

Terv.JPG
    
(#) deguss válasza andpet hozzászólására (») Márc 16, 2008 /
 
Teljesen oké, de én még kivenném a diódákat is a clock vezetékről. Előtte próbáld azért ki próbapanelon, de szerintem működhet. Esetleg kellhet ide-oda egy felhúzóellenállás, de ezt most nem tudom megmondani.
(#) dcsabi válasza potyo hozzászólására (») Márc 16, 2008 /
 
Az enyém amit csináltam az kb 5-6 méterre van elküldve, egy sima mezei 3 eres kábellel, nem árnyékolt és nem is UTP, és ipri környezetben... Csak a biztonság kedvéért említettem az árnyékolt kábelt... ez egy müködő megoldás kb egy éve... Nem kell semmilyen szintillesztő sem a PIC ek közé, illetve itt még néhányan bonyolítgatják, az adatáramlás a kültéri és a beltéri között csak egyirányú! Ha mindenképpen illesztgetni akarjátok, meg az anyagi oldalát is nézitek,
optocsatoló is bőven megfelel...A kültéri PIC-nek meg egy 8-lábu PIC és az I2c-t software-sen is meg lehet csinálni...
de szerintem 300ft-ért, egy müködő dolgot nem cserélnék fel egy 2 napos kisérletezgetésre, közben csk elszáll valami aztán megérte...
(#) potyo válasza dcsabi hozzászólására (») Márc 16, 2008 /
 
A 8 lábúval csak az a gond, hogy hardveres UART és I2C nem szokott lenni bennük. Ezért kerestem a legkisebb, hardveres I2C-t és UART-ot is tartalmazó kontrollert. Magamnak én is 8 lábút tennék, és szoftverből intézném a dolgokat...
(#) dcsabi válasza potyo hozzászólására (») Márc 16, 2008 /
 
Az I2C-t ott is meg lehet oldani amelyik pic-ben nincs benne a Hardware-sen. Kell rá írni egy software-t, ugyanígy az UART-ra is. Én sem nem bajlódnék vele viszont példának ez, egy komplett megoldás akár 12f675-re is megírható... ..Soft_I2C
(#) watt válasza dcsabi hozzászólására (») Márc 17, 2008 / 4
 
Szerintem nem követendő megoldás a meghajtó nélküli kapcsolat, főleg nem 10m-re és nem ipari környezetre. (túúdom, hogy neked egy éve megy )
Aztán azért jobb az SN75176-os megoldás a MAX-al szemben, mert olcsóbb és később több érzékelőt is rá lehet akasztani a vonalra, csak a protokollt kell megírni hozzá. A vezeték hossza(UTP) pedig akár 100méter is lehet 50kbit/sec mellett. Ezt meg én próbáltam ki...
Az hőérzékelőnél pedig inkább SPI-st kell választani és akkor sokkal könnyebb a programot is megírni és elég a legolcsóbb 16F627A is, amiben van USART. Persze az I2C is megírható ebben, de semmiképpen nem szükséges egy durung 876, plánen nem 877!!

Ja igen, még annyit, hogy a 12V tápot ki lehet vinni az UTP kábelen.
(#) dcsabi válasza watt hozzászólására (») Márc 17, 2008 /
 
Ezek mind járható megoldások amik szóbakerültek. Az eredeti kérdés az volt, hogy I2c-s hőmérő szenzor adatait kéne eljuttatni 10m-re. Amit javasoltam az egyszerü és kevés "szoftverigényü". A f628-as megoldás is jó, (akár 8 lábu 12f675 is) vannak jó rutinok "kisebb" PIC-ekre (ilyent tettem fel feljebb) és konverzió után, akár rs485-re is lehet tenni az meg több száz máterre is elmegy... Az UTP kábel az biztos megfelel, meg a 12V sem baj ha kimegy és ott stabilizáljuk...
Aki feltette a kérdést nem jelzett vissza melyik felel meg neki, az is számít, hogy az Ő programírási gyakorlatához melyik megoldás tűnik "kezesebbnek".
Következő: »»   1 / 2
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