GOduino II fue presentado en dangerousprototypes.com
07/04/2012 he añadido una diapositiva del presupuesto para aquellos lectores que preguntaban donde obtuve mi presupuesto < $20 para el II de GOduino.
INTRODUCCIÓN
El GOduino II es un controlador programable autónomo para robots basados en la rueda. Es un clon de Arduino Uno y un controlador de motor L293D para menos de $20. Controla la velocidad y dirección del motor. El predecesor de prototipo de esto es el GOduino, una versión básica de este controlador en un protoboard. Mantendré esta guía tanto aquí como en mi blog http://techbitar.blogspot.com
FONDO
He diseñado unos robots básicos utilizando el Arduino Uno y protectores de motor. Ambos son grandes para prototipos. Pero desarmar mi robots cada vez que necesitaba para construir otro robot. No es rentable para comprar más microcontroladores Arduino y motor escudos para cada nuevo proyecto de robot.
También en países como Jordania, donde el ingreso mensual promedio es alrededor de $300 y un código de tarifa tan alta que es hostil a la tecnología, se convierte en una necesidad para los estudiantes y los fabricantes a buscar localmente montado alternativas de bajo costos, se puede reparar circuitos electrónicos importados.
FUNCIONALIDAD
El II de GOduino trabaja para 2 motores solamente y deja un montón de pines del Arduino disponibles para los sensores. También es mi primera aventura de pcb desde cero. Si nos fijamos en la parte posterior de la GOduino II, ves a todo tipo de pistas a mi inexperiencia. Y sí, soy un chico de software así que esto es relativamente nuevo para mí. Usted notará que algunos de mis jefes tienen los dientes del buck. Tuve algunos accidentes mientras se suelda. Mi próxima versión estará más ordenado.
Esto no puede ser materia de vanguardia pero hace el trabajo para mí y para los miembros de mi protospace. Si ayuda a alguien, por favor envíeme un enlace. Como siempre, si usted descubre algún defecto o tiene sugerencias que pueden hacer un mejor diseño, por favor comparta sus pensamientos.
CRÉDITO
Este proyecto se basa en los trabajos de tanta buena gente. Consulte referencias sección abajo para algunos de los proyectos que la Fundación para este modesto proyecto de PCB.
LISTA DE PIEZAS
ARTÍCULO CANTIDAD
Atmega328p w/Opti bootloader 1
L293D puente h 1
Cristal de 16Mhz 1
PCB 1
gorras de 22pf 2
100uF cap 1
10uF cap 2
0.1uF cap 4
T7805 regulador de la C.C. 5V 1
DIP de 28 pines 1 los zócalos
Zócalo DIP 16 pines 1
Cabeceras 1
Cables de puente 10
LED 2
Resistencias de 220 ohmios 2
Resistencia 10K ohmios 1
Pulsador 1
Yo he calculado el costo total de la GOduino II alrededor de $20 + gastos de envío.
En cuanto a la Arduino IDE 1.0 se puede descargar gratis
http://Arduino.CC/en/Main/software
L293D ASIGNACIÓN DE PINES PARA ATMEGA328P (ARDUINO UNO)
Los números de bala debajo corresponde a los pines del L293D. Esta asignación de pin funciona con mi prueba sketch de Arduino. Pero se puede cambiar para adaptarse a sus propósitos.
1. activar/desactivar el Motor 1. También se utiliza para controlar la velocidad del Motor 1. Pin Arduino digital PWM 9. ATmega328 pin 15.
2. conectarse a Arduino control sentido de rotación de Motor 1. Pin digital de Arduino 3. ATmega328 pin 5.
3. Conecte al polo primer Motor 1.
4. Conecte a tierra.
5. Conecte a tierra.
6. Conecte al segundo Polo Motor 1.
7. conectarse a Arduino control sentido de rotación de Motor 1. Pin digital de Arduino 2. Atmega328 pin 4.
8. Conecte al suministro de energía que alimentará los motores. Esto puede o no puede ser regulado.
9. habilitar/deshabilitar motor 2. También se utiliza para controlar la velocidad del Motor 2. Conecte al Arduino PWM pin 10. ATmega328 pin 16.
10. conectarse a Arduino control sentido de rotación para el Motor 2. Arduino pin 7. ATmega328 pin 13.
11. Conecte el Motor 2 - primer poste.
12. Conecte a tierra.
13. conectar a tierra.
14. Conecte al Motor 2 - segundo Polo.
15. conectarse a Arduino control sentido de rotación para el Motor 2. Arduino pin 8. ATmega328 pin 14.
16. Conecte al regulada 5V DC.
NOTAS DE PCB
¿Por qué usaron cabeceras masculinas para exponer los pernos de la ATmega328p y el L293d? Usted puede utilizar Arduino estilo encabezados en su lugar pero tenía un montón de encabezados de macho y un montón de cables de puente mujer. Pero para mi próximo build de GOduino II, utilizo Arduino encabezados de estilo. Me siento más seguro con menos pins IC expuestos.
L293D ACTUAL
El L293D en el II de GOduino puede manejar sostenida corriente de 600 mA por motor. Parece haber algún error este capacidad de ICs para manejar 1.2A pico por motor. El datasheet del L293D dice que hace pero por una fracción de segundo (100 μs). Esto no es suficiente para soportar un motor de funcionamiento en pico/puesto actual que puede durar segundos o minutos.
Pero la buena noticia es que se puede doble la 600mA por soporte motor por piggybacking otro L293D. En su forma más simple, esto significa soldar uno L293D encima de otro mientras que empareja las clavijas.
L293D VOLTAJE
El L293D deben ser alimentados de dos maneras. Necesita DC de 5V para los circuitos de los lógica (pin 16) y energía de 4.5V a 36V para los motores (pin 8). Revise su hoja de datos del motor para encontrar el voltaje.
Me enteré de mediante el control de las señales PWM de la ATmega328p atado con alambre a los pines de habilitar del L293D logré cambiar el voltaje suministrado al motor. Así que aunque fuente de 7.2V mi motores vía el L293D, yo puedo reducirlo mediante la manipulación de los valores en la función analogWrite en mi sketch de Arduino.
MOTORES CEPILLADOS DE LA C.C.
El GOduino II trabaja con hasta 2 cepillados motores dentro de la gama de 4.5V a 36V con carga máxima de 600 mA para cada motor. Estos motores generan un montón de ruido eléctrico que puede causar a todo tipo de problemas de lectura del sensor pobre (si tienes sensores Unidos a su GOduino II) a constantes reajustes de IC. Para hacer frente a esto, siempre coloque un 0.1uF condensador de cerámica a través de los polos de cada motor.
ROTACIÓN DEL MOTOR
La dirección de la rotación del motor es una llamada subjetiva. En mi código, uso las palabras hacia adelante y atrás para describir algunas de mis funciones. En realidad, la forma de alambre de sus motores y pernos determina cuando la rotación de un motor es hacia adelante o hacia atrás o hacia la izquierda hacia la derecha vs. Tenga en cuenta que los motores en los lados opuestos de un giro de la plataforma robot enfrente de uno a otro. Si sus motores no giran la forma en que desee, muchas veces que la solución puede estar en su código sin recurrir a cableado.
PROGRAMACIÓN GODUINO II
¿Cómo se programa el ATmega328p en la II GOduino? Una computadora con un puerto serial debe hacer muy bien. Pero sin un puerto serie, aquí están las alternativas.
1) si usted tiene un modelo de Arduino Uno DIP que sólo puede cargar su bosquejo de la Arduino IDE 1.0 lo que haces normalmente. Luego retire el ATmega328p tu Arduino Uno e insertarlo en el zócalo de GOduino II IC. Eso es todo. Ordené unos pre ATmega328p ICs (DIP) cargado con el bootloader de Arduino Uno para que los pueda utilizar de esta manera.
2) o puede utilizar la Arduino Uno para programar un ATmega328p. SparkFun tiene un buen tutorial sobre cómo hacer esto. Ver artículo volver a instalar el bootloader de Arduino y utilizando un Arduino para programar un AVR en la sección de referencias.
3) o puede utilizar un programador en línea como los vendidos por Sparkfun, LadyAda o chip para cargar dibujos de Arduino directamente en el IDE de Arduino en el ATmega328p sin la eliminación de la toma de GOduino II PCB. Ver enlace en la sección de referencias al artículo de David A. Mellis sobre cómo construir y programar un Arduino Uno en un protoboard. Usted puede ahorrar un dólar o dos por comprar la p 328 en blanco entonces quema el bootloader a ti mismo si tienes el equipo y saber cómo.
EL BOSQUEJO DE LA PRUEBA DE ARDUINO
El bosquejo de la prueba de Arduino 1.0 abajo parece un programa pero sobre todo es repetición de bloques de código para hacer girar los motores y asegurar los pernos y postes motor estén conectados correctamente. He escrito 4 funciones que pueden manejar la mayoría de las tareas de locomoción de robots pero no dude en cambiarlo que el L293D permiten pernos (1,9) están conectadas a los pines PWM de Arduino/ATmega328p y el código siguiente es actualizaciones para reflejar cualquier recableado de pernos.
/*
REMEZCLADA POR: TECHBITAR / HAZIM BITAR
FECHA: 03 DE ABRIL DE 2012
Proyecto: GOduino II prueba
FUNCIÓN: Este sketch es un programa de prueba 1.0 IDE de Arduino para el tablero del PWB de GOduino II. El GOduino II es un integrado "runtime" de Arduino Uno y L293D puente h alias conductor del motor que permite el movimiento de avance y retroceso de motores y variadores de velocidad. Este código prueba asume dos motores (cada < 600mA corriente pico) se unen a la GOduino II
Este bosquejo muestra llama a las siguientes tres funciones con variable motornum = 1 o 2 para significar Motor 1 y Motor 2.
-motorforward (int motornum)
-motorback (int motornum)
-motorstop (int motornum)
-motorspeed (motor1 int, int motor2)
Licencia: Este es shareware pero por favor da crédito.
Sitio web: http://techbitar.blogspot.com
Correo electrónico: techbitar arroba gmail punto com
*/
mapa motor polos a los pines de Arduino
#define motor1pole1 2
#define motor1pole2 3
#define motor2pole1 7
#define motor2pole2 8
mapa motor L293d permiten pernos a los pines de Arduino
#define enablePin1 9
#define enablePin2 10
#define M1_MAX_SPEED 100
#define M2_MAX_SPEED 100
#define motordelay 30
#define debugmotorsec 3000
void setup() {}
Serial.Begin(9600);
conjunto asigna L293D motor1 y motor 2 activar pines de Arduino a la salida (activar o desactivar motor1 y motor2 via L293D)
pinMode (enablePin1, salida);
pinMode (enablePin2, salida);
establecer polos motor asignadas a los pines de Arduino (vía L293D)
pinMode (motor1pole1, salida);
pinMode (motor1pole2, salida);
pinMode (motor2pole1, salida);
pinMode (motor2pole2, salida);
motorspeed (0, 0);
}
int mspeed = 100; elegir una velocidad inicial hasta 255
void loop() {}
ajustar la velocidad del motor 1 y 2 a la misma velocidad
motorspeed (mspeed, mspeed);
Girar motor 1 sólo en una dirección
Serial.Print ("hacia adelante en velocidad del MOTOR 1:");
Serial.println(mspeed);
motorforward(1);
Delay(debugmotorsec);
Motorstop(1);
girar el motor 2 sólo en una dirección
Serial.Print ("MOTOR 2 en velocidad delantera:");
Serial.println(mspeed);
motorforward(2);
Delay(debugmotorsec);
Motorstop(2);
motor 1 solamente en la dirección opuesta de la vuelta
Serial.Print ("trasero en velocidad del MOTOR 1:");
Serial.println(mspeed);
motorback(1);
Delay(3000);
Motorstop(1);
girar el motor 2 en sentido contrario
Serial.Print ("MOTOR 2 atrás en velocidad:");
Serial.println(mspeed);
motorback(2);
Delay(debugmotorsec);
Motorstop(2);
parar ambos motores 1 y 2
Serial.println ("ambos motores STOP durante 2 segundos");
Motorstop(1);
Motorstop(2);
Delay(2000);
girar ambos motores en una dirección
Serial.Print ("ambos motores en velocidad de avance:");
Serial.println(mspeed);
motorforward(1);
motorforward(2);
Delay(debugmotorsec);
parar ambos motores
Serial.println ("ambos motores STOP durante 2 segundos");
Motorstop(1);
Motorstop(2);
Delay(2000);
ambos motores en dirección opuesta de la vuelta
Serial.Print ("dos motores en velocidad de nuevo:");
Serial.println(mspeed);
motorback(1);
motorback(2);
Delay(debugmotorsec);
parar ambos motores
Serial.println ("ambos motores STOP durante 2 segundos");
Motorstop(1);
Motorstop(2);
Delay(2000);
giro de ambos motores pero en direcciones opuestas
Serial.Print ("MOTOR1 avance | MOTOR2 DETRÁS EN VELOCIDAD: ");
Serial.println(mspeed);
motorforward(1);
motorback(2);
Delay(debugmotorsec);
parar ambos motores
Serial.println ("ambos motores STOP durante 2 segundos");
Motorstop(1);
Motorstop(2);
Delay(2000);
ambos motores en sentido contrario de la vuelta
Serial.Print ("MOTOR1 nuevo | MOTOR2 EN VELOCIDAD DELANTERA: ");
Serial.println(mspeed);
motorback(1);
motorforward(2);
Delay(debugmotorsec);
parar ambos motores
Serial.println ("ambos motores STOP durante 2 segundos");
Motorstop(1);
Motorstop(2);
Delay(2000);
mspeed += 50; Añadir 50 para velocidad de giro del motor. Velocidad máxima 255
ajustar la velocidad del motor 1 y 2 a la misma velocidad nueva
motorspeed(mspeed,mspeed);
}
FUNCIONES MOTORAS
void motorstop (int motornum) {}
Delay(motordelay);
Si (motornum == 1) {}
digitalWrite (motor1pole1, bajo);
digitalWrite (motor1pole2, bajo);
}
else if (motornum == 2) {}
digitalWrite (motor2pole1, bajo);
digitalWrite (motor2pole2, bajo);
}
Delay(motordelay);
}
void motorforward (int motornum) {}
Si (motornum == 1) {}
digitalWrite (motor1pole1, HIGH);
digitalWrite (motor1pole2, bajo);
}
else if (motornum == 2) {}
digitalWrite (motor2pole1, bajo);
digitalWrite (motor2pole2, HIGH);
}
Delay(motordelay);
}
void motorback (int motornum) {}
Si (motornum == 1) {}
digitalWrite (motor1pole1, bajo);
digitalWrite (motor1pole2, HIGH);
}
else if (motornum == 2) {}
digitalWrite (motor2pole1, HIGH);
digitalWrite (motor2pole2, bajo);
}
Delay(motordelay);
}
{} void motorspeed (int motor1speed, int motor2speed)
Si (motor1speed > M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; límite de velocidad máxima
Si (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; límite de velocidad máxima
Si motor1speed (motor1speed < 0) = 0; mantener el motor por encima de 0
Si motor2speed (motor2speed < 0) = 0; mantener la velocidad del motor por encima de 0
analogWrite (enablePin1, motor1speed);
analogWrite (enablePin2, motor2speed);
}
// ====================================
NOTAS FINALES
Voy a seguir evolucionando el II GOduino buscando mejores alternativas que son altas en la puntuación de reparabilidad y hackability. Un $30 Arduino Uno podría terminar cuesta $60 después de las tarifas y envío en Jordania. Y si algo sale mal con él, podría así tíralo desde ninguna instalación local existe para reemplazar y reparar componentes de smd. Puesto que los componentes electrónicos básicos están disponibles localmente, debe ser fácil y barato de construir y reparar la GOduino II. DIP vive...
PRESUPUESTO
Algunos lectores preguntaban dónde comprar las partes a mantenerse dentro del presupuesto. Solicitar mis piezas en Futurlec.com GOduino todo se suma a menos de $12 que si usted no tiene un microcontrolador Arduino UNO DIP y no desea comprar uno, usted necesitará un programadores FTDI USB-serial. Usted puede comprar para cerca de $15
Futurlec no es mi patrocinador y no recibo Comisión o descuentos por mencionar a los.
REFERENCIAS
GOduino: Clon de la Arduino Uno + controlador de Motor
Construcción de un Arduino en un protoboard por David A. Mellis
http://Arduino.CC/en/Main/Standalone
Sus motores L293D y Arduino por Guilherme Martins
Controlar un motor DC con chip Arduino y L293D
http://luckylarry.co.uk/Arduino-Projects/control-a-DC-motor-with-Arduino-and-L293D-chip
Volver a instalar el bootloader de Arduino
http://www.Sparkfun.com/tutorials/247
Utilizando un Arduino para programar un AVR
http://www.Sparkfun.com/tutorials/200