Cadencia sobre arduino


Saludo a todos frenéticamente!

De vez en cuando pedaleo bastante activamente en los parques locales. Y luego me di cuenta de que, tal vez, no los terminé muy correctamente. Empecé a estudiar el tema. Cyclopedia afirma que la cadencia promedio debe estar entre 80 y 110 rpm. OKAY. Entonces necesita una computadora para bicicleta con un sensor de cadencia. China no quería tomar. Naryl Sigma 16.12 STS + Cadencia para 2900 rublos. El precio no es barato, pero en el patio kryzys y yo, por así decirlo, desempleados B-) Lo descubrí y decidí ... De hecho, el papel de la computadora de la bicicleta para mí es desempeñado por un montón de iPhones, programas de ciclómetro y relojes Casio STB-1000- y este grupo está bastante bien conmigo. Y el testimonio de cadencia es necesario solo por un tiempo. Luego el cuerpo se acostumbra y monitorearlo constantemente no tiene sentido. En una palabra, se llegó a la conclusión de que necesitamos recoger una basura temporal de mierda y palos de arduino y acciones.

Idea: colocamos dos LED en el volante: verde y rojo. Verde: la cadencia es normal. Rojo, respectivamente, no. Luego se le ocurrió la idea de que el rojo solo arderá cuando la velocidad esté por encima de lo normal. Entonces las baterías comerán menos.

Implementación:
- en la "pluma" de un interruptor de láminas de una tienda de radio cercana, en la "biela" un imán de neodimio
- Empujaré los LED en el sobre chino
- el controlador desempeñará el papel de Arduino Pro Mini 3.3V 8MHz

. Ensamblé todo en una placa con UNO (es más fácil coser y degradar ) En lugar de un interruptor de láminas, un botón de reloj.


Y subió el boceto con la salida de datos al puerto.
Bosquejo de prueba:
int cadInt = 0;  //    0=pin2
int ledGreen = 10;  //   
int ledRed = 11;  //   

int count = 0;  //  
int lastCount;  //      
int count4period;  //     

//           :
long time;  //       
long lastTime;  //      
int period;  //   

void setup() {
  pinMode (cadInt, INPUT);  //   ()  
  pinMode (ledGreen, OUTPUT);  //    
  pinMode (ledRed, OUTPUT);  //  
  
  attachInterrupt(cadInt, swap, RISING);
  
  lastTime = millis();  //     
  
  Serial.begin(9600);  //     
}

void swap() {
  count = count+1;
}

void loop() {
  delay(5000);
  
  count4period = count - lastCount;
  
  time = millis();  //      
  period = time - lastTime;  //      
 
  Serial.println(period);  //     
  Serial.println(count4period);  //     
  
  if (count4period >= 6 && count4period <= 9)
  {
    Serial.println ("Green");  //     
    digitalWrite(ledGreen, HIGH);
    digitalWrite(ledRed, LOW);
    } else {
        if(count4period > 9){
        Serial.println ("Red");  //     
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        } else {
          Serial.println ("LOW CADENCE");  //     
          digitalWrite(ledGreen, LOW);
          digitalWrite(ledRed, LOW);
        }
     }
      
  lastTime = time;  //     
  lastCount = count;  
}


Todo está bien. Todo esta funcionando.


Luego volvió a armar todo esto en una placa de pruebas y metió un visón.


Por cierto, aquí está el diagrama:

solo tengo tres baterías, porque habrá pocas, pero Fritz no muestra tres.

Y así es como se ve el tamaño de la bicicleta china:


en el análisis y el proceso de soldadura:

tuve que soldar solo una luz, porque la segunda transparente es en realidad roja.

Así es como se veía al final de la operación:

en el proceso de pensar en el proyecto, se pensó que en lugar de los LED verde y rojo, podríamos colocar dos RGB, pero no había ninguno de ellos en la tienda de electrodomésticos más cercana, porque tenemos lo que tenemos.

Bueno, puse el interruptor de láminas en un tubo de plástico y lo sellé con una pistola de pegamento.


Entonces, ¿qué pasa con los costos? Solo tuve que gastar dinero en un interruptor de láminas (15 rublos), tres baterías AA (86 rublos) e imanes de neodimio (los compré stsuko porque estaba buscando un drenaje, pero no estaba listo para esperar con Ali (160 rublos)). El resto estaba todo en cajas y esperando la aplicación. Aquí hay incluso un cable importante de un mouse Coolermaster muerto aplicado:


Todavía hay pocas personas ...







¡Atención! Me alegrará ver un pan con cuernos en los comentarios;) Pero en serio. De hecho, fue posible usar con calma Atmega8 L en lugar de un arduino completo y abandonar dos cortes en las luces y controlarlos con PWM. Pero, en el zashashnik solo tengo lo habitual y no hay un soporte para la batería 18650 para alimentar este negocio. Quizás más tarde ...

... El boceto final. (No golpee al "programador" que escribe como puede):
Cadencia_1.0
int cadInt = 0;  //    0=pin2
int ledGreen = 10;  //   
int ledRed = 11;  //   

int count = 0;  //  
int lastCount = 0;  //      
int count4period = 0;  //     

void setup() {
  pinMode (cadInt, INPUT);  //   ()  
  pinMode (ledGreen, OUTPUT);  //    
  pinMode (ledRed, OUTPUT);  //  
  
  attachInterrupt(cadInt, swap, RISING);
}

void swap() {
  count = count+1;
}

void loop() {
  delay(5000);
  
  count4period = count - lastCount;
  
  if (count4period >= 6 && count4period <= 9) {
    digitalWrite(ledGreen, HIGH);
    digitalWrite(ledRed, LOW);
    } else {
        if(count4period > 9){
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        } else {
          digitalWrite(ledGreen, LOW);
          digitalWrite(ledRed, LOW);
        }
    }
      
  lastCount = count;  
}



Fotos en el sitio:




... y al máximo


Para un video snack:


PD Un artículo no puede ser reimpreso sin demanda - tipo ©. El proyecto puede ser mejorado y procesado. ¡Toda una fructífera semana laboral! ¡Y monto en bicicleta!

PPS Today realizó una prueba de funcionamiento. Conclusiones:
- Todo funciona bien. El fallo se notó solo una vez. Aparentemente, una charla se deslizó.
- Vale la pena usar LED RGB: con luz solar brillante, será más claro.

All Articles