Kysymys:
I2C: n lähettäminen luotettavasti Cat5-kaapeleiden kautta
Maxthon Chan
2014-04-23 17:24:36 UTC
view on stackexchange narkive permalink

Harkitsen kotiautomaatiojärjestelmän käyttöönottoa Raspberry Pi: n ympärille, mutta huomasin hinnan ja tilan tarpeen Pi: n asettamisesta jokaiseen paikkaan, jossain määrin ohjausta tarvitaan liikaa, mutta tähän suunnitteluun tarvittavat Cat5e-kaapelit on jo asennettu kunnostuksen aikana. Minulla on joitain PCF8574-, PCF8591- ja SSR-levyjä, joten onko mahdollista ajaa niitä Cat5e-kaapeleilla?

Kaikki Cat5e-kaapelini on jo kytketty TIA / EIA 568B -nauhalla. Ne ovat osa rakennekaapelointiani, eivätkä ne ole suojattuja, joten tarvitaan suurempaa verkkojännitettä. Ajattelen lähettää virta- ja I2C-linjoja kaapelin yli tällä pinoutilla:

  Tappi 1 (Pair 1): SCL + Pin 2 (Pair 1): SCL-Pin 3 (Pair 2) : SDA + nasta 4 (pari 3): + 12 V nasta 5 (pari 3): + 12 V nasta 6 (pari 2): SDA-nasta 7 (pari 4): GNDPin 8 (pari 4): GNDPin 8 (pari 4): GND  

Virtanastajärjestys on sama kuin 100BASE-TX PoE -johdotus, joten myös teholuokka on sama, ja kaksisuuntaisen differentiaalisen signaloinnin käyttö löytyy 1000BASE-T: stä, joka vaatii Cat5e: n.

Original I2C SCL- ja SDA-linjat johdetaan kahteen kaksisuuntaiseen differentiaalipariin TTL-tasoilla (avointa tyhjennystä ei pidetä johtimessa, vaan se palautetaan suunnittelemassani linjan lopetus- / tasosiirtolaitteessa)

Kaikki ehdotukset siinä? Lisäksi mitä sirua minun pitäisi käyttää muuntaa I2C-linjat differentiaaliseksi signaloinniksi? Ehdota minulle siruja, joissa on DIP läpireikä -vaihtoehto. En tiedä miten käsitellä SMT-juttuja.

MUOKKAA

Löysin tämän sirun, SN65LBC180, onko se hyvä valinta? Kuinka kytkeä se kaksisuuntaiseen yksikköön? Kuinka vaihtaa tasoa (se on BiCMOS-osa, joka vaatii TTL-tason, mutta Pi ajaa 3,3 V CMOS-tasoilla) ja tehdä siitä avoimen tyhjennyksen yhteensopiva?

EDIT 2

Kommentoijat ehdottivat RS-485: ää, joka näytti hyväksyvän minulle, mutta silti kahden differentiaaliparin vaaditaan olevan kaksisuuntaiset ja vain kaksi kaksisuuntaista differentiaaliparia. Muutan olemassa olevia Ethernet-kaapeleita.

MUOKKAA 3

Koska joku nosti sen esiin, en voi käyttää CAN: ää. En voi mitenkään sovittaa CAN: ää RPiin uhraamatta mitään (SPI: tä on kosketusnäyttö, joten ei SPI - CAN-muunninta)

Olen tietoinen I2C PHY: n rajoituksista, joten yritän lähinnä sovita siihen 1000BASE-T PHY - kaksisuuntainen differentiaalisignalointi SCL- ja SDA-signaaleille, mutta sen päällä toimii I2C-protokolla.

MUOKKAA 4

A minulle tuli uusi siru: NXP P82B96, joka jakaa I2C: n neljään yksisuuntaiseen linjaan, joita puolestaan ​​voidaan käyttää syöttämään SN65LBC180: een optoeristyksen kautta (vain Pi-puoli) muodostamaan 8-napainen pitkän matkan valmis signalointi. Nyt minun on vain selvitettävä, kuinka saada virtaa johdon kautta, tai kuinka selvittää lähetäkö väylä ja tehdä parit kaksisuuntaisiksi.

EDIT 5

Vastausten ehdotusten perusteella minun on mielestäni muutettava virtaliitäntää hieman:

  Tappi 1 (pari 1): SCL + tappi 2 (pari 1): SCL-nasta 3 (pari 2): SDA + tappi 4 (pari 3): + 5 V nasta 5 (pari 3): GNDPin 6 (pari 2): SDA-tappi 7 (pari 4): GNDPin 8 (pari 4): + 12 V  

