Linterna solar controlado robot tanque mini!

Controlado de la linterna Solar accionado Arduino habilitado Robot

Este proyecto es un robot sensible Gradiente ligero con capacidades de carga solares, en otras palabras busca la luz para cargar a sí mismo. Logra este comportamiento con un conjunto de cuatro fotorresistores sensibles luz en circuitos divisor de tensión, la unidad de Arduino Lee los cuatro valores que corresponden a la intensidad de la luz recibida por los sensores a través de sus pines leerlas analógicos. Luego se aplica un alto voltaje a través de un interruptor reed que completa un circuito entre una batería de 9v y dos motores de juguete, que resulta de girar o moverse hacia la luz. Estos motores no fueron capaces de activar directamente con el Arduino, si tiene pequeñas suficientes motores, la parte de conmutación de este proyecto puede ser omitida sin pérdida de funcionalidad. Si cualquiera de los cuatro fotodiodos registra mucho más alto que los demás, detecta que fotodiodo recibe la señal aumentada y gira o se mueve en esa dirección para siempre y cuando se recibe la señal de una mayor. Este algoritmo de seguimiento de la luz puede utilizarse para paneles solares de programa para rastrear en el sol, o para el control del robot a través de la linterna, como se demuestra aquí.

Descripción

Fotos y diagramas del circuito completo sería un poco desordenados en este caso, así he en caja los componentes principales que se repiten en 4 y 2 veces respectivamente en el proyecto real. El primer subsistema de circuito es el divisor de voltaje basado en un fotoresistor que se repite cuatro veces, con cada fotorresistencia en un lado diferente de su robot. Una fotorresistencia varía basada en la señal recibida a través de la fotoconductividad del material semiconductor recibe la resistencia. La resistencia variable produce una variable corriente en el circuito según la ley de Ohm, V = iR donde el voltaje V es constante (5V). Tenga cuidado de no hacer los cables a cualquier un fotodiodo excesivamente largo, como puede perder señal debido a la resistencia interna del cable y las conexiones de soldadura. Voltaje se suministra a esta porción del circuito directamente 5V de Arduino UNO / pernos de tierra. La línea de 5V pasa a través de un resistor de 10kΩ, a través del fotodiodo y volver a tierra. Un análogo señal se lee entre el resistor y el fotodiodo via Arduino analógico en pins. Una adición opcional es el indicador LED muestra que va desde el otro lado de la resistencia (positivo) a tierra (negativo), que este LED cambiará la intensidad de la señal recibida por el fotodiodo. Si son estos LED demasiado cerca de uno de los fotodiodos, su máquina puede entrar en una especie de bucle de realimentación analógica en esa dirección, donde gira en dirección a su propio LED. Creo que he codificado contra esta posibilidad, pero si usted esta viendo ese comportamiento, trate de tomar los LEDs como son útiles sólo durante esta parte del circuito de depuración. Cuatro análogos de pins deben conectarse a cuatro iteraciones de este bloque de circuito. En principio puede aumentar el número de iteraciones para el aumento de la sensibilidad direccional, pero esto no es necesario para esta aplicación. El bosquejo que va con este proyecto es sensible a una diferencia en intensidad de luz recibida, si todas las señales recibidas son muy similares, que el robot seguirá muestra su entorno, pero siguen siendo inmóviles. Tan pronto como alguna de las señales es mayor que los otros por un valor de umbral, el programa entra en su ciclo de movimiento. Determina qué fotorresistor está recibiendo la señal máxima y entonces se aplica corriente al motor que se mueve el robot en la dirección correspondiente. Esta acción sigue como eso fotorresistencia recibe máxima intensidad, y hay una diferencia tan grande entre los valores leídos.

