martes, 12 de noviembre de 2019

Laboratorio 03: Motor Control Shield L293D

DESCRIPCION
Es un controlador monolítico integrado de alto voltaje y alta corriente de 4 canales. Básicamente, esto significa que con este chip puede usar motores de corriente continua y fuentes de alimentación de hasta 16 voltios, es decir, algunos motores bastante grandes y el chip puede suministrar una corriente máxima de 600 mA por canal, el chip L293D también es lo que se conoce como un tipo de H -Puente. El H-Bridge es típicamente un circuito eléctrico que permite aplicar un voltaje a través de una carga en cualquier dirección a una salida, por ejemplo, un motor. El diagrama esquemático es el siguiente:

El Shield motor L293D soporta:
  • 4 Motores DC bidireccionales (con control de velocidad individual)
  • ó 2 Motores Paso a Paso (unipolares o bipolares)
  • 2 conexiones para servomotores (SG90 o MG90S)
 ESPECIFICACIONES TECNICAS
  • Voltaje de potencia (motores): 4.5V-24V DC
  • Corriente DC por canal: 600mA
  • Corriente pico por canal: 1.2A
  • Incorpora 2 circuitos integrados L293D proporcionando 4 puentes-H completos
  • Protección contra sobre carga térmica
  • Diodos de protección internos contra voltajes inversos generados por las cargas inductivas
  • 4 canales (M1, M2, M3 y M4) para controlar igual número de cargas inductivas como motores DC ó 2 motores paso a paso unipolares o bipolares de entre 4.5 V y 24 V
  • Permite controlar tanto la velocidad como la dirección de giro de los motores
  • Control de velocidad de motores DC con resolución de 8 bits (PWM)
  • Control de motores paso a paso con 1 y 2 bobinas en modo simple, doble (mayor torque) e intercalado (medio paso)
  • 2 conectores independientes para controlar 2 servos pequeños de 5 V (Pines digitales 9 y 10)
  • Corriente máxima continua en cada una de las salidas M1, M2, M3 y M4: 600 mA (0.6 A)
  • Corriente máxima pico no repetitivo en cada una de las salidas M1, M2, M3 y M4: 1.2 A
  • Resistores de pull-down que mantienen los motores deshabilitados durante el encendido
  • Requiere fuente externa para la alimentación de las cargas en las salidas M1, M2, M3 y M4.
  • Se puede elegir alimentar el Arduino con la misma fuente de los motores o por separado mediante el Jumper "PWR"
  • Borneras para alimentación externa (+M, GND)
  • Conectores para los pines Analógicos
  • Pulsador de Reset
  • Led indicador de alimentación de fuente de motores
  • Dimensiones: 6.8cm x 5.5cm x 2cm
 RECOMENDACIONES

Las salidas para los servos toman su alimentación directamente de los 5V de la placa Arduino, por lo que esta bien utilizar servos pequeños como los SG90 o MG90S. Si necesita utilizar servos con un mayor consumo de corriente, se recomienda cortar la pista de cobre de alimentación V+ en el shield o el cable positivo del servo y alimentar por separado (No olvidar conectar las tierras).
La alimentación de las 4 salidas para motores u otras cargas inductivas M1, M2, M3 y M4 se tiene que suministrar con una fuente externa. Se puede proveer del jack DC del Arduino (Pin Vin) o del conector de tornillo "EXT_PWR" en la shield; seleccionable mediante el jumper "PWR" (Si el jumper está colocado se utiliza fuente externa del Arduino conectada al jack DC, y si no está colocado se utiliza el conector de tornillo de la shield). Si utiliza el jumper y selecciona la fuente externa tenga en cuenta la polaridad, ya que esta entrada no cuenta con diodo de protección de polaridad y una conexión incorrecta resultará en el daño del shield y la placa Arduino. Tampoco conectar la salida regulada de 5V ó 3.3V de la placa Arduino a esta entrada.
En cualquier caso la corriente de la fuente externa de voltaje debe ser superior al consumo máximo de las cargas (motores), se recomienda una fuente de 7-9V con capacidad de entregar 2 amperios mínimo.
Se pueden controlar motores de 4.5 V a 25 V. Si provee alimentación con fuente externa conectada a la placa Arduino. El voltaje máximo recomendado que admite esta entrada en Arduino Uno por ej. debe ir de 6 V a 12 V, por lo que podrá controlar motores solo de 4.5 V hasta 10 V aprox. según el voltaje de la fuente.

 PINES
  • Arduino 4  - DIR_CLK
  • Arduino 7  - DIR_EN
  • Arduino 8  - DIR_SER
  • Arduino 12 - DIR_LATCH
  • Arduino 11 - PWM_Motor1
  • Arduino 3  - PWM_Motor2
  • Arduino 6  - PWM_Motor3
  • Arduino 5  - PWM_Motor4
  • Arduino 9  - Servo_1
  • Arduino 10 - Servo_2