I2C: n differentiaalinen signalointijännite on TTL. Parin 3 yli + 5 V tulee puskuroimattomasta mutta sulatetusta Pi: stä. + 12 V: n paria 4 yli ei välttämättä ole käytettävissä vain joidenkin suuritehoisten laitteiden ajamiseen. Tarvittaessa laite voi käyttää omaa virtalähdettä ja jättää molemmat kiskot riippumattomiksi kytkemättä tai syöttää omaa suurempaa jännitettä, mutta käyttää 5 V: n kiskoa.

SCRATCH THAT

Pinout on silti alkuperäinen malli, joka on 802.1af-yhteensopiva.

Miksi et RS-485? Se on teollinen, luotettava standardi.
Pi: llä ei ole RS485: tä ja haluan liitäntäpiirin mahdollisimman yksinkertaiseksi. Tarvitsen myös PCF8574: n, joka kokeistani voi ohjata SSR: täni luotettavasti 5 V: n syöttöjännitteellä.
Vaikka RS-485 itsessään on kaksisuuntainen, se ei tee kaksisuuntaista yksipäisellä puolella.
@IgnacioVazquez-Abrams Muutan olemassa olevia Ethernet-johdotuksia ... Voin käyttää RS485-liitäntäpiirejä, mutta RS485 voidaan silti lähettää vain nastojen 1/2 ja 3/6 kautta, ja nastat 4/5 ja 7/8 ovat edelleen 12 V: n virtakisko- ja maadoitetut nastat .
Mutta se ei tee siitä sopivaa käyttötarkoituksiisi.
Yksi syy siihen, että SCL ja SDA ovat avoimen keräilijän, on se, että ne ovat molemmat kaksisuuntaisia ​​- joko isäntä tai orja voivat ajaa heidät matalalle. Kuinka hallitset tätä käyttöliittymäsuunnittelussa? Vaikka I2C on synkroninen protokolla ja * voidaan * ajaa pitkiä kaapeleita hidastamalla sitä ja käyttämällä sopivia suodattimia, kaapeliviestinnässä on paljon parempia vaihtoehtoja, kuten CANbus, RS-485 tai jopa asynkroninen RS-422.
Kuinka kauan CAT-5-kaapelisi on? Minulla on jotain vastaavaa 20m (~ 60ft) I2C-liitännällä kellarista lämpötilan valvontaa varten. Se toimii hyvin halvan suojaamattoman puhelinjohdon kanssa. Ei tasonsiirtoa, vain kaksi 5 V: n mikrokontrolleria kytketty i2c: n kautta.
@Kamil Jossain noin 10-30 metriä, hieman vihamielinen ulkomaalainen ylikuulumisen ympäristö. Kaapelit voivat kuitenkin kulkea 1000BASE-T: n luotettavasti. (ja siksi yritän käyttää signalointia, joka on samanlainen kuin 1000BASE-T ja 100BASE-T PoE)
Kokeile matalataajuista I2C: tä ja liitä se ja yritä vain. Jos sinulla on laajuutta - näet, mitä SDA / SCL-linjoilla tapahtuu molemmin puolin.
Jos aiot käyttää Ethernet-kaapelia, oletko harkinnut vain Ethernetin käyttöä viestintään? Jos osa vaatimuksesta on virta ja tiedonsiirto yhdessä kaapelissa, voit käyttää PoE: tä.
@DaveTweed Siksi käytän kaksisuuntaista differentiaalisignalointia. Vedän väylää ylöspäin etäpäässä (päättäen avoimen tyhjennysosan) ja käytän avoimen tyhjennyksen liitäntää ohjaimen puolella.
@mjh2007 Suunnittelin vain Ethernetin käyttöä kaikkialla, mutta se osoittautui minulle liian kalliiksi. Näin minulla oli ajatus käyttää samanlaista signalointia, mutta käyttää erilaista protokollaa - käyttää 1000BASE-T-tyylistä kaksisuuntaista differentiaalisignalointia kahdella parilla ja 100BASE-T PoE -tyylistä voimaa kahdella muulla.
@Kamil Minulla ei ole soveltamisalaa, enkä halua rakenteellisen kaapeloinnin ulkomaalaisten ylikuulemista ajaa I2C-laitteitani. Siksi tarvitsen differentiaalisen signaloinnin.
RPP: n sijasta voit pitää kustannukset alhaisina käyttämällä sisäänrakennetulla ethernet-mikrokontrollerilla tai spi-Ethernet-moduulilla ja käyttämällä kaapeleita, jotka ovat normaalia Ethernet-yhteyttä poe: n kanssa.
@Grant Ne eivät ole aivan saatavilla täällä ja melko kalliita. Minulla on myös kokorajoitus. Minun on sovitettava koko asia nykyiseen rakennekaapelointikoteloon.
Onko CAN: n käytössä mitään vikaa?
@PeterK RPi: llä ei ole näitä, ja minun on pidettävä koko pienenä.
Jos olet niin kuollut tekemään sen, mitä sanoit alun perin tekevän, miksi tulit tänne ja kysyit siitä?
@MattYoung Tarvitsen ehdotuksen käyttöliittymämoduulin suunnittelusta, mukaan lukien Pi- ja laitepuoli. Laitepuoli ei ole väylä - yksi liitäntämoduuli yhteen laitteeseen, ja Pi-puoli on väylässä.
Tarvitsetko edes tiedonsiirtoprotokollaa? Mitä tulee olemaan "laitepuolella"? Voisitko käyttää ethernet-kaapeleita yksinkertaisesti releiden ohjaamiseen ja että kaikki i2c-asiat ovat RPI: n päässä?
@Grant En ole aivan varma siitä, kuinka paljon virtaa johtimet voivat pitää.
@maxthonchan Cat5-Ethernet-johdot pystyvät käsittelemään 360ma turvallisesti 50 V: n jännitteellä (http://fi.wikipedia.org/wiki/Power_over_Ethernet#Power_capacity_limits). Voit helposti saada puolijohdereleitä, jotka vetävät <10ma jännitteellä 3-32V tulopuolelle, niin hyvin turvallisten ominaisuuksien sisällä.
Kahdeksan vastused:
Olin Lathrop
2014-04-23 18:12:32 UTC
view on stackexchange narkive permalink

Yritä tehdä yhteistyötä IIC: n kanssa on huono idea. IIC on todella tarkoitettu viestintään sirujen välillä yhdellä levyllä. Koska linjan matalalle vetämiselle vaadittu enimmäisvirta on rajallinen, linjat ovat suhteellisen suuria impedansseja (muutama kΩ). Tämä tarkoittaa sitä, että he pystyvät ottamaan melua helposti, mikä on vakava ongelma, kun ne kulkevat suojaamattomalla kaapelilla seinissä, mahdollisesti aivan seuraavien vaihtovirtajohtojen vieressä.

Käytän tähän CAN: ää. CAN käyttää yhtä kierrettyä paria, joka on vedetty yhteen vain 60 Ω: n kanssa yhdessä kohdassa, ja signaali on differentiaalinen. Tämä tarkoittaa, että suurin osa kapasitiivisen kytkennän takia poimittavasta väistämättömästä yhteismoodin melusta voidaan perua vastaanottimilla. 500 kbit / s: n nopeudella toimiva CAN voi peittää tavallisen talon kokoisen.

Tänään on saatavana monia mikro-ohjaimia, joissa on sisäänrakennettu CAN. Tarvitset yleensä erillisen fyysisen tranceiverisirun (kuten tavallinen MCP2551), mutta muutama alin protokollakerros on toteutettu piissä CAN-oheislaitteessa. Laiteohjelmisto on vuorovaikutuksessa CAN-väylän kanssa täydellisten pakettien lähettämisen ja vastaanottamisen tasolla. Törmäystunnistus ja uudelleenkäynnistys, tarkistussumman luominen, väyläpakettien signaloinnin yksityiskohdat, vastaanotetun tarkistussumman vahvistus ja kellon ajautumisen säätö hoidetaan puolestasi.

Älä kuulu RS-485: een. Se on menneisyyden jäänne. Se käyttää myös yhtä differentiaalisignaalia, kuten CAN, joten sillä on myös hyvä meluherkkyys. Ihmiset kuuluvat kuitenkin yleensä RS-485: een, koska se näyttää "yksinkertaisemmalta". Tämä johtuu vain siitä, että he eivät katso koko järjestelmää. Ensinnäkin, se ei oikeastaan ​​ole yhtä monimutkainen sähköisesti. Tarvitset vielä jonkinlaista lähetintä ajamaan ja vastaanottamaan differentiaalisignaalia. Onko RS-485-lähetin-vastaanotin kytketty mikro-ohjaimen UART: iin, tai MCP2551, joka on kytketty CAN-oheislaitteeseen, on melkein merkityksetöntä kustannusten ja laitteiston monimutkaisuuden kannalta. Suuri ero on, että RS-485 jättää sinut raakatavutasolle (UART: n kautta). Tämä tarkoittaa mitä tahansa mielekästä ja vankkaa järjestelmää, sinun on keksittävä oma protokolla törmäystunnistuksen käsittelemiseksi, päätettävä, kuinka käsitellä uudelleenyrityksiä, pakettia, tarkistussumman luomista ja tarkistamista, vuonohjausta jne. Voit käyttää yhtä pääarkkitehtuuria, mutta oikeat yksityiskohdat ovat paljon hankalampia kuin ihmiset ajattelevat, jotka eivät ole analysoineet niitä kaikkia huolellisesti. CAN-palvelun avulla voit vain lähettää ja vastaanottaa paketteja, ja laitteisto huolehtii yksityiskohdista.

Minulla ei ole sisäänrakennettua RPI: tä sisäänrakennetulla RPi: llä, minulla ei ole CAN-käyttöliittymää, minulla ei ole varaa niihin, enkä voi sovittaa niitä olemassa olevaan asuntoon. Joten, EI SAA. Muunnan IIC: n edestakaisin differentiaalisignaaleiksi välttääkseni ylikuulumisen ja vastustuksen kaatumisen. Muunnos- ja IIC-laite jakavat yhden kortin.
@Max: CAN: lla varustettu mikrokontrolleri on halvempi, pienempi, vie vähemmän virtaa kuin RPi. Jos nämä solmut ovat enimmäkseen antureita ja vastaavia, RPi on joka tapauksessa ylivoimainen.
uC: llä ei ole riittävää laskentatehoa järjestelmän toisen puolen ajamiseksi. Vaikka minulla on järjestelmässä kosketusnäyttö, joka on tarkoitettu vain hätätilanteiden ohittamiseen, kaikki komennot lähetetään kotiverkon kautta Pi: lle HTTP: n kautta (melko hienolla AJAX-ajetulla käyttöliittymällä), ja Pi käsittelee kaikki todennukset ja muut asiat.
@MaxthonChan Voit saada halpoja ohjainpiirejä, jotka muuntavat CAN: n SPI: ksi ja / tai I2C: ksi käyttöliittymäksi RasPI: si. [Esimerkki Microchipistä] (http://ww1.microchip.com/downloads/en/devicedoc/21801d.pdf).
Jos tämä on ehdotuksesi, niin kerro minulle, kuinka voin ajaa SSR: ääni? Tällä hetkellä minulla on yksi vastaanottokortti, jossa on diff-liitäntäpiiri, 7805 ja PCF8574, ja se ajaa jopa 8 SSR: ää. (ja yleensä minulla on kaksi tai kolme)
@PeterK Ehdota joitain I2C-esimerkkejä, jos yrität ohjata minua käyttämään johtoja uudelleen CAN-signaalien lähettämiseen. Minulla ei ole käytettävissä olevia SPI-väyläpaikkoja.
Päätin käyttää CAN PHY -ohjelmaa, mutta en itse protokollaa. Protokolla on kuitenkin edelleen I2C.
@OlinLathrop Luuletteko, että CAN soveltuu hissille esimerkiksi noin 16 kerrokseen? CAN: ää käytettäisiin lähinnä puhelun kirjaamiseen autosta tai jokaisesta laskeutumisesta.
@EmbSysDev Se ei ole minun tapaustani - minulla on selkeä määritelmä isäntä- ja orjalaitteista: Pi on väylämesteri, joka vastaanottaa ohjeita Internetin kautta, todentaa sen ja välittää sen väylälle.Muokattu kytkin (tai himmennin) on orja, joka suorittaa varsinaisen työn (kytkee SSR: n jne.) Saatuaan sille osoitetun käskyn.En usko, että CAN on sopiva tässä, mutta I2C on.I2C: llä on omat ongelmansa (pitkät johdot, joissa on karkeita ulkomaalaisia ylikuormituksia), ja yritän voittaa sen.
@Maxt: Jos haluat tehdä sen (yksi pääohjain, jossa on useita pieniä laitteita), en todellakaan näe ongelmaa CAN: n kanssa.Liität RPi: n CAN-väylään kerran, sitten kukin orja on melko yksinkertainen ja pieni.Voit joko antaa RPi: n puhua CAN-mikrolle tai ohjata väylää suoraan MCP2515: n kaltaisella (CAN-ohjain SPI-liitännällä).Jos RPi: llä ei ole SPI: tä, voit silti lyödä sitä 4 I / O-rivillä.Luulen, että sinulla on hiutaleita ongelmia IIC-väylän kanssa, kuten ehdotat.
@OlinLathrop on jo lukenut dokumentaation ja foorumiviestit, jotka koskevat BAN-paukutusta CAN: lla jopa PHY-sirulla - mahdotonta, jos järjestelmä suorittaa moniajoa ajoitushermostojen takia - mikä vaaditaan Pi: lläni, koska se on myös todentava (salaustyö, intensiivinen prosessori) ja edelleenlähetysohjeet.SPI ja UART ovat varattuina, joten vain I2C on saatavana laitteistotuella tärinän estämiseksi.
@OlinLathrop Minulla on myös kokorajoitus: 5 cm x 5 cm x 3 cm tai se ei sovi olemassa oleviin kalusteisiin.Voin tehdä levyn, jossa on neljä tai viisi pelimerkkiä, jotka sopivat tähän rajoitukseen ja toimivat I2C-protokollan kanssa (luultavasti VOI PHY)
@OlinLathrop Sinun tulisi lukea oma vastaukseni, joka on melkein minun lopullinen suunnitteluni, lähetä I2C-protokolla CAN PHY: llä.NXP: llä on siru, joka jakaa I2C-väylän kahteen UART-linjapariin, jotka puolestaan voidaan siirtää CAN PHY: n yli kahtena differentiaaliparina.Tämä malli on olemassa myös NXP AN: eissa.
@OlinLathrop Liitäntä koostuu vain kolmesta sirusta (seitsemästä, jos tarvitaan optoerottimia, vain totta Pi-puolelta, jolla ei ole kokorajoituksia), joten tämä tekee erittäin pienestä 4-siruisesta orjapuolisesta laitteesta.
EternityForest
2014-04-23 21:07:18 UTC
view on stackexchange narkive permalink

I2C ei ole oikea tapa edetä. VOIVAT siirtohenkilöt maksaa kukin dollarin, ja voit käyttää niitä uart-transansseina ja kirjoittaa oman protokollasi, joten et tarvitse kannun kanssa yhteensopivaa mikroa, et halua käyttää täyttä pakettipinoa.

Minusta tuntuu aina vähän epämiellyttävä, kun kat5-johtimet kulkevat rinnakkain virran saamiseksi. Se vikaa minua, koska jos yksi johdin rikkoo toisen, se kuljettaa koko järjestelmän virran. Cat5: n nykyiset luokitukset ovat erittäin konservatiivisia, joten tulipalon todennäköisyys on melko pieni, mutta en vain pidä mahdollisuudesta.

Turvallinen tapa tehdä se on saada polyfuusio molemmille voimakiskoille ja liittyä maahan ja kytke kukin laite yhteen ja vain yhteen virtalähteeseen / maahan. Tällä tavoin, jos yksi johto epäonnistuu, kyseistä johtoa käyttävät laitteet menettävät virran sen sijaan, että yksi johto joutuisi kantamaan kahden voimaa.

Monet ihmiset haluavat laittaa virtaa ja maata molempiin kierrettyihin pareihin EMI-syistä sen sijaan, että heillä olisi yksi tehopari ja yksi maapari. Jos sinulla on kaksi teho / maa-paria, virtajohto on lähempänä maata, ja kentät poistuvat käytöstä, mikä vähentää voimajohtojen lähettämiä tai vastaanotettuja radioaaltoja. Tarpeetonta, mutta mukavaa, jos siellä on paljon sähköistä melua.

12 V on mielestäni liian matala virranjakoon, kun 24 V on silti kohtuullisen turvallinen ja paljon tehokkaampi.

Ratkaisuni perustuu jotenkin siihen.Käytän NXP-jakajan sirua jakamaan I2C-väylän Tx / Rx-pariksi (sekä SDA että SCL) ja multipleksoimaan ne UART: na CAN-liitäntäpiireillä.Tämä antaa minulle kaksi kierrettyä paria, joissa on I2C SDA- ja SCL-linjat, johdotettuna Cat5e TIA / EIA568B -nastoihin 1/2 ja 3/6.
Tämän pitäisi myös toimia, ainoa ongelma on, että tarvitset NXP-piirisi, kaksi siirtolaitetta ja todellisen i2c I / O -piirisi.Se on viisi pelimerkkiä levyä kohden, ja viimeksi tarkistin, että NXP-siru oli kalliimpi kuin atmega328: lla, mutta se on saattanut muuttua.Se toimii ja ohjelmointi on yksinkertaista, koska se on i2c, mutta UART: n käyttö CAN: n yli on halvempaa hieman enemmän työtä varten.
Pi-puolella olevassa liitäntäkortissa on 7 sirua - NXP I2C -puskuri / jakaja, kaksi CAN PHY ja neljä optoisolaattoria.Laitepuoli on 4-siruinen moduuli - NXP I2C -puskuri / jakaja, kaksi CAN PHY ja PCF8574 / 8591.
Löysin 4-kanavaisen optoerottimen, joka pienentää Pi-puolen piirin 4-siruiseksi moduuliksi.
Mietin virtaliittimet uudelleen, pidän kiinni alkuperäisestä suunnittelustani käyttämällä paria ja maadoitusparia.Se on yhteensopiva 802.3af: n kanssa, vaikka määritin uudelleen signaalinastat SCL: lle ja SDA: lle.
Grant
2014-04-23 22:23:38 UTC
view on stackexchange narkive permalink

Jos automaatio yksinkertaisesti kääntää asiat talon ympärille päälle ja pois päältä, yksinkertaistan tätä:

  • Pitämällä kaikki "aivot" yhdessä paikassa. Käytä tarvittaessa I2C I / O -laajennuksia, mutta pidä ne kaikki vadelma-pi kanssa. Tarvitset myös sopivan laitteiston varmistaaksesi, ettet yritä saada liikaa virtaa pi: n GPIO-nastoista.
  • Käytä ethernet-kaapeleita yksinkertaisesti ajaaksesi releitä. Voit rakentaa oman kortin tai hankkia paneeliin asennettavat 120 / 240V: n SSD-releet, jotka asennetaan sähkökoteloon. Cat5-Ethernet-kaapelien johdot voivat käsitellä jopa 50 V: n jännitettä 320 mA: lla, mikä on enemmän kuin tarpeeksi releen ajamiseksi. Itse asiassa voit ajaa 7 releä yhdestä kaapelista (plus yksi johto maadoitusta varten). Tai jätä yksi johto kytkemättä 12 V: n lähtöä, jotta voit asentaa myös manuaalisen kytkimen. Jos ne ovat todella pitkiä, sinun on ehkä otettava huomioon jännitteen pudotus, mutta saat releitä, jotka kytkeytyvät 3-32 V: n jännitteellä. 12 V: n tulee olla enemmän kuin tarpeeksi, jopa jännitteen pudotuksella.
  • Sinun on myös syytä tutustua paikallisiin rakennusmääräyksiin saadaksesi neuvoja korkea- ja matalajännitekaapeleiden sekoittamisesta samaan laatikkoon.
  • Yksinkertainen kytkimet voidaan tehdä myös Ethernet-kaapeleiden kautta, jopa 7 kaapelia kohti, ja yksinkertaisesti johdotettu pi: n tuloihin. Jännitteen pudotus voi olla huolenaihe todella pitkille kaapeleille.
  • Voit myös haluta käyttää optoisolaattoreita pi: n suojaamiseksi vaurioilta.
  • Käytä harvoille laitteille, jotka tarvitsevat enemmän kuin releen (kuten ohjauspaneeli), Ethernet-kaapelit todellisina Ethernet. Sen ei pitäisi olla valtava kustannus, jos näitä laitteita ei ole paljon. Ne voivat olla joko toinen pi tai mikro-ohjain, jossa on ethernet.
En ole aivan varma, mistä loppukäyttäjieni tarpeet osoittautuvat.Hän on tunnelmallinen ja muuttaa mielensä hyvin nopeasti.Minun on pystyttävä vastaamaan tarpeeksi nopeasti.Siksi langan yli käytetään jonkinlaista perusprotokollaa (tässä I2C).
Maxthon Chan
2014-04-23 19:20:55 UTC
view on stackexchange narkive permalink

schematic

simuloi tätä virtapiiriä - Kaavio luotu käyttämällä CircuitLab

EUREKA ! Selvitin sen! (testaamaton, testaa sen tänä viikonloppuna)

Liitäntäpiirit ovat NXP P82B96 I2C-puskuri / jakaja ja 2 TI SN65HVD251P CAN-väyläliitynnän sirua. Pohjimmiltaan käytän I2C: tä CAN PHY: llä.

P82B96 ymmärtää I2C-protokollan ja käsittelee väylän sovittelun minulle ja antaa minulle erilliset Tx- ja Rx-nastat, jotka voidaan sitoa yhteen. Syötän ne SN65HVD251P CAN -lähetinvastaanottimeen ja se antaa minulle kaksisuuntaisen differentiaaliparin johtojen lähettämiseen.

Virtanastat tulevat suoraan, ilman puskurointia Pi: n 5V-kiskosta. (En käytä 12 V: n merkinantojännitettä ja virtaa jonkin aikaa)

Anteeksi mutta ei. Se, mitä voit tehdä, on liittää _kaksi_ I2C-yksikköä tietyllä etäisyydellä toisistaan. Se ei salli sinun yhdistää enempää kuin 2.
@WhatRoughBeast Olen etsinyt sitä NXP-dokumentaatiosta ja siinä sanotaan, että tämä on toteuttamiskelpoinen ratkaisu (ja se jotenkin pääsi heidän AN: äänsä), mutta minulle pisteestä pisteeseen on kunnossa, koska suunnitteluni itse pyytää yhtä paria muunnosyksikköä Cat5e-segmenttiä kohti.
CAN on langallinen tai kaksisuuntainen kuten i2c.En näe mitään syytä, että tämän ei pitäisi toimia niin monen laitteen kanssa kuin haluat bussissa.Olen nähnyt hänen mainitsemansa sovelluksen.Vaikuttaa siltä, että se kuvaa väylää, ei pisteestä pisteeseen.
@WhatRoughBeast - CAN on multidrop, en ole katsonut liian tarkasti, mitä OP tekee, mutta sen pitäisi olla teoriassa mahdollista.
WhatRoughBeast
2014-04-23 18:53:39 UTC
view on stackexchange narkive permalink

Riippumatta IIC: n eduista sirutasolla, ehdotettu toteutus tulee olemaan erittäin vaikeaa. Ongelma on väylän välimiesmenettely. Vaikka useita yksiköitä voidaan rinnastaa esimerkiksi RS485: n avulla, iso kysymys on seuraava:

Kuinka joku yksikkö tietää, voiko se hallita väylää tietojen lähettämiseksi?

IIC: ssä, avoimilla tyhjennyssignaalilinjoilla, kaksisuuntainen siirto on helppoa - mutta kolmivaiheisilla väyleillä tarvitset jonkin verran tapaa varmistaa, että vain yksi yksikkö yrittää ajaa väylää kerrallaan. Tämä on hankalaa. Voit tehdä sen, varsinkin jos perustat yhden isännän ja vaadit, että kaikilla orjilla on tiukat ajoitusrajoitukset tietojen lähettämiselle ja että he lähettävät tietoja vain isännän pyynnöstä, mutta tämä vaatii huomattavia ponnisteluja suunnittelussa liitäntäkortit isännälle ja orjille.

Mitä tulee fyysisiin ohjaimiin / vastaanottimiin, RS485 auttaa sinua hyvin, ja käytettävissä on paljon käyttöliittymäsiruja. Vain Google.

kwc
2014-04-23 23:11:19 UTC
view on stackexchange narkive permalink

En tiedä, oletko kiinnostunut valmiista ratkaisuista sen sijaan, että rakennat oman piirisi, mutta ajattelin huomauttaa, että Pololu myy näitä valmistettuja I²C Long Distance Differential Extender -levyjä SJTbits, joka näyttää tekevän melkein tarkalleen mitä etsit. (Täysi paljastus: Työskentelen Pololussa.)

Vaikka et halua käyttää sitä suoraan, saatat saada ideoita siitä, että katsot sen käyttämää piiriä. Voit nähdä kaavion datalehdestä; se käyttää NXP PCA9600D -puskuria, TI AM26LS31CDR -erotinohjainta ja TI AM26LS32ACDR -erovastaanotinta.

Tämä ei toimi minulle.Minun täytyy lähettää sekä väyläsignaali että virta johdon kautta.
John Lewis
2015-10-01 03:35:12 UTC
view on stackexchange narkive permalink

Tiedän, että tämä on vähän vanha ja ratkaisu näyttää olevan sovittu jonnekin vastausten joukossa, mutta minulla oli tämä ehdotus. On laitteita, kuten NXP: n PCA9614 / 5/6, joita tarkastelen nyt ratkaisuna vankempaan pitkän matkan I2C-väylään (PCA9614 2-kanavainen monipisteinen Fast-mode Plus -erot I2C-väyläpuskuri). Pohjimmiltaan on totta, että siitä on tulossa jotain muuta kuin tosi I2C, mutta väylän päissä se on laitteille näkymätön. Tämä erityinen perhe kääntää signaalit kahteen kaksisuuntaiseen differentiaalipariin, ja on myös samanlaisia ​​laitteita, jotka on jo mainittu kommenteissa, jotka kääntyvät 4 yksisuuntaiseksi differentiaalipariksi. Kääntäminen vain kahteen pariin antaa sinun käyttää CAT-kaapelia ja sinulla on vielä 2 paria virtaa / maata varten.

Dmitry Gusarov
2014-07-13 08:13:15 UTC
view on stackexchange narkive permalink

Peukkua! Yritän tällä hetkellä ratkaista melko saman ongelman. Yritän myös käyttää I2C: tä cat5: n kautta kodin automatisointiin mukautetulla pinoutilla. Syynä on kustannukset, haluan sen olevan erittäin kustannustehokas ja I2C-komponentit silti ainakin viisi kertaa halvempia kuin edes attiny13 uC (AFAIU uC vaaditaan CAN: lle ja RS485: lle).

1) Tällä hetkellä olen juuri mukana kokeiluprosessi järjestelmän ensimmäiselle osalle, ja nyt olen onnistunut 15 metrin pituisella 5 V: n kaapelilla ja suoralla SCL&SDA-liitännällä! Käyn PCF8574: llä ja kahdella releellä huoneen valojen käynnistämiseen. Pinout on

  12 INT3 + 5V4 SCL5 SDA6 GND78  

2) Ymmärrän, että sillä ei ole varaa pari lisää releitä tai ylimääräisiä 10 metriä. .. Jännitteen pudotus on merkittävä (5,5 - 4,7). Joten jännitehäviöongelmalle aion laittaa 12 V: n linjalle sen sijaan ja lisätä 5 V: n jännitesäätimet taulukoihin pitämään hieno jännite kaikkialla koko linjan pudotuksesta riippumatta. Laitan joka tapauksessa ylimääräisiä virtalähteitä tuleviin linjoihin.

