Académique Documents
Professionnel Documents
Culture Documents
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
CODIGO ORIGINAL
/*
by Claudiu Cristian
*/
unsigned long time1;
int photocellPin_1 = 0;
int photocellReading_1;
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");
}