» Thèmes » Idées de bricolage »Compteur de vitesse pour scooter

Compteur de vitesse pour scooter

Je porte à votre attention mon prochain artisanatà savoir, le compteur de vitesse pour scooter.
Le contexte est le suivant: pour le plaisir de vaincre l'inactivité physique, la planche Rollersurf a été achetée. Puisqu'il n'y a que deux roues sur la planche, rouler dessus nécessite un sens de l'équilibre, vous ne pouvez que "vous tenir" dessus en mouvement. Après m'être assuré qu'après un mouvement continu à une distance d'environ 700 mètres, les roues semblaient se coincer dans le sable et que le mouvement était très difficile, je me suis tourné vers Internet et des spécialistes. Il est devenu clair qu'en raison de la douceur excessive du matériau de la roue pour mon poids, le matériau de la roue est très chaud et ramolli, le contact avec la route augmente et la viscosité accrue de la roue rend difficile le contrôle et la création de couple. Après avoir remplacé les roues par un roulement plus dur, les planches ont considérablement augmenté, tout comme la facilité de contrôle. Sur la même longue piste, le freinage habituel ne s'est pas produit, la vitesse a continué d'augmenter, ce qui a entraîné une baisse désagréable.
L'idée de mesurer la vitesse et de se limiter en accélération est venue, probablement après une chute :) Il y avait un prototype de 2014, où un tel appareil a été créé, mais pour un type de planche différent, où le plan de rotation de la roue ne bouge pas beaucoup par rapport à la planche et électronique peut être placé sur la planche elle-même en la connectant au capteur sur la roue avec un fil flexible.
Dans mon cas, le capteur et l'électronique ne doivent pas être placés sur le support de roue, car le support (roulette) lui-même tourne autour de son axe de manière circulaire par rapport au plan de la planche.
Apparence de Roller Surf


Mise en œuvre. La spécification du signal a été sélectionnée par BlueTooth en raison de la disponibilité de cette technologie et de sa présence dans la montre connectée Samsung SM-V700 à portée de main. Le module BlueTooth a été sélectionné HC-05, le contrôleur Arduino Mini Pro, mais remplacée par la suite par le contrôleur nu AtMega168A, une batterie Li-Pol de 500 mAh a été sélectionnée pour répondre aux dimensions de la roulette et à la consommation électrique estimée. En tant que capteur de rotation, le capteur Hall SS49E a été sélectionné, contrairement au prototype, comme étant plus stable opérationnel. En conséquence, le croquis a été légèrement modernisé. Le passage d'un aimant monté dans le moyeu de roue est analysé en deux points: le premier actionnement - l'aimant entre dans la zone de sensibilité - «peloton» et le second actionnement - l'aimant sort de la zone de sensibilité du capteur - «descente».Le contrôleur compte ces événements dans un délai spécifié - 1 seconde et envoie le numéro reçu via le canal de communication à l'appareil Android, tout en analysant simultanément les signaux entrants. Le programme de réception, d'affichage et de gestion du module a été créé à partir du prototype dans l'environnement Android Studio. Il prévoit certaines améliorations liées à l'augmentation de l'immunité au bruit. Comme le prototype, il calcule la vitesse et la distance. La fonction utile d'allumer / éteindre le "phare" - une LED dirigée vers l'avant en mouvement - est également enregistrée, il semble.
Bloc sans couvercle

Visible en haut à gauche: LED rouge de protection contre l'inversion de charge, interrupteur de charge, batterie; ci-dessous: le module VT vert, le microcontrôleur AtMega168A à bornes affleurantes est collé au dos avec la partie supérieure du boîtier.
Couvercle de bloc avec capteur magnétique

Assemblé avec la roulette, le module ressemble à ceci:
Bloc sur roulette

