2
Lo más leído
5
Lo más leído
6
Lo más leído
Universidad Autónoma de Baja California 25/08/2014
1
VELOCIDAD DE UNA CANICA
Marcos Marcos Fernando
fmarcos@uabc.edu.mx
RESUMEN:Esta práctica consistió en realizar un
sistema capaz de medir la velocidad de una canica,
para poder elaborar este sistema se utilizaron
sensores de luz, leds, arduino, displays y algunos
otras herramientas. Para poder medir la velocidad
de la canica la hicimos rodar por un tubo,
colocamos dos sensores de luz en los extremos
para que se detectara en qué momento se obstruía
la luz en ellos, se contó el tiempo que llevo
corriendo el sistema, con los datos obtenido que
fueron tiempo y distancia se pudo calcularla
velocidad, y de ahí se imprimieron en tres displays
conectados en cascadas.
1 INTRODUCCIÓN
El desarrollo de sistemas automáticos se ha
tornado aún más sencillo con el uso de
microcontroladores ya que la cantidad de funciones
y aplicaciones que se les puede dar son en verdad
extensas, se puede simplemente jugar con un led
(Blink) hasta hacer sistemas más complejos como
una mano robótica, un carrito, un cuadricoptero
pero de hecho esto también se vuelve más sencillo
con el uso de complementos que se adaptan de
manera sencilla al microcontrolador,se puede decir
que los limites en los usos y/o aplicaciones de los
micros están en nuestra imaginación.
2 OBJETIVO
La práctica consiste en utilizar tres indicadores de
siete segmentos los cuales mostrarán la velocidad
de una canica que baja sobre una pequeña
pendiente, en la pendiente se encuentran
colocados dos sensores los cuales permiten medir
el tiempo en que la canica pasa se un punto A a un
punto B. Los indicadores se deben encontrar en
cero y una vez que la canica pasa por el sensor del
punto B se debe mostrar la velocidad en
centímetros por segundo.La velocidad se muestra
por tres segundos y después los indicadores se
regresan a cero.Una de las características del
circuito es que los indicadores de siete segmentos
se deben de encontrar conectados en paralelo, en
esta ocasión no se permite utilizar decodificadores
de siete segmentos para manejar los indicadores,
asícomo plataformas de desarrollo de Arduino que
tienen mayor número de salidas.
3 TEORÍA
Arduino es una herramienta utilizada para que
los ordenadores puedan controlar el mundo físico y
no solo esto también sentirlo.Es una plataforma de
desarrollo de computación física de código abierto,
basada en una placa con un sencillo micro
controlador y un entorno de desarrollo para crear
software para la placa.
Arduino se puede utilizar para crear objetos
interactivos,leyendo datos de una gran variedad de
interruptores y sensores y controlar multitud de
tipos de motores, luces, entre muchos más
actuadores físicos. Los proyectos de arduino
pueden ser autónomos o comunicarse con un
programa que se ejecute en tu ordenador. La placa
puede ser montada por el usuario o comprarla lista
para usar, El software utilizado para la
programación de esta plataforma es gratis.
El lenguaje de programación de arduino es
muy sencillo,de echo es similar a los lenguajes de
programación de C++, Netbeans, entre otros, por
esto mismo es fácil de utilizar. El software arduino
es multiplataforma debido a que funciona con
sistemas operativos como lo es Windows,
Macintosh OSX y Linux.
¿Qué distingue a Arduino de otros
microcontroladores?
La filosofía open source -código abierto- que
lo sustenta. Tanto el modo en que se ensambla la
placa -hardware- como elcódigo fuente del
programa Arduino -software- son de acceso
público. Esto quiere decir que cualquiera de
nosotros que usarlo y/o mejorarlo pueda hacerlo.
4 DESARROLLO
Para el desarrollo de esta práctica es necesario
contar con el siguiente material y equipo:
- Micro Arduino
- Jumpers
- 2 leds
- 2 Fotorresistencias
- Cables
- Pinzas de corte
- 3Displays
- 2 Tobos
- Segueta
- 2 Resistencias de 10kΩ
- 2 Resistencias de 220Ω
Procedimiento:
Universidad Autónoma de Baja California 25/08/2014
2
Se elabora la base por donde correrá la canica,
para ello se cortaron dos tubos,uno más grande
que el otro.
Cortados los dos tubos, se pegan para poder
pegar un led en la parte superior y una
fotorresistencia en la parte inferior en ambos
extremos del tubo, estos se colocan 45 cm de
separación.
Ahora se arma todo el circuito, se colocan los
displays,las fotorresistencias, los leds y todo se
conecta al Arduino.
Ahora se prosigue realizando la programación en Arduino.
void setup() {
Serial.begin(9600);
DDRD=B11111110;
pinMode(A0,OUTPUT);//Activa/Desactiva 1er Display(Unidades)
pinMode(A1,OUTPUT);//Activa/Desactiva 2do Display(Punto)
pinMode(A2,OUTPUT);//Activa/Desactiva 3er Display(Decimales)
pinMode(A3,INPUT);//Lee el valor del 1er Sensor
pinMode(A4,INPUT);//Lee el valor del 2do Sensor
pinMode(13,OUTPUT);//Activa/Desactiva segmenti "a" de todos los Displays
pinMode(12,OUTPUT);//Activa/Desactiva punto del punto del 2do Display
pinMode(11,OUTPUT);//LED 1 del sensor 1
pinMode(10,OUTPUT);//LED 2 del sensor 2
digitalWrite(11,HIGH);//Mantiene el LED1 encendido por siempre
digitalWrite(10,HIGH);//Mantiene el LED2 encendido por siempre
}
int entrada1=0,entrada2=0,entrada3=0,entradainicio=0,vint=0,num1i=0,num2i=0,tiempodisplay=0;
charvchar[3],num1c[2],num2c[2];
String vstring;
int luz1=0,luz2=0;
float time1=0,time2=0,time3=0,velocidad=0;
voidloop() {
millis();
if(millis()>1000){ //Con esta condicion evito que opere el programa al instante
luz1=analogRead(A3);//998
luz2=analogRead(A4);//780
Serial.print(luz1);Serial.print(" "); Serial.print(luz2);
Serial.println("n");
Universidad Autónoma de Baja California 25/08/2014
3
//Etapa 1: Capturando tiempos en que se capta la diferencia de luz en los sensores
if(entradainicio==0){
if(luz1<998){
time1=millis();
entrada1=1; //Habilito la 1era de las dos condiciones para poder calcular la velocidad
}
if(luz2<780){
time2=millis();
entrada2=1;//Habilito la 2da de las dos condiciones para poder calcular la velocidad
}
}
//Etapa 2: Calculando la velocidad y transformadola a cadena para poder separar los numeros
if(entrada1==1&&entrada2==1){
entradainicio=1;//Evito que se capture alguna diferencia de luz en los sensores antes de que se mues tra la
1era prueba
time3=(time2-time1)/1000L;
velocidad=4.5/time3;
vint=velocidad;
vstring=String(vint);
vstring.toCharArray(vchar,3);
if(vint<10){//Si la velocidad es menos que 1.
num1c[0]=vchar[0];//Igualando el 1er caracter de la cadena vchar a otra cadena
num1i=atoi(num1c);//Convierte un array o caracter en numero
entrada3=1;//Habilito que se despliegen los numeros en los displays
entrada1=0;
entrada2=0;
}
if(vint>9){ //Si la velocidad es mayor o igual a 1.
num1c[0]=vchar[0];//Igualando el 1er caracter de la cadena vchar a otra cadena
num1i=atoi(num1c);//Convierte un array o caracter en numero
num2c[0]=vchar[1];//Igualando el 1er caracter de la cadena vchar a otra cadena
num2i=atoi(num2c);//Convierte un array o caracter en numero
entrada3=1;//Habilito que se despliegen los numeros en los displays
entrada1=0;
entrada2=0;
}
}
//Etapa 3: Despliego la velocidad en los displays.
if(entrada3==1){
if(tiempodisplay<3000){//Con esta condicionpermino que la velocidad se mantenga por 3 seg. en los
displays
if(vint<10){
analogWrite(A0,0);//ON 1er Display para unidades
analogWrite(A1,225);//OFF 2do Display punto(marcado en el Display como un guion
analogWrite(A2,225);//OFF 3er Display para decimales
digitalWrite(13,HIGH);
digitalWrite(12,LOW);
PORTD=B01111110;//Imprimiendo numero Cero en el 1er Display(Activado por ceros)
delay(10);
analogWrite(A0,225);//OFF 1er Display para unidades
analogWrite(A1,0);//ON 2do Display punto(marcado en el Display como un guion
analogWrite(A2,225);//OFF 3er Display para decimales
digitalWrite(13,LOW);
digitalWrite(12,HIGH);
PORTD=B00000000;//Imprimiendo Guion(usado como punto) en el 2do Display
delay(10);
analogWrite(A0,225);//OFF 1er Display para unidades
analogWrite(A1,225);//OFF 2do Display punto(marcado en el Display como un guion
analogWrite(A2,0);//ON 3er Display para decimales
digitalWrite(12,LOW);
numero1();
delay(10);
Universidad Autónoma de Baja California 25/08/2014
4
tiempodisplay=tiempodisplay+30;
}
if(vint>9){
analogWrite(A0,0);//ON 1er Display para unidades
analogWrite(A1,225);//OFF 2do Display punto(marcado en el Display como un guion
analogWrite(A2,225);//OFF 3er Display para decimales
digitalWrite(13,LOW);//Apaga el segmento "a" de los displays
numero1();
delay(10);
analogWrite(A0,225);//ON 1er Display para unidades
analogWrite(A1,0);//OFF 2do Display punto(marcado en el Display como un guion
analogWrite(A2,225);//OFF 3er Display para decimales
digitalWrite(13,LOW);
digitalWrite(12,HIGH);//Mantiene el punto de la velocidad encendid
PORTD=B00000000;//Imprimiendo Guion(usado como punto) en el 2do Display
delay(10);
analogWrite(A0,225);//ON 1er Display para unidades
analogWrite(A1,225);//OFF 2do Display punto(marcado en el Display como un guion
analogWrite(A2,0);//OFF 3er Display para decimales
digitalWrite(12,LOW);//Mantiene el punto apagado
numero2();
delay(10);
tiempodisplay=tiempodisplay+30;
}
if(tiempodisplay>2999){//Con esta condicionpermido que se borre todo de los displays pasados 3 seg. de
haber mostrado algo
PORTD=B00000000;
digitalWrite(13,LOW);
digitalWrite(12,LOW);
entradainicio=0;//Habilito la lectura de luz en los sensores, para poder iniciar todo el proceso devuelta.
entrada3=0;//Deshabilito que cualquier numero se despliege en los displays.
tiempodisplay=0;//Evito que los displays se queden apagados por siempre.
luz1=1010;
luz2=810;
}
}
}
}
}
///////////////////////////Funciones Numero//////////////////////////
void numero1(){
switch(num1i){
case 0:
digitalWrite(13,HIGH);
PORTD=B01111110;
break;
case 1:
PORTD=B00001100;
break;
case 2:
digitalWrite(13,HIGH);
PORTD=B10110110;
break;
case 3:
digitalWrite(13,HIGH);
PORTD=B10011110;
break;
case 4:
PORTD=B11001100;
break;
case 5:
digitalWrite(13,HIGH);
Universidad Autónoma de Baja California 25/08/2014
5
PORTD=B11011010;
break;
case 6:
digitalWrite(13,HIGH);
PORTD=B11111010;
break;
case 7:
digitalWrite(13,HIGH);
PORTD=B00001110;
break;
case 8:
digitalWrite(13,HIGH);
PORTD=B11111110;
break;
case 9:
digitalWrite(13,HIGH);
PORTD=B11011110;
break;
}
}
void numero2(){
switch(num2i){
case 0:
digitalWrite(13,HIGH);
PORTD=B01111110;
break;
case 1:
PORTD=B00001100;
break;
case 2:
digitalWrite(13,HIGH);
PORTD=B10110110;
break;
case 3:
digitalWrite(13,HIGH);
PORTD=B10011110;
break;
case 4:
PORTD=B11001100;
break;
case 5:
digitalWrite(13,HIGH);
PORTD=B11011010;
break;
case 6:
digitalWrite(13,HIGH);
PORTD=B11111010;
break;
case 7:
digitalWrite(13,HIGH);
PORTD=B00001110;
break;
case 8:
digitalWrite(13,HIGH);
PORTD=B11111110;
break;
case 9:
digitalWrite(13,HIGH);
PORTD=B11011110;
break;
}
}
Universidad Autónoma de Baja California 25/08/2014
6
El esquema de todo el circuito se puede apreciar en la siguiente figura.
El sistema finalizado se muestra en la figura siguiente.
5 CONCLUCION
El desarrollo de esta práctica en verdad se me
hizo extenso, porque para poder realizarlo
tuvimos que realizar una serie de pruebas con
las fotorresistencias para que la variación fuera
lo másmínimo posible, la practica la pudimos
finalizar aunque con una detallitos, no supimos
cómo evitar que la fotorresistencia variara.
Universidad Autónoma de Baja California 25/08/2014
7
La primera prueba o medición de velocidad salía
perfectamente, pero cuando queríamos realizar
enseguida la segunda prueba surgían errores
debido a que los valores de las fotorresistencias
variaban y esto provocaba mediciones erróneas
y por lo tanto se realizaban errores en los
cálculos. (Marcos Marcos Fernando)
6 REFERENCIAS
[1]http://platea.pntic.mec.es/~lmarti2/arduino/introar
du/index.htm

