Ultrasonic måttband (4 / 13 steg)

Steg 4: några ord om I²C buss



jag vet det finns en massa information om I²C protokoll ute på webben, fortfarande jag ska ge er en kort beskrivning, att göra den instructable mer komplett.

Kort beskrivning av bussen
I²C bussen är en 8 eller 10 bit, dubbelriktad seriell kommunikationsprotokoll, med överföringshastigheter på 100 KHz, 400 KHz eller nyligen 1 MHz (snabb läge plus). Bussen består av två dubbelriktade signaler (oftast heter SCL - seriell klocka, SDA - seriell data). Dessa signaler ansluta till varje I²C enhet i vår krets vi vill kommunicera med.
Thhe SDA linje används för seriell dataöverföring, raden SCL garanterar att kommunikationen är i synk, i båda riktningar. Förutom dessa två måste vi också ledar-I²C och I²C slavar att dela en gemensam grund.

Stiften i de enheter som är anslutna till en I²C buss är öppen-samlare eller öppen drain. Detta innebär att de kan väcka flytande kommunikationslinjen till marken, och de kan släppa den för att stiga till den nivå som drog de upp.
Det är mycket viktigt att förstå, att termen "release" inte innebär en '1', det betyder bara, att master eller slav inte är körning kommunikationslinjen. Med detta sagt, måste vi se till, att linjen inte är att bli låg, när det inte är tänkt att. Detta kan göras genom att installera en pull-up till power järnväg av kretsen. Vi behöver inte (eller inte måste) sätta en pull-up för varje slav i den krets, som skulle innebära en parallell anslutning, vilket - om alltför många motstånd var installerat - inte skulle tillåta stiftet att få linjen ner.
Värdet på motståndet används behöver inte vara ett givet värde, vanligtvis några k motstånd kommer att fungera bra.

I²C protokollet är master-slav baserat. En master beslutar när de slav enheterna kommunicerar genom vissa data som skickas till I²C buss. I vårt fall måste PIC konfigureras som en slav, eftersom Arduino kommer att vara herre i kretsen. En slav är oftast en sensor, en minneskrets, eller något som kan utöka funktioner en mikrokontroller.
All överföring utlöses av befälhavaren, slavarna inte kommunicera något, såvida inte befälhavaren ber dem att göra så. I²C buss funktion förutsätter, att en enda slavadress erkänns endast av en enda slav. När en slav är markerad får alla andra slavar tiga.
Befälhavaren är ansvarig för alla slags timings - i de flesta system (single master) klocka linjen manipuleras endast av befälhavaren. Detta innebär styrs att överföringshastigheten av I²C master av kretsen.

• När en mästare vill starta en överföring, det utför en start sekvens på I²C bussen. En start tillstånd uppstår när SDA linjen kommer till låg nivå medan SCL linjen är hög.
• När befälhavaren vill signalera, att överföringen är över, skickar den ett stoppvillkor, som är en stigande kanten på SDA SCL-värdet är högt.
• Data får överföras i tidsramen som mellan dessa två händelser. För lite data för att vara giltig, måste SDA inte ändra värde, medan SCL-värdet är hög. Om den gör det, bit-sekvens är misstolkas som ett stopp eller starta tillstånd, och leder till kommunikationsfel.

I mitt fall sker dataöverföring i 8-bitars grupper. Data - efter big endian mönstret - är klockat med den mest signifikanta biten går först. Efter varje 8-th bit blir klockat, måste slav signalera tillbaka för att överföringen ska betraktas som en framgångsrik datautbyte. Denna signal kallas ett "erkänna", och den förutsätter, att slaven sänker SDA linjen på 9-th klocksignal på raden SCL.