Sur la photo, vous pouvez voir l'interrupteur d'alimentation, les contacts pour connecter le chargeur, de l'autre côté de l'appareil dans le coin au-dessus - LED - "phare".
Le programme prototype a été complété par la possibilité d'émettre des signaux sonores et vibratoires lors de divers événements (allumer / éteindre le phare, un signal d'alarme en cas de dépassement de la limite de vitesse maximale spécifiée).
Test sur table - sur la photo ci-dessous, pas encore testé sur route, en attendant l'été :)
Test sur table

Le projet Android Studio a un gros volume, je le posterai quelque part avec un lien, s'il y a un intérêt, j'apporte un croquis avec des commentaires.
En présence d'intérêt, je suis prêt à partager des idées, des expériences.
La question \ le sujet est automatiquement publié dans le social. réseau de sites - restez à l'écoute pour obtenir des réponses:

Convient pour le sujet

Sujets connexes

Ajoutez un commentaire

    • souriresouritxaxaokne sais pasYahoonea
      patronse gratterfououioui-ouiagressifsecret
      désolédansedanse2danse3pardonaiderles boissons
      arrêteramisbonbonsifflerévanouirla langue
      fumerapplaudircraydéclarermoqueurdon-t_mentiontélécharger
      chaleurirritérire1mdaréunionmasquagenégatif
      not_ipop-cornpunirlireeffrayerfait peurrecherche
      railleriemerci_vousçato_clueumnikaigud'accord
      mauvaisabeilleblack_eyeblum3rougirse vanterennui
      censuréplaisanteriesecret2menacervictoireyusun_bespectacled
      shokrespektlolprévalubienvenuekrutoyya_za
      ya_dobryiaidene_huliganne_othodifludinterdirefermer
1 commentaire
L'auteur
Croquis du micrologiciel ATMega168A:
/*
* Mega168 !!!
*/
#include "timer-api.h"

int Polarité = -1; // polarité de l'impulsion du signal d'entrée (dans mon cas, négative
int Treshold = 500; // seuil de déclenchement de l'impulsion de lecture 1/2 Vcc = 512
int CountTurn = 0; // stocke le nombre de révolutions pour la période comptable
LED int = 13; // LED connectée à la broche PB5
int InputSignal = A5; // entrée pour capteur Hall
int TurnNumber = 0; // nombre de tours accumulé
int DeltaT = 28; // retard de l'avant pour déterminer la fin de l'impulsion pour la stabilité
bool Tick = faux; // valeur initiale, pas encore de coche

void setup ()
{
Serial.begin (9600); // pour le débogage
timer_init_ISR_2Hz (TIMER_DEFAULT); // obtenez un délai de 1 seconde !!!
pinMode (LED, SORTIE); // sortie du signal vers le rétro-éclairage (phare)
pinMode (InputSignal, INPUT); // entrée pour capteur Hall
}

void loop () // ici nous faisons le traitement des signaux du capteur et du contrôle des phares
{
if (Tick) // autorisation d'exécuter le bloc if à un intervalle de temps fixe
// envoie le nombre de tours
{
Serial.println (String (CountTurn) + ";"); // pour le débogage
Cochez = faux; // préparez la trace. intervalle de temps
CountTurn = 0; // zéro le nombre de tours après le transfert vers le smartphone
}

else // si le tick n'est pas encore arrivé, on accumule le nombre de tours, on allume / éteint le phare
{
// accumulation de révolutions
if (analogRead (InputSignal) {
delay (DeltaT); // ne lit encore rien
if (analogRead (InputSignal)> Treshold) // le bord arrière est venu
{
CountTurn ++; // accumule le nombre de tours à l'arrivée du bord de fuite
}
}

// contrôle des phares
if (Serial.available ()> 0) // lit le caractère de BTSerial
{
commande char = Serial.read ();
commutateur (commande)
{
cas '0': digitalWrite (LED, LOW); break; // allume le phare
cas «1»: digitalWrite (LED, HIGH); break; // Éteignez le phare
}
}
}
}

void timer_handle_interrupts (int timer)
{
Cochez = vrai;
}

Nous vous conseillons de lire:

Donnez-le au smartphone ...