DS2482-100 1Wire master Raspberryyn

Osaluettelo

ESD suoja ei ole pakollinen, mutta suojaa komponentteja (myös Raspberryä) ESD purkauksilta. Jos vedät 1wire väylää pitkiä vetoja niin väylä toimii myös tehokkaana antennina ja esimerkiksi ukkosilmalla suhteellisen kauaskin iskevä salaman isku voi olla tuohoisa jos suojaa ei ole.

Datalehdet

http://datasheets.maximintegrated.com/en/ds/DS2482-100.pdf

http://datasheets.maximintegrated.com/en/ds/DS9503.pdf

Raspberryn piikkirima

http://elinux.org/RPi_Low-level_peripherals

Kytkentäkuva

DS2482-100_skema.png

Kokoaminen

Piirilevy?

Itse käytin ihan vain liuskakuparoitua reikälevyä. Parempi varmaan olisi tehdä ihan oikea piirilevy, mutta kahden komponentin takia ajattelin laiskasti tyytyä reikälevyyn. Ainut modifikaatio levylle oli se että vedin moralla yhden liuskan kahtia reikien päältä. Vastaavasti vedin DS2482-100 komponentin alta liuskat poikki jotta vastakkaisilla puolin olevat jalat eivät ole kontaktissa toisiinsa. I2C suojapiirin alta vedin myös kaksi liuskaa poikki. Eli yhteensä tarvi katkoa kolme liuskaa DS2482-100 alta ja kaksi DS9503P alta ja lisäksi DS2482-100 alta keskimmäinen liuska halki.

1wirePCB.jpg

n2o_skillz:n näkemys piirilevystä

Osien juottaminen

Pintaliitoskomponenttien juottaminen voi kuulostaa haastavalta kokemattomalle kolvinkäyttäjälle, mutta todellisuudessa se on yllättävän helppoa. Kannattaa aloittaa homma juottamalla DS2482-100 paikalleen. Täppää ensin kolvin kärjellä valmiiksi tinaa liuskojen päälle. Ota sitten DS2482-100 pihdeillä kiinni, asettele se siten että jalat ovat sopivasti liuskojen päällä. Kosketat joka jalkaa sen verran että ne uppoavat sulan tinan sekaan. Jos saat tinan sulamaan niin jalkojen pitäisi tarttua nätisti tinaan kiinni. Sitten on vuorossa toisen puolen jalat, jotka juottuvat helpoiten paikalleen laittamalla kolvin kärkeen vähän tinaa ja koskettamalla kupariliuskaa ja jalkaa yhtäaikaa kolvilla. Kunhan kupariliuska lämpenee tarpeeksi kuumaksi, tina imeytyy jalan ja liuskan väliin muodostaen sievän juotoksen. Kolvaa kaikki jalat kiinni.

Jos haluat käyttää myös DS9503P ESD suojapiiriä niin sen juottaminen onnistuu käytännössä yhtä helposti. Tässä piirissä on molemmilta puolin vain kaksi jalkaa kytketty ja yksi on täysin kytkemättä. Voit siis asettaa piirin siten että ylimmät jalat menevät yhden kupariliuskan päälle ja keskimmäiset ja alimmat seuraavan lisukan päälle. Alin jalkapari jää samalle liuskalle keskimmäisen kanssa mutta tämä ei haittaa. Vaikka alimmat olisivatkin kontaktissa keskimmäisten jalkojen kanssa, niin se ei vaikuta piirin toimintaan. Juota tämä samalla tavalla kuin DS2482-100, eli ensin toiselle puolen tinatäpät kuparille valmiiksi ja sitten toiselle puolen kolvilla tinaa jalkojen alle.

Johtoja

Koska käytimme liuskakuparoitua reikälevyä, niin tarvitsemme vielä muutaman hyppylangan paikalleen jotta lopullinen kytkentä komponenttien välille muodostuu. Kuten voimme datalehdestä lukea, niin DS2482-100 pinni numero 1 kytketään Raspberryn piikkirimaan 3.3V pinniin. Tämä löytyy piikkiriman siitä päädystä mikä on aivan piirilevyn kulmassa. I2C linjan kello ja data tulee pinneihin 4 ja 5. Nämä on merkitty samoin (SCL serial clock, SDA serial data) datalehdess ja Raspberryn piikkiriman kuvassa. Pinnit 7 ja 8 kertovat millä osoitteella DS2482-100 näkyy I2C väylässä, osoittaen alimpien bittien tilan suoraan. Nämä on yksinkertaisinta vain kytkeä maahan hyppylangalla.

