En el mundo, cada día más y más popular entre los limpiadores robóticos. Gracias a estos pequeños ayudantes, la casa se vuelve mucho más limpia y se dedica mucho menos esfuerzo a la limpieza. Hay muchas modificaciones diferentes de los robots, todos difieren en funcionalidad, tamaño y otros parámetros.
Específicamente, este artículo considerará un ejemplo de cómo
hazlo tu mismo Puede hacer un robot simple, que aspirará la habitación cuando sea necesario. El controlador se usa aquí como el "cerebro"
Arduino.
Materiales y herramientas para la fabricación del robot:- placa que controla el funcionamiento de los motores (blindaje del motor Arduino);
- placa Arduino;
- dos motores con engranajes (motores a 3 voltios y una velocidad de rotación de aproximadamente 100 rpm);
- ruedas (pueden estar hechas de latas de aluminio;
- un enfriador de una fuente de alimentación de computadora (posible tanto en 5V como en 12V);
- Fuente de alimentación de 5V (batería);
- cables y placa para la instalación de elementos de radio;
- para hacer el caso necesitarás un recipiente de plástico;
- Otro contenedor pequeño para crear un contenedor de basura;
- pegamento caliente;
- imanes
- cartón.
El proceso de fabricación del robot:
Primer paso Parte del software del robot y boceto:
El corazón del robot es el controlador Arduino. Para programarlo necesitarás una computadora y un software especial.
Para descargar el boceto a la placa, necesitará el programa Arduino IDE. A continuación puede tomar el código del programa del robot y ver el circuito principal.
/*
Programa para controlar un robot con dos motores.
El robot gira cuando los motores cambian su velocidad y dirección.
Los parachoques delanteros en los lados izquierdo y derecho detectan obstáculos.
Las sondas ultrasónicas se pueden conectar a entradas analógicas (probadas en LV-MaxSonar-EZ1):
- coloca los pines en la matriz sonarPins en el siguiente orden: izquierdo, derecho, frontal, otros ...
Ejemplos:
1. solo sonares izquierdo y derecho conectados a los pines 2 y 3: sonarPins [] = {2,3}
2. sonares izquierdo, derecho y frontal conectados a los pines 2, 3 y 5: sonarPins [] = {2,3,5}
3. solo sonda frontal conectada al pin 5: sonarPins [] = {-1, -1.5}
4. solo dejó la sonda conectada al pin 2: sonarPins [] = {2}
5. solo sonda derecha conectada a los pines 3: sonarPins [] = {-1,3}
6.5 sonares conectados a los pines 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
El escudo del motor se utiliza para hacer funcionar motores.
*/
const int Baud = 9600; // velocidad del puerto UART
// Propiedades de sonda
int sonarPins [] = {1, 2}; // Números de pin analógico al sensor de sonda Pin AN
const long MinLeftDistance = 20; // Distancia izquierda mínima permitida
const long MinRightDistance = 20; // Distancia mínima permitida
const long MinFrontDistance = 15; // Distancia frontal mínima permitida
const int SamplesAmount = 15; // más muestras - medición más suave y mayor retraso
const int SonarDisplayFrequency = 10; // muestra solo una de estas líneas, no todas
int sonarDisplayFrequencyCount = 0;
Factor largo constante = 2.54 / 2;
muestras largas [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// lado derecho
const int pinRightMotorDirection = 4; // esto se puede marcar en el escudo del motor como "DIR A"
const int pinRightMotorSpeed = 3; // esto se puede marcar en el escudo del motor como "PWM A"
const int pinRightBumper = 2; // donde está conectado el parachoques derecho
// lado izquierdo
const int pinLeftMotorDirection = 7; // esto se puede marcar en el escudo del motor como "DIR B"
const int pinLeftMotorSpeed = 6; // esto se puede marcar en el escudo del motor como "PWM B"
const int pinLeftBumper = 8; // donde está conectado el parachoques derecho
// descomenta las siguientes 2 líneas si Motor Shield tiene roturas
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // esto se puede marcar en el escudo del motor como "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // esto se puede marcar en el escudo del motor como "BREAKE B"
// campos
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// establece en el contador cuánto tiempo está funcionando un motor: N / 10 (en milisegundos)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Inicialización
configuración nula () {
Serial.begin (Baudios);
initPins ();
// descomenta las siguientes 4 líneas si Motor Shield tiene roturas
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // apaga los descansos
// digitalWrite (pinRightMotorBreak, LOW); // apaga los descansos
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// lazo principal
bucle vacío () {
verificarAndSetRightSide ();
verificarAndSetLeftSide ();
processRightSide ();
processLeftSide ();
delay (10); // repetir cada 10 milisegundos
}
//---------------------------------------------------
nulo initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
para (int i = 0; i pinMode (sonarPins [i], INPUT);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
nulo waitWhileAnyBumperIsPressed () {
while (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
delay (20); // verifica cada 20 milisegundos
}
}
proceso nuloRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // comprueba si no se alcanza la distancia frontal mínima permitida
volver
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // si el contador aún no cuenta atrás
runLeftMotorBackward (); // ejecuta el motor derecho hacia atrás
countDownWhileMovingToLeft = turnLeftTimeout; // establece el contador en el valor máximo para comenzar la cuenta regresiva
}
bool checkCounterIsNotSet (int counter) {
return counter = SamplesAmount)
sampleIndex [pinIndex] = 0;
samples [pinIndex] [sampleIndex [pinIndex]] = valor;
volver verdadero;
}
largo CalculateAvarageDistance (int pinIndex) {
promedio largo = 0;
para (int i = 0; i promedio + = muestras [pinIndex] [i];
promedio de retorno / SamplesAmount;
}
Paso dos Preparación de los elementos básicos del robot.
El cartón se utiliza como base para sujetar todos los componentes del robot, incluidas la batería, los paneles de control y los motores.
La turbina debe estar correctamente pegada o fijada de otro modo en un pequeño recipiente de plástico, en el que se debe hacer un agujero para la absorción de la suciedad. Posteriormente, este diseño se pega a la base de cartón. Además, el contenedor debe tener un orificio adicional a través del cual saldrá el aire. Debería haber un filtro, el autor decidió utilizar tela sintética para estos fines.
En la siguiente etapa, el enfriador debe estar pegado con servos, y luego este diseño se instala en una base de cartón.
Paso tres Hacemos ruedas para el robot.
Para hacer las ruedas, debes tomar latas de aluminio y cortarles las partes superior e inferior. Entonces estos elementos se pegan juntos. Ahora solo queda unir adecuadamente las ruedas a los servomotores con adhesivo termofusible. Es importante comprender que las ruedas deben estar fijadas claramente en el centro de los servoejes. De lo contrario el robot conducirá torcidamente y usará energía.
Paso cuatro El proceso final de ensamblaje del robot
Después de instalar la batería y conectar todos los elementos del robot, queda por colocar la estructura en una carcasa duradera. Un gran recipiente de plástico es ideal para estos fines. En primer lugar, se deben hacer agujeros en la nariz del cuerpo del robot, a través de los cuales saldrán los contactos que darán una señal electrónica cuando el robot choca con un obstáculo.
Para que el caso se elimine rápida y fácilmente, se utilizan imanes para arreglarlo, en este caso hay ocho de ellos. Los imanes están pegados al interior de la aspiradora y al contenedor en sí, de 4 piezas cada uno.
Eso es todo Ahora el robot está ensamblado y se puede probar en la práctica. A pesar de que el robot no puede recargarse solo y tiene una capacidad bastante limitada en términos de navegación, en media hora podrá limpiar la basura en la cocina o en una habitación pequeña. Las ventajas del robot es que todos los componentes se pueden encontrar fácilmente y no son muy caros. Sin duda hecho en casa Puede refinar agregando nuevos sensores y otros elementos.