Som jag nämnt tidigare, måste varje slav ha en unik slavadress. Denna slavadress är 7 bitar lång, vilket innebär att totalt 128 enheter kan kopplas till den I²C bussen, utan någon form av ingrepp i kretsen.
När det gäller att ta itu med, befälhavaren sänder ut 8 bitar, adress 7 som är slav bitar, den sista en bestämma om befälhavaren vill läsa eller skriva i slav enheter interna register. Denna sista biten är känd som R/W lite, en '0' på denna bitfält innebär en skriva, en '1' på denna bitfält innebär en läsa.
Exempelvis om man vill skriva till en slav enhet med en slavadress av 0b1010000, måste han skicka 0b1010000 efter först börja skick. Om en mästare vill läsa från samma enhet, måste den första byten efter startvillkoret vara 0b10100001. Dessa har förvandlats till hexadecimalt ge 0xA0 och 0xA1. Datablad ge normalt slavadress i hexadecimalt format.

I vissa fall har tillverkaren tillåter användaren att lägga till mer av samma chip i den I²C bussen: detta uppnås genom att tillåta användaren att styra ett antal slav adress bitar. Till exempel har en I²C EEPROM vanligtvis lägre 3 bitar av dess slavadress gett ut på stift. Dra dessa höga innebär en '1' på motsvarande i slav adress byten, innebär dra dem till marken en '0' på den platsen.

Det finns situationer, där befälhavaren är alldeles för snabb för slaven, man vill läsa snabbare, än slav kunde hantera. För att undvika sådana här situationer, kan I²C slav enhetstillverkare bygga i en funktion, som gör slaven att dra raden SCL låg, medan de är upptagen med att köra kommandon från befälhavaren. När slaven sker med mätning, läsning, avkänning, etc. - släpper det SCL linjen, så att pull-ups till ta hög-linjen. Befälhavaren kommer att inte upprätta en annan överlåtelse, om inte den ser raden SCL hög. Detta benämns ofta som "klocka stretching".

Exempel på en startvillkoret följt av en read-kommando från slav 0xA3. Läs operationen är giltig, vi nu detta, från ACK (erkänner) signal skickas av slav.

Se Steg
Relaterade Ämnen

DIY Digital måttband

Hej allaIdag hoppas jag att lära dig allt om ultraljudssensorer och förhoppningsvis i slutet har du en trevlig liten digital måttband egen att använda som du vänligen.Njut avSteg 1: Reservdelslista Detta är min andra version av detta projekt så om du...

Digital ultraljud måttband

Detta instructable visar hur man bygger ett digitial måttband med en HC - SR04 ultraljud avstånd sensor och en Arduino Pro Mini. Detta var inspirerad av elecronics för alla är instructable som kan hittas här.Jag har angett detta i Tech tävlingen så V...

433 MHz måttband antenn-passar UHF sändare spårning!

Detta Instructable avser design & utvärdering av en enkel måttband baserat 433 MHz 3 element Yagi antenn. En effektiv mottagare gjordes genom att "övertala" en ~ US$ 4 Dorji 433 MHz be (amplitud Shift Keying) data modul till analoga signalen...

Arduino Ultrasonic Sensor

Detta är exempel att använda ultrasonic sensor (HC-SR04) i arduino.Steg 1: Del lista:Arduino UNO R3 styrelseHC-SR04 Ultrasonic SensorRöd LEDGrön LED560 ohm (grön, blå, brun, guld) motståndHalfBreadboardsladdarSteg 2: Ansluta komponenterna Steg 3: Skr...

Arduino - Ultrasonic Sensor med lysdioder och Summer

Hi guys detta är min första tutorial, jag har precis börjat för några månader sedan lära sig elektronik (tidigare jag har bara visste hur man programmerar i C och Python). När jag avslutat projektet (tog mig ca 5 timmar eller något) har jag beslutat...

Distansera mätningen och hinder detektering med NXP 89v51rd2fn och ultrasonic sensor HC-SR04.

Alla använder arduino uno eller mega att göra projekt som de är lätt att använda och koden för arduino är lätt tillgängliga på arduino forum och ingen använder atmel, philips eller andra microcontroller för att göra projekt som kodning är ganska svår...

300-fots Pocket måttband

hur många 300 fot måttband passar i din ficka och kostar under $2?Jag hade en mycket trevlig, något stor, öppen rulle-typ 300 fot inspektörernas måttband som fungerade bra tills en dag det sår roligt och jag tillbringade ett par fruktlösa timmar förs...

