ArduinoDesarrolloHardwareRoboticaYoutube

[Parte 2] Programar de un drone (multirrotor) con Arduino – #Arduinerdeando

Programar un drone con Arduino

Continuamos con #Arduinerdeando, esta es la segunda edición de las charlas de programación de drones con Arduino, en este caso cerramos la primer etapa: los motores; en la cual logramos definir la función de control de los motores.

Arduinerdeando #2: Programación de drones, Motores (parte 2)

Para esta edición nos basamos en el uso de funciones de control de los puertos de Arduino, lo cual se conoce como Port Manipulation. La manipulación de puertos corresponde a un manejo a bajo nivel de los pines de entrada/salida, permitiendo activar y desactivar las salidas digitales que se definen dependiendo al grupo al cual pertenecen.

Manipulación de puertos de Arduino

En Arduino, dependiendo de las versiones de las placas, cada puerto se corresponde con un grupo de pines digital o analógicos. Por ejemplo, el Puerto D (PORTD) hace referencia a los pines digitales desde el 0 al 7. Es decir que para activar o desactivar cualquier pin de este grupo debemos hacer referencia a este puerto. Para una referencia más clara, pueden consultar el PINOUT de Arduino en la siguiente imágen, en los cuales los pines del Puerto D aparecen como PD0 al PD7:

ARDUINO_PINOUT_DIAGRAM

Para activar un pin tenemos en cuenta la posición del bit, siendo al bit más a la derecha al pin 0, y el más a la izquierda el pin 7. Y para declarar el pin como una salida (del mismo grupo) usamos la palabra reservada DDRD.

Veamos un ejemplo, para definir el pin 2 como salida lo hacemos con la siguiente línea:

DDRD = B00000100;

Donde los primeros dos bits a la derecha corresponden a los pines 0 y 1, que se utilizan para la comunicación serial (no es recomendado usarlos).

A continuación si queremos poner el pin 2 en estado “alto” (HIGH), debemos utilizar la siguiente línea:

1) PORTD |= B00000100;

Para nuestro caso de control de motores brushless esto significa el inicio del pulso PWM, el cual debe permanecer en alto durante 1000 a 2000 microsegundos. Para volver a poner en estado bajo el pin 2, usamos la siguiente sentencia:

2) PORTD &= B11111011;

En esta operación binaria, cada posición que contenga un 1 mantiene el estado definido en (1), mientras que las posiciones que tienen un 0 en (2) invierten el estado definido en (1). En medio de estas líneas es necesario definir la espera, la duración del pulso.

El ejemplo completo con el control de los 4 motores lo presentamos en vivo por youtube, no te olvides de darle like, compartir y suscribirte al canal para no perderte las próximas ediciones.

Etiquetas

Alejandro

Fundador de Cultura Cuántica · Lic. en Sistemas · Programador de software/hardware · SysAdmin · Twitter: @alegorosito ale@culturacuantica.com.ar

Artículos relacionados