Hola bienvenidos a este nuevo capítulo del máster en Arduino y en este caso va a ser el turno de los
servos los servomotores no son más que un motor de corriente continua al que vamos a poder controlarle
la posición y la velocidad de giro por lo general la posición va en un rango de cero a 180 grados no
son motores que puedan dar vueltas completa aclaró hoy servos especiales la manera de controlar la posición
del servo es mediante la modulación de ancho de pulso.
Se acuerdan.
Vamos a utilizar pulsos del orden de los 0,8 milisegundos para llevar el brazo del servo a la posición
cero y pulsos de un ancho de aproximadamente dos milisegundos para llevar su posición al máximo que
serían los 180 grados.
Vamos a repasar rápidamente la hoja de datos del eje 90 que es el servo en cuestión que vamos a usar
ahora observó súper pequeño muy liviano que también tenemos que tener en cuenta que no va a poder realizar
tareas que requieran mucho peso nos van a poder hacer demasiada fuerza pero para la mayoría de las cosas
que vamos a usar nos sobra.
Revisemos el pinata y vamos a saber que el cable naranja es por donde vamos a insertar este pulso.
El cable rojo es el positivo donde van ingresarlos 5 voltios y el cable marrón es tierra o masa de acá
sacamos un dato interesante y es que con mandar un pulso aislado de vez en cuando no alcanza los pulsos
tienen que ser reiterados dejando más o menos más o menos un período apagado de 20 milisegundos lo que
en total nos va a dar una señal que va a tener una frecuencia de unos 50 ciclos por segundo la conexión
más simple no puede ser el cable naranja o en algunos casos amarillo lo vamos a conectar en el PIN 9
el cable rojo o de alimentación al PIN 5 voltios de la placa Arduino UNO y el negro o Brown directamente
al PIN de Graham de Arduino Uno bueno y teniendo esto en claro pasemos al código y comencemos a trabajar
como primera medida.
Vamos a incluir la librería serbo que nos provee Arduino.
Esta librería no hay que instalarla porque se la trae preinstalada élide vamos a habilitar nuestro puerto
serial porque es muy probable que lo usemos más adelante y acá arriba lo que vamos a hacer es declarar
una variable de la librería serbo.
En realidad el término correcto sería una instancia.
Entonces decimos así serbo y vamos a crear la variable mixer o en particular.
Por eso voy a aprovechar y le voy a decir mi serbo bien esto para qué sirve.
De ahora en más dentro de mi programa voy a reconocer al serbo en cuestión por esta variable mi serbo
y me va a habilitar a través de esto todos los métodos de la librería.
Entonces empecemos uno de estos métodos es mi ser mi serbo punto attached que lo voy a hacer por única
vez en el ZetaP y no es otra cosa más que asignarle el PIN por donde voy a sacar la señal a la librería.
Entonces le estoy diciendo a la librería mi serbo que vamos a usar el PIN 9 listo pero de qué nos sirve
esta librería mi serbo.
Por qué la estoy usando sin dudase controlar pedo bebé.
Bueno no tendríamos ningún inconveniente y sé que ya están en condiciones de poderlo hacer de esa manera.
Cuál sería esta.
Bueno podríamos generar un pulso de aproximadamente 1,5 milisegundos para la posición cero y para la
posición 180 generaremos un pulso de aproximadamente dos milisegundos.
Entonces tendríamos que esta es la posición cero y esta es la posición 180 grados
que podemos hacer.
Bueno podríamos utilizar la función map para que nos transforme el equivalente de grados a anchos de
pulsos.
Esa es una opción pero la librería serbo internamente ya hace esto y nos viene a solucionar este problema
y si está pues aprovechemos.
Cómo se usa esta librería.
Bueno vamos a probarla acá vamos a decir serbo punto Rohit esto de escribirle acerbo le estoy diciendo
le voy a mandar una orden y le voy a mandar una posición que es la posición 90 90 grados tendría que
irse hasta la mitad.
Esto me genera el pulso proporcional necesario para que el serbo llegue a los 90 grados pero como recordábamos
tenemos que dejar muy utilizada Qandil 20 milisegundos.
A donde no voy a hacer nada
para que entre el pulso y los 20 milisegundos se genere esa señal de aproximadamente 50 Gertz que necesitamos.
Hecho esto me dispongo a grabar pruebo bien acá tengo un error y es mi serbo ni variable.
Ahora si grabo
el servo giro hasta la posición central o sea los 90 grados.
Por supuesto está en estrecha relación de cómo hayamos colocado la palanca sobre el eje dentado que
tiene el servo no necesariamente va a quedar en la mitad.
Todo depende de la posición inicial en la que hayamos ensamblado esa palanca sobre el eje dentado bueno
esto es un consejo nada más.
No tienen porqué seguir al pie de la letra pero con esto servos económicos suele suceder que a veces
no está disponible el total del recorrido a veces a partir de los 160 veces 170 grados el cero ya empieza
a trabarse y ese es el final de recorrido.
El problema que podemos tener es que lo querramos llevar en un principio a 180 grados el recorrido termina
mucho antes y forcemos y dañamos el servo.
Entonces es una buena práctica que antes de largarnos salvo que sea un serbo de una marca muy reconocida
probemos todo el recorrido del servo.
Poco a poco entonces Lliria probando en 100 grados.
Incluso me animaría a irme de entrar hasta 150 grados y ahí ir buscando.
Yo voy a usar este cero que estoy usando esta ya a fin de recorrido en los 165 grados así que para estar
en una zona segura porque en esta aplicación no necesito más me voy a quedar con 160 grados.
Vamos a probar y lo vamos a llevar ahora a esa posición.
Bueno vamos a ser un pequeño ejemplo cómo podremos hacer para hacer valer la palanca del servo de un
extremo al otro.
Recuerden que en mi caso mi extremo mayor va a ser el de 160 grados.
Vamos a hacer de la siguiente manera.
Nuevamente vamos a utilizar un favor diciendo que arranca con una variable y desde cero mientras que
sea menor a la que a mi máximo posible entonces es muy prudente.
Se podría poner acá a los 160 pero capítulo tras capítulo tenemos que tratar de prolijas hornos volvernos
un poco más profesionales.
Así que vamos a guardar un bit porque uso Veidt para no desperdiciar memoria en un Baath.
Vamos a grabar
ángulo máximo y vamos a decir que el ángulo máximo que puede usar es 160.
A su vez este valor no lo quiero cambiar en ningún momento ya lo declaro como constante perfecto así
como se ve el ángulo máximo en mi caso no tengo problemas cuando me voy a cero no se traba.
Así que tranquilamente puedo usar el cero.
Entonces este foro va a adquirir otra imagen y acá voy a poder poner ángulo máximo.
Entonces mientras sea menor ángulo máximo con un incremento de y de uno en uno adentro de este foro
vamos a decir lo siguiente
Mi serbo punto right le voy a dar la orden que se vaya a que ángulo cómo esto va a ir incrementando
de uno en uno valor y
perfecto.
Entonces este foro va a ser que le vaya dando al Cervo la orden de cero uno dos tres secuencialmente
pero entre orden y orden necesito generar una ley de unos 20 milisegundos perfecta.
Esto va a hacer que el serbo vaya progresivamente de izquierda a derecha
y luego vamos a hacer que copio y pego el servo gire en el sentido opuesto una vez que haya llegado
al ángulo máximo pero entre Giro Giro yo voy a dejar un di Ley de unos 1000 milisegundos para que no
sea tan inmediato y se note un poco más acá también al final de volver a dejar otra pausa de un segundo
pero tenemos que prestar atención a cómo va a funcionar este foro porque de acá me los llevo a la posición
160 y de acá tenemos que volver de 160 a cero.
Entonces voy a decir que 160 va a ser el valor inicial de ahí que se ejecuten mientras aquí ahora sea
mayor que ángulo máximo no ángulo máximo Pablo qué ángulo mínimo claro mientras sea mayor que el ángulo
mínimo que es cero que vaya dando esta orden
y lo demás queda igual.
Se entiende entonces acá va a ir de 160 para abajo.
No no ir para abajo porque acá sigo sumando ahí.
Ahora le tengo que ir restando.
Ahora sí ahora sí está completo.
Vamos a probar esto a ver si funciona y vamos como anda.
Tenemos un error y es que yo me olvidé de cambiar acá a Angulo Mini.
Ahora si
les pregunto y si yo quisiera que esto se mueva más rápido si yo quisiera que esto se mueva más rápido
qué tendría que hacer algo más chica estas esperas.
Bueno si bien puede que si yo estoy estaría rompiendo algo que me especifica el fabricante lo que tendría
que hacer es aumentar con mayor velocidad y en ambos casos entonces tranquilamente lo que podría hacer
acá en vez de sumar de uno en uno podría hacer lo siguiente decir que ahí es igual y más 5 entonces
estarían multiplicando por 5 la velocidad con la que se mueve y para que se note la diferencia el de
abajo en la Vuelta lo voy a dejar a la misma velocidad.
Veamos su comportamiento
bueno ya tenemos una idea básica de cómo vamos a controlar este cero y bueno nos vemos en la próxima
clase que vamos a seguir profundizando un poco más.