Metal bältesklipp (för måttband) - gjorde @TechShop!

Måttband är dyrt dessa dagar, speciellt de med bälte klipp.Jag fick en liten från en järnaffär och tänkte jag skulle göra en självObs: Stål var förmodligen inte det bästa materialet för MT sig var aluminium.I framtiden kommer jag också använda en län...

Ultrasonic skala

I detta projekt guidar jag dig hur man gör en digital skala med hjälp av Arduino uno och några andra objektDetta är en mycket lätt att projektetSteg 1: Objekt krävs 1. Arduino uno2. ultrasonic sensor3. LCD-skärm4. par hoppare ledningar5. skärbrädaSte...

Hur man läser ett måttband

Lära sig att läsa ett måttband är en viktig färdighet att lära sig, oavsett om du gör hem projekt, undervisning dina barn eller elever, eller vill få in hantverk i vissa kapacitet. Vi här på Construct-Ed (e-lärande för konstruktion och handel färdigh...

Där emellan måttband

Har du någonsin kämpat för att noggrant mäta mellan två ytor?Jag har nyligen upp-cykling en gammal hyllor enhet och behövs för att mäta mellan bottnar i två hus i hyllorna att skära i avdelare. [Höljen är spåren som är skuren i trä plankor att tillåt...

Ultrasonic avståndsmätare med LCD-display på Arduino UNO

I denna tutorial kommer vi att se en annan användning av modulen HC-SR04 ultraljud. Denna modul används ofta på robotar och leksaksbilar för att hitta hinder men det kan användas för att mäta avstånd också.Avstånd som mäts av HC-SR04 visas på vår äls...

Kåda måttband klockan

Vi har velat göra en klocka för länge nu. Vi har också velat prova formning och gjutning ett objekt som var lite större och mer ingående så vi kunde verkligen testa gränserna för med Famowood glasyr päls som en gjutning harts. Måttband klockan är res...

Arduino: HC-SR04 Ultrasonic Sensor

Syfte:Utnyttja en HC-SR04 ultrasonic sensor med en Arduino att mäta distansera av något föremål.Den grundläggande idén bakom en ultrasonic sensor:En ultrasonic sensor utlöser en signal om att färdas i en rak bana, och sedan om utlösta signalen stöter...

Måttband antennen

letar du efter ett lätt barn vänliga projekt? Letar du efter ett projekt för att uppmuntra en ny generation av skinka radiooperatören?Detta projekt är ovanligt, så det är något som säkert kommer att fånga uppmärksamheten hos alla, särskilt barn. Det...

Ultrasonic avståndsmätare med en ATtiny85 (med sköld)

Jag är här att visa dig hur du använder en HC-SR04 ultraljud Range Finder med en ATtiny85 samt programmering av ATtiny85 med den underbara sköld som randofo skapat.Förteckning över material:ATtiny85 programmering bibliotekArduino UnoHC-SR04 ultraljud...

Hinder Avoider med HC-SR04 Ultrasonic Sensor

ÖversiktDetta projekt använder en HC-SR04 Ultrasonic sensor och en Arduino att mäta avståndet mellan användaren och ett hinder och orsaka en LED, Summer och motor till flash, piper och vibrerar respektive att varna användaren att han närmar sig ett h...

Kul counter med Bluetooth och Ultrasonic Sensor

Hej, vill jag visa ett enkelt sätt att räkna något och Visa det på ditt system. Här använder vi Bluetooth så du kan visa resultaten på en större skärm (i stället för LCD) trådlöst i realtid. För dem obekanta med node.js, inte oro har vi inkluderat al...

Hur gränssnittet Ultrasonic Sensor (HCSR04) till arduino uno

Ultraljudssensorer är mycket effektivare än andra hinder detektering sensorer. Ultraljudssensorer relativt billig och också de ultraljud utsläppsländerna och detektorer är portabla utan behov av komplicerade kretsar. Realtid stöd och konstgjorda visi...