4 de maig 2015

Detecció de vaixell amb sensor d'ultrasons

La detecció de vaixell és la condició per al funcionament del sistema BellSmart City.
Podem utilitzar dos tipus de sensors:

El sensor d'infrarojos connectat a un pin digital té un abast molt limitat, potser no ens interessi.
Si el connectem a un pin d'entrada analògic hem de posar un objecte a una distància per tal de definir un valor de referència. És una tasca feixuga, no tenim molt temps.

El sensor d'ultrasons és més gran, però més fàcil de connectar (els pins del sensor es connecten directament a l'Arduino, sense resistències), i té un abast de fins a 3 m.

La meva proposta de programa per accionar un servo amb sensor d'ultrasons

include <Servo.h>  // llibreria per treballar amb servos

int TrigPin = 6;  // pin emissor del sensor
int EchoPin = 7;  // pin receptor del sensor

Servo valvula;  // creació d'objecte tipus servo (que he anomenat valvula)

int llindar = 20;  // distància d'accionament del servo
long durada, distancia;  // variables sense valor inicial

void setup() 
{
 //Serial.begin (9600);  // per monitorització de les dades del sensor
 
 // els pins del sensor són sortides digitals:
 pinMode(TrigPin, OUTPUT);  
 pinMode(EchoPin, INPUT);
 
 valvula.attach(9);  // enviament de senyals servo pel pin de connexió del servo
}

void loop() 
{
 // enviament del pols d'ultraso
 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 digitalWrite(trigPin, LOW);
 
 // càlcul de la distància detectada pel sensor
 durada = pulseIn(echoPin, HIGH);
 distancia = durada/58.2; 
 
 //Serial.println(distancia);  // monitorització de la distància
 
 if (distancia < llindar)  
 {
   valvula.write(180);  // accionament del servo (posició 180º)
 }
 else 
 {
   Servo1.write(0);  // posició de repós del servo (0º)
 }
 delay(50);  // petita pausa entre bucles per no superposar polsos d'ultrasons
}
Potser val la pena enviar els senyals servo [attach(9);] només quan es detecti vaixell, i aturar-les [detach();] quan no es detecta vaixell, per no gastar piles (l'enviament de senyals servo, tot i que aquestes singuin 0, gasta energia).


Proposta de muntatge
Tot i que afegeix pes a l'extrem en voladiu, proposo muntar el sensor al mateix pont. L'avantatge és que si el vaixell pot passar per sota del pont, el sensor no el detectarà, és a dir, el pont només s'obrirà quan passi un vaixell prou alt.

Com que el sensor té tendència a sortir-se del seu suport, he acabat afegint una L al darrera que fa de topall.

Cap comentari:

Publica un comentari a l'entrada