Más contenido relacionado

DOCX
Coeficiente de transferencia de masa en diferentes dispositivos objetivos y m...
PPTX
Mapa mental Fundamentos de economía
DOCX
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
DOCX
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
DOCX
CONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINO
DOCX
Señales con arduino y DAC
DOCX
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
Coeficiente de transferencia de masa en diferentes dispositivos objetivos y m...
Mapa mental Fundamentos de economía
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINO
Señales con arduino y DAC
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO

Similar a DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO (20)

DOCX
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
DOCX
Tarjeta arduino (1)
DOCX
Tarjeta arduino (1)
DOCX
Tarjeta arduino (1)
DOCX
Tarjeta arduino
DOCX
Tarjeta arduino
DOCX
Trabajo final.
PDF
Trabajo de tecnologia
PDF
ARDUBLOCK
DOCX
Trabajo de tecnologia
PDF
Trabajo de tecnologia (2)
DOCX
Trabajo de tecnologia
DOCX
Arduino componentes
PDF
Tarjeta arduino
PDF
Arduino
DOCX
Arduino corrimiento de bits con leds
PDF
Trabajo de tecnologia
PDF
Trabajo de tecnologia
DOCX
Trabajo de tecnología la electricidad y la electrónica
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
Tarjeta arduino (1)
Tarjeta arduino (1)
Tarjeta arduino (1)
Tarjeta arduino
Tarjeta arduino
Trabajo final.
Trabajo de tecnologia
ARDUBLOCK
Trabajo de tecnologia
Trabajo de tecnologia (2)
Trabajo de tecnologia
Arduino componentes
Tarjeta arduino
Arduino
Arduino corrimiento de bits con leds
Trabajo de tecnologia
Trabajo de tecnologia
Trabajo de tecnología la electricidad y la electrónica
Publicidad

Más de Fernando Marcos Marcos (20)

DOCX
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
DOCX
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
DOCX
MATRIZ LED 4x10 CON ARDUINO - ATMEGA328P
DOCX
GENERADOR DE SEÑALES CON LM741 - SIGNAL GENERATOR
PDF
DISEÑO DE PCB CON MODULO DE TRANSMISIÓN Y RECEPCIÓN RN41
PDF
DISEÑO Y DESARROLLO DE UNA PLACA PCB CON ATMEGA 328
DOCX
DISEÑO DEL JUEGO PING PONG EN FPGA - VHDL - VGA
DOCX
APLICACIONES DE FOURIER
DOCX
APLICACIONES DE LAPLACE
DOCX
CONTROL AUTOMATICO DE GANANCIA (AGC)
DOCX
PLL (OSCILADOR POR CAMBIO DE FASE) - PHASE SHIFT OSCILLATOR
DOCX
USO DEL TRANSISTOR COMO SWITCH - TRANSISTOR EN CORTE Y EN SATURACION - TRANSI...
PDF
SISTEMA DE CONTROL Y MONITOREO DE HUMEDAD EN LOMBRICOMPOSTA - HUMIDITY MONITO...
DOC
DISEÑO ANALOGICO Y ELECTRONICA - ADC - CONVERTIDOR ANALÓGICO DIGITAL - ANALOG...
DOCX
DISEÑO ANALOGICO Y ELECTRONICA - DAC 8 BITS
DOCX
DISEÑO Y ELECTRÓNICA ANALÓGICA - OSCILADORES
DOCX
DISEÑO Y ELECTRONICA ANALOGICA - AMPLIFICADOR DIFERENCIADOR E INTEGRADOR - DI...
DOCX
DISEÑO Y ELECTRONICA ANALOGICA - FILTRO PASA BAJOS - LOW PASS FILTER
DOCX
DISEÑO Y ELECTRÓNICA ANALÓGICA - CONFIGURACIONES DEL OP AMP LM741
DOCX
DISEÑO ANALOGICO - AMPLIFICADOR DE INSTRUMENTACION INA114 Y LM741
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
MATRIZ LED 4x10 CON ARDUINO - ATMEGA328P
GENERADOR DE SEÑALES CON LM741 - SIGNAL GENERATOR
DISEÑO DE PCB CON MODULO DE TRANSMISIÓN Y RECEPCIÓN RN41
DISEÑO Y DESARROLLO DE UNA PLACA PCB CON ATMEGA 328
DISEÑO DEL JUEGO PING PONG EN FPGA - VHDL - VGA
APLICACIONES DE FOURIER
APLICACIONES DE LAPLACE
CONTROL AUTOMATICO DE GANANCIA (AGC)
PLL (OSCILADOR POR CAMBIO DE FASE) - PHASE SHIFT OSCILLATOR
USO DEL TRANSISTOR COMO SWITCH - TRANSISTOR EN CORTE Y EN SATURACION - TRANSI...
SISTEMA DE CONTROL Y MONITOREO DE HUMEDAD EN LOMBRICOMPOSTA - HUMIDITY MONITO...
DISEÑO ANALOGICO Y ELECTRONICA - ADC - CONVERTIDOR ANALÓGICO DIGITAL - ANALOG...
DISEÑO ANALOGICO Y ELECTRONICA - DAC 8 BITS
DISEÑO Y ELECTRÓNICA ANALÓGICA - OSCILADORES
DISEÑO Y ELECTRONICA ANALOGICA - AMPLIFICADOR DIFERENCIADOR E INTEGRADOR - DI...
DISEÑO Y ELECTRONICA ANALOGICA - FILTRO PASA BAJOS - LOW PASS FILTER
DISEÑO Y ELECTRÓNICA ANALÓGICA - CONFIGURACIONES DEL OP AMP LM741
DISEÑO ANALOGICO - AMPLIFICADOR DE INSTRUMENTACION INA114 Y LM741
Publicidad

Último (20)

PDF
Analisis de estructuras - Jairo Uribe Escamilla.pdf
PPTX
EVALUACIÓN DE IMPACTO AMBIENTAL PARA PROYECTOS.pptx
PPTX
Presentación Johnny.pptx Maestría universidad de Chile
PDF
SEMINARIO SOLDADURA FCAW 262024ACTUALEDIT (1) (1).pdf
PPT
diapositiva-archivodiapositiva_202310811844.ppt
PPTX
Unidad 1 INTRODUCCION al cent 11 2025.pptx
PDF
Tecnólogo en Automatización de Sistemas Mecatrónicos - ASM.pdf
PPTX
TP 8 – ResoluciónsuperFantasticanivelgod.pptx
PPTX
Riesgo eléctrico presentacion ARAKUR.pptx
PPTX
EXPOSICION MATERIA CALIDAD Y PRODUCTIVIDAD
PDF
Curso de Iniciación INTELIGENCIA ARTIFICIAL
PDF
DIAPOSITIVA GUIA DE EVALUACION DE INVERSION
PPTX
Investigación de Operaciones I universidad nacional de Piura.pptx
PDF
Anexo Minuta Complemento Metodologia Asignacion EnS
PPTX
Auditoria sistema de gestión de seguridad y salud en el trabajo
PPT
Colores y Señales de Seguridad - NOM-STPS-026.ppt
PPSX
investigacion incidentes accidentes TASC.ppsx
PPT
Segruidad ocupacioanal y riesgos laborles_parte2.ppt
PPTX
Conceptos básicos de hidraulica basica.pptx
PPTX
Infraestructura Física de un Data Center
Analisis de estructuras - Jairo Uribe Escamilla.pdf
EVALUACIÓN DE IMPACTO AMBIENTAL PARA PROYECTOS.pptx
Presentación Johnny.pptx Maestría universidad de Chile
SEMINARIO SOLDADURA FCAW 262024ACTUALEDIT (1) (1).pdf
diapositiva-archivodiapositiva_202310811844.ppt
Unidad 1 INTRODUCCION al cent 11 2025.pptx
Tecnólogo en Automatización de Sistemas Mecatrónicos - ASM.pdf
TP 8 – ResoluciónsuperFantasticanivelgod.pptx
Riesgo eléctrico presentacion ARAKUR.pptx
EXPOSICION MATERIA CALIDAD Y PRODUCTIVIDAD
Curso de Iniciación INTELIGENCIA ARTIFICIAL
DIAPOSITIVA GUIA DE EVALUACION DE INVERSION
Investigación de Operaciones I universidad nacional de Piura.pptx
Anexo Minuta Complemento Metodologia Asignacion EnS
Auditoria sistema de gestión de seguridad y salud en el trabajo
Colores y Señales de Seguridad - NOM-STPS-026.ppt
investigacion incidentes accidentes TASC.ppsx
Segruidad ocupacioanal y riesgos laborles_parte2.ppt
Conceptos básicos de hidraulica basica.pptx
Infraestructura Física de un Data Center

DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO

  • 1. Universidad Autónoma de Baja California 25/08/2014 1 VELOCIDAD DE UNA CANICA Marcos Marcos Fernando [email protected] RESUMEN:Esta práctica consistió en realizar un sistema capaz de medir la velocidad de una canica, para poder elaborar este sistema se utilizaron sensores de luz, leds, arduino, displays y algunos otras herramientas. Para poder medir la velocidad de la canica la hicimos rodar por un tubo, colocamos dos sensores de luz en los extremos para que se detectara en qué momento se obstruía la luz en ellos, se contó el tiempo que llevo corriendo el sistema, con los datos obtenido que fueron tiempo y distancia se pudo calcularla velocidad, y de ahí se imprimieron en tres displays conectados en cascadas. 1 INTRODUCCIÓN El desarrollo de sistemas automáticos se ha tornado aún más sencillo con el uso de microcontroladores ya que la cantidad de funciones y aplicaciones que se les puede dar son en verdad extensas, se puede simplemente jugar con un led (Blink) hasta hacer sistemas más complejos como una mano robótica, un carrito, un cuadricoptero pero de hecho esto también se vuelve más sencillo con el uso de complementos que se adaptan de manera sencilla al microcontrolador,se puede decir que los limites en los usos y/o aplicaciones de los micros están en nuestra imaginación. 2 OBJETIVO La práctica consiste en utilizar tres indicadores de siete segmentos los cuales mostrarán la velocidad de una canica que baja sobre una pequeña pendiente, en la pendiente se encuentran colocados dos sensores los cuales permiten medir el tiempo en que la canica pasa se un punto A a un punto B. Los indicadores se deben encontrar en cero y una vez que la canica pasa por el sensor del punto B se debe mostrar la velocidad en centímetros por segundo.La velocidad se muestra por tres segundos y después los indicadores se regresan a cero.Una de las características del circuito es que los indicadores de siete segmentos se deben de encontrar conectados en paralelo, en esta ocasión no se permite utilizar decodificadores de siete segmentos para manejar los indicadores, asícomo plataformas de desarrollo de Arduino que tienen mayor número de salidas. 3 TEORÍA Arduino es una herramienta utilizada para que los ordenadores puedan controlar el mundo físico y no solo esto también sentirlo.Es una plataforma de desarrollo de computación física de código abierto, basada en una placa con un sencillo micro controlador y un entorno de desarrollo para crear software para la placa. Arduino se puede utilizar para crear objetos interactivos,leyendo datos de una gran variedad de interruptores y sensores y controlar multitud de tipos de motores, luces, entre muchos más actuadores físicos. Los proyectos de arduino pueden ser autónomos o comunicarse con un programa que se ejecute en tu ordenador. La placa puede ser montada por el usuario o comprarla lista para usar, El software utilizado para la programación de esta plataforma es gratis. El lenguaje de programación de arduino es muy sencillo,de echo es similar a los lenguajes de programación de C++, Netbeans, entre otros, por esto mismo es fácil de utilizar. El software arduino es multiplataforma debido a que funciona con sistemas operativos como lo es Windows, Macintosh OSX y Linux. ¿Qué distingue a Arduino de otros microcontroladores? La filosofía open source -código abierto- que lo sustenta. Tanto el modo en que se ensambla la placa -hardware- como elcódigo fuente del programa Arduino -software- son de acceso público. Esto quiere decir que cualquiera de nosotros que usarlo y/o mejorarlo pueda hacerlo. 4 DESARROLLO Para el desarrollo de esta práctica es necesario contar con el siguiente material y equipo: - Micro Arduino - Jumpers - 2 leds - 2 Fotorresistencias - Cables - Pinzas de corte - 3Displays - 2 Tobos - Segueta - 2 Resistencias de 10kΩ - 2 Resistencias de 220Ω Procedimiento:
  • 2. Universidad Autónoma de Baja California 25/08/2014 2 Se elabora la base por donde correrá la canica, para ello se cortaron dos tubos,uno más grande que el otro. Cortados los dos tubos, se pegan para poder pegar un led en la parte superior y una fotorresistencia en la parte inferior en ambos extremos del tubo, estos se colocan 45 cm de separación. Ahora se arma todo el circuito, se colocan los displays,las fotorresistencias, los leds y todo se conecta al Arduino. Ahora se prosigue realizando la programación en Arduino. void setup() { Serial.begin(9600); DDRD=B11111110; pinMode(A0,OUTPUT);//Activa/Desactiva 1er Display(Unidades) pinMode(A1,OUTPUT);//Activa/Desactiva 2do Display(Punto) pinMode(A2,OUTPUT);//Activa/Desactiva 3er Display(Decimales) pinMode(A3,INPUT);//Lee el valor del 1er Sensor pinMode(A4,INPUT);//Lee el valor del 2do Sensor pinMode(13,OUTPUT);//Activa/Desactiva segmenti "a" de todos los Displays pinMode(12,OUTPUT);//Activa/Desactiva punto del punto del 2do Display pinMode(11,OUTPUT);//LED 1 del sensor 1 pinMode(10,OUTPUT);//LED 2 del sensor 2 digitalWrite(11,HIGH);//Mantiene el LED1 encendido por siempre digitalWrite(10,HIGH);//Mantiene el LED2 encendido por siempre } int entrada1=0,entrada2=0,entrada3=0,entradainicio=0,vint=0,num1i=0,num2i=0,tiempodisplay=0; charvchar[3],num1c[2],num2c[2]; String vstring; int luz1=0,luz2=0; float time1=0,time2=0,time3=0,velocidad=0; voidloop() { millis(); if(millis()>1000){ //Con esta condicion evito que opere el programa al instante luz1=analogRead(A3);//998 luz2=analogRead(A4);//780 Serial.print(luz1);Serial.print(" "); Serial.print(luz2); Serial.println("n");
  • 3. Universidad Autónoma de Baja California 25/08/2014 3 //Etapa 1: Capturando tiempos en que se capta la diferencia de luz en los sensores if(entradainicio==0){ if(luz1<998){ time1=millis(); entrada1=1; //Habilito la 1era de las dos condiciones para poder calcular la velocidad } if(luz2<780){ time2=millis(); entrada2=1;//Habilito la 2da de las dos condiciones para poder calcular la velocidad } } //Etapa 2: Calculando la velocidad y transformadola a cadena para poder separar los numeros if(entrada1==1&&entrada2==1){ entradainicio=1;//Evito que se capture alguna diferencia de luz en los sensores antes de que se mues tra la 1era prueba time3=(time2-time1)/1000L; velocidad=4.5/time3; vint=velocidad; vstring=String(vint); vstring.toCharArray(vchar,3); if(vint<10){//Si la velocidad es menos que 1. num1c[0]=vchar[0];//Igualando el 1er caracter de la cadena vchar a otra cadena num1i=atoi(num1c);//Convierte un array o caracter en numero entrada3=1;//Habilito que se despliegen los numeros en los displays entrada1=0; entrada2=0; } if(vint>9){ //Si la velocidad es mayor o igual a 1. num1c[0]=vchar[0];//Igualando el 1er caracter de la cadena vchar a otra cadena num1i=atoi(num1c);//Convierte un array o caracter en numero num2c[0]=vchar[1];//Igualando el 1er caracter de la cadena vchar a otra cadena num2i=atoi(num2c);//Convierte un array o caracter en numero entrada3=1;//Habilito que se despliegen los numeros en los displays entrada1=0; entrada2=0; } } //Etapa 3: Despliego la velocidad en los displays. if(entrada3==1){ if(tiempodisplay<3000){//Con esta condicionpermino que la velocidad se mantenga por 3 seg. en los displays if(vint<10){ analogWrite(A0,0);//ON 1er Display para unidades analogWrite(A1,225);//OFF 2do Display punto(marcado en el Display como un guion analogWrite(A2,225);//OFF 3er Display para decimales digitalWrite(13,HIGH); digitalWrite(12,LOW); PORTD=B01111110;//Imprimiendo numero Cero en el 1er Display(Activado por ceros) delay(10); analogWrite(A0,225);//OFF 1er Display para unidades analogWrite(A1,0);//ON 2do Display punto(marcado en el Display como un guion analogWrite(A2,225);//OFF 3er Display para decimales digitalWrite(13,LOW); digitalWrite(12,HIGH); PORTD=B00000000;//Imprimiendo Guion(usado como punto) en el 2do Display delay(10); analogWrite(A0,225);//OFF 1er Display para unidades analogWrite(A1,225);//OFF 2do Display punto(marcado en el Display como un guion analogWrite(A2,0);//ON 3er Display para decimales digitalWrite(12,LOW); numero1(); delay(10);
  • 4. Universidad Autónoma de Baja California 25/08/2014 4 tiempodisplay=tiempodisplay+30; } if(vint>9){ analogWrite(A0,0);//ON 1er Display para unidades analogWrite(A1,225);//OFF 2do Display punto(marcado en el Display como un guion analogWrite(A2,225);//OFF 3er Display para decimales digitalWrite(13,LOW);//Apaga el segmento "a" de los displays numero1(); delay(10); analogWrite(A0,225);//ON 1er Display para unidades analogWrite(A1,0);//OFF 2do Display punto(marcado en el Display como un guion analogWrite(A2,225);//OFF 3er Display para decimales digitalWrite(13,LOW); digitalWrite(12,HIGH);//Mantiene el punto de la velocidad encendid PORTD=B00000000;//Imprimiendo Guion(usado como punto) en el 2do Display delay(10); analogWrite(A0,225);//ON 1er Display para unidades analogWrite(A1,225);//OFF 2do Display punto(marcado en el Display como un guion analogWrite(A2,0);//OFF 3er Display para decimales digitalWrite(12,LOW);//Mantiene el punto apagado numero2(); delay(10); tiempodisplay=tiempodisplay+30; } if(tiempodisplay>2999){//Con esta condicionpermido que se borre todo de los displays pasados 3 seg. de haber mostrado algo PORTD=B00000000; digitalWrite(13,LOW); digitalWrite(12,LOW); entradainicio=0;//Habilito la lectura de luz en los sensores, para poder iniciar todo el proceso devuelta. entrada3=0;//Deshabilito que cualquier numero se despliege en los displays. tiempodisplay=0;//Evito que los displays se queden apagados por siempre. luz1=1010; luz2=810; } } } } } ///////////////////////////Funciones Numero////////////////////////// void numero1(){ switch(num1i){ case 0: digitalWrite(13,HIGH); PORTD=B01111110; break; case 1: PORTD=B00001100; break; case 2: digitalWrite(13,HIGH); PORTD=B10110110; break; case 3: digitalWrite(13,HIGH); PORTD=B10011110; break; case 4: PORTD=B11001100; break; case 5: digitalWrite(13,HIGH);
  • 5. Universidad Autónoma de Baja California 25/08/2014 5 PORTD=B11011010; break; case 6: digitalWrite(13,HIGH); PORTD=B11111010; break; case 7: digitalWrite(13,HIGH); PORTD=B00001110; break; case 8: digitalWrite(13,HIGH); PORTD=B11111110; break; case 9: digitalWrite(13,HIGH); PORTD=B11011110; break; } } void numero2(){ switch(num2i){ case 0: digitalWrite(13,HIGH); PORTD=B01111110; break; case 1: PORTD=B00001100; break; case 2: digitalWrite(13,HIGH); PORTD=B10110110; break; case 3: digitalWrite(13,HIGH); PORTD=B10011110; break; case 4: PORTD=B11001100; break; case 5: digitalWrite(13,HIGH); PORTD=B11011010; break; case 6: digitalWrite(13,HIGH); PORTD=B11111010; break; case 7: digitalWrite(13,HIGH); PORTD=B00001110; break; case 8: digitalWrite(13,HIGH); PORTD=B11111110; break; case 9: digitalWrite(13,HIGH); PORTD=B11011110; break; } }
  • 6. Universidad Autónoma de Baja California 25/08/2014 6 El esquema de todo el circuito se puede apreciar en la siguiente figura. El sistema finalizado se muestra en la figura siguiente. 5 CONCLUCION El desarrollo de esta práctica en verdad se me hizo extenso, porque para poder realizarlo tuvimos que realizar una serie de pruebas con las fotorresistencias para que la variación fuera lo másmínimo posible, la practica la pudimos finalizar aunque con una detallitos, no supimos cómo evitar que la fotorresistencia variara.
  • 7. Universidad Autónoma de Baja California 25/08/2014 7 La primera prueba o medición de velocidad salía perfectamente, pero cuando queríamos realizar enseguida la segunda prueba surgían errores debido a que los valores de las fotorresistencias variaban y esto provocaba mediciones erróneas y por lo tanto se realizaban errores en los cálculos. (Marcos Marcos Fernando) 6 REFERENCIAS [1]http://platea.pntic.mec.es/~lmarti2/arduino/introar du/index.htm