3) Itse signaalia voidaan parantaa P82B96: lla tai halpa P82B715: llä jakamatta tasajohtoihin. NXP itse käyttää Cat5: tä joissakin esityksissä, mutta en löydä heidän pinoutia. Tärkeä osa tässä on, että he käyttävät selvästi signaalilinjoja eri pareittain ... esim. yksi pari on GND + SDA, toinen on VCC + SCL.

4) Toinen mielenkiintoinen asia - nämä puskurit voivat yksinkertaisesti nostaa amplitudia jopa 12 V: iin kohinan vastuksen lisäämiseksi. Joten yritän todennäköisesti laittaa 12 V: n myös signaalilinjoille, ja sen pitäisi sallia vetojen vetäminen suoraan 12 V: n johdosta ... Mutta se pakottaa minut asettamaan jotain P82B96: ta jokaiselle laitteelle.

Kuten huomaat, käytän myös erillistä keskeytyslinjaa ... Master on tällä hetkellä PC: llä liitetyssä arduino-kortissa. Ensisijainen pääohjelmisto on joka tapauksessa 24x7-tietokoneessa, joten arduino vain kääntää signaalin ja käsittelee keskeytykset. Voin lähettää tietyn kokoonpanon aluksen keskeytysten käsittelyyn esim. käsittelemään kätevää kytkimen vaihtamista keskeytyksen kautta ... Se antaa minun unohtaa viivästykset, kun vaihdat valoa manuaalisesti. Keskeytetty käsittely on i2c: n lisäetu.

Joten ajatukseni on, että I2C on tarpeeksi yksinkertainen sovellettavaksi < = 100m: n kaupunkiasuntojen kaapelointiin. Toivon erosignaalin sijaan toivon, että pystyn vähentämään sen sijaan ylimääräistä taajuutta.

Pidän ajatuksestasi laittaa sekä 5 V että 12 V, koska tämä vähentää säätimien tarvetta ja vähentää kustannuksia ... koko idea monijohdinväylän avulla päätepisteiden kustannusten vähentämiseksi, harkitsen tätä myös uudella pinoutilla :)

Tämä on pikemminkin laajennettu kommentti kysymykseen kuin vastaus, koska tilanne ei ole sama kuin OP: n eri päälaitteisto, erilainen signalointijärjestelmä.Mutta se liittyy tarpeeksi läheisesti siihen, että annan sen seistä.


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...