Controlando Servo Motor usando Freeduino

Control del servomotor mediante Freeduino

El servo es un tipo especial de motor que convierte señales eléctricas en posiciones de eje.

Los servos se pueden clasificar en términos generales como servos industriales y servos para aficionados.

Los servos industriales son generalmente servos de CA o CC de alta potencia y alta resistencia, ampliamente utilizados para brazos robóticos de precisión.

Los servos de nivel aficionado se utilizan ampliamente en pasatiempos de RC, como aviones RC, automóviles, helicópteros, multirrotores, barcos, embarcaciones flotantes, etc.

Se utilizan principalmente para controlar superficies de control (aviones RC) o para mecanismos de vectorización de empuje (aerodeslizadores, barcos, multirotores) o para mecanismos de dirección (coches RC).

Los servos de nivel aficionado se clasifican en micro, estándar y gigante según el par que pueden proporcionar; sin embargo, su principio de funcionamiento es el mismo. B Según la velocidad de funcionamiento, se clasifican como servos analógicos o digitales. Los servos digitales proporcionan mayor velocidad pero consumen más energía.

La velocidad de un servomotor se define como el tiempo que tarda el eje en pasar de 0 0 a 60 0 después de aplicar la señal.

En este artículo utilizaremos una placa clonada ARDUINO , a saber. FREEDUINO.

La placa freeduino utilizada se basa en la placa arduino duemilanove y utiliza un microcontrolador IC atmega 328PA.

La característica más llamativa de una plataforma Arduino es su facilidad de uso, ya que Arduino fue diseñado para artistas en lugar de ingenieros, se vuelve más interesante y divertido aprender a programar Arduino y realizar proyectos basados ​​en ella.

Consejos de Freeduino:

Consejo Freeduino

Descripción

Descripción:

Servo es el actuador más utilizado en proyectos como brazos robóticos, aviones RC, autoequilibradores, etc.

Utiliza un mecanismo de retroalimentación negativa para mantener la posición del eje con un error mínimo.

El servomotor tiene tres cables, a diferencia de los motores PMDC normales que tienen dos cables.

Entre estos 3 cables, 2 cables suministran energía al motor y uno se usa para enviar señales al motor para las posiciones requeridas del eje.

Estas señales son señales PWM con ciclo de trabajo variable y frecuencia de 40-50 Hz (servos analógicos) o 400-500 Hz (servos digitales).

Los servos analógicos son más baratos y consumen menos energía, y los servos digitales proporcionan un par y una velocidad relativamente altos y normalmente se utilizan como servos de cola de helicóptero.

El eje gira en ángulo dependiendo del tiempo de activación del pulso.

1 ms = 0 0

1,5 ms = 90 0

2 ms = 180 0

Entrada (ADC):

Arduino tiene un convertidor analógico a digital (ADC) de 10 bits incorporado, por lo que puede proporcionar valores digitales de 0 a 1023 (ya que 2^10 = 1024)

También podemos configurar el voltaje de referencia del ADC en Arduino, pero aquí dejaremos que use el valor predeterminado.

La resistencia variable (preestablecida o potenciómetro) tiene tres pines; los dos pines exteriores están conectados a tierra y Vcc.

Esto forma un divisor de potencial y obtenemos el voltaje (Vout) correspondiente al botón de resistencia.
Conversor analógico a digital

A medida que giramos la perilla de resistencia variable, el voltaje en el pin del medio pasa de 0-5V y el Arduino ADC lo convierte en 1024 valores, es decir, 0-1023 valores digitales.

Ahora usaremos estos 1024 valores para controlar nuestro servomotor.

Salida (PWM):

Para controlar un servo necesitamos obtener una señal PWM de la placa, esto generalmente se hace usando la función de temporizador del microcontrolador, pero Arduino lo hace muy fácil.

Arduino proporciona una biblioteca de servos en la que tenemos que asignar solo el ángulo del servo y el servo gira en ese ángulo, todos los cálculos de PWM son manejados por la biblioteca de servos y obtenemos una señal PWM limpia según el ángulo deseado.

Arduino dispone de un generador PWM de 8 bits, por lo que podemos obtener hasta 256 señales PWM distintas

Necesitamos 0-180 grados de rotación del servo.

Ahora, dado que obtenemos 1024 valores del ADC que necesitamos usar para rotar el eje del servo de 0 a 180 grados, usaremos una función llamada mapeo para asignar estos 1024 valores distintos a 180 valores.

La función Mapa tiene una sintaxis: mapa(mapping_values,(rango de valores),(rango al que se asignará)

Ejemplo: en nuestro caso, la función de mapa se verá así: ángulo=map(pot_value,0,1023,0,180);
si desea cambiar la dirección del ángulo del servo en relación con la perilla del potenciómetro, cambie el cableado o escriba la función de mapeo como ángulo=map(pot_values,0,1023,180,0);

Ahora, a medida que cambiamos la resistencia variable, el voltaje en la entrada del ADC pasará de 0 a 5 V (analógico), de 0 a 1023 (digital) y luego se asignará a 0-180 (ángulo del servo).
El potenciómetro es un dispositivo más sencillo para entender el funcionamiento de un dispositivo analógico, después de familiarizarnos con él podemos utilizar otros dispositivos analógicos como LDR, sensores de distancia infrarrojos, sensores de temperatura, acelerómetros como nuestro dispositivo de entrada y realizar otros proyectos interesantes como el autoequilibrio. robot, seguidor de línea, evita obstáculos, seguidor solar, etc.

Componentes y circuito

Componentes:

Placa Freeduino (Atmega 328)

Características:

Microcontrolador

ATmega328

Tensión de funcionamiento

5V

Voltaje de entrada (recomendado)

7-12V

Tensión de entrada (límites)

6-20V

Pines de E/S digitales

14 (de los cuales 6 proporcionan salida PWM)

Pines de entrada analógica

6

Corriente CC por pin de E/S

40mA

Corriente CC a pin de 3,3 V

50 mA

Memoria flash

32 KB (ATmega328) de los cuales 0,5 KB utilizados por el gestor de arranque

SRAM

2KB (ATmega328)

EEPROM

1KB (ATmega328)

Velocidad de reloj

16MHz

Servo: Microservo Tower pro 9G.

Potenciómetro: Resistencia variable de 10K (preestablecida o potenciómetro)

EL CIRCUITO

Configuración de pines de Freeduino

Servocontrol mediante Arduino

Imágenes

IMÁGENES:

Control del servomotor mediante Freeduino

Placa de pruebas con resistencia variable

Control del servomotor mediante Freeduino

Placa de pruebas y servomotor.

Control del servomotor mediante Freeduino

circuito basado en arduino

Video

Código fuente del proyecto

###


#incluir //incluye biblioteca de servos para controlar los servos

Siervo sajidservo; // define tu sirviente

int olla=0; //potenciómetro conectado al pin 0 del ADC

configuración nula

{

sajidservo.attach(9); //conecta tu servo a un pin PWM (aquí pin #9)

Serie.begin(9600); //elimina esto si no quieres ver los valores de ADC en el monitor serie

}

bucle vacío

{

int val=analogRead(pot); // Lee los valores del ADC y los guarda en la variable val

int pos=mapa(val,0,1023,0,180); // mapea el rango de ADC con pwm

sajidservo.write(pos); //escribir al sirviente

Serie.println(val); //eliminar si no quieres ver los valores de ADC

}

###

Volver al blog

Deja un comentario

Los comentarios deben ser aprobados antes de publicarse.