1-Wire

1-Wire er en enkel seriel kommunikationsprotokol, hvor alle data sendes over én ledning plus jord. Protokollen er kendt fra sensorer og chips fra blandt andre Maxim/Dallas-familien.

Den simple forbindelse

En enkel 1-Wire-forbindelse bruger én dataledning, DQ, plus fælles GND. DQ holdes normalt høj af en pull-up-modstand, og enhederne trækker selv linjen lav, når de sender.

Simpel 1-Wire-forbindelse med controller, sensor, DQ, GND og pull-up-modstand
1-Wire bruger én fælles dataledning. Pull-up-modstanden fører DQ til forsyningen, mens enhederne kan trække linjen lav.

Nogle 1-Wire-enheder kan få strøm gennem DQ, såkaldt parasite power. Andre forbindes med en separat VDD-ledning. Det skal altid afgøres ud fra den konkrete enheds datablad.

Hvordan 1-Wire fungerer

Hastighed i byte

For 1-Wire-enheder som DS18B20 giver tidslængden af hvert bit-slot omtrent følgende rå byte-rater:

Den faktiske nyttedata-rate bliver lavere, fordi reset, presence, ROM-adresser og kommandoer også skal sendes. Mange sensorer fungerer kun ved standard speed.

Typiske anvendelser

På Arduino Uno

Vigtige begreber

Flere enheder på samme ledning

Flere 1-Wire-enheder kan dele DQ og GND. Controlleren bruger enhedens unikke 64-bit ROM-kode til at vælge, hvilken sensor der skal svare.

1-Wire-bus med en controller og tre sensorer på samme DQ-ledning
Alle enheder deler DQ og GND. Den unikke ROM-kode adskiller enhederne logisk, selv om de er forbundet til samme ledning.

Reset og presence-puls

En typisk kommunikation begynder med, at controlleren sender en reset-puls. En tilsluttet enhed svarer med en presence-puls, så controlleren ved, at der findes en 1-Wire-enhed på bussen.

Forenklet 1-Wire-tidslinje med reset-puls og presence-puls
Forenklet tidslinje: controllerens reset efterfølges af en presence-puls fra enheden. De præcise tider afhænger af 1-Wire-hastighed og enhedstype.

Kilder