Hoe Schuifregister Op Arduino Aan Te Sluiten

Inhoudsopgave:

Hoe Schuifregister Op Arduino Aan Te Sluiten
Hoe Schuifregister Op Arduino Aan Te Sluiten

Video: Hoe Schuifregister Op Arduino Aan Te Sluiten

Video: Hoe Schuifregister Op Arduino Aan Te Sluiten
Video: How to Add Outputs to an #Arduino using a Shift Register - The Learning Circuit 2024, Mei
Anonim

In een van de vorige artikelen hebben we het al even gehad over het gebruik van een schuifregister, met name de 74HC595. Laten we de mogelijkheden en procedure voor het werken met deze microschakeling eens nader bekijken.

Schakelregister 74HC595
Schakelregister 74HC595

Noodzakelijk

  • -Arduino;
  • - schuifregister 74HC595;
  • - aansluitdraden.

instructies:

Stap 1

Schuifregister 74HC595 en dergelijke worden gebruikt als apparaten voor het converteren van seriële gegevens naar parallel, en kunnen ook worden gebruikt als een "latch" voor gegevens, waarbij de overgedragen status behouden blijft.

De pinout (pinout) wordt weergegeven in de afbeelding links. Hun doel is als volgt.

Q0… Q7 - parallelle data-uitgangen;

GND - aarde (0 V);

Q7 '- seriële data-uitgang;

^ MR - reset master (actief laag);

SHcp - schuifregisterklokinvoer;

STcp - "latch" klokpulsingang;

^ OE - uitgang inschakelen (actief laag);

Ds - seriële gegevensinvoer;

Vcc - voeding +5 V.

Structureel is de microschakeling in verschillende soorten gevallen gemaakt; Ik zal degene gebruiken die wordt weergegeven in de afbeelding rechts - de uitvoer - omdat het is gemakkelijker te gebruiken met een breadboard.

Shift register uiterlijk en pinout
Shift register uiterlijk en pinout

Stap 2

Laat me in het kort de SPI seriële interface herinneren, die we zullen gebruiken om gegevens naar het schuifregister over te dragen.

SPI is een vierdraads bidirectionele seriële interface waaraan een master en een slave deelnemen. De master zal in ons geval de Arduino zijn, de slave zal register 74HC595 zijn.

De ontwikkelomgeving voor Arduino heeft een ingebouwde bibliotheek om aan de SPI-interface te werken. Bij het toepassen ervan worden de conclusies gebruikt die in de figuur zijn gemarkeerd:

SCLK - SPI-klokuitgang;

MOSI - gegevens van master naar slave;

MISO - gegevens van slave naar master;

SS - slave-selectie.

Arduino-bord standaard SPI-pinnen
Arduino-bord standaard SPI-pinnen

Stap 3

Laten we het circuit samenstellen zoals op de afbeelding.

Ik zal ook een logische analysator aansluiten op alle pinnen van de schuifregistermicroschakeling. Met behulp hiervan zullen we zien wat er op fysiek niveau gebeurt, welke signalen waar naartoe gaan en we zullen erachter komen wat ze betekenen. Het moet er ongeveer zo uitzien als op de foto.

Aansluitschema voor schuifregister 74HC595 naar Arduino to
Aansluitschema voor schuifregister 74HC595 naar Arduino to

Stap 4

Laten we zo'n schets schrijven en deze in het Arduino-geheugen laden.

De variabele PIN_SPI_SS is een interne standaardconstante die overeenkomt met pin "10" van de Arduino wanneer deze wordt gebruikt als de master van de SPI-interface die we hier gebruiken. In principe kunnen we net zo goed elke andere digitale pin op de Arduino gebruiken; dan zouden we het moeten declareren en de bedrijfsmodus ervan moeten instellen.

Door deze pin LOW te voeren, activeren we ons schuifregister voor zenden/ontvangen. Na de transmissie verhogen we de spanning weer naar HIGH en eindigt de uitwisseling.

Een schets om de werking van het schuifregister te demonstreren
Een schets om de werking van het schuifregister te demonstreren

Stap 5

Laten we onze schakeling omzetten in werk en kijken wat de logische analysator ons laat zien. Het algemene beeld van het timingdiagram wordt getoond in de afbeelding.

De blauwe stippellijn toont 4 SPI-lijnen, de rode stippellijn toont 8 kanalen met parallelle gegevens van het schuifregister.

Punt A op de tijdschaal is het moment waarop het getal "210" wordt overgedragen naar het schuifregister, B is het moment waarop het getal "0" wordt geschreven, C is de cyclus die zich vanaf het begin herhaalt.

Zoals je kunt zien, van A naar B - 10,03 milliseconden, en van B naar C - 90,12 milliseconden, bijna zoals we in de schets vroegen. Een kleine toevoeging in 0, 03 en 0, 12 ms is de tijd voor het overzetten van seriële data van de Arduino, dus we hebben hier niet precies 10 en 90 ms.

Timingdiagram van Arduino-uitwisseling en schuifregister 74HC595
Timingdiagram van Arduino-uitwisseling en schuifregister 74HC595

Stap 6

Laten we sectie A eens nader bekijken.

Helemaal bovenaan staat een lange puls waarmee de Arduino de transmissie op de SPI-ENABLE-lijn - slave-selectie initieert. Op dit moment beginnen SPI-CLOCK-klokpulsen te worden gegenereerd (tweede regel van boven), 8 stuks (voor overdracht van 1 byte).

De volgende regel van boven is SPI-MOSI - de gegevens die we van de Arduino naar het schuifregister overbrengen. Dit is ons nummer "210" in binair - "11010010".

Na het voltooien van de overdracht, aan het einde van de SPI-ENABLE-puls, zien we dat het schuifregister dezelfde waarde heeft ingesteld op zijn 8 poten. Ik heb dit gemarkeerd met een blauwe stippellijn en de waarden gelabeld voor de duidelijkheid.

Het nummer 210 instellen op een parallelle bus via SPI
Het nummer 210 instellen op een parallelle bus via SPI

Stap 7

Laten we nu onze aandacht richten op sectie B.

Nogmaals, het begint allemaal met het kiezen van een slave en het genereren van 8 klokpulsen.

De gegevens op de SPI-MOSI-lijn zijn nu "0". Dat wil zeggen, op dit moment schrijven we het getal "0" in het register.

Maar totdat de overdracht is voltooid, slaat het register de waarde "11010010" op. Het wordt uitgevoerd naar de parallelle pinnen Q0.. Q7 en wordt uitgevoerd wanneer er klokpulsen in de lijn zijn van de parallelle uitgang Q7 'naar de SPI-MISO-lijn, die we hier zien.

Het nummer 0 instellen op een parallelle bus via SPI
Het nummer 0 instellen op een parallelle bus via SPI

Stap 8

Zo hebben we de kwestie van de informatie-uitwisseling tussen het masterapparaat, de Arduino, en het schuifregister 74HC595 in detail bestudeerd. We leerden hoe we een schuifregister kunnen aansluiten, er data in kunnen schrijven en er data uit kunnen lezen.

Aanbevolen: