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.
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
Der bruges typisk én data-ledning til både data og strøm via pull-up.
Hver enhed har en unik romadresse, så flere enheder kan være tilsluttet samme ledning.
Kommunikationen sker med relativt lave hastigheder, men det er meget praktisk til flere sensorer på den samme linje.
Hastighed i byte
For 1-Wire-enheder som DS18B20 giver tidslængden af hvert bit-slot omtrent følgende rå byte-rater:
Standard speed: ca. 1–2 kB/s
Overdrive speed: ca. 8–16 kB/s, hvis alle enheder på bussen understøtter det
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
Temperatursensorer
Adressebare sensorer i forskellig elektronik
Små netværk af sensorer til miljømålinger
På Arduino Uno
Uno understøtter 1-Wire normalt via softwarebiblioteker, ikke nødvendigvis som en dedikeret hardware-bus.
Det kræver typisk en data-pin og en pull-up-modstand.
Det er især brugbart, når du vil forbinde flere 1-Wire-enheder på én pin.
Vigtige begreber
ROM-adresse – unik identifikation af hver 1-Wire-enhed
Pull-up – nødvendigt for at få den ene ledning til at fungere korrekt
Software-bibliotek – ofte nødvendigt for at håndtere protokollen
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.
Alle enheder deler DQ og GND. Den unikke ROM-kode adskiller enhederne logisk, selv om de er forbundet til samme ledning.
1 fælles dataledning: DQ
1 fælles reference: GND
Én pull-up-løsning for bussen
Unik ROM-kode for hver enhed
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 tidslinje: controllerens reset efterfølges af en presence-puls fra enheden. De præcise tider afhænger af 1-Wire-hastighed og enhedstype.
Controlleren trækker DQ lav i reset-vinduet.
Controlleren frigiver DQ.
En tilsluttet enhed trækker DQ lav i presence-vinduet.