Pinni numero 2 kytketään DS9503P piirin pinnin 1. Jos et käytä ESD suojaa niin DS2482-100 pinni 2 kytketään suoraan 1wire väylän datalinjaan. Muutoin 1wire data ja maa tulee DS9503P piirin pinneihin 6 ja 5.

Jos käytit liuskakuparoitua reikälevyä piirilevyaihiona, niin jalkojen 2,3 ja 7 kanssa tulee olla taas huolellinen ettei reikien läpi kolvatut johdto oikosulje halkaistua kupariliuskaa.

Ennen kuin kytket mitään Raspberryyn, niin tarkista kaikki kytkennät yleismittarilla huolellisesti. Raspberryn piikkirimasta on suora ja täysin suojaamaton yhteys Raspberryn sydämenä toimivan BCM2835 piirin sisään, ja varomaton käsittely voi saada koko raspberryn käyttökelvottomaksi.

1wireRaspberry.jpg

I2C to 1wire -adapteri liitettynä Raspberryyn

Softa

Itselläni oli pohjalla Raspbian wheezy. Sinällänsä muutkin distrot toimii mahdollisesti ihan samalla tavalla.

Tarvitset muutaman paketin joita ei ole debianissa asennettuna valmiina:

sudo apt-get install i2c-tools owfs ow-shell

Nyt voit ladata kerneliin varsinainen i2c väyläajuri ja sitten user space rajapinta:

sudo modprobe i2c_bcm2708
sudo modprobe i2c_dev

Moduulien lataus on tehtävä joka bootin jälkeen uudelleen. Jos haluat että se tapahtuu automaattisesti, lisää moduulien nimet /etc/modules tiedostoon.

Tämän jälkeen pääset jo kokeileman I2C väylän skannaamista. i2cdetect komennon viimeisenä parametrina tulee I2C-väylän numero. Itselläni väylä numero 1 on se joka kytkeytyy piikkirimaan ja 0 väylästä ei löydy mitään. Joskus, ilmeisesti laitteesta riippuen, piikkirimaan tuleva I2C väylä onkin numeroltaan 0. Kokeile siis myös väylää 0 jos väylä 1 ei toimi.

pi@raspberrypi ~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Jos kytkennät oli kunnossa eikä tähän mennessä ole savuakaan vielä mistään tullut, niin lopputulos pitäisi olla ylläolevan kaltainen. Jos kytkit DS2482-100 piirin osoitinlinjat johonkin muualle kuin maahan, niin I2C väyläosoite on silloin jotain muuta kuin 0x18. Jos taas saat tulostuksen jossa kaikilla osoitinlinjoilla on vain viivaa, niin silloin DS2482-100 ei vastaa I2C väylään. Tarkista kytkennät ja kokeile uudelleen.

Jos pääsit onnistuneesti näin pitkälle niin seuraava steppi on esimerkiksi owserverin pystytys. Editoi /etc/owfs.conf tiedostoa ja lisää sinne rivi:

server: device = /dev/i2c-1

Tässä on myös viimeisenä numero 1 I2C väylän numero.

Ja käynnistä owserver uudelleen

sudo /etc/init.d/owserver restart

Jos kaikki on niinkuin pitää, niin vähintäänkin yksi bus master pitäisi olla näkyvissä

pi@raspberrypi ~ $ owdir
/bus.0
/uncached
/settings
/system
/statistics
/structure
/simultaneous
/alarm

Jos jotain on taas pielessä, niin /bus.0 rivi puuttuu. Lisätäänpä pari lämpöanturia väylälle ja kokeillaan uudelleen:

pi@raspberrypi ~ $ owdir
/10.507235020800
/10.F04F35020800
/10.FF9135020800
/bus.0
/uncached
/settings
/system
/statistics
/structure
/simultaneous
/alarm

Noniin, näyttää hyvältä. Leikitään lisää. Luetaan yhdeltä anturilta lämpötila:

pi@raspberrypi ~ $ echo $(owread /10.507235020800/temperature)
1.0625

Hyvin toimii. Luetaan kaikki:

pi@raspberrypi ~ $ for i in $(owdir | grep 10) ; do echo  $i  $(owread $i/temperature) ; done
/10.507235020800 6.75
/10.F04F35020800 8.9375
/10.FF9135020800 15.625

Ja mitä kaikkea me tällä voimmekaan tehdä...

started
2012-10-03


CategoryProjekti