SERVOMOTORES. Para usar la librería del servomotor primero tiene que importarla. Esto añade nuevas funciones al sketch desde la librería.

Documentos relacionados
Actuadores eléctricos - Motores

CONTROL VELOCIDAD Y SENTIDO DE MOTOR DC. (de

Clase 4: Motores. Conviértete en un Joven Inventor PENTA UC

Motor de Corriente Continua

4 Actuadores eléctricos. Alfaomega. Material Web. Arduino control de servomotores a pasos 2

Programar posiciones en un Micro Servo Tower Pro SG90 9G

AR 12 L. Tutorial 12: Motor DC + Potenciómetro. Objetivo. Materiales

CYBERTECH 2018 TALLER 03: MOTORES Y POTENCIA

Entradas Analógicas.

TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz TEMA 6: ROBÓTICA

VISUALINO Apuntes y Proyectos IV

Taller de electrónica creativa. Cocinando con Arduino

CONTROL DE UN SERVOMOTOR

Práctica 7. Control de articulaciones de modelos de Robots. FRO

Control de LCD y sensor de temperatura

LED INTERMITENTE CIRCUITO ELÉCTRICO MATERIALES PROGRAMA LED DOS CONECTORES CABLE USB ROBÓTICA. Puerto 8 ( salida al led rojo ) ARDUINO UNO 220 W GND

Tecnología robótica. Tema 7.- Tarjeta controladora Arduino

Qué es y cómo funciona un servomotor? (Versión )

Tutorial: Uso de Driver L298N para motores DC con Arduino

EL SENSOR DE SONIDO KY-038 (VERSION )

Puente H: cambio de giro y velocidad de motores DC.

Shield Dynamotion V3.0

TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz TEMA 5: ROBÓTICA

Manual de prácticas del Laboratorio de Dispositivos de Almacenamiento y de Entrada/Salida

UNIDAD 11: CONTROL DE SERVOMOTORES

INTRODUCCIÓN DESCRIPCIÓN... 4 Características Hardware... 4

Aprende a construir y programar un robot interactivo utilizando los componentes del Maker Control Kit y el Maker Kit 3.

FICHAS DE RECUPERACIÓN DE 3º ESO Nombre:... Curso:... 1) ELECTRICIDAD: EL CIRCUITO ELÉCTRICO

Motor Paso a Paso Stepper Unipolar

AR 3 T. Tutorial 3: Voltajes analógicos y PMW, Potenciómetro + LED. Objetivo General.

Motor Paso a Paso Stepper Unipolar

CURSO: ROBÓTICA. CONECTANDO CON EL MUNDO FÍSICO. ÍÑIGO MARTÍN MIMBELA.

Instalación y entorno de programación

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ELECTRONICA

V 1.0. Ing. Juan C. Guarnizo B.

INTRODUCCIÓN A LA ELECTRÓNICA

Qué es y por qué usarlo

4.2 Práctica 1: encendiendo y apagando varios leds

Conceptos básicos de electrónica: El diodo

AR 10 T. Tutorial 10: Servomotores. Objetivo. Materiales

Actuadores eléctricos - Motores

CURSO: ROBÓTICA. CONECTANDO CON EL MUNDO FÍSICO

Tutorial sobre Motores Paso a Paso (Stepper motors) Recopilado de Internet

CONTROL DE MOTORES UTILIZANDO LOS MICROCONTROLADORES PIC16F87x

Características del sistema

Curso Robótica Práctica

CONSTRUCCION DE TIMER PARA VUELO CIRCULAR CON MOTOR ELECTRICO

Sensor Analógico: Potenciómetro

MANUAL DE USUARIO Como utilizar un servo motor con Arduino REV. 1.0

1.1. Memoria Descriptiva

UNIDAD 4 SERVO MOTORES

5. CONSTRUCCIÓN a) Montar la plataforma móvil según sus instrucciones. b) Soldar un trozo de 20 cm de hilo rígido a los terminales de las reductoras.

TEMA 7: ROBÓTICA -PROGRAMACIÓN

Conceptos básicos de Arduino:

1.3.- Dos bombillas en paralelo con interruptor independiente. Aplicación: Bombillas en las distintas habitaciones de una vivienda.

Elementos de Mecatrónica. Dr. José Sebastián Gutiérrez Calderón Profesor Investigador - Ingenierías UP

