Com Connectar El Registre De Canvis A Arduino

Com Connectar El Registre De Canvis A Arduino
Com Connectar El Registre De Canvis A Arduino

Taula de continguts:

Anonim

En un dels articles anteriors, ja vam parlar breument sobre l’ús d’un registre de torns, en particular, el 74HC595. Vegem de prop les capacitats i el procediment per treballar amb aquest microcircuit.

Necessari

  • - Arduino;
  • - registre de torns 74HC595;
  • - cables de connexió.

Instruccions

Pas 1

El registre de desplaçament 74HC595 i similars s'utilitzen com a dispositius per convertir dades en sèrie en paral·lel, i també es poden utilitzar com a "tancament" de dades, mantenint l'estat transferit.

El pinout (pinout) es mostra a la figura de l'esquerra. El seu propòsit és el següent.

Q0 … Q7: sortides de dades paral·leles;

GND - terra (0 V);

Q7 ': sortida de dades en sèrie;

^ MR - reset master (actiu baix);

SHcp - entrada de rellotge de registre de desplaçament;

STcp: entrada de pols de rellotge "latch";

^ OE - habilitació de sortida (baixa activa);

DS: entrada de dades en sèrie;

Vcc - font d'alimentació +5 V.

Estructuralment, el microcircuit es fabrica en diversos tipus de casos; Utilitzaré el que es mostra a la figura de la dreta - la sortida - perquè és més fàcil d'utilitzar amb una taula de treball.

Pas 2

Deixeu-me recordar breument la interfície sèrie SPI, que utilitzarem per transferir dades al registre de desplaçament.

SPI és una interfície serial bidireccional de quatre fils en què participen un mestre i un esclau. El mestre en el nostre cas serà l’Arduino, l’esclau serà el registre 74HC595.

L’entorn de desenvolupament d’Arduino té una biblioteca integrada per treballar a la interfície SPI. A l’hora d’aplicar-lo, s’utilitzen les conclusions que es marquen a la figura:

SCLK: sortida de rellotge SPI;

MOSI: dades de mestre a esclau;

MISO: dades d'esclau a amo;

SS: selecció d'esclaus.

Placa Arduino pins SPI estàndard
Placa Arduino pins SPI estàndard

Pas 3

Muntem el circuit com a la imatge.

També connectaré un analitzador lògic a tots els pins del microcircuit del registre de desplaçament. Amb l’ajut d’això, veurem què passa a nivell físic, quins senyals van cap a on, i descobrirem què volen dir. Ha de tenir un aspecte semblant a la foto.

Esquema de cablejat del registre de canvis 74HC595 a Arduino
Esquema de cablejat del registre de canvis 74HC595 a Arduino

Pas 4

Escrivim un esbós com aquest i el carreguem a la memòria Arduino.

La variable PIN_SPI_SS és una constant estàndard interna que correspon al pin "10" de l'Arduino quan s'utilitza com a mestre de la interfície SPI que estem utilitzant aquí. En principi, podríem fer servir qualsevol altre pin digital a l'Arduino; llavors hauríem de declarar-lo i establir el seu mode de funcionament.

En alimentar aquest pin BAIX, activem el nostre registre de torns per transmetre / rebre. Després de la transmissió, tornem a elevar el voltatge a HIGH i l’intercanvi finalitza.

Un esbós per demostrar el funcionament del registre de torns
Un esbós per demostrar el funcionament del registre de torns

Pas 5

Transformem el nostre circuit en treball i vegem què ens mostra l’analitzador lògic. La vista general del diagrama de temps es mostra a la figura.

La línia discontínua blava mostra 4 línies SPI, la línia discontínua vermella mostra 8 canals de dades paral·leles del registre de desplaçament.

El punt A de l'escala de temps és el moment en què el número "210" es transfereix al registre de desplaçament, B és el moment en què s'escriu el número "0", C és el cicle que es repeteix des del principi.

Com podeu veure, de A a B - 10,03 mil·lisegons i de B a C - 90,12 milisegons, gairebé tal com vam demanar a l'esbós. Una petita addició a 0, 03 i 0, 12 ms és el moment de transferir dades de sèrie des de l’Arduino, de manera que no tenim exactament 10 i 90 ms aquí.

Diagrama de temps del registre Arduino d'intercanvi i desplaçament 74HC595
Diagrama de temps del registre Arduino d'intercanvi i desplaçament 74HC595

Pas 6

Vegem de prop la secció A.

A la part superior hi ha un pols llarg amb el qual l’Arduino inicia la transmissió a la línia SPI-ENABLE - selecció esclava. En aquest moment, es comencen a generar polsos de rellotge SPI-CLOCK (segona línia des de la part superior), de 8 peces (per transferir 1 byte).

La següent línia de la part superior és SPI-MOSI: les dades que transferim des de l’Arduino al registre de desplaçaments. Aquest és el nostre número "210" en binari: "11010010".

Després de completar la transferència, al final del pols SPI-ENABLE, veiem que el registre de desplaçament ha establert el mateix valor a les seves 8 potes. Ho he ressaltat amb una línia de punts blaus i he etiquetat els valors per a més claredat.

Configuració del número 210 en un bus paral·lel mitjançant SPI
Configuració del número 210 en un bus paral·lel mitjançant SPI

Pas 7

Passem ara la nostra atenció a la secció B.

Una vegada més, tot comença triant un esclau i generant 8 impulsos de rellotge.

Les dades de la línia SPI-MOSI ara són "0". És a dir, en aquest moment escrivim el número "0" al registre.

Però fins que no es completi la transferència, el registre emmagatzema el valor "11010010". S’efectua als pins paral·lels Q0.. Q7, i es produeix quan hi ha polsos de rellotge a la línia des de la sortida paral·lela Q7 ’a la línia SPI-MISO, que veiem aquí.

Configuració del número 0 en un bus paral·lel mitjançant SPI
Configuració del número 0 en un bus paral·lel mitjançant SPI

Pas 8

Per tant, hem estudiat amb detall la qüestió de l’intercanvi d’informació entre el dispositiu mestre, que era l’Arduino, i el registre de desplaçament 74HC595. Hem après a connectar un registre de torns, escriure-hi dades i llegir-ne dades.

Recomanat: