Vous êtes sur la page 1sur 3

medida de la velocidad con Arduino

Voy a empezar con mi primera experiencia de trabajo con Arduino y Arduino IDE. Hice una
deteccin "dispositivo" velocidad usando 2 punteros lser y 2 sensores LDR conectados a un
Arduino UNO.
La construccin de los esquemas es muy fcil.

Las resistencias se utilizan como resistencias pull-down y me conectan los sensores y los
pusieron en un caso, para evitar que la deteccin de la luz circundante. Para cada caso, se
perfor un agujero de modo que el rayo lser puede iluminar el sensor mientras que la luz
ambiente no afecta al sensor.
El principio de funcionamiento es sencillo: un objeto que pasa por "cortar" los rayos lser, esto
significa que el sensor LDR detectar esta cada repentina de la intensidad de la luz. En primer
lugar he definido un valor de umbral bajo el cual se considera el sensor activa, una vez que el
valor es bajo umbral para el primer sensor a continuacin, Arduino espera a que el segundo
uno que se active. Durante este tiempo de espera que cuenta el tiempo transcurrido entre los
dos eventos. Cuando se interrumpe el segundo haz, el temporizador se detiene y ahora es slo
matemtica simple. La distancia entre los 2 sensores es conocido, el tiempo entre los dos
eventos es conocido, y la velocidad se puede calcular como la velocidad = distancia / tiempo.
A continuacin puede encontrar el cdigo de Arduino:
/ *
de Claudiu Cristian
* /
tiempo1 largo sin signo;
int photocellPin_1 = 0; // Primera sensor est conectado a a0

int photocellReading_1; // La lectura analgica desde el puerto


analgico
int photocellPin_2 = 1; // Segundo sensor est conectado a a1
int photocellReading_2; // La lectura analgica desde el puerto
analgico
int umbral = 700; // Valor por debajo de los sensores son trigerd
flotar velocidad; // Declaracin de variable de velocidad
flotar tiempo;
unsigned long int calcTimeout = 0; // Inicializacin de la variable
tiempo de espera
void setup (void) {
// Vamos a enviar la informacin de depuracin a travs del monitor
de serie
Serial.begin (9600);
}
void loop (void) {
photocellReading_1 = analogRead (photocellPin_1); // Leer los
valores de sensor 1
photocellReading_2 = analogRead (photocellPin_2); // Leer los
valores de sensor 2
// Si la lectura del primer sensor es menor que el umbral comienza
recuento de tiempo y se traslada a la funcin de clculo
si (photocellReading_1 <umbral) {
time1 = millis ();
startCalculation ();
}
}
// Funcin de clculo
startCalculation void () {
calcTimeout = millis (); // Tiempo asign un tiempo de salida
variable de
// Esperamos a que el gatillo del sensor 2 para iniciar el clculo de lo contrario el tiempo de espera
while (! (photocellReading_2 <umbral)) {
photocellReading_2 = analogRead (photocellPin_2);
si (millis) (- calcTimeout> 5000) return;
}
temporizacin = ((float) millis () - (float) time1) / 1000.0; //
Calcula el tiempo en segundos
Velocidad = 0,115 / tiempo; // Velocidad en m / s, dada una
distancia de separacin de 11,5 cm
de retardo (100);
Serial.print (velocidad);
Serial.print ( "\ n");
}
Creo que el cdigo es ms bien comentado y no necesita mayor explicacin.

CODIGO ORIGINAL
/*
by Claudiu Cristian
*/
unsigned long time1;
int photocellPin_1 = 0;
int photocellReading_1;

// 1st sensor is connected to a0


// the analog reading from the analog port

int photocellPin_2 = 1;
// 2nd sensor is connected to a1
int photocellReading_2;
// the analog reading from the analog port
int threshold = 700;
//value below sensors are trigerd
float Speed;
// declaration of Speed variable
float timing;
unsigned long int calcTimeout = 0; // initialisation of timeout
variable
void setup(void) {
// We'll send debugging information via the Serial monitor
Serial.begin(9600);
}
void loop(void) {
photocellReading_1 = analogRead(photocellPin_1); //read out values
for sensor 1
photocellReading_2 = analogRead(photocellPin_2); //read out values
for sensor 2
// if reading of first sensor is smaller than threshold starts time
count and moves to calculation function
if (photocellReading_1 < threshold) {
time1 = millis();
startCalculation();
}
}
// calculation function
void startCalculation() {
calcTimeout = millis(); // asign time to timeout variable
//we wait for trigger of sensor 2 to start calculation - otherwise
timeout
while (!(photocellReading_2 < threshold)) {
photocellReading_2 = analogRead(photocellPin_2);
if (millis() - calcTimeout > 5000) return;
}
timing = ((float) millis() - (float) time1) / 1000.0; //computes
time in seconds
Speed = 0.115 / timing; //speed in m/s given a separation distance
of 11.5 cm
delay(100);
Serial.print(Speed);
Serial.print("\n");
}

Vous aimerez peut-être aussi