Empieza con // y termina con la siguiente línea de código. Son ignorados por el programa y no ocupan espacio en memoria.

Manual sobre Motores a Pasos (Stepper motors)

2. Programación en Arduino

Tecnologías de actuadores

CONSTRUCCIÓN DE TIMER PARA VUELO CIRCULAR CON NANO ARDUINO

TEMA 5: ROBÓTICA - MECÁNICA

CONTROL AUTOMÁTICO CON ARDUINO

Robot seguidor de línea C-9806

EL ORDENADOR COMO DISPOSITIVO DE CONTROL

IES Los Albares (Dep. de Tecnología)

TEMA 6: ROBÓTICA -PROGRAMACIÓN

UD 9. COMPONENTES. Índice 3º ESO. 2. Resistencias. 2. Resistencias. 2. Resistencias. 1.Introducción

RB 4.1 GUIA DEL ALUMNO RB 4.1 MONTAJE DE UN ROBOT EVASOR DE OBJETOS. PROSERQUISA DE C.V. - Todos los Derechos Reservados

PRÁCTICAS ELECTRÓNICA ANALÓGICA

MULTÍMETROS. Equipos de Comprobación. Ef rén Coello. Apr enda a usar lo paso a paso

Dpto. Tecnología Colegio Colón

RINCON DEL TECNICO

La ventana de mblock se compone de 5 partes principalmente:

PRACTICAS CON ARDUINO

Dynabot II es un kit diseñado para el aprendizaje de robótica móvil basado en arduino. Para qué sirve?

INTRODUCCIÓN A LOS MOTORES

CONSTRUCTION C159. Prefacio

Sistema Integrador Ciencia y tecnología ACTUADORES

Incorporan funciones especialmente diseñadas para el control de motores paso a paso bipolar:

MX-902 EXPERIMENTO 2.

INTRODUCCIÓN A LOS SISTEMAS DE CONTROL PROGRAMADOS

Movimiento de servos de rotación continua (Ref libro 1 pg 105)

Lectura de pines analógicos

PRÁCTICAS CON ARDUINO UNO

Tallerine. Biónico. Clase

EL RELÉ 1. PRINCIPIO DE FUNCIONAMIENTO. El relé. Un relé es un interruptor accionado por un electroimán.

Comunicación Serial con Arduino (Por Antony García González - Enero 27, 2013 )

Tecnologías 4ºE.S.O. ELECTRÓNICA

Medidor de distancias En esta actividad utilizaremos un sensor de ultrasonidos como medidor de distancias

Circuito barrera de aparcamiento controlada con pulsadores ELECTRICIDAD IES BELLAVISTA

Unidad 7: Motores eléctricos de corriente continua I. Los motores eléctricos se pueden clasificar según la corriente empleada en:

PROBLEMAS DE ELECTRÓNICA

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA Carrera de Ingeniería Electrónica y Control LABORATORIO DE INSTRUMENTACIÓN INDUSTRIAL PRÁCTICA N 3

OBJETIVOS QUÉ VAMOS A REALIZAR? CONOCIMIENTOS PREVIOS

Raspberry Pi Expansion Board v1.01 Datasheet. Electroensaimada

Las 7 claves de Arduino UNO

MOTORES PASO A PASO. Se define un motor como aquella máquina eléctrica rotativa que es capaz de transformar energía eléctrica en energía mecánica.

Transcripción:

SERVOMOTORES Los servomotores son un tipo especial de motores que no giran continuamente sino que se mueven a una posición específica y permanecen en ella hasta que se ordene que se muevan de nuevo. Los servos suelen tener un rango de giro de 90º a 180 grados (aunque los hay de rotación continua). Los servos son componentes muy usados en brazos robóticos, maquetas, domótica, robots... porque permiten crear movimientos verdaderamente útiles en muchas aplicaciones. De la misma forma que se ha usado PWM en los LED, los servomotores necesitan un número de impulsos para saber que ángulo deben de girar. Los impulsos siempre tienen los mismos intervalos (periodo), pero el ancho de estos impulsos puede variar entre 1000 y 2000 microsegundos. Si bien es posible escribir código para generar estos impulsos, el software de Arduino incluye una librería que permite controlar el motor con facilidad. Una de las grandes cosas que tiene la comunidad de Arduino es el talento de la gente que aumenta su funcionalidad añadiéndole software adicional. De esta forma es posible que cualquiera escriba librerías para aumentar la funcionalidad de Arduino. Existen librerías para una gran variedad de sensores, actuadores y otros dispositivos con la que los usuarios han contribuido en esta comunidad. Una de las librerías incluida esta diseñada para ser usada con servomotores. Para poder usarla será necesario importar esta librería y así se podrá controlar el servomotor. Nuestro servo tiene tres cables, negro, rojo y amarillo, estos colores pueden variar en otros modelos. El negro es GND, el rojo es la alimentación (5V) y el amarillo es la señal. Por tanto, conectamos los cables rojo y negro a 5V y GND, respectivamente, y el amarillo a un pin digital de Arduino, por ejemplo en el pin 9: Para usar la librería del servomotor primero tiene que importarla. Esto añade nuevas funciones al sketch desde la librería.

Para usar la librería servo, es necesario crear un nombre de esta librería en una variable (MiServo). Esto se conoce con el nombre de un objeto. Cuando se hace esto, se crea un nombre único que tendrá todas las funciones y capacidades que la librería servo posee. A partir de este punto en el programa, cada vez que se utilice el nombre MiServo, se podrá usar todas esas funciones y capacidades #include <Servo.h> Servo MiServo; int angulo = 0; void setup() { MiServo.attach(9); // Impotamos la librería Servo.h // Creamos el objeto Miservo para controlarlo // Variable que almacena la posición del servo // Configuaramos el Pin al que hemos conectado el servo void loop() { for (angulo = 0; angulo <= 180; angulo++){ MiServo.write(angulo); delay(100); for(angulo = 180; angulo >= 0; angulo--){ MiServo.write(angulo); delay(100); // Barrido de 0 a 180 grados // Le decimos la posición // Barrido de 180 a 0 grados // Le decimos la posición El comando MiServo.write(angulo) mueve el servomotor al ángulo que se indica dentro de la variable angulo del argumento de esta instrucción. Se añade un retardo de 100 milisegundos delay(100) para que el servo tenga tiempo a moverse a su nueva posición.

Barrido de un servo controlado con un potenciómetro Esquema de conexión Como ya sabemos, el potenciómetro se mueve de 0 a 1023 y el servo de 0 a 180 grados, por lo que debemos de establecer la relación entre la posición del potenciómetro y la posición del servo, tenemos que escalar. Si dividimos la lectura del potenciómetro entre 6 tendremos un valor entre 0 y 170 grados, lo que para el servo ese rango de acción está muy bien, pues en los extremos se estaría forzando al componente, además de que consume más energía. #include <Servo.h> Servo MiServo; int angulo = 0; int PIN_SERVO = 9; int PIN_POTENCIOMETRO = A0; void setup() { servo.attach(pin_servo); // Objeto servo para ser controlado // Variable que almacena la posición del servo // Pin al que hemos conectado el servo // Pin al que hemos conectado el potenciómetro // Vinculamos el objeto con el servo void loop() { int Potenciometro = analogread(pin_potenciometro); // Leemos el potenciómetro angulo = Potenciometro / 6; //Relacionamos el valor del potenciómetro con el ángulo del servo MiServo.write(angulo); // Enviamos la instrucción posición al servo delay(100); Cuando el servomotor empieza a moverse, consume mucha más corriente que si ya estuviese moviéndose. Esto producirá una pequeña caída de tensión en la placa. Si se coloca un condensador de 100uF entre el positivo y la masa cerca del conector del servomotor como se muestra en la figura, se podrá atenuar cualquier caída de tensión que se pueda producir. También se puede colocar un condensador de la misma capacidad entre los extremos del potenciómetro, entre positivo y la masa. Estos condensadores son llamados condensadores de desacoplo porque reducen, o desacoplan, los cambios causados en la línea de alimentación por los componentes del resto del circuito. Hay que tener mucho cuidado al conectar estos condensadores ya que tienen polaridad. Hay que fijarse que uno de los pins del condensador esta indicado con un signo menos (-), por tanto deberá conectarse a masa y el otro pin a positivo. Si se coloca algún condensador con la polaridad contraria podría explotar.

Para crear valores a partir de la entrada analógica que se puedan usar con el servomotor, se puede hacer de una forma muy fácil usando la instrucción map() tal y como vemos en el siguiente programa (comparar con el programa anterior). Esta instrucción trabaja con escalas de números. En este caso cambia la escala de valores entre 0-1023 a valores entre 0-179. Necesita cinco argumentos: el número que debe de ser escalado (en este caso dentro de la variable Potenciometro), el valor mínimo de la entrada (0), el valor máximo de la entrada (1023), el valor mínimo de la salida (0) y el valor máximo de la salida (179). El resultado se guarda dentro de la variable Angulo #include <Servo.h> Servo MiServo; int angulo = 0; // Objeto servo para controlarlo // Variable que almacena la posición del servo

int PIN_SERVO = 9; int PIN_POTENCIOMETRO = A0; void setup() { servo.attach(pin_servo); Serial.begin(9600); // Pin al que hemos conectado el servo // Pin al que hemos conectado el potenciómetro // Vinculamos el objeto con el servo void loop() { int Potenciometro = analogread(pin_potenciometro); // Leemos el potenciómetro Serial.print( Posicion del potenciometro: ); Serial.print(Potenciometro); angulo = map(potenciometro, 0, 1024, 0, 179); Serial.print( angulo: ); Serial.println(angulo); MiServo.write(angulo); // Enviamos la instrucción posición al servo delay(100);

MOTORES DE INDUCCIÓN Los motores son un tipo de dispositivo de inducción. La inducción es un proceso por el cual la circulación de una corriente eléctrica a través de un cable (bobina) genera un campo magnético alrededor de este cable. Cuando a un motor se le aplica electricidad, el cable que se enrolla en su interior formando una bobina produce un campo magnético. Este campo hace que el eje comience a dar vueltas. Poséen tres partes claramente diferenciadas: Rotor, que es la parte móbil del mismo, donde se sitúa el eje de giro. Está constituido por las bobinas inductoras por las que se hace circular la corriente eléctrica para que generen un campo magnético. Estator, que es la parte fija de la estructura del motor y donde se sitúan unos imanes permanentes que producen un campo magnético que reacciona con el campo magnético del rotor obligando a este a girar. Escobillas, son las conexiones semi-fijas que posibilitan a transmisión de la corriente eléctrica al rotor (sin impedir su movimiento). Inconvenientes: Suelen trabajar a revoluciones muy altas, por lo que también se suelen fabricar con engranajes reductores acoplados al eje y así disminuir la velocidad de giro final (y incrementar la fuerza que pueden desenvolver) No pueden proporcionar un posicionamiento o giro exacto del eje, por lo que en el caso de necesitar medir dicho giro se le suele acoplar un encoder o codificador rotatorio que son dispositivos electromecánicos que convierten la posición angular a una señal analógica o digital, a partir de la cual podemos subministrar información sobre el movimiento del motor a nuestro robot o dispositivo de control. Controlar motores con Arduino es más complicado que simplemente encender y apagar diodos LED por un par de razones. Primero, los motores necesitan más cantidad de corriente que los pines de salida de Arduino pueden suministrar, y segundo, los motores pueden generar su propia corriente a través de un proceso llamado inducción, la cual puede dañar el circuito si no se tiene en cuenta y no se corrige. Sin embargo, los motores hacen posible mover objetos físicos, haciendo de esta forma los proyectos más interesantes. Por tanto, aunque son mas complicados merece la pena usarlos. Mover cosas consume gran cantidad de energía. Los motores normalmente necesitan una corriente muy superior a la que Arduino puede suministrar. Además algunos motores también necesitan una mayor tensión para funcionar. El motor para comenzar a funcionar, así como para mover una carga pesada unida a él, consumirá tanta corriente como pueda necesitar. Arduino solo puede suministrar una corriente máxima de 40 miliamperios (40 ma) desde sus terminales digitales, es decir, una corriente mucho menor que la mayoría de los motores necesitan para funcionar. Cuando se deja de suministrar energía a un motor, continuará girando, debido a la inercia que posee. Cuando el motor esta girando produce una tensión de sentido contrario a la dirección de la corriente que se le aplica para que funcione. Se ha visto este efecto si ha usado el diodo LED con el motor y ha girado su eje para hacer que alumbre. Esta tensión inversa inducida, puede dañar el transistor que lo controla. Por esta razón es necesario colocar un diodo en paralelo con el motor, de manera que la tensión inducida pase a través del diodo y no afecte al transistor. El diodo solo permite el paso de la corriente en una sola dirección, protegiendo de esta forma al resto del circuito.

CONTROL DE MOTORES CON TRANSISTOR MOSFET Los transistores son componentes que permiten controlar grandes cantidades de corriente y altas tensiones a partir de una corriente pequeña (muy inferior a 40mA) de una salida digital de Arduino. Hay muchas clases de transistores, pero todos trabajan bajo el mismo principio. Se puede pensar en los transistores como interruptores digitales, es decir, no se cierran ni se abren usando un dedo, sino mediante el control de un parámetro eléctrico (tensión o corriente). En los transistores del tipo MOSFET, como el que se utiliza en este proyecto, se aplica una tensión al pin de control del transistor, llamado puerta, de manera que el transistor se cierra entre sus dos terminales extremos llamados fuente y surtidor, tal y como lo haría un interruptor real. Este tipo de transistores se conoce con el nombre de unipolares y siempre funcionan por una tensión aplicada a su terminal de control, esto equivale a usar un dedo cuando se cierra o se abre un interruptor real. Así que de esta manera es posible suministrar una gran corriente y tensión a un motor para encenderlo o apagarlo usando Arduino. Símbolo del MOSFET canal N Esquema del circuito:

Cuando se utilizan circuitos alimentados con diferentes tensiones, es necesario conectar las masas de ambos circuitos juntas para así tener una masa común. Conectar la pila de 9V la placa de pruebas usando el clip para este tipo de pilas. Conectar la masa de la batería (cable negro) a la masa de Arduino en la placa de pruebas mediante un cable que hace de puente. Conectar el cable rojo de la pila a la placa de pruebas en la segunda columna, columna de la derecha, siendo está conexión la que alimenta al motor directamente. Usaremos el transistor IRF520 que visto de manera que la cara con una mayor superficie metálica quede mirando hacia el lado contrario de Arduino para no confundir los terminales. Conectar el pin digital 9 de Arduino a la puerta (G). Una tensión al terminal de puerta hace que el transistor conecte entres sí sus otros dos terminales (interruptor cerrado). Conectar el cable negro del motor al terminal central del transistor, drenador (D) y el tercer terminal llamado fuente (S) a masa. De esta forma al conectar el drenador y el surtidor el motor comienza a girar. El diodo es un componente que tiene polaridad, solo se puede montar de una forma determinada en el circuito. Observar que el diodo en uno de sus extremos tiene una franja blanca. Este extremo del diodo es el negativo y se conoce con el nombre de cátodo (por donde sale la corriente). El otro extremo es el positivo o ánodo (por donde entra la corriente). Conectar el ánodo del diodo al cable negro del motor (masa) y el cátodo de este diodo al cable rojo del motor (alimentación positiva), tal y como se ve en esta figura. int PinPulsador=2; int PinMotor=9; int EstadoPulsador=0; void setup{ pinmode(pinpulsador, INPUT); pinmode(pinmotor,output); void loop(){ EstadoPulsador=digitalRead(PinPulsador); if (EstadoPulsador=HIGH){ digitalwrite(pinmotor, HIGH); else{ digitalwrite(pinmotor,low); Los transistores son componentes electrónicos de estado sólido, no tienen partes mecánicas que se puedan mover, como en el caso de un relé. Debido a esto los transistores se pueden activar y desactivar (cambiar de estado) a gran velocidad. Piensa como conectar un potenciómetro a una entrada analógica para usar un pin digital de salida PWM para controlar la velocidad del motor a través del transistor. Que sucederá con la velocidad del motor si a la vez se varía la tensión que se le aplica?

CONTROL DE MOTOR MEDIANTE PUENTE EN H En el proyecto anterior se consiguió hacer girar el motor en una sola dirección. Si se aplica un cable de alimentación positiva y otro para la masa el motor girará en una dirección, si se invierten estos cables el motor girará en la dirección contraría. Esto no es muy práctico de hacer cada vez que se quiera cambiar el sentido de giro, así que se va a usar un componente llamado puente H para invertir la polaridad de la tensión aplicada al motor y así hacerlo girar en una dirección o en otra. Para comprenderlo, imaginaros el siguiente montaje a base de interruptores: Cuando usamos los interruptores en la posición de la imagen izquierda el motor gira en un sentido que llamaremos directo. Pero si los colocamos en la posición de la derecha girará en sentido contrario, porque hemos invertido la polaridad de la tensión en las entradas del motor, y por tanto el sentido de giro, sin necesidad de invertir la polaridad de la tensión ni cambiar cables. Claro que invertir el giro mediante interruptores es poco práctico, podemos hacer la misma función usando electrónica y que no tengamos que conmutar manualmente, sino mediante señales eléctricas. El Puentes H que vamos a usar es el circuito integrado L293D que nos permite controlar totalmente dos motores. El L293D tiene dos puentes H y proporciona 600mA al motor y soporta un voltaje entre 4,5V y 36V tal y cómo pone en el datasheet. En un circuito integrado se puede acceder a sus circuitos internos a través de los terminales que tienen a ambos lados. Cuando se mira un circuito integrado, la parte que tiene un muesca indica su parte superior. Se puede identificar el número de terminales al contarlos desde su parte superior izquierda en una U, como se muestra en la figura Veamos que son los diferentes pines del L293D:. El pin 16, Vss, son los 5V con los que alimentamos el chip y el pin 8, Vs, es la tensión con la que alimentamos el motor. Los pines del 1 al 7 controlan el primer motor y los pines 9 a 15 controlan el segundo motor. El pin 1, Enable1, Activa el uso del motor 1. Con un valor HIGH, el motor puede girar dependiendo del valor de Input1 e Input2. Si es LOW se para independientemente de los valores del resto de pines.

Los pines 2 y 7 son los pines de control para el motor 1, e irán conectados a nuestros Arduino para controlar el sentido de giro. Los pines 3 y 6 son la salida a la que se conecta el motor 1, cuya polaridad se invierte en función los valores de 2 y 7. En el diagrama de arriba veis que hay pines equivalentes para el motor 2 y cuales son. Los pines 4, 5,12 y 13 van a GND. Podemos hacer una tabla para mostrar la lógica que sigue el giro del motor en función de los tres pines: ENABLE CONTROL PIN 2 CONTROL PIN 7 MOTOR STATUS LOW Motor parado HIGH HIGH LOW Gira adelante HIGH LOW HIGH Motor al revés HIGH LOW LOW Motor parado HIGH HIGH HIGH Motor parado Por tanto tenemos que activar el pin enable para que el motor gire y después usamos los pines Input1 e Input2 con valores opuestos para hacer girar el motor en una dirección o en la contraria. Hagamos un resumen de conexiones PIN L293D PIN ARDUINO DESCRIPCIÓN 1 10 Enable 2 9 Input 1 3 - Motor 1+ 4,5 GND GND 6 - Motor 1-7 8 Input 2 8 - Alimentación del motor 16 5v Alimentación del L293D int Enable1=9; // Pin Enable para motor 1 int Input1=3; // Pin de Control1 para motor 1 int Input2=2; // Pin de Control2 para motor 1

void setup() { pinmode(enable1, OUTPUT) //inicializamos los pines pinmode( Input1, OUTPUT); pinmode( Input1, OUTPUT); void loop() { digitalwrite(enable1, HIGH); // Activamos Motor1 digitalwrite(input1, HIGH); // Arrancamos digitalwrite(input2, LOW); delay(3000); digitalwrite(enable1, LOW); // Paramos Motor 1 delay(1000); digitalwrite(enable1, HIGH); // Activamos Motor1 digitalwrite(input1, LOW); digitalwrite(input2, HIGH); delay(3000); // Arrancamos con cambio de direccion digitalwrite(enable1, LOW); // Paramos Motor 1 delay(1000); VARIACIÓN DE VELOCIDAD los L293D vienen diseñados para variar la velocidad de giro de los motores correspondientes con la tensión aplicada al pin Enable1, por lo que resulta trivial variar la velocidad del motor, simplemente aplicando valores analógicos. Si por ejemplo añadimos un potenciómetro conectado a la entrada analógica A1 de Arduino, podemos escribir este valor directamente (dividido por 4, claro) al Enable1 como analógico, sustituyendo la línea: digitalwrite(enable1, HIGH); // Activamos Motor1 por esta otra: (tenemos conectado Enable1 al pin 9 que es salida PWM) analogwrite(enable1, analogread(a1) /4 ) ; La lectura de A1 solo se hace al salir del delay, por lo que variación se efectúa al principio de cada ciclo de giro y no en medio de este. CONTROL DE SENTIDO DE GIRO CON DOS PULSADORES Monta el siguiente circuito y realiza un sketch para controlar el motor (sw1 encendido sw2 dirección de giro y el potenciómetro la velocidad),