Professional Documents
Culture Documents
En este tutorial, diseñamos un brazo robótico Arduino Uno. Todo el brazo estará diseñado a
partir de algunos materiales de desecho y servos. Todo el proceso de construcción se ha
explicado en detalle a continuación. El brazo se ha construido con cartones y las piezas
individuales se han bloqueado para servomotores. Arduino Uno está programado para
controlar los servomotores. Los servos sirven como articulaciones del brazo robótico aquí.
Esta configuración también se ve como una grúa robótica o podemos convertirla en una
grúa mediante algunos ajustes sencillos. Este proyecto será de gran ayuda para los
principiantes que quieran aprender a desarrollar un Robot simple a bajo costo.
Este brazo robótico Arduino se puede controlar con cuatro potenciómetros conectados, cada
potenciómetro se usa para controlar cada servo. Puede mover estos servos girando las
macetas para recoger algún objeto, con algo de práctica puede recoger y mover fácilmente
el objeto de un lugar a otro. Hemos utilizado servos de bajo torque aquí, pero puede usar
servos más potentes para recoger objetos pesados. Todo el proceso ha quedado bien
demostrado en el video al final. También revise nuestro otro
Componentes requeridos:
Arduino Uno
Condensador de 1000uF (4 piezas)
Condensador 100nF (4 piezas)
Servo Motor (SG 90- cuatro piezas)
Potencia 10K- Resistencia Variable (4 piezas)
Fuente de alimentación (5v, preferiblemente dos)
Servo motor:
Primero hablamos un poco sobre Servo Motors. Los servomotores se usan excesivamente
cuando hay una necesidad de movimiento o posición precisa del eje. Estos no son
propuestos para aplicaciones de alta velocidad. Se proponen servomotores para baja
velocidad, par medio y aplicación de posición precisa. Entonces estos motores son mejores
para diseñar un brazo robótico.
Tome una superficie plana y estable, como una mesa o una tarjeta de cartón duro. A
continuación, coloque un servomotor en el medio y péguelo en su lugar. Asegúrese de que
el grado de rotación esté en el área presentada en la figura. Este servo actúa como la base
del brazo.
Coloque una pequeña pieza de cartón encima del primer servo y luego coloque el segundo
servo en esta pieza de cartón y péguela en su lugar. La rotación del servo debe coincidir con
el diagrama.
Tome algunas cartulinas y córtelas en piezas de 3cm x 11cm. Asegúrate de que la pieza no
esté ablandada. Corta un orificio rectangular en un extremo (deja 0.8 cm desde abajo) lo
suficiente para caber otro servo y en el otro extremo ajusta el servo engranaje firmemente
con tornillos o con pegamento. Luego coloque el tercer servo en el primer agujero.
Ahora corte otra pieza de cartón con las longitudes que se muestran en la figura a
continuación y pegue otro engranaje en la parte inferior de esta pieza.
Ahora pegue el cuarto y último servo en el borde de la segunda pieza como se muestra en la
figura.
Monta esta pieza en la parte superior y con esto hemos terminado de construir nuestro
brazo robótico.
Con esto, nuestro diseño de brazo robótico básico se completó y así es como
hemos construido nuestro brazo robótico de bajo costo. Ahora conecte el circuito
en la placa de prueba según el diagrama del circuito.
El voltaje en las resistencias variables no es completamente lineal; será ruidoso. Por lo
tanto, para filtrar este ruido, los condensadores se colocan a través de cada resistencia
como se muestra en la figura.
Arduino tiene seis canales de ADC. Hemos usado cuatro para nuestro brazo robótico. El
UNO ADC tiene una resolución de 10 bits, por lo que los valores enteros van de 0 a 1023
(2 ^ 10 = 1024 valores). Esto significa que mapeará los voltajes de entrada entre 0 y 5
voltios en valores enteros entre 0 y 1023. Por lo tanto, para cada (5/1024 = 4.9mV) por
unidad. Obtenga más información sobre cómo mapear los niveles de voltaje usando
canales ADC en Arduino aquí.
Ahora, para que UNO convierta la señal analógica en señal digital, necesitamos usar el
canal ADC de Arduino Uno, con la ayuda de las siguientes funciones:
Los canales Arduino ADC tienen un valor de referencia predeterminado de 5V. Esto
significa que podemos proporcionar un voltaje de entrada máximo de 5 V para la
conversión de ADC en cualquier canal de entrada. Como algunos sensores proporcionan
voltajes de 0-2.5 V, por lo que con una referencia de 5V, obtenemos menor precisión, por
lo que tenemos una instrucción que nos permite cambiar este valor de referencia. Entonces
para cambiar el valor de referencia tenemos "analogReference ();"
En nuestro circuito de mano robótico, hemos dejado esta tensión de referencia en el valor
predeterminado, de modo que podemos leer el valor del canal ADC llamando directamente
a la función "analogRead (pin);" aquí "pin" representa el pin donde conectamos la señal
analógica, digamos queremos leer "A0". El valor de ADC se puede almacenar en un entero
como int SENSORVALUE0 = analogRead (A0) ;.
Ahora hablemos del SERVO, el Arduino Uno tiene una función que nos permite controlar
la posición del servo simplemente dando el valor del grado. Digamos que si queremos que
el servo esté en 30, podemos representar directamente el valor en el programa. El archivo
de encabezado SERVO (Servo.h) se encarga de todos los cálculos de la relación de trabajo
internamente.
Ahora, tenemos la posición servo SG90 de 0 a 180 y los valores ADC son de 0-1023.
Usaremos una función especial que empareja ambos valores automáticamente.
Hay cuatro potes provistos al usuario. Y girando estos cuatro potes, proporcionamos voltaje
variable en los canales ADC de UNO. Entonces los valores digitales de Arduino están bajo
el control del usuario. Estos valores digitales se asignan para ajustar la posición del
servomotor, por lo tanto, la posición del servo está en control del usuario y al rotar estos
Pots, el usuario puede mover las articulaciones del brazo robótico y puede recoger o agarrar
cualquier objeto.
#include <Servo.h>
Servo servo0;
Servo servo1;
Servo servo2;
Servo servo3;
int sensorvalue0;
int sensorvalue1;
int sensorvalue2;
int sensorvalue3;
void setup()
{
pinMode(A0,INPUT);
pinMode(3,OUTPUT);
servo0.attach(3);
pinMode(A1,INPUT);
pinMode(5,OUTPUT);
servo1.attach(5);
pinMode(A2,INPUT);
pinMode(6,OUTPUT);
servo2.attach(6);
pinMode(A3,INPUT);
pinMode(9,OUTPUT);
servo3.attach(9);
}
void loop()
{
sensorvalue0 = analogRead(A0);
sensorvalue0 = map(sensorvalue0, 0, 1023, 0, 180);
servo0.write(sensorvalue0);
sensorvalue1 = analogRead(A1);
sensorvalue1 = map(sensorvalue1, 0, 1023, 0, 180);
servo1.write(sensorvalue1);
sensorvalue2 = analogRead(A2);
sensorvalue2 = map(sensorvalue2, 0, 1023, 0, 180);
servo2.write(sensorvalue2);
sensorvalue3 = analogRead(A3);
sensorvalue3 = map(sensorvalue3, 0, 1023, 0, 180);
servo3.write(sensorvalue3);
}