domingo, 7 de junio de 2009

Demo del carrito seguidor de lineas

En ésta demo podemos observar el comportamiento del carrito mediante los sensores. Cuando yo tapo el sensor de arriba las luces deben encender, debido a que en el código tenemos puesto que cuando no entre señal se encienda los leds delanteros, y cuando puede ver luz del sol se apagan. Ahora los sensores de la parte delantera, suponer que mi dedo hace el papel de línea blanca, cuando tapo el sensor de la izquierda quiere decir que el carrito se esta saliendo de la linea negra por la derecha, asi que la llantas delanteras voltean al lado derecho para enderezar el camino y viceversa si tapo el sensor derecho, ahora si yo tapo los 2 sensores quiere decir que nada mas esta leyendo línea blanca, por lo tanto retrocede para poder buscar línea negra.

Código del proyecto

int motoravanza = 10;
int motoretro = 11;
int derecha = 12;
int izquierda = 13;
int sensor1 = 4;
int sensor2 = 3;
int valor1 = 0;
int valor2 = 0;
int led1=7;
int led2=6;
int vallux=0;
int LDR=0;

void setup()
{
pinMode(motoravanza, OUTPUT);
pinMode(motoretro, OUTPUT);
pinMode(izquierda , OUTPUT);
pinMode(derecha, OUTPUT);
pinMode(valor1, INPUT );
pinMode(valor2, INPUT );
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop()
{
vallux=analogRead(LDR);
valor1 = digitalRead(sensor1); // valores del sensor
valor2 = digitalRead(sensor2);
if ( vallux>10)
{
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
}
else
{
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
}


if(valor1==0 && valor2==0)
{
analogWrite(motoretro ,80);
analogWrite(motoravanza ,0);
analogWrite(izquierda ,0);
analogWrite(derecha,0);

}
if(valor1>0 && valor2>0)
{
analogWrite(motoravanza,100); //avanzan
analogWrite(motoretro ,0);
analogWrite(izquierda ,0);
analogWrite(derecha ,0);

}
if(valor1<=0 && valor2>0)
{
analogWrite(motoravanza,170); // giro derecha
analogWrite(derecha ,255);
analogWrite(motoretro ,0);
analogWrite(izquierda ,0);
}
if(valor1>0 && valor2<=0)
{
analogWrite(motoravanza,170);
analogWrite(izquierda,255);// giro izquierda
analogWrite(derecha,0);
analogWrite(motoretro,0);// giro izquierda
}
}

Fijando las Placas


Recomendación para fijar la placa de los sensores al carrito

Que tal, aqui les doy una recomendación acerca de cómo fijar su placa de los sensores a su carrito, en primer lugar les recomiendo que la parte del puente H lo separen de los de los sensores CNY70, si pueden observar en el circuito que les proporcionaremos no se juntan las líneas de los sensores con el puente H, solo comparten el positivo y negativo, aunque para ser sinceros se unen mediante el Arduino. Asi que les sugiero que separen la placa en 2, una de los sensores y otra del puente H. Bueno, el circuito que contiene los sensores CNY70 les sugiero que lo fijen con silicón adelante de la carrito, en la defensa pues. Para que primero de la señal al carrito hacia a donde ir, asi las llantas delanteras pueden reaccionar a tiempo.

Conectar la placa al arduino

Una vez ya impresa la placa, taladramos los agujeros para poder insertar los dispositivos, una vez hecho esto, se soldan los componentes a la placa utilizando un cautín con punta y estaño. Ya hecho éste proceso se ensamblan los cables a los pines del arduino. Mas adelante se les proporcionará el diagrama y el código para poder ensamblar su placa al arduino.

Imprimir el circuito en una placa de cobre

Una vez trazado el circuito a la placa de cobre, usamos el ácido férrico para poder marcar los caminos de cobre. El ácido férrico se puede conseguir en varias electrónicas, el que utilizamos fue un bote de 1 litro con un costo aproximado a los $60.00, no utilizamos tado. Para hacer ésta parte de quemar la placa de cobre, se necesita trazar el circuito en una placa de cobre con un plumón permanente y repintarlo varias veces hasta estar 100% seguro que no se va a borrar, después utilizamos un recipiente para meter el líquido, lo necesario para cubrir la placa y después agregarle agua para que pueda hacer reacción el ácido. Luego esperar cerca de 20 a 30 min hasta ver que el cobre que no se marcó con el marcador halla desaparecido, la recomendación que les doy es checarlo cada intervalo de tiempo.

Circuito para los sensores CNY70 y puente H


Éste es el dibujo que hay que dibujar en la placa de cobre, aqui se conectarán los sensores CNY70 y el Puente H.

Práctica con el puente H


Hoy les mostraremos un código y un diagrama para poder realizar una práctica para el puente H, el objetivo de la práctica es controlar un motor de CD por medio del código y el puente H.


int valor = 0; // variable que contiene el valor
int motorAvance = 10; // Avance motor --> PIN 10
int motorRetroceso = 11; // Retroceso motor --> PIN 11
void setup() { } // No es necesario
void loop() {
analogWrite(motorRetroceso, 0); // Motor hacia delante ... sube la velocidad
for(valor = 0 ; valor <= 255; valor+=5) { analogWrite(motorAvance, valor); delay(30); } for(valor = 255; valor >=0; valor-=5) { // Motor hacia delante ... baja la velocidad
analogWrite(motorAvance, valor);
delay(30);
}
analogWrite(motorAvance, 0); // Motor hacia detrás ... sube la velocidad
for(valor = 0 ; valor <= 255; valor+=5) { analogWrite(motorRetroceso, valor); delay(30); } for(valor = 255; valor >=0; valor-=5) { // Motor hacia detrás ... baja la velocidad
analogWrite(motorRetroceso, valor);
delay(30);
}
}

El puente H. CI L293B


Un Puente H o Puente en H es un circuito electrónico que permite a un motor eléctrico DC girar en ambos sentidos, avance y retroceso. Son ampliamente usados en robótica y como convertidores de potencia. Los puentes H están disponibles como circuitos integrados, pero también pueden construirse a partir de componentes discretos.

El término "puente H" proviene de la típica representación gráfica del circuito. Un puente H se construye con 4 interruptores (mecánicos o mediante transistores). Cuando los interruptores S1 y S4 (ver primera figura) están cerrados (y S2 y S3 abiertos) se aplica una tensión positiva en el motor, haciéndolo girar en un sentido. Abriendo los interruptores S1 y S4 (y cerrando S2 y S3), el voltaje se invierte, permitiendo el giro en sentido inverso del motor.Con la nomenclatura que estamos usando, los interruptores S1 y S2 nunca podrán estar cerrados al mismo tiempo, porque esto cortocircuitaría la fuente de tensión. Lo mismo sucede con S3 y S4.

Diagrama para la práctica del sensor de luz


Práctica con el Sensor de luz

A continuación se les proporcionará un diagrama y un códgo que pueden ejecutar en el software del arduino para poder elaborar una práctica con el sensor de luz(LDR).
int speakerOut =7;
int val=0;
int LDRPin=0;
void setup(){
pinMode (speakerOut, OUTPUT);
}
void loop() {
digitalWrite(speakerOut, LOW);
val=val*2;
//val=val/2;
val=analogRead(LDRPin);
digitalWrite(speakerOut,HIGH);
delayMicroseconds(val);
digitalWrite(speakerOut, LOW);
delayMicroseconds(val);
}

Práctica con el sensor CNY70 y el arduino


En éste artículo se presentará una práctica con el sensor CNY70 para encender un led. Para ello se les proporcionará un código para que ejecuten en el softaware del arduno, éste se puede descargar en la sección de sitios de interés en el link ARDUINO EN ESPAÑOL. A continuación se proporcionará el código y el diagrama.
int ledPin = 13; // PIN del LED
int inPin = 4; // PIN del pulsador
int value = 0; // Valor del pulsador
void setup() {
pinMode(ledPin, OUTPUT);
// Inicializa el pin 13 como salida digital
pinMode(inPin, INPUT);
// Inicializa el pin 4 como entrada digital
}
void loop() {
value = digitalRead(inPin);
// Lee el valor de la entrada digital
digitalWrite(ledPin, value);
}

El Sensor de Luz


Sensor de Luz


El LDR (resistor dependiente de la luz) es una resistencia que varía su valor dependiendo de la cantidad de luz que la ilumina.
Los valores de una fotorresistencia cuando está totalmente iluminada y cuando está totalmente a oscuras varía, puede medir de 50 ohmios a 1000 ohmios (1K) en iluminación total y puede ser de 50K (50,000 Ohms) a varios megaohmios cuando está a oscuras.
El LDR es fabricado con materiales de estructura cristalina, y utiliza sus propiedades fotoconductoras.
Los cristales utilizados más comunes son: sulfuro de cadmio y seleniuro de cadmio.
El valor de la fotorresistencia (en Ohmios) no varía de forma instantánea cuando se pasa de luz a oscuridad o al contrario, y el tiempo que se dura en este proceso no siempre es igual si se pasa de oscuro a iluminado o si se pasa de iluminado a oscuro.
Esto hace que el LDR no se pueda utilizar en muchas aplicaciones, especialmente aquellas que necesitan de mucha exactitud en cuanto a tiempo para cambiar de estado (oscuridad a iluminación o iluminación a oscuridad) y a exactitud de los valores de la fotorresistencia al estar en los mismos estados anteriores. Su tiempo de respuesta típico es de aproximadamente 0.1 segundos.
Pero hay muchas aplicaciones en las que una fotorresistencia es muy útil. En casos en que la exactitud de los cambios no es importante como en los circuitos:
-
Luz nocturna de encendido automático, que utiliza una fotorresistencia para activar una o mas luces al llegar la noche.- Relé controlado por luz, donde el estado de iluminación de la fotorresistencia, activa o desactiva un Relay (relé), que puede tener un gran número de aplicaciones
El LDR o forresistencia es un elemento muy útil para aplicaciones en circuitos donde se necesita detectar la ausencia de luz de día.

El Sensor CNY70


SENSOR CNY70


El CNY70 es un sensor de infrarrojos de corto alcance basado en un emisor de luz y un receptor, ambos apuntando en la misma dirección, y cuyo funcionamiento se basa en la capacidad de reflexión del objeto, y la detección del rayo reflectado por el receptor.

El CNY70 devuelve por la pata de salida correspondiente, según el montaje, un voltaje relacionado con la cantidad de rayo reflectado por el objeto. Para el montaje A, se leerá del emisor un '1' cuando se refleje luz y un '0' cuando no se refleje. Para el montaje B los valores se leen del colector, y son los contrarios al montaje A.
Si conectamos la salida a una entrada digital del microcontrolador, entonces obtenedremos un '1' o un '0' en función del nivel al que el microcontrolador establece la distinción entre ambos niveles lógicos. Este nivel se puede controlar introduciendo un buffer trigger-schmitt (por ejemplo el 74HC14, ¡ojo que es un inversor!) entre la salida del CNY70 y la entrada del microcontrolador. Este sistema es el que se emplea para distinguir entre blanco y negro, en la conocida aplicación del robot seguidor de línea.
Otra posibilidad es conectar la salida a una entrada analógica. De este modo, mediante un conversor A/D se pueden obtener distintos valores. Esto permite la detección dinámica de blanco y negro (muy útil cuando el recorrido presenta alteraciones en la iluminación). Pero también, si empleamos el sensor con objetos de distintos color, establecer un mecanismo para la detección de los distintos colores, determinando los valores marginales que separan unos colores de otros. Esto permite emplear el sensor para alguna aplicación donde la detección del color sea necesaria.

Objetivo del proyecto


El objetivo principal del proyecto es crear un carrito seguidor de línea negra, pero para ello usaremos la tecnología arduino. Para ello necesitaremos de varios componentes electrónicos y un código para el software de arduino capaz de ordenar a la placa del arduino que siga la línea negra, también se implementará un sensor de luz para poder encender las luces delanteras del carrito. Para ello utilizaremos los sensores CNY70 y LDR(sensor de luz). En nuestra próxima entrada se explicará un poco acerca de los sensores.

sábado, 6 de junio de 2009

Arduino


Arduino es una plataforma open-hardware basada en una sencilla placa con entradas y salidas (E/S), analógicas y digitales, y en un entorno de desarrollo que implementa el lenguaje Processing/Wiring.
Su corazón es el chip Atmega328, un chip sencillo y de bajo coste que permite el desarrollo de múltiples diseños.
Al ser open-hardware tanto su diseño como su distribución es libre. Es decir, puede utilizarse libremente para desarrollar cualquier tipo de proyecto sin tener que adquirir ningún tipo de licencia.
Arduino puede utilizarse en el desarrollo de objetos interactivos autónomos o puede conectarse a un PC a través del puerto serie utilizando lenguajes como Flash, Processing, MaxMSP, etc ... Las posibilidades de realizar desarrollos basados en Arduino tienen como l�mite la imaginación.
Asimismo, su sencillez y su bajo coste, recomiendan su uso como elemento de aprendizaje e iniciación en el mundo de la electrónica digital.

Bienvenidos




En éste artículo le damos la más cordial bienvenida. Somos alumnos del Instituto Tecnológico de Mérida, actualmente cursamos el 6° semestre de la carrera de Ing en Sistemas Computacionales. El objetivo de nuestra página es dar a conocer los resultados de nuestro proyecto de fin de semestre de la materia de Interfaces impartida por el Ingeniero Osvaldo Torres Matos, de igual manera en éste blog se mostrarán fotos del proyecto, documentación, diagramas y el código. El proyecto se trata de un carrito seguidor de líneas pero implementado con la tecnología arduino. Para poder entender mejor ésta nueva tecnología anexaremos información acerca del arduino, cómo programar y hacer algunas prácticas para poder comprender ésta tecnología. DE nueva cuenta, bienvenidos y espero que nuestra información sea de gran ayuda.