Fabrication d'un enregistreur d'angle maxi pour moto

Salut à tous et à toute bien sûr :slight_smile:
Je suis un petit nouveau dans l'univers de l'Arduino. J'aime bricoler des trucs et l'informatique mais mon niveau de newbie me limite carrément.
Bref......
Je souhaite fabriquer un enregistreur d'angle pour ma moto. Le cahier des charges est super light. Il consiste seulement à indiquer sur 1 seul axe la dernière valeur mesuré ( c.à.d lorsque je sort du virage il faudrait qu'il s'affiche pendant environ une dizaine de secondes) et ensuite voir la valeur maxi, le tout sur un LCD à "deux lignes basique".

J'ai dors et déjà quelques questions.

  • Je suppose que ça doit être évident pour un gars qui connais mais je souhaite savoir si déjà cela est possible avec un Arduino Micro?
  • Quel matériel utiliser: es ce que tout capteur se valent? es ce que tout les LCD sont compatibles ? etc

Pour garder en mémoire la valeur maxi jusqu'à extinction il faut forcement l'enregistrer j'imagine :~
Du coup où? EEPROM, SD?

Bonjour,

L'Arduino ne va rien faire la plupart du temps donc n'importe quel modèle convient. Il n'est pas nécessaire d'enregistrer en EEPROM tant que tu ne coupe pas l'alim sauf si tu veux stocker un historique de tes exploits.

Il te faut un accéléromètre + gyroscope. Généralement la communication est en I2C

Il faut un LCD compatible HD44780.

Mais tout ça c'est facile. Ce qui l'est moins c'est le modèle dynamique qui va te permettre de calculer l'angle.

Merci pour ta réponse, mais cela soulève quelques questions:

jlbechennec:
Il n'est pas nécessaire d'enregistrer en EEPROM tant que tu ne coupe pas l'alim sauf si tu veux stocker un historique de tes exploits.

J'ai pas spécialement besoin que la mémoire soit pérenne, donc plutôt dans la mémoire SRAM alors si j'ai bien compris.

jlbechennec:
Il te faut un accéléromètre + gyroscope. Généralement la communication est en I2C

Pourquoi ais je besoin d'un accéléromètre? C'est plutôt fait pour connaitre la force de déplacement non?

jlbechennec:
Mais tout ça c'est facile. Ce qui l'est moins c'est le modèle dynamique qui va te permettre de calculer l'angle.

C'est à dire un modèle dynamique? Je croyais qu'il me donnerais un angle en degrés... :blush:

À ma connaissance, un gyroscope mesure la vitesse angulaire, pas l'angle. Il faut donc que tu intègres pour avoir l'angle. Par ailleurs, tu vas avoir besoin de connaître l'angle 0 que tu vas récupérer lorsque la moto est à l'arrêt en équilibre et là il faut un accéléromètre. Par ailleurs le gyro a un biais, il ne donne pas 0 quand la vitesse angulaire est nulle. Donc cette init va aussi permettre de connaître ce biais. Peut-être sera-t-il nécessaire de recalibrer en roulant, détecter les moments de ligne droite, etc.

OK je commence à comprendre la partie hardware.....

Es ce que tu pense que pour un premier projet se n'est pas trop compliqué? Certes il y a des quelques lignes de code sur net pour m'aider mais je suis quand même perdu....Et en plus copier bêtement des codes c'est dommage car le DIY est fait comprendre le truc et s'amuser à le faire...

Du coup est il judicieux de prendre un gyro+accéléro intégré?
Je souhaite pas avoir une précision au dixième près non plus. Il me servira seulement quand je fait des sorties pistes avec mon collègue, pour essayer de m'améliorer et peut être lui en faire un si ça lui plait.

Et du coup j'ai beau chercher je ne trouve pas vraiment d'info sur le fait de retenir une valeur maxi atteinte et la valeur actuelle de l'angle de la moto le tout sur un petit LCD. Parce que si j'ai bien compris se j'ai lu, il semble que la mémoire SRAM est adaptée au "problème" mais je voit pas comment écrire et lire cette mémoire.

Tant que l'Arduino est sous tension, toutes les variables du programme conservent la dernière valeur qu'on a placé dedans. Donc pas besoin de rajouter une RAM.

Pour récupérer la valeur maximale d'un angle, on compare dans un simple test (if) la valeur actuelle au maximum précédent mémorisé, et on met à jour ce maximum si c'est plus grand.

On peut faire ça sur les 10 dernières secondes seulement, en enregistrant aussi l'instant du dernier maximum dans une variable supplémentaire.

Si je comprend bien Christian, pour faire un truc comme ça :

Il faut que l'actuel soit avec par exemple une valeur minimum et un Delay()

Et la Maximum avec un If() supérieur à ......

Christian_R:
Pour récupérer la valeur maximale d'un angle, on compare dans un simple test (if) la valeur actuelle au maximum précédent mémorisé, et on met à jour ce maximum si c'est plus grand.

On peut faire ça sur les 10 dernières secondes seulement, en enregistrant aussi l'instant du dernier maximum dans une variable supplémentaire.