LINKS
 Proyecto manejar motores con SHIELD L293D con Arduino
https://www.arduinohobby.com/controlar-motores-l293d-arduino/




martes, 5 de noviembre de 2019

PROYECTO ARDUINO: Medidor de voltaje de baterías y pilas con Arduino

El dia de hoy veremos como podemos programar un medidor de voltaje de baterias y/o pilas a traves del montaje de un circuito con Arduino.

OBJETIVO

Utilizaremos Arduino para leer a través de una entrada analógica el voltaje que suministra una pila. Dependiendo de este voltaje, encenderemos un LED de un color. Si la pila está nueva, se encenderá un LED verde. Si la pila no es nueva pero se ha consumido parte de su energía encenderemos un LED amarillo. Por último, si la pila está gastada o no suministra el suficiente voltaje, encenderemos un LED rojo.

OjO
Debemos de tener mucho cuidado con el tipo de pila y de batería que vamos a medir. Es muy peligroso suministrar más de 5V a los pines analógicos de Arduino. Mucho ojo con una pila de 9V, las cuadradas. Como bien he dicho antes, estas pilas superan con creces el límite de 5V. 

MATERIALES 
  • Arduino UNO o cualquier placa de Arduino
  • Protoboard donde conectaremos los componentes
  • Cables para la conexión entre los componentes y la placa
  • 3 resistencias de 220 Ω
  • 1 resistencia de 10 kΩ
  • 1 LED rojo de 5 mm
  • 1 LED amarillo de 5 mm
  • 1 LED verde de 5 mm
MONTAJE

A continuacion se realizara el montaje del medidor, presta atencion principalmente a las resistencias y los cables al conectar.















PROGRAMACION 

 Ahora toca la parte de la lógica y la programación, aqui la pondre para simplemente copiarlo:

// Pines para los LEDs
#define LEDVERDE 2
#define LEDAMARILLO 3
#define LEDROJO 4
#define ANALOGPILA 0
 
// Variables
int analogValor = 0;
float voltaje = 0;
int ledDelay = 800;
 
// Umbrales
float maximo = 1.6;
float medio = 1.4;
float minimo = 0.3;
 
void setup() {
  // Iniciamos el monitor serie
  Serial.begin(9600);
 
  // Los pines de LED en modo salida
  pinMode(LEDVERDE, OUTPUT);
  pinMode(LEDAMARILLO, OUTPUT);
  pinMode(LEDROJO, OUTPUT);
 
}
 
void loop() {
  // Leemos valor de la entrada analógica
  analogValor = analogRead(ANALOGPILA);
 
  // Obtenemos el voltaje
  voltaje = 0.0048 * analogValor;
  Serial.print("Voltaje: ");
  Serial.println(voltaje);
 
  // Dependiendo del voltaje mostramos un LED u otro
  if (voltaje >= maximo)
  {
    digitalWrite(LEDVERDE, HIGH);
    delay(ledDelay);
    digitalWrite(LEDVERDE, LOW);
  }
  else if (voltaje < maximo && voltaje > medio)
  {
    digitalWrite(LEDAMARILLO, HIGH);
    delay(ledDelay);
    digitalWrite(LEDAMARILLO, LOW);
  }
  else if (voltaje < medio && voltaje > minimo)
  {
    digitalWrite(LEDROJO, HIGH);
    delay(ledDelay);
    digitalWrite(LEDROJO, LOW);
  }
 
  // Apagamos todos los LEDs
  digitalWrite(LEDVERDE, LOW);
  digitalWrite(LEDAMARILLO, LOW);
  digitalWrite(LEDROJO, LOW);
}

El montaje quedaria de esa forma, habiendo logrado el objetivo.