La segunda parte bloqueada el circuito sólo es necesaria si usted necesita más potencia para los motores luego del Arduino puede suministrar directamente en sus pines de salida PWM. Mi chasis / pistas / el motor es de juguete chino, el Arduino tenía problemas para conducir los motores con las pistas, por lo que he construido en un bloque de conmutación en el circuito que permite el PWM de salida a un relé de láminas que completa un circuito a una pila de 9V del tirón. El relé de láminasfunciona mediante un electroimán que, cuando activado por causas (Arduino) actuales bajas los puntos de contacto en el interruptor al ser magnetizado y cerrar el circuito. En principio puede conducir muy grandes motores eléctricos con este concepto eligiendo el relé reed correcto. No tengo mucho más energía, así una batería de 9V era suficiente, el interruptor usa es en las partes a fin de sección. Puesto que este componente es operado a través de campos electromagnéticos, un diodo de protección contra transitorios es necesario, ya que el campo magnético que se derrumba (cuando está apagado) puede provocar un pico de corriente viajar hacia el Arduino según lo predicho por las ecuaciones de Maxwell. Una buena discusión sobre cómo implementar este relé reed particular interruptor sin causar daño a la placa puede encontrarse aquí.

Esta parte del circuito se repite dos veces correspondiente a dos motores, y como se dijo, si eres capaz alimentar sus motores directamente con Arduino, puede omitir esta parte del proyecto sin pérdida de funcionalidad.

Diagrama del circuito

Divisor de tensión:

Circuito de conmutación:

Lista de piezas

Arduino UNO ($14,48)

4 x resistencia, 10 KΩ

Foto de x 4 luz sensible Resistor fotoresistor Optoresistor 5mm GL5516 5516

4 x LED

RadioShack® 1.5W Panel Solar 9V ($5,74)

Pistas de juguete / plataforma de motores (2)

2 x Reed Switches (OMR-C - 105H)

Código

const int frontPin = A0;

const int leftPin = A1;

const int rightPin = A2;

const int backPin = A3;

const int leftMotor = 9;

const int rightMotor = 10;

Umbral de int = 170;

int dirección;

int direction1;

int direction2;

int retardo = 25;

int Delay2 = 25;

void setup()

{

pinMode (frontPin, entrada);

pinMode (leftPin, entrada);

pinMode (rightPin, entrada);

pinMode (backPin, entrada);

pinMode (leftMotor, salida);

pinMode (rightMotor, salida);

digitalWrite (leftMotor, HIGH);

digitalWrite(rightMotor,HIGH);

Delay(100);

digitalWrite (leftMotor, bajo);

digitalWrite (rightMotor, bajo);

Delay(100);

digitalWrite (leftMotor, HIGH);

digitalWrite (rightMotor, HIGH);

Delay(100);

digitalWrite (leftMotor, bajo);

digitalWrite (rightMotor, bajo);

Delay(1500);

Serial.Begin(9600);

}

void loop()

