fbpixel
Etiquetas: ,

El registro de cambio (shift register) es un circuito integrado que consiste en circuitos lógicos en serie que pueden almacenar estados altos o bajos. Se puede usar para impulsar los LEDs o para recuperar el estado de varios sensores.

shiftregister-74hc595 El uso de un registro de cambio con Arduino

Hardware

  • Computadora
  • Arduino UNO
  • Cable USB A macho a B macho
  • Registro de cambio 74HC595

Principio de funcionamiento

El registro de cambio es un componente electrónico que contiene chanclas sincrónicas. Son circuitos lógicos que almacenan un estado alto o bajo (como un bit) conectados por el mismo reloj. El principio del desplazamiento proviene del hecho de que uno llega a escribir o leer en cada memoria poco a poco.
En el caso del registro de cambio 74HC595, las salidas paralelas entregarán un voltaje de 5V en el estado alto y 0V en el estado bajo.

shiftregister-74hc595-principle El uso de un registro de cambio con Arduino

Esquema

El registro de cambio requiere 3 pines de salida de un microcontrolador. Es posible gestionar varios registros conectados en serie.

  • Tierra del circuito integrado GND
  • Clavija de energía de Vcc. Normalmente se conecta a 5V
  • SH_CP o RCLK reloj del registro. La señal del reloj de registro que determina si se escribe en la memoria
  • Entrada de reloj de registro de almacenamiento ST_CP o SRCLK. La señal del reloj de almacenamiento que define en qué memoria se lee o escribe.
  • Entrada de datos en serie DS o SER. Señal que contiene los datos a registrar (ARRIBA o ABAJO)
  • Salida de datos en paralelo Q0-Q7. Pines de salida del registro de cambio
  • Habilitar la salida OE, activar LOW. Pin conectado a GND para activar las salidas.
  • MR Master restablecido, activar LOW. Reajuste el pin. Conectado a 5V
  • Salida de datos en serie » Q7′ » (el pin se usa sólo si se conectan varios registros en serie)
shiftregister-74hc595-pinout El uso de un registro de cambio con Arduino
arduino-shiftregister-74hc595-led_bb El uso de un registro de cambio con Arduino
arduino-shiftregister-74hc595-x2_bb El uso de un registro de cambio con Arduino

Código

Para comunicarnos con el registro de cambio, haremos malabarismos con sus pines de entrada. Para venir a escribir en el registro, tenemos que poner el pin RCLK. Para escribir en las chanclas, tenemos que poner el reloj de almacenamiento en baja. Con cada pulso de reloj, cambiamos a la siguiente chancleta. Para simplificar nuestro código, definamos este procedimiento en la función writeRegister().
Para mostrar el principio del registro de desplazamiento, un ejemplo común es conectar los leds a sus salidas que haremos parpadear uno tras otro.

//Constants
#define number_of_74hc595s 1
#define numOfRegisterPins number_of_74hc595s * 8
#define SER_Pin D1
#define RCLK_Pin D2
#define SRCLK_Pin D3

//Variables
boolean registers [numOfRegisterPins] ={0, 0, 0};

void setup(){
//Init Serial USB
Serial.begin(115200);
Serial.println(F("Initialize System"));
//Init register
 pinMode(SER_Pin, OUTPUT);
pinMode(RCLK_Pin, OUTPUT);
pinMode(SRCLK_Pin, OUTPUT);
}

void loop(){
writeGrpled();
}

void clearRegisters(){/* function clearRegisters */ 
//// Clear registers variables 
for(int i = numOfRegisterPins-1; i >=  0; i--){
  registers[i] = LOW;
}}

void writeRegisters(){/* function writeRegisters */ 
//// Write register after being set 
digitalWrite(RCLK_Pin, LOW);
 for(int i = numOfRegisterPins-1; i >=  0; i--){
  digitalWrite(SRCLK_Pin, LOW); int val = registers[i];
  digitalWrite(SER_Pin, val);
  digitalWrite(SRCLK_Pin, HIGH);
}
  digitalWrite(RCLK_Pin, HIGH);
}

void setRegisterPin(int index,int value){/* function setRegisterPin */ 
////Set register variable to HIGH or LOW
registers[index] = value;
}

void writeGrpled(){/* function writeGrpled */ 
//// blink leds 
for(int i = numOfRegisterPins-1; i >=  0; i--){
   Serial.print(F("LED "));Serial.print(i);Serial.println(F(" HIGH"));
   setRegisterPin(i, HIGH);
   writeRegisters();
   delay(200); 
   Serial.print(F("LED "));Serial.print(i);Serial.println(F(" LOW"));
   setRegisterPin(i, LOW);
   writeRegisters();

      
}
}

Resultado

arduino-shiftregister-74hc595-result El uso de un registro de cambio con Arduino

Aplicaciones

  • Gestiona hasta 8 LEDs o un sensor con tres pines de un microcontrolador
  • Manejar una pantalla de 7 segmentos o más

Sources

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código