Ce sera forcément moins simple que ça.
Quand il fait une sortie de piste si la moto se couche on a un maximum et je ne pense pas que ce soit celui-là qu'il veuille conserver.

Vince69380:
...

  • Quel matériel utiliser: es ce que tout capteur se valent? es ce que tout les LCD sont compatibles ? etc

Bonjour
Pour differentes raisons , je partirais (au moins dans un premier temps) comme capteur d'un nunchuck de WII,
ça se trouve pour peanuts, c'est déjà "proprement emballé" , surement facile à positionner sur une moto et il existe de la documentation pour arduino et cerise sur le gateau tu dispose aussi de 2 contacts et d'un joystick pour eventuellement gerer "ton truc" :grin:

fdufnews:
Quand il fait une sortie de piste si la moto se couche on a un maximum et je ne pense pas que ce soit celui-là qu'il veuille conserver.

Salut fdufnews,
C'est pour les sorties pistes non pas les sortie de piste. Là je me doute de la valeur de l'angle de la moto :slight_smile:
En même temps c'est une expression que l'on utilise couramment chez les motards du coup j'ai pas fait gaffe.

Artouste:
Bonjour
Pour differentes raisons , je partirais (au moins dans un premier temps) comme capteur d'un nunchuck de WII,
ça se trouve pour peanuts, c'est déjà "proprement emballé" , surement facile à positionner sur une moto et il existe de la documentation pour arduino et cerise sur le gateau tu dispose aussi de 2 contacts et d'un joystick pour eventuellement gerer "ton truc" :grin:

Salut Artouste,
Du coup ton idée est pas mal du tout. Bien que deux ou trois trucs me gène un peut mais disons que de se j'ai pu voir ça à l'air pas mal du tout. Je vais creuser dans cette voie pour au pire faire une V1 et ensuite une V2 , .... ou si je me rend compte que ça convient (se qu'y risque d'arriver :wink: ) en faire la finalité du petit projet.

Je vous avoue que cela fait un moment que je regarde avec beaucoup d'envie les projets à base d'Arduino sur le net. Cela semble facile.... Je me rendait pas compte que le mien allais être si compliqué. Ouf :astonished:

Vince69380:
Salut Artouste,
Du coup ton idée est pas mal du tout. Bien que deux ou trois trucs me gène un peut mais disons que de se j'ai pu voir ça à l'air pas mal du tout. Je vais creuser dans cette voie pour au pire faire une V1 et ensuite une V2 , .... ou si je me rend compte que ça convient (se qu'y risque d'arriver :wink: ) en faire la finalité du petit projet.

Je vous avoue que cela fait un moment que je regarde avec beaucoup d'envie les projets à base d'Arduino sur le net. Cela semble facile.... Je me rendait pas compte que le mien allais être si compliqué. Ouf :astonished:

ça fait aussi partie du jeu :grin:
mais en soit ce n'est pas tres compliqué, ce qui ne t'empechera pas d'y passer du temps 8)

Pour l'affichage (sur circuit) je ne suis pas persuadé qu'un LCD soit le mieux (visibilité en situation) , tu n'a besoin de lire que peu d'info , peut etre regarder du coté des 7 segments

... ou si je me rend compte que ça convient (se qu'y risque d'arriver :wink: ) en faire la finalité du petit projet....

je ne vois pas trop de difficulté technique a ce projet.

ce que je vois par contre, une inutilité totale, sauf pour ce qui concerne de te faire plaisir d'avoir fait un truc qui sert a rien (ce qui en soit justifie amplement deja a mon avis):

  • soit t'es bon, et c'est pas l'angle de la moto qui justifie un chrono.
  • soit t'es pas bon, et tu sera super content d'etre à 20° au lieu de 15°.
  • soit ca marche pas du tout, parce que bon ou pas bon, tu sera tellement plein d'acceleration / decelleration / vibrations, que ce sera impossible de mesurer quoi que ce soit de manière fiable.

Et quitte a faire un truc interessant pour circuit, choisi plutot de faire un alfano comme NickoR se proposait de faire.

j'dis ca... :smiley: j'dis rien... ]:slight_smile: j'serai devant avec ou sans.... ]:smiley:
V

Artouste:
ça fait aussi partie du jeu :grin:
mais en soit ce n'est pas tres compliqué, ce qui ne t'empechera pas d'y passer du temps 8)

Pour l'affichage (sur circuit) je ne suis pas persuadé qu'un LCD soit le mieux (visibilité en situation) , tu n'a besoin de lire que peu d'info , peut etre regarder du coté des 7 segments

Salut Artouste,
Du coup c'est pas bête car effectivement je n'avais pas pensé à la lisibilité en roulant. Peut être je peut tenter un truc du genre une série de LED qui serais par ex verte au centre, symétriquement jaune et ensuite rouge, avec une valeur approximative qui correspondrais à un angle? Ça te semble mieux?

Salut jean-I,
Le problème n'est l'utilité de la chose. La plus part des projets ne servent à rien et ne sont utile qu'à divertir des curieux qui envie de s' amuser à faire des petites choses qui ne se serais jamais senti capable de faire il a 10 ans.
Je suis un boulimique de nouvelle expérience.