{

int dirección;

int direction1;

int direction2;

int frontSignal = 1023 - analogRead(frontPin);

int leftSignal = 1023 - analogRead(leftPin);

int rightSignal = 1023 - analogRead(rightPin);

int backSignal = 1023 - analogRead(backPin);

Serial.println(frontSignal);

Serial.println(leftSignal);

Serial.println(rightSignal);

Serial.println(backSignal);

frontSignal + leftSignal + rightSignal + backSignal < = umbral

Si (abs(frontSignal-leftSignal)+abs(frontSignal-rightSignal)+abs(frontSignal-backSignal) > = umbral)

{

Serial.println ("lazo del movimiento");

direction1 = max (frontSignal, leftSignal);

direction2 = max (rightSignal, backSignal);

Dirección = max (direction1, direction2);

Lazo de aquí se entra sólo si la luz recibida no está uniformemente distribuido.

Si (frontSignal == dirección)

{

hacer

{

digitalWrite (leftMotor, HIGH);

digitalWrite (rightMotor, HIGH);

Delay(Delay2);

digitalWrite (leftMotor, bajo);

digitalWrite (rightMotor, bajo);

Delay(Delay);

frontSignal = 1023 - analogRead(frontPin);

leftSignal = 1023 - analogRead(leftPin);

rightSignal = 1023 - analogRead(rightPin);

backSignal = 1023 - analogRead(backPin);

direction1 = max (frontSignal, leftSignal);

direction2 = max (rightSignal, backSignal);

Dirección = max (direction1, direction2);

Serial.println("forward");

} mientras que (frontSignal == dirección & & abs(frontSignal-leftSignal)+abs(frontSignal-rightSignal)+abs(frontSignal-backSignal) > = umbral);

digitalWrite (leftMotor, bajo);

digitalWrite (rightMotor, bajo);

}

else if (leftSignal == dirección) //Signal es mayor a la izquierda

{

hacer

{

Serial.println("left");

digitalWrite (rightMotor, HIGH);

Delay(Delay2);

digitalWrite (rightMotor, bajo);

Delay(Delay);

frontSignal = 1023 - analogRead(frontPin);

leftSignal = 1023 - analogRead(leftPin);

rightSignal = 1023 - analogRead(rightPin);

backSignal = 1023 - analogRead(backPin);

direction1 = max (frontSignal, leftSignal);

direction2 = max (rightSignal, backSignal);

Dirección = max (direction1, direction2);

} mientras que (leftSignal == dirección & & abs(frontSignal-leftSignal)+abs(frontSignal-rightSignal)+abs(frontSignal-backSignal) > = umbral);

digitalWrite (rightMotor, bajo);

}

else if (rightSignal == dirección) //Signal es mayor a la derecha.

{

hacer

{

Serial.println("Right");

digitalWrite (leftMotor, HIGH);

Delay(Delay2);

digitalWrite (leftMotor, bajo);

Delay(Delay);

frontSignal = 1023 - analogRead(frontPin);

leftSignal = 1023 - analogRead(leftPin);

rightSignal = 1023 - analogRead(rightPin);

backSignal = 1023 - analogRead(backPin);

direction1 = max (frontSignal, leftSignal);

direction2 = max (rightSignal, backSignal);

Dirección = max (direction1, direction2);

} mientras que (rightSignal == dirección & & abs(frontSignal-leftSignal)+abs(frontSignal-rightSignal)+abs(frontSignal-backSignal) > = umbral);

digitalWrite (leftMotor, bajo);

}

else if (backSignal == dirección) //Signal es el más grande detrás.

{

hacer

{

Serial.println("back");

digitalWrite (leftMotor, HIGH);

Delay(Delay2);

digitalWrite (leftMotor, bajo);

Delay(Delay);

frontSignal = 1023 - analogRead(frontPin);

leftSignal = 1023 - analogRead(leftPin);

rightSignal = 1023 - analogRead(rightPin);

backSignal = 1023 - analogRead(backPin);

direction1 = max (frontSignal, leftSignal);

direction2 = max (rightSignal, backSignal);

Dirección = max (direction1, direction2);

} mientras que (backSignal == dirección & & abs(frontSignal-leftSignal)+abs(frontSignal-rightSignal)+abs(frontSignal-backSignal) > = umbral);

digitalWrite (leftMotor, bajo);

}

}

if(abs(frontSignal-leftSignal)+abs(frontSignal-rightSignal)+abs(frontSignal-backSignal) demás < = umbral)

{

int diferencia = abs(frontSignal-leftSignal)+abs(frontSignal-rightSignal)+abs(frontSignal-backSignal);

Serial.println ("señal diferencial es igual a");

Serial.println(Difference);

digitalWrite (leftMotor, bajo);

digitalWrite (rightMotor, bajo);

Delay(1000); Otra muestra de medio ambiente a un ritmo de 10 hz

}

otra cosa

{

digitalWrite (leftMotor, bajo);

digitalWrite (rightMotor, bajo);

}

}

Artículos Relacionados

Práctica linterna Solar (en lata mini de altoids)

Práctica linterna Solar (en lata mini de altoids)

este es un proyecto rápido y barato que hice para usar algunas cosas tuve que poner todo y hacer algo muy útil para mí. Cuando termine este intstructable habrá aprendido a hacer una poca luz solar bastante útil cuando las luces ir fuera o para acampa
Linterna Solar no suelda

Linterna Solar no suelda

Iluminación solar al aire libre se ha convertido en muy popular en los últimos años, sin embargo, ¿cuántas personas conoces que pueden explicar cómo funciona? Por suerte solar es una fuente de alimentación super simple que podemos utilizar junto con
Solar Powered Robot de basura!!!

