Buscar..


Controlar un motor de CC a través del puerto serie utilizando PWM

En este ejemplo, nuestro objetivo es lograr una de las tareas más comunes: tengo un pequeño motor de corriente continua, ¿cómo uso mi Arduino para controlarlo? Fácil, con PWM y comunicación serial, usando la función analogWrite() y la biblioteca Serial .

Los basicos

La modulación de ancho de pulso o PWM para abreviar es una técnica para imitar señales analógicas usando una salida digital. ¿Como funciona esto? Usando un tren de impulsos cuya relación D (ciclo de trabajo) entre el tiempo en el nivel alto (digital 1, generalmente 5V) y el tiempo en el nivel bajo (digital 0, 0V) en cada período se puede modificar para producir un voltaje promedio entre estos dos niveles:

introduzca la descripción de la imagen aquí

Al utilizar la función analogWrite(pin,value) Arduino analogWrite(pin,value) podemos variar el value del ciclo de trabajo de la salida del pin . Tenga en cuenta que el pin debe ponerse en modo de salida y el value debe estar entre 0 (0V) y 255 (5V). Cualquier valor intermedio simulará una salida analógica intermedia proporcional.

Sin embargo, el propósito de las señales analógicas generalmente se relaciona con el control de los sistemas mecánicos que requieren más voltaje y corriente de lo que solo la placa Arduino es capaz de hacer. En este ejemplo, aprenderemos cómo amplificar las capacidades PWM de Arduino.

Para esto se utiliza un diodo MOSFET. En esencia, este diodo actúa como un interruptor. Permite o interrumpe el flujo eléctrico entre su fuente y los terminales de drenaje . Pero en lugar de un interruptor mecánico, presenta una tercera terminal llamada compuerta . Una corriente muy pequeña (<1mA) "abrirá" esta puerta y permitirá que la corriente fluya. Esto es muy conveniente, ya que podemos enviar la salida PWM de Arduino a esta puerta, creando así otro tren de pulsos PWM con el mismo ciclo de trabajo a través del MOSFET, que permite voltajes y corrientes que destruirían el Arduino.

Lista de materiales: ¿qué necesitas para construir este ejemplo?

  • Diodo MOSFET: por ejemplo, el popular BUZ11
  • Diodo de protección para el motor: Schottky SB320
  • Resistor: cualquier cosa 10K ~ 1M Ohm
  • Motor: un motor pequeño típico (uno típico puede ser de 12 V)
  • Una fuente de alimentación compatible con el motor que ha seleccionado.
  • Un tablero
  • Cables de colores!
  • Un Arduino, pero eso ya lo sabías.

La construcción

¡Pon todo junto! Alimente los rieles de la placa de pruebas y coloque el diodo MOSFET en ella. Conecte el motor entre el riel positivo y el drenaje MOSFET. Conecte el diodo de protección de la misma manera: entre el drenaje MOSFET y el riel positivo. Conecte la fuente del MOSFET al riel de tierra común. Finalmente, conecte el pin PWM (estamos usando el pin 10 en este ejemplo) a la compuerta del MOSFET y también a la tierra común a través de la resistencia (necesitamos una corriente muy baja).

Aquí hay un ejemplo de cómo se ve esta compilación. Si prefieres un esquema aquí hay uno.

Esquema fisico

El código

Ahora podemos conectar el Arduino a una computadora, cargar el código y controlar el motor, mediante el envío de valores a través de la comunicación en serie. Recuerde que estos valores deben ser enteros entre 0 y 255. El código real de este ejemplo es muy simple. Se proporciona una explicación en cada línea.

int in = 0;                   // Variable to store the desired value
byte pinOut = 10;             // PWM output pin

void setup() {                // This executes once
  Serial.begin(9600);             // Initialize serial port
  pinMode(pinOut, OUTPUT);        // Prepare output pin
}

void loop() {                 // This loops continuously
  if(Serial.available()){         // Check if there's data
    in = Serial.read();           // Read said data into the variable "in"
    analogWrite(pinOut, in);      // Pass the value of "in" to the pin
  }
}

¡Y eso es! Ahora puede usar las capacidades PWM de Arduino para controlar aplicaciones que requieren señales analógicas, incluso cuando los requisitos de energía superan los límites de la placa.

PWM con un TLC5940

El TLC5940 es un elemento útil para tener cuando te quedas sin puertos PWM en el Arduino. Tiene 16 canales, cada uno controlable individualmente con 12 bits de resolución (0-4095). Una biblioteca existente está disponible en http://playground.arduino.cc/Learning/TLC5940 . Es útil para controlar múltiples servos o LEDs RGB. Solo tenga en cuenta que los LED deben ser ánodo común para funcionar. Además, los chips son margaritables, lo que permite incluso más puertos PWM.

Ejemplo:

// Include the library
#include <Tlc5940.h>

void setup() {
    // Initialize
    Tlc.init();
    Tlc.clear(); 
}

unsigned int level = 0;
void loop() {
    // Set all 16 outputs to same value
    for (int i = 0; i < 16; i++) {
        Tlc.set(i, level);
    }
    level = (level + 1) % 4096;
    // Tell the library to send the values to the chip
    Tlc.update();
    delay(10);
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow