Академический Документы
Профессиональный Документы
Культура Документы
ARDUINO
RASPBERRY PI
ELECTRNICA
PROYECTOS ROBOTS
BLOG
EQUIPO DIY
CONTACTO
Notice: Undefined index: result in /mnt/webb/e1/18/53884418/htdocs/wp-content/plugins/simple-share-buttonsadder/inc/ssba_buttons.php on line 431
(26/11/13)
En este tutorial vamos a controlar la velocidad y el sentido de un motor DC a travs de un potencimetro desde
Convertido de w eb en PDF con http://www.htmlapdf.com!
Arduino.
Material
-Arduino Uno
-Motor DC
-Potencimetro
-L293D (driver motores)
-Fuente alimentacin externa
Motor DC
Un motor de corriente continua convierte la energa elctrica en mecnica. Se compone de dos partes: el estator y el rotor.
El estator es la parte mecnica del motor donde estn los polos del imn.
El rotor es la parte mvil del motor con devanado y un ncleo, al que llega la corriente a travs de las escobillas.
Cuando la corriente elctrica circula por el devanado del rotor, se crea un campo electromagntico. Este interacta con el campo
magntico del imn del estator. Esto deriva en un rechazo entre los polos del imn del estator y del rotor creando un par de fuerza
donde el rotor gira en un sentido de forma permanente.
Si queremos cambiar el sentido de giro del rotor, tenemos que cambiar el sentido de la corriente que le proporcionamos al rotor; basta
con invertir la polaridad de la pila o batera.
L293D
Para controlar un motor DC desde Arduino, tendremos que usar un driver para motores para proporcionarle ms corriente al motor ya
que las salidas del Arduino slo dan 40mA. De esta manera, con el driver podemos alimentar el motor con una fuente de alimentacin
externa.
El L293D es un integrado para controlar motores DC que usa el sistema puente en H. Qu es el puente en H? Es un sistema para
controlar el sentido de giro de un motor DC usando cuatro transistores. En la imagen vemos que los transistores se comportan como
interruptores y dependiendo que transistores conducen y cules no cambia la polarizacin del motor, y con esto el sentido de giro.
El L293D tiene dos puentes H y proporciona 600mA al motor y soporta un voltaje entre 4,5V y 36V tal y cmo pone en el datasheet.
En el datasheet tambin hay el esquema que vamos a usar.
Nosotros usaremos la parte de la izquierda (los diodos externos en el L293D estn dentro). Cmo se aprecia en la imagen, los pins 3 y 6
son las salidas y se conectan a los bornes del motor. Y los pins 2 y 7 son las entradas donde conectaremos las salidas del Arduino.
Dependiendo que valor ponemos entre los pins 2 y 7 el motor girar en un sentido o en otro.
Para hacerlo utilizaremos el PWM (vase PWM). Sabemos que hay que atacar los pins 2 y 7 del L293D desde dos salidas del Arduino. En
estas dos salidas habr un PWM a cada una. Pero tenemos que invertir un PWM. Qu quiere decir invertir? Pues que cuando en un
PWM tengamos un pulso a un valor alto, en el otro PWM el mismo pulso sea valor bajo. En la imagen lo entenderemos de una manera
ms grfica.
MONTAJE
Arduino.
-El potencimetro pude ser de cualquier valor.
PROGRAMA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
www.diymakers.es
by A.Garca
Control velocidad y sentido motor DC
Tutorial en: http://diymakers.es/control-velocidad-y-sentido-de-motor-dc/
*/
int pin2=9; //Entrada 2 del L293D
int pin7=10; //Entrada 7 del L293D
int pote=A0; //Potencimetro
int valorpote;
int pwm1;
int pwm2;
void setup()
{
//Inicializamos los pins de salida
pinMode(pin2,OUTPUT);
pinMode(pin7, OUTPUT);
}
void loop()
{
//Almacenamos el valor del potencimetro en la variable
valorpote=analogRead(pote);
//Como la entrada analgica del Arduino es de 10 bits, el rango va de 0 a 1023.
//En cambio, la salidas del Arduio son de 8 bits, quiere decir, rango entre 0 a 255.
//Por esta razn tenemos que mapear el nmero de un rango a otro usando este cdigo.
pwm1 = map(valorpote, 0, 1023, 0, 255);
pwm2 = map(valorpote, 0, 1023, 255, 0); //El PWM 2 esta invertido respecto al PWM 1
//Sacamos el PWM de las dos salidas usando analogWrite(pin,valor)
analogWrite(pin2,pwm1);
analogWrite(pin7,pwm2);
}
En vez de conectar un potenciometro, se puede hacer a travs de una salida pwm de arduino que haga de potenciometro
Responder
S, se puede hacer.
Responder
No estoy muy seguro, se reemplazaria la entrada de referencia en A0 para colocar alli la entrada de PWM, y asi
reemplazar el potenciometro, la pregunta es que en el codigo tendria que tener los valores medidos en
osciloscopio del pwm de control para asignar las condiciones para los pwm de salida?
Responder
si requiero conectar un motor de 12V solo debo cambiar la fuente o hay algn cambio en el circuito??
Responder
Que tal buenas noches, estoy trabajando con un arduino alejandro, esta no tiene ss/pwm, pin 10 del arduino,(uni el pin 7
del l239d con la entrada 10 pwm) monte el mismo codigo mostrado en la pagina, al girar el potenciometro solo gira el
motor en uno solo sentido, en cualquier sentido que gire el potenciometro solo gira el motor para un solo lado. Que puedo
hacer???, agradeceria su apoyo.
Responder
hola.es justo lo que necesito pero con dos motores.mira quisiera tener dos potenciometros para controlar cada motor,
pero lo puedo hacer con un l293D..conectando el otro motor a los mismos pines del otro y pues obvio conectando mas
pines al arduino que serian dos mas?????
Responder
Hola, tengo una duda sobre el L293D. Cuando dices proporciona 600mA al motor y soporta un voltaje entre 4,5V y 36V
significa que el integrado se puede alimentar de 4,5V a 36V y proporciona al motor el mismo voltaje que le proporciona
arduino pero con mayor intensidad?
Responder
Hola, mi duda es el L239D tiene diodos protectores integrados para que cuando cambie el sentido de giro no queme el
arduino?
Responder
Saludos.
Mis conocimientos en electronica son bastante buenos, aunque no de ingeniera, pero soy nuevo en esto de arduino y me
quedo un poco corto con la programacin, mi idea es tomando el modelo de motor dc, aadir un segundo potenciometro
que me marque la posicin. Haba pensado que quizs la opcin seria que el sistema calculase la posicin segn (pot2pot1), donde pot1 es el que controla el giro y pot2 el que determina la posicin del elemento que gira, esto quiere decir
que si tengo 2V en pot1 y 2V en pot2 (2-2= 0V), el motor girar y parar al llegar pot2 a 4,5V (2,5v de diferencial) y as con
cualquier valor de pot1. Esto a su vez me genera otro problema y es que, cuando tenga pot1 4V y pot2 1V (diferencial 1-4=
-3V) no se como lo tomara, tericamente sera solo un valor calculado y no real, pero no se si habra que hacer alguna
correccin.
Convertido de w eb en PDF con http://www.htmlapdf.com!
Teniendo en cuenta el cdigo que tienes expuesto, he realizado algunas modificaciones, las cuales aunque el software no
me da error no se si estn bien para el calculo.
/*
http://www.diymakers.es
by A.Garca
Control velocidad y sentido motor DC
Tutorial en: http://diymakers.es/control-velocidad-y-sentido-de-motor-dc/
*/
int pin2=9; //Entrada 2 del L293D
int pin7=10; //Entrada 7 del L293D
int pote1=A0; //Potencimetro mando
int pote2=A1; //Potenciometro control
int pote=(A1-A0); //Diferencial de giro
int valorpote1; //Variable que recoge el valor del potencimetro mando
int valorpote2; //Variable que recoge el valor del potenciometro control
int valorpote; //Variable control giro diferencial
int pwm1; //Variable del PWM 1
int pwm2; //Variable del PWM 2
void setup()
{
//Inicializamos los pins de salida
pinMode(pin2,OUTPUT);
pinMode(pin7, OUTPUT);
}
void loop()
{
//Almacenamos el valor del potencimetro en la variable
valorpote1=analogRead(pote1);
valorpote2=analogRead(pote2);
valorpote=(pote2-pote1);
//Como la entrada analgica del Arduino es de 10 bits, el rango va de 0 a 1023.
Convertido de w eb en PDF con http://www.htmlapdf.com!
//En cambio, la salidas del Arduio son de 8 bits, quiere decir, rango entre 0 a 255.
//Por esta razn tenemos que mapear el nmero de un rango a otro usando este cdigo.
pwm1 = map(valorpote, 0, 1023, 0, 255);
pwm2 = map(valorpote, 0, 1023, 255, 0); //El PWM 2 esta invertido respecto al PWM 1
//Sacamos el PWM de las dos salidas usando analogWrite(pin,valor)
analogWrite(pin2,pwm1);
analogWrite(pin7,pwm2);
}
No se si he duplicado acciones, si las he colocado correctamente, etc. Espero puedan ayudarme.
Gracias.
Responder
Deberan dejar un valor en 0 y el otro con pwm, dependiendo para qu lado debe girar.
adems hay que darle un margen de seguridad al punto medio del potencimetro
ReadedVal = analogRead(PotPin1); // reads the value of the potentiometer (value between 0 and 1023)
OutFwdVal = 0;
OutRevVal = 0;
if (ReadedVal >= 528)
{
OutFwdVal = map(ReadedVal, 520, 1023, 0, 255); // scale it
}
if (ReadedVal <= 496)
{
OutRevVal = map(ReadedVal, 504, 0, 0, 255); // scale it
}
analogWrite(FwdPin1, OutFwdVal);
analogWrite(RevPin1, OutRevVal);
Responder
Se puede restringir el numero de vueltas del motor dc. Es que quiero que gire ghasta un cierto numero de vueltas y
se detenga, sera posible
Responder
disculpa, yo estoy ocupando 4 motores de cd y por lo tanto uso 4 puentes h para invertir el giro, lo que quiero saber es
como declaro los pines 2 y 7 de los dems puentes h al igual que los pot
Responder
si quisiera indicarle al Motor la velocidad que quiero por medio del teclado, es decir en vez de usar el potenciometro,
cambiar la velocidad de giro del motor indicando con los numeros del teclado la velocidad que quiero (obviamente
ajustando las velocidades de acuerdo al numero tecleado) se podria hacer ???
Responder
Desde el Monitor serial, ingresaras el valor que deseas. Esto hara la funcion del potenciometro !
Responder
por que declaras las salidas como analogWrite? No son salidas digitales?
Responder
buenas tardes mi pregunta es que si es cualquier valor de potencimetro para poder girar a los dos sentido lo que pasa
es que solo me gira de un sentido estoy haciendo exactamente lo mismo
Responder
buenos dias, quiero realizar el mismo proyecto pero solo tengo un l293b, donde irian puestos los diodos y cuales desde
ya muchas gracias!!
Responder
Hola, llego 2 aos despues a su articulo, no s si este post sigue con vida, igual van mis 2 preguntas, cmo hacer en el
caso qu quiera utilizar dos motores y cada uno de ellos con su respectivo potencimetro ?, en mi caso lo utilizaria con
motores de mayor potencia , 4 amperes de consumo, recomienda algn puente H con Mosfet en especial ?, dado qu
estuve leyendo sobre el tema y hay algunas complicaciones si dichos puentes se cosntruyen con Mosfet
complementarios o en su defecto de canal N, gracias por su atencin.
Responder
Deja un comentario
Buscar
Buscar