Ce projet est là pour deux choses:

  • Satisfaire ma curiosité en sachant combien de degré j'arrive à prendre avec bécane "normale".
  • La seconde en se qui concerne mon niveau il est disons moyen. Par exemple je pose le genoux mais peut améliorer mes chrono de façon considérable, en prenant sûrement moyen d'angle car le secret en bécane c'est pas faire frotter le pot d'échappement mais de passer dans un virage avec le moins d'angle possible et le plus rapidement possible. C'est un peut comme en voiture si connais mieux. La dérive ou le derapage due à la vitesse dans un virage est quélue chose de nécessaire parfois mais il faut le limite. C'est pareil pour l'angle en moto.

Pour l'alfano, j'ai une solution parfaite c'est racechrono sur Android que je recommande vivement à tous. Plus de points de passage loupés grâce au gps. 8)

Par contre un truc très juste jean-I, c'est les parasites environnementaux ( Vibrations due au bicylindre, les éventuelles dénivelés, les bosses, etc.).
Es ce que j'aurais des valeurs normales ou cela risque de mettre en péril le projet?
Quelqu'un as t'il déjà testé ce genre d'installation dans conditions un peut extrême comme ça?

Bonjour

Sur ce site, un ordinateur pour scooter a base d'arduino avec beaucoup de parametres mesurés et en particulier l'inclinaison !!
http://www.janspace.com/b2evolution/arduino.php/2010/06/26/scooterputer

Cela peut servir de base de travail!!

Michel

Vince69380:
Par contre un truc très juste jean-I, c'est les parasites environnementaux ( Vibrations due au bicylindre, les éventuelles dénivelés, les bosses, etc.).
Es ce que j'aurais des valeurs normales ou cela risque de mettre en péril le projet?
Quelqu'un as t'il déjà testé ce genre d'installation dans conditions un peut extrême comme ça?

bonjour
de toutes façons ça ne te coutera pas grand chose de tester
je viens de ressortir un nunchuk , et un petit sketch fait rapide (detection sur un seul axe , determination du max et maintien pendant 5 secondes)
Au passage j'etais persuadé qu'il y avait un bouton associé au joystick , mais non c'est 2 push buttons sur le corps 8)
c'est perfectible (heureusement 8) ) mais ça fait une base de reflexion
à toi d'integrer ton afficheur et de voir si c'est reellement exploitable In situ

/*
 * ArduinoNunchukDemo.ino
 *
 * Copyright 2011-2013 Gabriel Bianconi, http://www.gabrielbianconi.com/
 *
 * Project URL: http://www.gabrielbianconi.com/projects/arduinonunchuk/
 *
 */

#include <Wire.h>
#include <ArduinoNunchuk.h>

#define BAUDRATE 57600

ArduinoNunchuk nunchuk = ArduinoNunchuk();
int angleX;
int angleM;
int pers=5000;  // durée ms persistance valeur max
unsigned long act;
void setup()
{
  Serial.begin(BAUDRATE);
  nunchuk.init();
}

void loop()
{
  nunchuk.update();
Serial.print(" ");
  //Serial.print(nunchuk.analogX, DEC);
  //Serial.print(" ");
  //Serial.print(nunchuk.analogY, DEC);
  Serial.print(" X ");
  Serial.print(nunchuk.accelX, DEC);
  //Serial.print(" Y ");
  //Serial.print(nunchuk.accelY, DEC);
  //Serial.print(" Z ");
  //Serial.print(nunchuk.accelZ, DEC);
  //Serial.print(" ");
  //Serial.print(nunchuk.zButton, DEC);
  //Serial.print(" ");
  //Serial.print(nunchuk.cButton, DEC);
  Serial.print(" A ");
  angleX=nunchuk.accelX-282; // prevoir calibration min et max de l'axe 
  angleX = map(angleX, 0, 400, -90, 90); 
  
  if (abs(angleX)>angleM) {
    angleM=abs(angleX);
    act=millis();
    }
  Serial.print(angleX, DEC);
  if (millis()-act <=pers) {
   Serial.print(" MAX ");
  Serial.print(angleM); 
    }
    if (millis()-act >pers) {
      angleM=0;
      act=millis();
      }
  Serial.println();
  
}

Vous êtes super les gars. Merci de penser à moi. Je vais essayer tous ça et je me permettrais de revenir vers vous.

Encore merci à tous de vos interventions.

I will be back :smiley:

petite integration avec un tm1638
maintien pendant 2 secondes de l'angle max sur les 7segments
temps reel sur les leds bicolores
vert orange rouge
http://cjoint.com/14oc/DJpsSXHPo7R_mvi_0002.avi
désolé pour la qualité de la video, mais que ça sous la main :grin:

le lien de MM38, j'adore... surtout le scoot.
mais son truc est pas mal bien fait.

et effectivement, Artouste as une solution simple a mettre en oeuvre, et pas cher, pour essayer.

tu me dira pas si ca fonctionne: ca doit fonctionner.
tu me dira si c'est exploitable sur circuit, parce que j'y crois pas trop.
un truc de sur: t'y aura au moins gagné le plaisir de le faire.