En este tutorial veremos como crear un cesto de basura automático, con arduino nano un sensor ultrasónico, un servomotor sg90 y otros componentes electrónicos. Se incluye el código fuente, el diagrama electrónico y el archivo gerber para el diseño del circuito impreso, todo totalmente gratis.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Circuito electrónico del proyecto
Materiales del proyecto
Srrvo sg90: Características
- Dimensiones (L x W xH) = 22.0 x 11.5 x 27 mm (0.86 x 0.45 x 1.0 pulgadas)
- Peso: 9 gramos
- Peso con cable y conector: 10.6 gramos
- Torque a 4.8 volts: 16.7 oz/in o 1.2 kg/cm
- Voltaje de operación: 4.0 a 7.2 volts
- Velocidad de giro a 4.8 volts: 0.12 seg / 60 º
- Conector universal para la mayoría de los receptores de radio control
- Compatible con tarjetas como Arduino y microcontroladores que funcionan a 5 volts.
¿Cómo controlar un servomotor?
Puede colocar el eje del servo en varios ángulos de 0 a 180º. Los servos se controlan utilizando una señal de modulación de ancho de pulso (PWM). Esto significa que la señal PWM enviada al motor determinará la posición del eje.
Arduino Nano
El Arduino Nano es una placa pequeña, completa y compatible con la placa de pruebas basada en el ATmega328 (Arduino Nano 3.x). Tiene más o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente. Solo carece de un conector de alimentación de CC y funciona con un cable USB Mini-B en lugar de uno estándar.
Microcontrolador | ATmega328 |
Arquitectura | AVR |
Tensión de funcionamiento | 5 V |
Memoria flash | 32 KB de los cuales 2 KB utiliza el gestor de arranque |
SRAM | 2 KB |
Velocidad de reloj | 16 MHz |
Pines analógicos IN | 8 |
EEPROM | 1 KB |
Corriente CC por pines de E / S | 40 mA (pines de E / S) |
Voltaje de entrada | 7-12 V |
Pines de E / S digitales | 22 (6 de los cuales son PWM) |
Salida PWM | 6 |
El consumo de energía | 19 mA |
Tamaño de PCB | 18 x 45 mm |
Peso | 7 g |
Diagrama de pines
Modulo Sensor Ultrasonido HC-SR04
El sensor HC-SR04 es una excelente opción como sensor de distancia ultrasónico. Su relación de costo/beneficio lo hace óptimo para un
gran abanico de aplicaciones. El uso de este módulo es bastante sencillo debido a que se toda la electrónica de control, transmisión y
recepción se encuentra contenida en PCB. El usuario solamente debe enviar un pulso de disparo y medir en tiempo alto del pulso de
respuesta. Solamente se requieren 4 cables para completar la interfaz con el módulo de sensor HC-SR04. El HC-SR04 es compatible con la
mayoría de los microcontroladores del mercado, incluyendo el Arduino UNO, Arduino MEGA y otras tarjetas compatibles que funcionen con
5 volts. Existen librerías para este módulo que hacen que la parte del software quede resuelta de manera muy sencilla. Recomendamos
adquirir algunos cables tipo Dupont para poder usar este sensor sin necesidad de realizar soldaduras.
Posee dos transductores: un emisor y un receptor piezoeléctricos, además de la electrónica necesaria para su
operación. El funcionamiento del sensor es el siguiente: el emisor piezoeléctrico emite 8 pulsos de ultrasonido(40KHz) luego de
recibir la orden en el pin TRIG, las ondas de sonido viajan en el aire y rebotan al encontrar un objeto, el sonido de rebote es
detectado por el receptor piezoeléctrico, luego el pin ECHO cambia a Alto (5V) por un tiempo igual al que demoró la onda desde que
fue emitida hasta que fue detectada, el tiempo del pulso ECO es medido por el microcontrolador y asi se puede calcular la distancia al
objeto. El funcionamiento del sensor no se ve afectado por la luz solar o material de color negro (aunque los materiales blandos
acusticamente como tela o lana pueden llegar a ser difíciles de detectar).
Especificaciones:
-Interfaz sencilla: Solamente 4 cables
-Voltaje de Operación: 5V DC
-Corriente de reposo: < 2mA
-Corriente de trabajo: 15mA
-Rango de medición: 2cm a 450cm
-Precisión: +- 3mm
-Ángulo de apertura: 15°
-Frecuencia de ultrasonido: 40KHz
-Duración mínima del pulso de disparo TRIG (nivel TTL): 10 µS
-Duración del pulso ECO de salida (nivel TTL): 100-25000 µS
-Dimensiones: 45mm x 20mm x 15mm
-Tiempo mínimo de espera entre una medida y el inicio de otra 20ms (recomendable 50ms)
Conexion:
-VCC (+5V DC)
-TRIG (Disparo del ultrasonido)
-ECHO (Recepción del ultrasonido)
-GND (0V)
Un Resistor de 1K
Un diodo led rojo de 5 mm
Un palito de helado
Tres pines Macho
Dos tuercas y tornillos
Cesto de residuos
Un Zócalo para arduino
Circuito Impreso PCB
Archivo Gerber –> Gerber_CESTO_DE_RESIDUOS
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <Servo.h> const int Trigger = 2; //Pin 2 para el Trigger del sensor ultrasónico const int Echo = 3; //Pin 3 para el Eco del sensor ultrasónico Servo servoMotor1; // crear un objeto servo para controlar el servo void setup() { Serial.begin(9600);//iniciailzamos la comunicación a 9600 bps pinMode(Trigger, OUTPUT); //Se configura como salida pinMode(Echo, INPUT); //Se configura como entrada digitalWrite(Trigger, LOW);//Inicializamos el pin con estado BAJO o LOW servoMotor1.attach(4); // Asignamos el pin 4 para el control del servo servoMotor1.write(21); //Posisción inicial del servo para que quede la tapa cerrada } void loop() { long tiempo; //tiempo que demora en llegar el eco long distancia; //distancia en centimetros digitalWrite(Trigger, HIGH);//Activamos el pin 2 delayMicroseconds(10); //Enviamos un pulso durante 10us digitalWrite(Trigger, LOW); //Desactivamos el pin 2 tiempo = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso y lo asignamos a la variable tiempo distancia = tiempo/59; //Convertimos el tiempo a distancia en cm if(distancia<=15){//Si la condición se cumple movemos el servo con eso abriemos la tapa del cesto de basura servoMotor1.write(80); delay(4000);//La tapa estrá abierta 4 segundos servoMotor1.write(21);//Tapa del cesto de basura cerrada } Serial.print("Distancia: ");//Imprimimos en el terminal serial el valor de la distancia en centímetros Serial.print(distancia); Serial.print("cm"); Serial.println(); delay(100); //Esperamos un tiempo breve antes de empezar de nuevo } |
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
PROYECTO RECOMENDADO