Vous êtes sur la page 1sur 16

Prctica de manejo de motores CC

con arduino
Antonio Martnez
Motor CC
Existen varios tipos de motores (servos, Motores de paso..), el motor que tenemos en el
aula normalmente es un motor DC. Son los motores que encontramos en juguetes,
DVD's, etc. l aplicarle un voltaje el motor gira ! al quitarlo se detiene. "ara cam#iar
la direcci$n solo %a! que cam#iar su polaridad.
"ara comtrolarlo necesitamos m&s componemtes' un trasistor de potencia ! un Diodo.
Transistor
(ransistor
(iene ) patas' #ase, colector ! emisor. *a! muc%os tipos, nosotros utili+aremos el (,"
-./. Ser& un interruptor electr$nico, (no mec&nicos) que a#rir& ! cerrar& el
0interruptor0 de nuestro motor.
Diodo
Diod
o
El diodo es un semiconductor. 1a 2unci$n de los diodos es dejar pasar la corriente en
un solo sentido. (iene polaridad, la #anda oscura indica el c&todo(3).
Cmo se conecta a Arduino?
En este montaje untili+amos el pin digital "4M (modulaci$n de nc%o de "ulso).
5ecesitamos una 2uente de alimentaci$n externa, en este montaje una pila de 6 Voltios. El
diodo nos sirve de protecci$n para el rduino que se alimenta con 7 Voltios, dejando que
la corriente de 6 Voltios s$lo circule para alimentar al motor. En cam#io la (ierra de#e
estar conectada a la (ierra del rduino, pues si no el circuito se desesta#ili+a. Esto es una
regla en todos los momtajes' las tierras o masas de#en estar siempre conectadas.
El transitor adem&s est& protegiendo el rduino, 2uncionando como interruptor para
este circuito. (am#i8n se utli+a una resistencia para protegerlo.
Cmo se programa?
"ara enviar un pulso al motor se utili+a la instrucci$n analog4rite(pin, pulso)9 1os
valores ser&n de / a .77, !a que "4M es una 0simulaci$n0 de anal$gico, en la que : es
/ Voltios ! .77, 7 Voltios.
En este programa enviamos un pulso al Motor que lo %ace es ir de velocidad o a
las m&ximas revoluci$n'
;;
int pulso < /9 ;; varia#le donde almacenamos el valor del
pulso int pinMotor < -/9 ;; "in -/ que puede generar "4M
void setup()
= ;; 5o tenemos que declarar que es una salida anal$gica
>
void loop()
=
2or(pulso < / 9 pulso ?< .779 pulso @@) ;; ciclo para ir su#iendo el voltaje desde / a 7
voltios
=
analog4rite(pinMotor, pulso)9 ;; enviamos el pulso al motor vAa "4M
dela!(-7)9
>
dela!(B//)9
>
Puente en H
"ara controlar un motor de corriente contAnua se utili+a la t8cnica de puente en *.
Cigura -
Si cerramos los interruptores S- ! SD el motor gira en un sentido, si cerramos S) ! S. el
motor gira en sentido contrario.
Chip L!"D#$%puente H&'
Es un circuito integrado o c%ip, que puede ser utili+ado para controlar simult&neamente
la velocidad ! direcci$n de dos motores de continua (contiene dos puentes *). 1a
di2erencia entre el modelo 1.6)D ! 1.6)E, es que el primero viene con diodos de
protecci$n que evita los daFos producidos por los picos de voltaje que puede producir el
motor.
Cigura -. Diagrama de conexiones del circuito 1.6)D con dos motores
Cigura .. Diagrama de conexiones del circuito 1.6)D (vista encapsulado)
Contiene D pines digitales (.,G,-/, -7) para controlar la direcci$n de los motores.
1os pines 0ena#le0 (-,6) admiten como entrada una seFal "4M, ! se utili+a para
controlar la velocidad de los motores con la t8cnica de modulaci$n de anc%o de
pulso. 1os motores van conectados entre uno de los pines ), B, --, o -D.
1a tensi$n Vss es la que alimentar& o dar& potencia al motor.
'
Cigura ). Conexiones del arduino al circuito 1.6)D para control de dos motores.
Conexiones arduino Conexiones circuito Funciones
l293
"in B , salida "4M motor
Entrada "in -,
%a#ilita "ara controlar velocidad
((ren de pulsos modulados en la trans2erencia de
Motor

anc%ura) potencia a motor


"in G
(direcci$n
#orna -
motor "in G
(direcci
$n #orna - motor
) )
"in H
(direcci$n
#orna .
motor "in .
(direcci
$n #orna . motor
) )
"in 6 , salida "4M motor E
Entrada "in 6,
%a#ilita "ara controlar velocidad
((ren de pulsos modulados en la trans2erencia de
Motor
E
anc%ura) potencia a motor
"in -/
(direcci$n #orna - "in -/
(direcci
$n #orna - motor
motor E) E)
"in --
(direcci$n #orna . "in -7
(direcci
$n #orna . motor
motor E) E)
5egativo arduino (gnd) D,7,-. ! -) unidas al
1os negativos del
arduino,
gnd del arduino ! al 1.6)D ! "ila de#en estar
negativo de la pila unidos.
"ines H ! -B
Conectar al @ de la pila,
no
conectar a( ) de(
Arduino
pues crea inter2erencias !
el us# del ordenador no
tiene su2iciente potencia
para mover los motores
Salidas ) ! B del Conexi$n del motor
1.6)D al motor
Salidas -D ! -- del Conexi$n del motor E
1.6)D al motor E
(a#la- de conexiones entre
rduino ! 1.6)D
C$digo para controlar mediante ordenador ro#ot con . motores CC desde el puerto
serie 1as conexiones aparecen en la 2igura ) ! en la (a#la-.
c%ar val9
int "4M < B9 ;;velocidad motor
int dirmotor- < G9 ;; direccion motor a #orna -
int dirmotor.< H9 ;; direccion motor a #orna.
int "4ME < 69 ;;velocidad motor E
int dirmotorE- < -/9 ;; direccion motor # #orna -
int dirmotorE.< --9 ;; direccion motor # #orna.
int velocidad < -./9
void adelante()=
digital4rite (dirmotor-,*,I*)9;; gira motor derec%a
digital4rite (dirmotor.,1:4)9
analog4rite ("4M, velocidad)9
digital4rite (dirmotorE-,1:4)9;; gira motor E
i+quierda digital4rite (dirmotorE.,*,I*)9
analog4rite ("4ME, velocidad)9
>
void atras()=
digital4rite (dirmotor-,1:4)9;; gira motor
i+quierda digital4rite (dirmotor.,*,I*)9
analog4rite ("4M, velocidad)9
digital4rite (dirmotorE-,*,I*)9;; gira motor E
derec%a digital4rite (dirmotorE.,1:4)9
analog4rite ("4ME, velocidad)9
>
void i+quierda()=
digital4rite (dirmotor-,*,I*)9;; gira motor derec%a
digital4rite (dirmotor.,1:4)9
analog4rite ("4M, velocidad)9
digital4rite (dirmotorE-,*,I*)9;; gira motor E
derec%a digital4rite (dirmotorE.,1:4)9
analog4rite ("4ME, velocidad)9
>
void derec%a()=
digital4r
ite
(dirmotor-,1:4)
9;;
gira motor
i+quierda
digital4r
ite
(dirmotor.,*,I*
)9
analog4r
ite
("4M,
velocidad)9
digital4r
ite
(dirmotorE-,1:4)
9;;
gira motor E
i+quierda
digital4r
ite
(dirmotorE.,*,I*
)9
analog4r
ite
("4ME,
velocidad)9
>
void paro()=
digital4r
ite
(dirmotor-,*,I*)
9;; para motor
digital4r
ite
(dirmotor.,*,I*
)9
analog4r
ite ("4M, /)9
digital4r
ite
(dirmotorE-,*,I*)
9;; para motor E
digital4r
ite
(dirmotorE.,*,I*
)9
analog4r
ite ("4ME, /)9
>
void setup()
=
int i9
2or(i<B9i?-.9i@@)
=
pinMode(i, :J("J()9 ;;poner pin B,G,H,6,-/,-- de salida
>
Serial.#egin(6B//)9
paro()9
>
void loop()
=
i2( Serial.availa#le() )
=
val < Serial.read()9
>
sKitc% (val) =
case 's''=
paro()9
#reaL9
>
case 'a''
= adelante
()9 #reaL9
>
case 'r''=
atras()9
#reaL9
>
case 'i''
= i+quierda(
)9 #reaL9
>
case 'd''
= derec%a
()9
#reaL9
>
>
>

Vous aimerez peut-être aussi