Comptador de revolucions

Comptador de revolucions

Amb un sensor cny70
Comptador de revolucions?

Es tracta de comptar les rpm d’un motor cc fent servir la plataforma Arduino  Per aconseguir-ho hem utilitzat el sensor CNY70, que es un sensor infraroig.

Connexions de l’arduino

Materials

1. Sensor cny70: El CNY70 és un sensor d’infrarojos de curt abast basat en un emissor de llum i un receptor , ambdós apuntant en la mateixa direcció , i el funcionament es basa en la capacitat de reflexió de l’objecte, i la detecció del raig reflectit pel receptor .

2. Motor CC

3 CD blanc

4. Arduino UNO

5. Resistències de 400 i 10k ohms

6. Cables

7. LED i font d’alimentació

Muntatge:

Primer hem de connectar el CNY70 amb l’arduino, a més hi ha que afegir les reistències de 400 i 10k ohms.

Desprès de muntar tot això hi ha que cargar el progrma a l’arduino. Anteriorment, hem de tenir muntat el motor amb el CD blanc, i totes les connexions ben connectades per evitar errors.

Funcionament del programa

El programa funciona amb un sensor cny70 que està programat per rebre la senyal de la cinta negra que està enganxada al CD.

Cada cop que pasi per davant del cny70 el LED verd s’encendrà.

I per comptar les rpm vam fer el següent:

En un temps de 15 segons l’arduino comptava les vegades que comptava les vegades que el sensor llegia la cinta negra.

Desprès de comptar-les aquest temps el multipicavem pels valor continguts en el Serial de l’arduino:

rpm= 60·counter/15= 6·counter

Codi arduino d’aquest comptador

Et pots baixar el codi des d’aquesta pàgina de GitHub

 

https://github.com/chulinj/cny-70/blob/master/cny_705.ino

Tambè el tens aquÍ:

boolean estado = false;

int ledPin1 = 3; // pin de un LED
int ledPin2 = 0; // pin de otro LED
int infraPin = 2; // pin del infrarrojos utilizado como entrada digital
int valorInfra = 0; // Valor inicial de la lectura digital del infrarrojos.
int counter = 0;
int temp = 0;
int tiempo = 0;
int dif = 0;
int rpm = 0;
void setup() {
Serial.begin(9600);
pinMode(ledPin1, OUTPUT); // Inicializa el pin del LED1 como salida digital
pinMode(ledPin2, OUTPUT); // Inicializa el pin del LED2 como salida digital
pinMode(infraPin, INPUT); // Inicializa el pin 4 como entrada digital
}
void loop() {
if(digitalRead(infraPin))
{
if(digitalRead(2) == 1)
{
// valorInfra = true;
valorInfra = digitalRead(infraPin); // Lee el valor de la entrada 4, esto es, el valor que lee el infrarrojo
digitalWrite(ledPin1, valorInfra); // Escribe en el pin 8 el valor que lee la entrada 4, esto es, el mismo valor que lee el infrarrojo
//Si el infrarrojo lee 0, entonces, el LED estará apagado
//Si el infrarrojo lee 1, entonces, el LED estará encendido */
counter++;
delay(500);
Serial.println(counter);
}
}
else
{
estado = false;
valorInfra = digitalRead(infraPin); // Lee el valor de la entrada 4, esto es, el valor que lee el infrarrojo
digitalWrite(ledPin1, valorInfra); // Escribe en el pin 8 el valor que lee la entrada 4, esto es, el mismo valor que lee el infrarrojo
//Si el infrarrojo lee 0, entonces, el LED estará apagado
//Si el infrarrojo lee 1, entonces, el LED estará encendido */
}
if (counter == 1){
temp = millis();
}
tiempo=millis();
dif = (tiempo – temp);
if (dif > 15000)
{
rpm = 4*counter;
Serial.print(“la velocidad en rpm es “);
Serial.println(counter);
tiempo = 0;
temp = 0;
dif = 0;
rpm = 0;
counter = 0;
}
}

 

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

XHTML: Trieu una d'aquestes etiquetes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>