Solar Powered Robot de basura!!!

Actualizar; Mi categoría de edad para el concurso es 13-18 porque tengo quince años. :)Sí, el título lo explica bastante bien. En este Instructable le mostrará paso a paso cómo construir un sensible a la luz, solar powered, robot. Todo lo que necesit
Linterna solar

Linterna solar

A Solar powered LED linternaCarga bajo la luz solar en un díaUso de carga NiMH a iluminado 1 watt blanco SMD LED en el ambiente de noche o en la oscuridadFotorresistencia hacer la linterna sólo iluminan en la oscuridadMateriales:Copa desechable trans
USB dual Power LED recargable linterna solar

USB dual Power LED recargable linterna solar

este es mi primer Instructable y mi entrada para el concurso de la USB.  Es exactamente como los Estados de título. Este instructable muestra cómo modificar una linterna Solar para tomar el poder desde el USB (y para cargarlo cuando está oscuro, y el
Reutilizando linterna solar mediante supercondensador

Reutilizando linterna solar mediante supercondensador

* Este artículo también está disponible en inglés haciendo clic aquí.En internet y en muchos comercios pueden conseguirse estas linternas LED, de reducidas dimensiones y recargables mediante energía solar, incluso se han reportado casos de comprarse
Montar y hacer tu propia linterna Solar portátil

Montar y hacer tu propia linterna Solar portátil

su una manera fácil de hacer su propia linterna solar. Se ha realizado un esfuerzo para distribuir estas linternas solares en aldeas en toda la India. Comentar o dar sugerencias.
Hacer su propia linterna Solar

Hacer su propia linterna Solar

aquí es un proyecto fácil que se puede hacer en unas horas convertir una vieja linterna de keroseno en una linterna Solar con un efecto ambiental que brilla intensamente rojo.Materiales:Antigua linterna de kerosenoLED rojo alto brillo 1Abrigo de burb
Linterna solar renovación

Linterna solar renovación

Hace muchos años que compramos estas linternas solares para nuestro patio trasero. Sin embargo, en los años comenzaron a fallar. Primero fueron las pilas recargables de Ni-Cad. Algunas tenían fallas en tablero y finalmente el panel solar se presenten
Linterna solar accionado (gardenlight casemod)

Linterna solar accionado (gardenlight casemod)

El concepto de una linterna solar parece muy similar a la idea de poner una puerta de pantalla en un submarino, a menos que agregue el calificativo que la linterna es capaz de almacenar energía. Entonces, el concepto tiene mucho más sentido.Solares p
UNI-Rover | Skype controlado telepresencia robot tanque

UNI-Rover | Skype controlado telepresencia robot tanque

Rover de la UNI está diseñado como multipropósito rover, que ayudan a los seres humanos en la reducción de la carga de trabajo de varias maneras. Se diseñan principalmente para servir a los seres humanos de acuerdo a sus necesidades durante su trabaj
Caminar, hablar, Smarphone Instructables controlados Robot

Caminar, hablar, Smarphone Instructables controlados Robot

siempre he querido contribuir al robot instructable haciendo comunidad, así que aquí está uno que puede hacer que cualquier grupo de edad. Esta es una colaboración de muchos instructables en línea, de los cuales he aprendido mucho. combinados en un s
Teléfono inteligente controlado por tanque de Arduino usando Annikken Andee

Teléfono inteligente controlado por tanque de Arduino usando Annikken Andee

Hola chicos, soy Robin, uno de los desarrolladores de Annikken Andee. Apenas unas semanas atrás fuimos invitados a ser parte de Arduino día Singapur 2014. En el día del evento, nos mostró un smartphone lego de la trituración de disparos de misiles ta
Barato fácil Solar Powered Robot

Barato fácil Solar Powered Robot

hacer un muy barato, relativamente fácil de construir robot que despertará en cualquier momento usted brilla una lámpara de escritorio en él. No hay ningún sensor en él, aunque supongo que el panel solar puede ser llamado un sensor. Planeo añadir pan