SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 1/17
Control de velocidad y giro de motores
Publicado el 6 diciembre, 2011
Controlar un motor es fácil, le pasas corriente y listo, ya corre. Si quieres controlar la
velocidad, es decir, que acelere, ya es un pelín más complejo, necesitas PWM, pero… si
además quieres elegir en qué dirección tiene que girar, ya es la ostia necesitas lo que se
denomina un puente H.
Este tutorial viene a ser una continuación del Howto ArduTanque DIY, el tanque ya está
montado, falta hacer que se mueva. En este tutorial no me voy a detener en los posibles usos
que se le puedan dar a un motor (desde mover ruedas u orugas a un ventilador, ducted-fan,
etc), los límites los pones tu, yo sólo te voy a explicar cómo mover un motor (o varios).
Podría entrar a explicar toda la teoría de como influyen las corrientes eléctricas en el
bobinado de un motor… pero ni tengo mucha idea, ni entra en el objetivo de este tutorial, así
que vamos a ver directamente al tema, como controlar un motor.
Con un motor, si no necesitamos variar la velocidad ni el sentido, lo tenemos muy fácil,
asignamos un pin de salida del arduino y le damos valor HIGH cada vez que lo queramos en
marcha, al igual que haríamos para encender un LED.
PepeChorva.com
Este es mi sitio, esta es mi gente… oh, wait!!!
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 2/17
La respuesta del motor será la misma que si lo conectáramos al pin +5V de arduino, es
decir, todo o nada, va o no va.
Si utilizamos las salidas PWM del arduino, podemos variar la velocidad del motor, de forma
que se multiplican las opciones para manejarlo (también se multiplica la complejidad
computacional, pero hay que echarle valor, el resultado merece la pena).
Todo eso está muy bien, tiene muchas utilidades, es sencillo y es hasta chulo. . . pero yo
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 3/17
quiero controlar un motor que se mueva adelante y atrás, para mi robot dominador del mundo.
Aquí es donde entra la electrónica como un elefante en una cacharrería, necesitamos algo
más que un motor y un arduino. Concretamente, necesitamos montar lo que se denomina un
puente H.
El puente H obtiene este nombre a partir de que la configuración del mismo se asemejaría a
una H mayúscula. Tenemos los dos extremos superiores que son los selectores de
dirección, que crean un circuito cada uno para que el motor gire en un sentido u otro. Estos
circuitos se cruzan a través del motor, que está, por decirlo de alguna forma, en el palito
horizontal de la H. No voy a detenerme en el funcionamiento del puente H, hay montones de
esquemas que lo hacen, así que no voy a reinventar la rueda.
Para simplificar los circuitos, se utiliza un I.C. (circuito integrado), en este caso, un L293D.
Este nos permite 2 puentes H independientes. El puente de diodos, en el caso del L293D no
es necesario, está implementado internamente, pero en mi caso, el IC esta sobre un zócalo,
por si en una de esas lo cambio por el L293B, que sí lo necesita. Nunca está de más un
poco de protección extra.
Bueno, ahora ya tenemos el giro pero, ¿como conseguimos acelerar?
Para ello, necesitamos usar un pin del arduino con PWM para la entrada ENABLE del IC, que
nos permite activar la salida hacia el motor y esto es lo que permite acelerar. Haremos un
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 4/17
analogWrite con valor base 800 + 1/6 del valor que lea el C.A/D, sobre el pin del motor que
nos interese. Este valor base nos da la frecuencia a la que debe transmitir el valor HIGH por
el pin seleccionado.
El esquemático y el código para el ejemplo es el siguiente:
Muy importante, poner GNDs en común para no freir el arduino, las diferencias de los
voltajes a los que trabajan el microcontrolador y los motores, pueden ser peligrosas para el
arduino (y en general, para cualquier micro).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Programaparacontrolar2motoresconcontroldevelocidadygiroconunL293
intswitchPin=7; //switchparacambiarelsentidodegirodelosmotores
intmotor1Pin1=3; //Motor1adelante
intmotor1Pin2=4; //Motor1atras
intspeedPin1=9; //Motor1aceleracion(PWM)PinenabledelL293
intpotPin=0; //Potenciometroparacontrolarvelocidadmotor1
intledPin=13; //LED
//intswitchPin2=8; //Noimplementado
intmotor2Pin1=5; //Motor2adelante
intmotor2Pin2=6; //Motor2atras
intspeedPin2=10; //Motor2aceleracion(PWM)PinEnabledelL293
intpotPin2=1; //Potenciometroparacontrolarvelocidadmotor2
intspeedpin=0; //tasadevelocidadalaqueArduinoenvialosdatos
voidsetup(){
Serial.begin(9600);
//configuraciondepines
pinMode(switchPin,INPUT);
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 5/17
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//pinMode(switchPin2,INPUT);//nousado
//ControlMotor1
pinMode(motor1Pin1,OUTPUT);
pinMode(motor1Pin2,OUTPUT);
pinMode(speedPin1,OUTPUT);
//ControlMotor2
pinMode(motor2Pin1,OUTPUT);
pinMode(motor2Pin2,OUTPUT);
pinMode(speedPin2,OUTPUT);
pinMode(ledPin,OUTPUT);
//EstablecespeedPinXenmodoHighparapodercontrolarlavelocidad
digitalWrite(speedPin1,HIGH);
digitalWrite(speedPin2,HIGH);
//comprobaciondereseteo,sielledparpadeasolo3veces,todoestabien
//sivuelveaparpadear,significaquehahechounreset,revisarconexiones
//porsihubierauncorto
blink(ledPin,3,100);
}
voidloop(){
//Sielswitchnoestapulsado,giraenunadireccion,sinoenlacontraria
if(digitalRead(switchPin)>0){
digitalWrite(motor1Pin1,LOW); //Estableceelsentidodegirodelmotor1
digitalWrite(motor1Pin2,HIGH); //
speedpin=analogRead(potPin); //Lecturadelvalordelpotenciometro
speedpin=800+(speedpin/6); //Paraestablecerlavelocidaddegiro
analogWrite(speedPin1,speedpin); //
Serial.print("motor1="); //
Serial.println(speedpin); //
delay(50); //
digitalWrite(motor2Pin1,LOW); //Estableceelsentidodegirodelmotor2
digitalWrite(motor2Pin2,HIGH); //
speedpin=analogRead(potPin2); //Lecturadelvalordelpotenciometro
speedpin=800+(speedpin/6); //Paraestablecerlavelocidaddegiro
analogWrite(speedPin2,speedpin); //
Serial.print("motor2="); //
Serial.println(speedpin); //
delay(50); //
}
else{
digitalWrite(motor1Pin1,HIGH); //Estableceelsentidodegirodelmotor1
digitalWrite(motor1Pin2,LOW); //
speedpin=analogRead(potPin); //Lecturadelvalordelpotenciometro
speedpin=800+(speedpin/6); //Paraestablecerlavelocidaddegiro
analogWrite(speedPin1,speedpin); //
Serial.print("motor1="); //
Serial.println(speedpin); //
delay(50); //
digitalWrite(motor2Pin1,HIGH); //Estableceelsentidodegirodelmotor2
digitalWrite(motor2Pin2,LOW); //
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 6/17
Para este ejemplo, controlo la velocidad de los dos motores del tanque de forma
independiente con los potenciómetros, aunque la dirección en este caso sólo se controla
mediante un botón, por simplicidad. Más adelante, con sensores de distancias, brújulas,
sensores IR para hacer un siguelíneas, no hará falta este botón, ni los potenciómetros, por lo
que es poco relevante su implementación.
Aquí un video del funcionamiento del ardutanque, ya se mueve!!! la conquista del mundo está
cerca, MWHAHAHAHAHAAA!!!
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
speedpin=analogRead(potPin2); //Lecturadelvalordelpotenciometro
speedpin=800+(speedpin/6); //Paraestablecerlavelocidaddegiro
analogWrite(speedPin2,speedpin); //
Serial.print("motor2="); //
Serial.println(speedpin); //
delay(50); //
}
}
/*
Parpadeodelled,Significaquehaejecutadolafuncionsetup()
sitodovabien,soloparpadeatresveces,sihayalgunerrorquereseteeelarduino,
volveraaverseelparpadeodelled
*/
voidblink(intwhatPin,inthowManyTimes,intmilliSecs){
inti=0;
for(i=0;i<howManyTimes;i++){
digitalWrite(whatPin,HIGH);
delay(milliSecs/2);
digitalWrite(whatPin,LOW);
delay(milliSecs/2);
}
}
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 7/17
14 PENSAMIENTOS EN “CONTROL DE VELOCIDAD Y GIRO DE MOTORES”
El código de control del puente H está basado en el de esta página:
http://www.ecs.umass.edu/ece/m5/tutorials/H-Bridge_tutorial.html
Espero que os haya gustado.
Control de velocidad y giro de motores por PepeChorva.com, a excepción del contenido de
terceros y de que se indique lo contrario, se encuentra bajo una Licencia Creative Commons
Attribution-ShareAlike 3.0 Unported Licencia.
Esta entrada fue publicada en Arduino y etiquetada arduino, ardutanque, programación
por pepeChorva. Guarda enlace permanente
[http://pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/] .
0:00 / 1:30
ardutanque control motores.mp4
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 8/17
tonicomj
en 15 febrero, 2012 en 23:26 dijo:
Muy chulo, pero tengo una duda.
Según he leído los pwm van de 0..255, y solo en
algunos chips puede configurarse para que funcione de
0..1023.
es esto así ¿
De serlo se podría poner
speedpin= speedpin/4
Un saludo
Esteban
en 23 marzo, 2014 en 19:04 dijo:
Una pregunta: ¿Conectaste los pines de pwm de
tu arduino a los enables de tu puente h
respectivamente? ¿te funcionó? yo hice lo
mismo pero con un picmicro, usando un
sn754410, un puente h parecido el tuyo, sin
embargo no me hacía las variaciones en la
velocidad de giro de mis motores conectando
mis salidas de pwm a los pines de enable de mi
puente h, pero si me hacia el cambio de
direcciones que mandaba con mi micro, de otra
forma conectando mis salidas de pwm al las
entradas input del puente h si me hacia las
variaciones de velocidades perfectamente, el
problema es que ocupando los inputs de mi
puente h para el pwm no tengo para poder
controlar las direcciones, en si quisiera de favor
saber si tu puente h si te hace perfectamente los
cambios de velocidad utilizando los enables para
buscarlo y comenzar a hacer pruebas con el.
Betho
en 15 abril, 2014 en 18:16 dijo:
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 9/17
Bueno, la verdad que eso de dividir entre 4 es
algo “burdo”, para que se vea más elegante
podrías utilizar la función “MAP” para que te veas
más como un programador versátil
PepeChorva
en 16 febrero, 2012 en 0:55 dijo:
Buena pregunta, la verdad es que me has pillado
PWM va de 0 a 255, si, o 0×00 a 0xFF en hexadecimal.
Pero, si pones directamente el valor del potenciómetro
en la salida PWM, solo conseguirás que el motor emita
un zumbido, pero no se moverá (o al menos, eso me
pasaba a mi)., Aumentando este valor, sí consigues
movimiento pero, sinceramente, no entiendo el por qué.
Tomo tu duda como un reto e intentaré averiguarlo.
tonicomj
en 22 febrero, 2012 en 18:40 dijo:
Bueno el proximo sabado podremos hablarlo pues voy a
asistir a la reunion y aprender todo lo que pueda de los
que llevais tiempo en esto.
Un saludo.
PepeChorva
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 10/17
en 22 febrero, 2012 en 18:44 dijo:
Perfecto, allí nos vemos!
antonio echeverria
en 7 noviembre, 2013 en 18:41 dijo:
como hago para invertir elgiro de un stepper , este es mi
programa para q con cada pulsacion avance un paso,
pero no logro invertirlo bien, a veces da , a veces se
salta, no entiendo porque
int b1=45;
int b2=44;
int b3=43;
int b4=42;
int PinA=28;
int PinB=29;
byte i,j,A,B;
int ADE[]={1,2,4,8};
int ATRAS[]={2,1,8,4};
void setup()
{pinMode(b1,OUTPUT); //se define el pin b1 como salida
pinMode(b2,OUTPUT);
pinMode(b3,OUTPUT);
pinMode(b4,OUTPUT);
pinMode(PinA,INPUT);//se define el pin PinE como
Entrada
pinMode(PinB,INPUT);
digitalWrite(PinA,HIGH); //Escribimos 1 en el pin de
entrada para habilitar la resistencia en pull up interno
digitalWrite(PinB,HIGH);
i=0;
j=0;
}
void loop()
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 11/17
{ byte x;
byte y;
A=digitalRead(PinA);//Funcion que lee el estado del pin
PinE y se almacena en la variable e
B=digitalRead(PinB);
if (A!=HIGH) // si e es distinto de 1
{
x=ADE[i];
digitalWrite(b1,ADE[i]&0×01);
digitalWrite(b2,ADE[i]&0×02);
digitalWrite(b3,ADE[i]&0×04);
digitalWrite(b4,ADE[i]&0×08);
/*digitalWrite(b1,x%2);
x=x/2;
digitalWrite(b2,x%2);
x=x/2;
digitalWrite(b3,x%2);
x=x/2;
digitalWrite(b4,x%2);
*/
delay(500); // reatardo para que la bobina del motor se
energize
i++;
if (i==4) // si se pasa del tope entonces vuelve al inicio.
{ i=0;}
}
if (B!=HIGH) // si e es distinto de 1
{
y=ATRAS[i];
digitalWrite(b4,ATRAS[i]&0×04);
digitalWrite(b3,ATRAS[i]&0×08);
digitalWrite(b2,ATRAS[i]&0×01);
digitalWrite(b1,ATRAS[i]&0×02);
/*digitalWrite(b1,x%2);
x=x/2;
digitalWrite(b2,x%2);
x=x/2;
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 12/17
digitalWrite(b3,x%2);
x=x/2;
digitalWrite(b4,x%2);
*/
delay(500); // reatardo para que la bobina del motor se
energize
i++;
if (i==4) // si se pasa del tope entonces vuelve al inicio.
{ i=0;}
}
}
PepeChorva
en 8 noviembre, 2013 en 3:26 dijo:
Bueno, para controlar un motor stepper (paso a paso) es
recomendable usar la librería stepper incluida en el IDE
de Arduino.
Quizás deberías controlar el estado del botón, porque
con 500ms igual te ocurre que te hace 2 pasos
seguidos.
Se me ocurre una idea para un (o dos) post nuevos,
gracias*.
int b1=45;
int b2=44;
int b3=43;
int b4=42;
int PinA=28;
int PinB=29;
byte i,j,A,B;
int ADE[]={
1,2,4,8};
int ATRAS[]={
2,1,8,4};
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 13/17
/**/
int pinALastSTATE = pinBLastSTATE = LOW;
void setup()
{
pinMode(b1,OUTPUT); //se define el pin b1 como salida
pinMode(b2,OUTPUT);
pinMode(b3,OUTPUT);
pinMode(b4,OUTPUT);
pinMode(PinA,INPUT);//se define el pin PinE como
Entrada
pinMode(PinB,INPUT);
digitalWrite(PinA,HIGH); //Escribimos 1 en el pin de
entrada para habilitar la resistencia en pull up interno
digitalWrite(PinB,HIGH);
i=0;
j=0;
}
void loop()
{
byte x;
byte y;
int A=digitalRead(PinA);//Funcion que lee el estado del
pin PinE y se almacena en la variable e
int B=digitalRead(PinB);
if(A != pinALastSTATE)
{
pinALastSTATE = A;
if (readingA!=HIGH) // si e es distinto de 1
{
x=ADE[i];
digitalWrite(b1,ADE[i]&0×01);
digitalWrite(b2,ADE[i]&0×02);
digitalWrite(b3,ADE[i]&0×04);
digitalWrite(b4,ADE[i]&0×08);
/*digitalWrite(b1,x%2);
x=x/2;
digitalWrite(b2,x%2);
x=x/2;
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 14/17
digitalWrite(b3,x%2);
x=x/2;
digitalWrite(b4,x%2);
*/
delay(500); // reatardo para que la bobina del motor se
energize
i++;
if (i==4) // si se pasa del tope entonces vuelve al inicio.
{
i=0;
}
}
}
if(B != pinBLastSTATE)
{
pinBLastSTATE = B;
if (B!=HIGH) // si e es distinto de 1
{
y=ATRAS[i];
digitalWrite(b4,ATRAS[i]&0×04);
digitalWrite(b3,ATRAS[i]&0×08);
digitalWrite(b2,ATRAS[i]&0×01);
digitalWrite(b1,ATRAS[i]&0×02);
/*digitalWrite(b1,x%2);
x=x/2;
digitalWrite(b2,x%2);
x=x/2;
digitalWrite(b3,x%2);
x=x/2;
digitalWrite(b4,x%2);
*/
delay(500); // reatardo para que la bobina del motor se
energize
i++;
if (i==4) // si se pasa del tope entonces vuelve al inicio.
{
i=0;
}
}
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 15/17
}
pinALastSTATE = A;
pinBLastSTATE = B;
}
*tiene narices que el autor del blog sea quien dé las
gracias a la gente para escribir cosas en él xD
Victor
en 13 noviembre, 2013 en 1:36 dijo:
Que pena excelente blog, eh extraido muy buena
informacion, mi duda es por que alimentas con 9V el
L293D no seria mejor alimentarlo con la arduino, el no
necesita tener 9V para funcionar, solo es mi unica duda.
pepeChorva
en 13 noviembre, 2013 en 15:50 dijo:
Hola Victor, el L293 lo alimento con 9V porque así
alimento los motores desde el puente H, con 5V quizá
no funcionarían o, seguro, rodarían a una velocidad
mucho menor.
De esta forma, además, puedes tener una pila de 9V
alimentando al arduino y otra (o una batería LiPo) para
los motores, separando los consumos de cada
componente.
Me alegro que te sea útil la información
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 16/17
Jacobo
en 28 diciembre, 2013 en 9:29 dijo:
Que buen proyecto, te felicito (y agradezco je), solo una
duda, no se podria utlizar alguna configuracion para
controlar en vez de usar el potenciometro para la
velocidad de los motores, lo que pasa es que tengo que
hacer algo parecido pero desde visual studio, y que
desde una interfaz sea capaz de controlar tanto el giro
como la velocidad de un motor cd, con tu proyecto me
he estado dando una idea de como hacerlo, pero, ¿ No
tendrias una sugerencia para alguien que empieza con
arduino? Gracias y saludos
pepeChorva
en 28 diciembre, 2013 en 12:51 dijo:
Hola Jacobo, gracias
Sí, por supuesto que se podría, de hecho, tengo un
post, http://pepechorva.com/wordPress/ardutanque-1-0/ ,
en el que controlo esos motores desde el movil.
Ten en cuenta que estos son motores DC normales, y el
motor de un cd es brushless, hace falta un controlador
distinto. Mira a ver si te sirve este post del foro de
Arduino.cc http://forum.arduino.cc/index.php?
topic=17042.0
Suerte y dale caña!
Jacobo
en 30 diciembre, 2013 en 22:11 dijo:
Gracias, me has salvado, igual no lo voy a
03/06/14 Control de velocidad ygiro de motores | PepeChorva.com
pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 17/17
controlar por movil, pero me voy a guiarpara
ajustar el codigo. De igual manera voy a hacerlo
con un motor dc, no creo que me pongan algun
pero.
Lo que habia estado pensando era utilizar la
configuracion de puente h que tienes, solo con
un motor, controlando el potenciometro por
medio deun motor a pasos, no se que tan viable
sea pero espero que funcione.
De nueva cuenta te agradezco mucho, ysi tengo
alguna duda espero contar con tu asesoramiento
como lo haz hecho.
Post data, podrias darme alguna direccion mail
tuya, es que en la pc no me deja comentar en
wordpress, y hacerlo desde la tablet, uff es algo
laborioso mas cuando quiero mandarte el codigo
que he pensado para controlar el motor
pepeChorva
en 31 diciembre, 2013 en 0:57
dijo:
Me alegro que te sirva el código, y por
supuesto, pregunta

Weitere ähnliche Inhalte

Was ist angesagt?

Minivoltios fase3
Minivoltios fase3Minivoltios fase3
Minivoltios fase3josglods
 
2.búsqueda de información
2.búsqueda de información2.búsqueda de información
2.búsqueda de informaciónjuanfer99
 
Colegio nicolás esguerra
Colegio nicolás esguerraColegio nicolás esguerra
Colegio nicolás esguerrajuanlopezjerez
 
PLC y Electroneumática: Automatismo industrial por juan Carlos Martin y María...
PLC y Electroneumática: Automatismo industrial por juan Carlos Martin y María...PLC y Electroneumática: Automatismo industrial por juan Carlos Martin y María...
PLC y Electroneumática: Automatismo industrial por juan Carlos Martin y María...SANTIAGO PABLO ALBERTO
 
Presentación samsa ii
Presentación samsa iiPresentación samsa ii
Presentación samsa iiPablo Gindel
 
Manual open roberta
Manual open robertaManual open roberta
Manual open robertaalexxandrom
 
Construcción de un Brazo robot (Materia Arquitectura de Computadoras)
Construcción de un Brazo robot (Materia Arquitectura de Computadoras)Construcción de un Brazo robot (Materia Arquitectura de Computadoras)
Construcción de un Brazo robot (Materia Arquitectura de Computadoras)Cristina Zavala Palacios
 
Introducción a Arduino - MapaMental
Introducción a Arduino - MapaMentalIntroducción a Arduino - MapaMental
Introducción a Arduino - MapaMentalleon-geyer
 
Robot seguidor de línea con software y hardware
Robot seguidor de línea con software y hardwareRobot seguidor de línea con software y hardware
Robot seguidor de línea con software y hardwareNamsohj Ozarazil
 
Informe arduino y proteus
Informe arduino y proteusInforme arduino y proteus
Informe arduino y proteus99belen
 
Manual electrotécnico -telesquemario telemecanique
Manual electrotécnico -telesquemario telemecaniqueManual electrotécnico -telesquemario telemecanique
Manual electrotécnico -telesquemario telemecaniqueAdrian Camacho
 

Was ist angesagt? (19)

Minivoltios fase3
Minivoltios fase3Minivoltios fase3
Minivoltios fase3
 
Reporte proyecto sumorobot
Reporte proyecto sumorobotReporte proyecto sumorobot
Reporte proyecto sumorobot
 
repote robot
repote robotrepote robot
repote robot
 
2.búsqueda de información
2.búsqueda de información2.búsqueda de información
2.búsqueda de información
 
Presentacion
PresentacionPresentacion
Presentacion
 
Informe ieee de robot sumo(cronos)
Informe ieee de robot sumo(cronos)Informe ieee de robot sumo(cronos)
Informe ieee de robot sumo(cronos)
 
Colegio nicolás esguerra
Colegio nicolás esguerraColegio nicolás esguerra
Colegio nicolás esguerra
 
PLC y Electroneumática: Automatismo industrial por juan Carlos Martin y María...
PLC y Electroneumática: Automatismo industrial por juan Carlos Martin y María...PLC y Electroneumática: Automatismo industrial por juan Carlos Martin y María...
PLC y Electroneumática: Automatismo industrial por juan Carlos Martin y María...
 
Presentación samsa ii
Presentación samsa iiPresentación samsa ii
Presentación samsa ii
 
Manual open roberta
Manual open robertaManual open roberta
Manual open roberta
 
Arduino
ArduinoArduino
Arduino
 
Construcción de un Brazo robot (Materia Arquitectura de Computadoras)
Construcción de un Brazo robot (Materia Arquitectura de Computadoras)Construcción de un Brazo robot (Materia Arquitectura de Computadoras)
Construcción de un Brazo robot (Materia Arquitectura de Computadoras)
 
Proyeto andres cruz
Proyeto andres cruzProyeto andres cruz
Proyeto andres cruz
 
Introducción a Arduino - MapaMental
Introducción a Arduino - MapaMentalIntroducción a Arduino - MapaMental
Introducción a Arduino - MapaMental
 
Brazo robótico tipo puma
Brazo robótico tipo pumaBrazo robótico tipo puma
Brazo robótico tipo puma
 
Robot seguidor de línea con software y hardware
Robot seguidor de línea con software y hardwareRobot seguidor de línea con software y hardware
Robot seguidor de línea con software y hardware
 
Informe arduino y proteus
Informe arduino y proteusInforme arduino y proteus
Informe arduino y proteus
 
Manual electrotécnico -telesquemario telemecanique
Manual electrotécnico -telesquemario telemecaniqueManual electrotécnico -telesquemario telemecanique
Manual electrotécnico -telesquemario telemecanique
 
Informe del sumo ktm arduim
Informe del sumo ktm arduimInforme del sumo ktm arduim
Informe del sumo ktm arduim
 

Ähnlich wie Metodo de Control de velocidad y de motores

Accionamiento para servomotor y motor a pasos
Accionamiento para servomotor y motor a pasosAccionamiento para servomotor y motor a pasos
Accionamiento para servomotor y motor a pasosJuan Daniel
 
Actividad bloque 1. automatismos eléctricos
Actividad bloque 1. automatismos  eléctricosActividad bloque 1. automatismos  eléctricos
Actividad bloque 1. automatismos eléctricosleitonlarios
 
Practica motor pap
Practica motor papPractica motor pap
Practica motor papjchj1
 
Controlar motores de corriente continua con puente h
Controlar motores de corriente continua con puente hControlar motores de corriente continua con puente h
Controlar motores de corriente continua con puente hedyhard
 
Proyecto balancing joaquin berrocal piris abril 2016 - 53 pag
Proyecto balancing joaquin berrocal piris abril 2016  - 53 pagProyecto balancing joaquin berrocal piris abril 2016  - 53 pag
Proyecto balancing joaquin berrocal piris abril 2016 - 53 pagjoaquinin1
 
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2joaquinin1
 
Mini proyecto con (sin) arduino
Mini proyecto con (sin) arduinoMini proyecto con (sin) arduino
Mini proyecto con (sin) arduinoAkashi Yuurei
 
Andador motorizado
Andador motorizadoAndador motorizado
Andador motorizadoesaac2016
 
Guia mci servo motor con arduino
Guia mci   servo motor con arduinoGuia mci   servo motor con arduino
Guia mci servo motor con arduinoMarceArocas
 
PLC y Electroneumática: Cadesimu4. arranque y parada de motor con Arduino
PLC y Electroneumática: Cadesimu4. arranque y parada de motor con Arduino  PLC y Electroneumática: Cadesimu4. arranque y parada de motor con Arduino
PLC y Electroneumática: Cadesimu4. arranque y parada de motor con Arduino SANTIAGO PABLO ALBERTO
 
Proyecto brazo robotico ksr10 enero marzo 2015
Proyecto brazo robotico ksr10  enero marzo 2015Proyecto brazo robotico ksr10  enero marzo 2015
Proyecto brazo robotico ksr10 enero marzo 2015joaquinin1
 
Proyecto brazo robotico ksr10 enero marzo 2015
Proyecto brazo robotico ksr10  enero marzo 2015Proyecto brazo robotico ksr10  enero marzo 2015
Proyecto brazo robotico ksr10 enero marzo 2015joaquinin1
 
Curso cuerpos-de-aceleracion-pdf
Curso cuerpos-de-aceleracion-pdfCurso cuerpos-de-aceleracion-pdf
Curso cuerpos-de-aceleracion-pdfssuser24e47a
 
Curso cuerpos-de-aceleracion-pdf
Curso cuerpos-de-aceleracion-pdfCurso cuerpos-de-aceleracion-pdf
Curso cuerpos-de-aceleracion-pdfTORREZOTE
 

Ähnlich wie Metodo de Control de velocidad y de motores (20)

Accionamiento para servomotor y motor a pasos
Accionamiento para servomotor y motor a pasosAccionamiento para servomotor y motor a pasos
Accionamiento para servomotor y motor a pasos
 
Actividad bloque 1. automatismos eléctricos
Actividad bloque 1. automatismos  eléctricosActividad bloque 1. automatismos  eléctricos
Actividad bloque 1. automatismos eléctricos
 
Practica motor pap
Practica motor papPractica motor pap
Practica motor pap
 
Controlar motores de corriente continua con puente h
Controlar motores de corriente continua con puente hControlar motores de corriente continua con puente h
Controlar motores de corriente continua con puente h
 
Proyecto balancing joaquin berrocal piris abril 2016 - 53 pag
Proyecto balancing joaquin berrocal piris abril 2016  - 53 pagProyecto balancing joaquin berrocal piris abril 2016  - 53 pag
Proyecto balancing joaquin berrocal piris abril 2016 - 53 pag
 
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2
 
Mini proyecto con (sin) arduino
Mini proyecto con (sin) arduinoMini proyecto con (sin) arduino
Mini proyecto con (sin) arduino
 
Andador motorizado
Andador motorizadoAndador motorizado
Andador motorizado
 
Guia mci servo motor con arduino
Guia mci   servo motor con arduinoGuia mci   servo motor con arduino
Guia mci servo motor con arduino
 
Servo motor 360 con arduino
Servo motor 360 con arduinoServo motor 360 con arduino
Servo motor 360 con arduino
 
PLC y Electroneumática: Cadesimu4. arranque y parada de motor con Arduino
PLC y Electroneumática: Cadesimu4. arranque y parada de motor con Arduino  PLC y Electroneumática: Cadesimu4. arranque y parada de motor con Arduino
PLC y Electroneumática: Cadesimu4. arranque y parada de motor con Arduino
 
Proyecto1
Proyecto1Proyecto1
Proyecto1
 
Proyecto brazo robotico ksr10 enero marzo 2015
Proyecto brazo robotico ksr10  enero marzo 2015Proyecto brazo robotico ksr10  enero marzo 2015
Proyecto brazo robotico ksr10 enero marzo 2015
 
Proyecto brazo robotico ksr10 enero marzo 2015
Proyecto brazo robotico ksr10  enero marzo 2015Proyecto brazo robotico ksr10  enero marzo 2015
Proyecto brazo robotico ksr10 enero marzo 2015
 
Curso cuerpos-de-aceleracion-pdf
Curso cuerpos-de-aceleracion-pdfCurso cuerpos-de-aceleracion-pdf
Curso cuerpos-de-aceleracion-pdf
 
Curso cuerpos-de-aceleracion-pdf
Curso cuerpos-de-aceleracion-pdfCurso cuerpos-de-aceleracion-pdf
Curso cuerpos-de-aceleracion-pdf
 
Pwm modulation
Pwm modulationPwm modulation
Pwm modulation
 
Proyecto final regulador
Proyecto final regulador Proyecto final regulador
Proyecto final regulador
 
Proyecto final
Proyecto final Proyecto final
Proyecto final
 
Práctica06.Controlando Motores
Práctica06.Controlando MotoresPráctica06.Controlando Motores
Práctica06.Controlando Motores
 

Kürzlich hochgeladen

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariamarco carlos cuyo
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfDannyTola1
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 

Kürzlich hochgeladen (20)

PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundaria
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdf
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 

Metodo de Control de velocidad y de motores

  • 1. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 1/17 Control de velocidad y giro de motores Publicado el 6 diciembre, 2011 Controlar un motor es fácil, le pasas corriente y listo, ya corre. Si quieres controlar la velocidad, es decir, que acelere, ya es un pelín más complejo, necesitas PWM, pero… si además quieres elegir en qué dirección tiene que girar, ya es la ostia necesitas lo que se denomina un puente H. Este tutorial viene a ser una continuación del Howto ArduTanque DIY, el tanque ya está montado, falta hacer que se mueva. En este tutorial no me voy a detener en los posibles usos que se le puedan dar a un motor (desde mover ruedas u orugas a un ventilador, ducted-fan, etc), los límites los pones tu, yo sólo te voy a explicar cómo mover un motor (o varios). Podría entrar a explicar toda la teoría de como influyen las corrientes eléctricas en el bobinado de un motor… pero ni tengo mucha idea, ni entra en el objetivo de este tutorial, así que vamos a ver directamente al tema, como controlar un motor. Con un motor, si no necesitamos variar la velocidad ni el sentido, lo tenemos muy fácil, asignamos un pin de salida del arduino y le damos valor HIGH cada vez que lo queramos en marcha, al igual que haríamos para encender un LED. PepeChorva.com Este es mi sitio, esta es mi gente… oh, wait!!!
  • 2. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 2/17 La respuesta del motor será la misma que si lo conectáramos al pin +5V de arduino, es decir, todo o nada, va o no va. Si utilizamos las salidas PWM del arduino, podemos variar la velocidad del motor, de forma que se multiplican las opciones para manejarlo (también se multiplica la complejidad computacional, pero hay que echarle valor, el resultado merece la pena). Todo eso está muy bien, tiene muchas utilidades, es sencillo y es hasta chulo. . . pero yo
  • 3. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 3/17 quiero controlar un motor que se mueva adelante y atrás, para mi robot dominador del mundo. Aquí es donde entra la electrónica como un elefante en una cacharrería, necesitamos algo más que un motor y un arduino. Concretamente, necesitamos montar lo que se denomina un puente H. El puente H obtiene este nombre a partir de que la configuración del mismo se asemejaría a una H mayúscula. Tenemos los dos extremos superiores que son los selectores de dirección, que crean un circuito cada uno para que el motor gire en un sentido u otro. Estos circuitos se cruzan a través del motor, que está, por decirlo de alguna forma, en el palito horizontal de la H. No voy a detenerme en el funcionamiento del puente H, hay montones de esquemas que lo hacen, así que no voy a reinventar la rueda. Para simplificar los circuitos, se utiliza un I.C. (circuito integrado), en este caso, un L293D. Este nos permite 2 puentes H independientes. El puente de diodos, en el caso del L293D no es necesario, está implementado internamente, pero en mi caso, el IC esta sobre un zócalo, por si en una de esas lo cambio por el L293B, que sí lo necesita. Nunca está de más un poco de protección extra. Bueno, ahora ya tenemos el giro pero, ¿como conseguimos acelerar? Para ello, necesitamos usar un pin del arduino con PWM para la entrada ENABLE del IC, que nos permite activar la salida hacia el motor y esto es lo que permite acelerar. Haremos un
  • 4. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 4/17 analogWrite con valor base 800 + 1/6 del valor que lea el C.A/D, sobre el pin del motor que nos interese. Este valor base nos da la frecuencia a la que debe transmitir el valor HIGH por el pin seleccionado. El esquemático y el código para el ejemplo es el siguiente: Muy importante, poner GNDs en común para no freir el arduino, las diferencias de los voltajes a los que trabajan el microcontrolador y los motores, pueden ser peligrosas para el arduino (y en general, para cualquier micro). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //Programaparacontrolar2motoresconcontroldevelocidadygiroconunL293 intswitchPin=7; //switchparacambiarelsentidodegirodelosmotores intmotor1Pin1=3; //Motor1adelante intmotor1Pin2=4; //Motor1atras intspeedPin1=9; //Motor1aceleracion(PWM)PinenabledelL293 intpotPin=0; //Potenciometroparacontrolarvelocidadmotor1 intledPin=13; //LED //intswitchPin2=8; //Noimplementado intmotor2Pin1=5; //Motor2adelante intmotor2Pin2=6; //Motor2atras intspeedPin2=10; //Motor2aceleracion(PWM)PinEnabledelL293 intpotPin2=1; //Potenciometroparacontrolarvelocidadmotor2 intspeedpin=0; //tasadevelocidadalaqueArduinoenvialosdatos voidsetup(){ Serial.begin(9600); //configuraciondepines pinMode(switchPin,INPUT);
  • 5. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 5/17 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 //pinMode(switchPin2,INPUT);//nousado //ControlMotor1 pinMode(motor1Pin1,OUTPUT); pinMode(motor1Pin2,OUTPUT); pinMode(speedPin1,OUTPUT); //ControlMotor2 pinMode(motor2Pin1,OUTPUT); pinMode(motor2Pin2,OUTPUT); pinMode(speedPin2,OUTPUT); pinMode(ledPin,OUTPUT); //EstablecespeedPinXenmodoHighparapodercontrolarlavelocidad digitalWrite(speedPin1,HIGH); digitalWrite(speedPin2,HIGH); //comprobaciondereseteo,sielledparpadeasolo3veces,todoestabien //sivuelveaparpadear,significaquehahechounreset,revisarconexiones //porsihubierauncorto blink(ledPin,3,100); } voidloop(){ //Sielswitchnoestapulsado,giraenunadireccion,sinoenlacontraria if(digitalRead(switchPin)>0){ digitalWrite(motor1Pin1,LOW); //Estableceelsentidodegirodelmotor1 digitalWrite(motor1Pin2,HIGH); // speedpin=analogRead(potPin); //Lecturadelvalordelpotenciometro speedpin=800+(speedpin/6); //Paraestablecerlavelocidaddegiro analogWrite(speedPin1,speedpin); // Serial.print("motor1="); // Serial.println(speedpin); // delay(50); // digitalWrite(motor2Pin1,LOW); //Estableceelsentidodegirodelmotor2 digitalWrite(motor2Pin2,HIGH); // speedpin=analogRead(potPin2); //Lecturadelvalordelpotenciometro speedpin=800+(speedpin/6); //Paraestablecerlavelocidaddegiro analogWrite(speedPin2,speedpin); // Serial.print("motor2="); // Serial.println(speedpin); // delay(50); // } else{ digitalWrite(motor1Pin1,HIGH); //Estableceelsentidodegirodelmotor1 digitalWrite(motor1Pin2,LOW); // speedpin=analogRead(potPin); //Lecturadelvalordelpotenciometro speedpin=800+(speedpin/6); //Paraestablecerlavelocidaddegiro analogWrite(speedPin1,speedpin); // Serial.print("motor1="); // Serial.println(speedpin); // delay(50); // digitalWrite(motor2Pin1,HIGH); //Estableceelsentidodegirodelmotor2 digitalWrite(motor2Pin2,LOW); //
  • 6. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 6/17 Para este ejemplo, controlo la velocidad de los dos motores del tanque de forma independiente con los potenciómetros, aunque la dirección en este caso sólo se controla mediante un botón, por simplicidad. Más adelante, con sensores de distancias, brújulas, sensores IR para hacer un siguelíneas, no hará falta este botón, ni los potenciómetros, por lo que es poco relevante su implementación. Aquí un video del funcionamiento del ardutanque, ya se mueve!!! la conquista del mundo está cerca, MWHAHAHAHAHAAA!!! 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 speedpin=analogRead(potPin2); //Lecturadelvalordelpotenciometro speedpin=800+(speedpin/6); //Paraestablecerlavelocidaddegiro analogWrite(speedPin2,speedpin); // Serial.print("motor2="); // Serial.println(speedpin); // delay(50); // } } /* Parpadeodelled,Significaquehaejecutadolafuncionsetup() sitodovabien,soloparpadeatresveces,sihayalgunerrorquereseteeelarduino, volveraaverseelparpadeodelled */ voidblink(intwhatPin,inthowManyTimes,intmilliSecs){ inti=0; for(i=0;i<howManyTimes;i++){ digitalWrite(whatPin,HIGH); delay(milliSecs/2); digitalWrite(whatPin,LOW); delay(milliSecs/2); } }
  • 7. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 7/17 14 PENSAMIENTOS EN “CONTROL DE VELOCIDAD Y GIRO DE MOTORES” El código de control del puente H está basado en el de esta página: http://www.ecs.umass.edu/ece/m5/tutorials/H-Bridge_tutorial.html Espero que os haya gustado. Control de velocidad y giro de motores por PepeChorva.com, a excepción del contenido de terceros y de que se indique lo contrario, se encuentra bajo una Licencia Creative Commons Attribution-ShareAlike 3.0 Unported Licencia. Esta entrada fue publicada en Arduino y etiquetada arduino, ardutanque, programación por pepeChorva. Guarda enlace permanente [http://pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/] . 0:00 / 1:30 ardutanque control motores.mp4
  • 8. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 8/17 tonicomj en 15 febrero, 2012 en 23:26 dijo: Muy chulo, pero tengo una duda. Según he leído los pwm van de 0..255, y solo en algunos chips puede configurarse para que funcione de 0..1023. es esto así ¿ De serlo se podría poner speedpin= speedpin/4 Un saludo Esteban en 23 marzo, 2014 en 19:04 dijo: Una pregunta: ¿Conectaste los pines de pwm de tu arduino a los enables de tu puente h respectivamente? ¿te funcionó? yo hice lo mismo pero con un picmicro, usando un sn754410, un puente h parecido el tuyo, sin embargo no me hacía las variaciones en la velocidad de giro de mis motores conectando mis salidas de pwm a los pines de enable de mi puente h, pero si me hacia el cambio de direcciones que mandaba con mi micro, de otra forma conectando mis salidas de pwm al las entradas input del puente h si me hacia las variaciones de velocidades perfectamente, el problema es que ocupando los inputs de mi puente h para el pwm no tengo para poder controlar las direcciones, en si quisiera de favor saber si tu puente h si te hace perfectamente los cambios de velocidad utilizando los enables para buscarlo y comenzar a hacer pruebas con el. Betho en 15 abril, 2014 en 18:16 dijo:
  • 9. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 9/17 Bueno, la verdad que eso de dividir entre 4 es algo “burdo”, para que se vea más elegante podrías utilizar la función “MAP” para que te veas más como un programador versátil PepeChorva en 16 febrero, 2012 en 0:55 dijo: Buena pregunta, la verdad es que me has pillado PWM va de 0 a 255, si, o 0×00 a 0xFF en hexadecimal. Pero, si pones directamente el valor del potenciómetro en la salida PWM, solo conseguirás que el motor emita un zumbido, pero no se moverá (o al menos, eso me pasaba a mi)., Aumentando este valor, sí consigues movimiento pero, sinceramente, no entiendo el por qué. Tomo tu duda como un reto e intentaré averiguarlo. tonicomj en 22 febrero, 2012 en 18:40 dijo: Bueno el proximo sabado podremos hablarlo pues voy a asistir a la reunion y aprender todo lo que pueda de los que llevais tiempo en esto. Un saludo. PepeChorva
  • 10. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 10/17 en 22 febrero, 2012 en 18:44 dijo: Perfecto, allí nos vemos! antonio echeverria en 7 noviembre, 2013 en 18:41 dijo: como hago para invertir elgiro de un stepper , este es mi programa para q con cada pulsacion avance un paso, pero no logro invertirlo bien, a veces da , a veces se salta, no entiendo porque int b1=45; int b2=44; int b3=43; int b4=42; int PinA=28; int PinB=29; byte i,j,A,B; int ADE[]={1,2,4,8}; int ATRAS[]={2,1,8,4}; void setup() {pinMode(b1,OUTPUT); //se define el pin b1 como salida pinMode(b2,OUTPUT); pinMode(b3,OUTPUT); pinMode(b4,OUTPUT); pinMode(PinA,INPUT);//se define el pin PinE como Entrada pinMode(PinB,INPUT); digitalWrite(PinA,HIGH); //Escribimos 1 en el pin de entrada para habilitar la resistencia en pull up interno digitalWrite(PinB,HIGH); i=0; j=0; } void loop()
  • 11. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 11/17 { byte x; byte y; A=digitalRead(PinA);//Funcion que lee el estado del pin PinE y se almacena en la variable e B=digitalRead(PinB); if (A!=HIGH) // si e es distinto de 1 { x=ADE[i]; digitalWrite(b1,ADE[i]&0×01); digitalWrite(b2,ADE[i]&0×02); digitalWrite(b3,ADE[i]&0×04); digitalWrite(b4,ADE[i]&0×08); /*digitalWrite(b1,x%2); x=x/2; digitalWrite(b2,x%2); x=x/2; digitalWrite(b3,x%2); x=x/2; digitalWrite(b4,x%2); */ delay(500); // reatardo para que la bobina del motor se energize i++; if (i==4) // si se pasa del tope entonces vuelve al inicio. { i=0;} } if (B!=HIGH) // si e es distinto de 1 { y=ATRAS[i]; digitalWrite(b4,ATRAS[i]&0×04); digitalWrite(b3,ATRAS[i]&0×08); digitalWrite(b2,ATRAS[i]&0×01); digitalWrite(b1,ATRAS[i]&0×02); /*digitalWrite(b1,x%2); x=x/2; digitalWrite(b2,x%2); x=x/2;
  • 12. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 12/17 digitalWrite(b3,x%2); x=x/2; digitalWrite(b4,x%2); */ delay(500); // reatardo para que la bobina del motor se energize i++; if (i==4) // si se pasa del tope entonces vuelve al inicio. { i=0;} } } PepeChorva en 8 noviembre, 2013 en 3:26 dijo: Bueno, para controlar un motor stepper (paso a paso) es recomendable usar la librería stepper incluida en el IDE de Arduino. Quizás deberías controlar el estado del botón, porque con 500ms igual te ocurre que te hace 2 pasos seguidos. Se me ocurre una idea para un (o dos) post nuevos, gracias*. int b1=45; int b2=44; int b3=43; int b4=42; int PinA=28; int PinB=29; byte i,j,A,B; int ADE[]={ 1,2,4,8}; int ATRAS[]={ 2,1,8,4};
  • 13. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 13/17 /**/ int pinALastSTATE = pinBLastSTATE = LOW; void setup() { pinMode(b1,OUTPUT); //se define el pin b1 como salida pinMode(b2,OUTPUT); pinMode(b3,OUTPUT); pinMode(b4,OUTPUT); pinMode(PinA,INPUT);//se define el pin PinE como Entrada pinMode(PinB,INPUT); digitalWrite(PinA,HIGH); //Escribimos 1 en el pin de entrada para habilitar la resistencia en pull up interno digitalWrite(PinB,HIGH); i=0; j=0; } void loop() { byte x; byte y; int A=digitalRead(PinA);//Funcion que lee el estado del pin PinE y se almacena en la variable e int B=digitalRead(PinB); if(A != pinALastSTATE) { pinALastSTATE = A; if (readingA!=HIGH) // si e es distinto de 1 { x=ADE[i]; digitalWrite(b1,ADE[i]&0×01); digitalWrite(b2,ADE[i]&0×02); digitalWrite(b3,ADE[i]&0×04); digitalWrite(b4,ADE[i]&0×08); /*digitalWrite(b1,x%2); x=x/2; digitalWrite(b2,x%2); x=x/2;
  • 14. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 14/17 digitalWrite(b3,x%2); x=x/2; digitalWrite(b4,x%2); */ delay(500); // reatardo para que la bobina del motor se energize i++; if (i==4) // si se pasa del tope entonces vuelve al inicio. { i=0; } } } if(B != pinBLastSTATE) { pinBLastSTATE = B; if (B!=HIGH) // si e es distinto de 1 { y=ATRAS[i]; digitalWrite(b4,ATRAS[i]&0×04); digitalWrite(b3,ATRAS[i]&0×08); digitalWrite(b2,ATRAS[i]&0×01); digitalWrite(b1,ATRAS[i]&0×02); /*digitalWrite(b1,x%2); x=x/2; digitalWrite(b2,x%2); x=x/2; digitalWrite(b3,x%2); x=x/2; digitalWrite(b4,x%2); */ delay(500); // reatardo para que la bobina del motor se energize i++; if (i==4) // si se pasa del tope entonces vuelve al inicio. { i=0; } }
  • 15. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 15/17 } pinALastSTATE = A; pinBLastSTATE = B; } *tiene narices que el autor del blog sea quien dé las gracias a la gente para escribir cosas en él xD Victor en 13 noviembre, 2013 en 1:36 dijo: Que pena excelente blog, eh extraido muy buena informacion, mi duda es por que alimentas con 9V el L293D no seria mejor alimentarlo con la arduino, el no necesita tener 9V para funcionar, solo es mi unica duda. pepeChorva en 13 noviembre, 2013 en 15:50 dijo: Hola Victor, el L293 lo alimento con 9V porque así alimento los motores desde el puente H, con 5V quizá no funcionarían o, seguro, rodarían a una velocidad mucho menor. De esta forma, además, puedes tener una pila de 9V alimentando al arduino y otra (o una batería LiPo) para los motores, separando los consumos de cada componente. Me alegro que te sea útil la información
  • 16. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 16/17 Jacobo en 28 diciembre, 2013 en 9:29 dijo: Que buen proyecto, te felicito (y agradezco je), solo una duda, no se podria utlizar alguna configuracion para controlar en vez de usar el potenciometro para la velocidad de los motores, lo que pasa es que tengo que hacer algo parecido pero desde visual studio, y que desde una interfaz sea capaz de controlar tanto el giro como la velocidad de un motor cd, con tu proyecto me he estado dando una idea de como hacerlo, pero, ¿ No tendrias una sugerencia para alguien que empieza con arduino? Gracias y saludos pepeChorva en 28 diciembre, 2013 en 12:51 dijo: Hola Jacobo, gracias Sí, por supuesto que se podría, de hecho, tengo un post, http://pepechorva.com/wordPress/ardutanque-1-0/ , en el que controlo esos motores desde el movil. Ten en cuenta que estos son motores DC normales, y el motor de un cd es brushless, hace falta un controlador distinto. Mira a ver si te sirve este post del foro de Arduino.cc http://forum.arduino.cc/index.php? topic=17042.0 Suerte y dale caña! Jacobo en 30 diciembre, 2013 en 22:11 dijo: Gracias, me has salvado, igual no lo voy a
  • 17. 03/06/14 Control de velocidad ygiro de motores | PepeChorva.com pepechorva.com/wordPress/control-de-velocidad-y-giro-de-motores/ 17/17 controlar por movil, pero me voy a guiarpara ajustar el codigo. De igual manera voy a hacerlo con un motor dc, no creo que me pongan algun pero. Lo que habia estado pensando era utilizar la configuracion de puente h que tienes, solo con un motor, controlando el potenciometro por medio deun motor a pasos, no se que tan viable sea pero espero que funcione. De nueva cuenta te agradezco mucho, ysi tengo alguna duda espero contar con tu asesoramiento como lo haz hecho. Post data, podrias darme alguna direccion mail tuya, es que en la pc no me deja comentar en wordpress, y hacerlo desde la tablet, uff es algo laborioso mas cuando quiero mandarte el codigo que he pensado para controlar el motor pepeChorva en 31 diciembre, 2013 en 0:57 dijo: Me alegro que te sirva el código, y por supuesto, pregunta