Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

[Arduino] Programme pour accélérometre



  1. #1
    Jusepith

    [Arduino] Programme pour accélérometre


    ------

    Bonjour,

    Actuellement en classe de STI2D SIN (Système information et numérique), je suis, avec mon groupe, en train de réaliser notre projet de fin d’année coefficient 12 (6 par nos professeurs, 6 par le Jury).

    Notre projet consiste à la réalisation d’un sac à dos connecté pour cycliste.

    Notre groupe est constitué de 4 personnes, avec 4 tâches réparties :

    Géolocalisation (GPS/GSM)

    Mouvement (Accéléromètre direction droite/gauche - afficheur)

    Mouvement (Accéléromètre freiner - afficheur)

    Alimentation

    Composants :

    LED Rouge

    Platine Arduino Uno

    Module accelerometre 3 axes MMA 7660

    Ci-joint le diaporama que j’ai dû réaliser afin de montrer à mon professeur l’avancement du projet et recevoir une note pour le second trimestre :
    fs_docx.pdf Ainsi que les notes que j’avais prise pour me préparer à ce passage fs_pptx.pdf.

    Le problème que nous rencontrons est avec le programme pour l’accéléromètre. Nous ne savons pas comment procéder exactement pour qu’il exécute nos demandes. Nous avons trouvé ces différents sites qui concernent notre accéléromètre MMA7660FC mais on ne sait pas s’ils nous seront bien utiles :

    http://www.timzaman.com/?p=1089

    https://decibel.ni.com/content/message/55682

    http://forum.arduino.cc/index.php?topic=40293.0

    Le but est donc que lorsque le cycliste lève sa main à gauche ou droite de 90 à 180°, cela envoie un signal au sac qui affichera une flèche sur l’afficheur LED qui indiquera le sens dans lequel le cycliste tournera.

    Lorsque le cycliste freinera, un signal sera envoyé à l’afficheur LED pour afficher « STOP ».

    Merci pour votre aide.


    Bonjour Jusepith et bienvenue sur Futura,
    Pour être conformes à l'épinglé : http://forums.futura-sciences.com/el...-sabonner.html, les pièces jointes doivent être hébergées sur le serveur du forum. Pour une première fois, j'ai rapatriée tes PJ ; pense à le faire directement la prochaine fois stp.

    -----
    Dernière modification par Antoane ; 13/03/2015 à 12h45. Motif: Rapatriement PJ sur le serveur.

  2. Publicité
  3. #2
    vincent66

    Re : [Arduino] Programme pour accélérometre

    Bonjour et bienvenue sur futura !
    Le plus ch.... avec les accéléros 3 axes c'est le crosstalk et la dérive, si tu as du bol le petit programme chargeable sur le site timzaman.com règlera le problème...

    Pour savoir quelle main est levée tu comptes mettre un accéléro dans un bracelet à chaque poignet..?

    Vincent
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  4. #3
    HAYAC

    Re : [Arduino] Programme pour accélérometre

    Bonjour et bienvenu sur futura,

    Projet sympa, mais une question :
    - votre accéléromètre est oû ? dans le sac ?
    Si telle est le cas, pour le freinage ça fonctionne mais pas lorsque on lève une main ou l'autre ...
    Au mieux ça réagira lors que le virage sera entamé.

    Cordialement,

  5. #4
    jiherve

    Re : [Arduino] Programme pour accélérometre

    Bonjour,
    Non les accéléromètres sont sensibles au champ de gravitation de la planète, toute modification de leur position induit une variation de l’accélération mesurée sur chacun des axes.
    Exemple si l’accéléromètre étant à l'horizontale on a 0,0,G (x,y,z) alors avec une rotation d'angle r autour de l'axe x on aura 0,G*sin(r),G*cos(r) aux signes près.
    JR
    l'électronique c'est pas du vaudou!

  6. A voir en vidéo sur Futura
  7. #5
    Ridezebigone

    Re : [Arduino] Programme pour accélérometre

    salut,

    sur les poignets du cycliste, j'utiliserai des gyro (1 axe suffit) plutôt que des accéléros vu que tu cherches à détecter un mouvement de rotation.

    pour la détection de freinage, j'ai tenté d'en faire un aussi, j'ai presque réussi mais c'est chaud, il faut bien filtrer (connaissance en traitement du signal fortement conseillées) car en vélo les décélérations sont très faibles (biens inférieures à 1G) et j'ai aussi eu des problèmes détecter le freinage dans les montées/descentes . je m'étais inspiré de ce projet http://www.instructables.com/id/Bar-...ke-Light-BEBL/ , mais en lisant le code et en tentant de déterminer ses calculs, je me suis aperçu que les formules étaient farfelues ; ça semble fonctionner pour son capteur mais pour le mien ça ne marchait pas du tout.

    Votre projet est plus complexe qu'il n'y parait !

    Bon courage

  8. #6
    vincent66

    Re : [Arduino] Programme pour accélérometre

    Bonsoir,
    Cher et vénérable jiherve grande est ta science d'un accéléro utilisé en inclinomètre...
    Mais là c'est un capteur qui mesure sur trois axes les accélérations dues à toute force appliquée à l'engin, c'est bien moins simple...
    Vincent
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  9. Publicité
  10. #7
    jiherve

    Re : [Arduino] Programme pour accélérometre

    Bonsoir
    Cher ami et néanmoins helvète où avez vous lu que j'ai pu écrire que cela fusse simple, je répondais juste à notre petit camarade de l’0céan Indien qui écrivit:
    Au mieux ça réagira lors que le virage sera entamé.
    laissant ainsi sous entendre que l’accéléromètre ne réagirait que lors de l'application d'une accélération due au mouvement auquel serait soumis le porteur.
    Il est en effet difficile d'exploiter un accéléromètre sur une planète possédant son propre champ gravitationnel
    Donc en plus de lire ce que j’écris, il faut lire ce qui précède et comprendre ce qui lie l'ensemble
    JR
    l'électronique c'est pas du vaudou!

  11. #8
    Jusepith

    [Programmation] Accéléromètres droite/gauche/arrêt

    Bonjour,
    Actuellement en classe de STI2D SIN (Système information et numérique), je suis, avec mon groupe, en train de réaliser notre projet de fin d’année coefficient 12 (6 par nos professeurs, 6 par le Jury).
    Notre projet consiste à la réalisation d’un sac à dos connecté pour cycliste.
    Composants :

    54 x LED Rouge
    2 x http://www.lextronic.fr/P4124-platin...uno-rev-3.html
    3 x http://www.lextronic.fr/P28834-modul...mma7660fc.html (Accéléromètre I2C Numérique)
    2 x http://www.lextronic.fr/P19175-plati...hield-v13.html
    Le problème que nous rencontrons est le programme pour l’accéléromètre. Nous ne savons pas comment procéder exactement pour qu’il exécute nos demandes. Nous n’avons qu’une faible connaissance en programmation. Nous avons trouvé ces différents sites qui concernent notre accéléromètre MMA7660FC mais on ne sait pas s’ils nous seront bien utiles pour l’avancement du programme :
    http://www.timzaman.com/?p=1089
    https://decibel.ni.com/content/message/55682
    http://forum.arduino.cc/index.php?topic=40293.0
    On a aussi trouvé cet autre programme :

    Code:
    /*
     * PIR sensor tester
     */
     
    int ledPin = 13;                // choose the pin for the LED
    int inputPin = 2;               // choose the input pin (for PIR sensor)
    int pirState = LOW;             // we start, assuming no motion detected
    int val = 0;                    // variable for reading the pin status
     
    void setup() {
      pinMode(ledPin, OUTPUT);      // declare LED as output
      pinMode(inputPin, INPUT);     // declare sensor as input
     
      Serial.begin(9600);
    }
     
    void loop(){
      val = digitalRead(inputPin);  // read input value
      if (val == HIGH) {            // check if the input is HIGH
        digitalWrite(ledPin, HIGH);  // turn LED ON
        if (pirState == LOW) {
          // we have just turned on
          Serial.println("Motion detected!");
          // We only want to print on the output change, not state
          pirState = HIGH;
        }
      } else {
        digitalWrite(ledPin, LOW); // turn LED OFF
        if (pirState == HIGH){
          // we have just turned of
          Serial.println("Motion ended!");
          // We only want to print on the output change, not state
          pirState = LOW;
        }
      }
    }
    Le but est donc que lorsque le cycliste lève sa main à gauche ou droite de 90 à 180°, cela envoie un signal au sac qui affichera une flèche sur l’afficheur LED qui indiquera le sens dans lequel le cycliste tournera et lorsque le cycliste freinera, un signal sera envoyé à l’afficheur LED pour afficher « STOP ». Le capteur se trouvera sur les coudes de l’utilisateur car cela sera plus précis.
    Est-ce que vous pourriez nous donner un début de programme ou une piste ou confirmer si une de nos trouvailles est juste ? Merci ^_^

  12. #9
    Antoane
    Responsable technique

    Re : [Programmation] Accéléromètres droite/gauche/arrêt

    Bonjour,

    Les doublons sont interdits par la charte, les deux discussions ont donc été fusionnées.
    Merci de ne pas en ouvrir de nouvelle.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  13. #10
    paulfjujo

    Re : [Arduino] Programme pour accélérometre

    bonjour,



    un "Tilt" sensor ne serait pas mieux adapté et vraiment plus simple à interfacer ?
    Jadis c'etait un simple contact à mercure , bien positionné Horizontal=Ouvert vertical=fermé
    je ne sais pas si c'est encore d'actualité ( avec du mercure !)

  14. #11
    Dynamix

    Re : [Arduino] Programme pour accélérometre

    Salut
    Citation Envoyé par jiherve Voir le message
    Exemple si l’accéléromètre étant à l'horizontale on a 0,0,G (x,y,z) alors avec une rotation d'angle r autour de l'axe x on aura 0,G*sin(r),G*cos(r) aux signes près.
    Dans le référentiel du cycliste (non inertiel) en virage stabilisé* , l' accélération est toujours verticale .
    Elle se compose de l' accélération gravitationnelle plus l' accélération centrifuge .
    l' accéléromètre détectera seulement une augmentation de la valeur Z

    *bille au milieu

  15. #12
    Jusepith

    Re : [Arduino] Programme pour accélérometre

    Bonjour,

    Nous avons finalement décider de changement d'accéléromètre, n'arrivant à rien avec les anciens, pour passer à l'analogique.
    Les accéléromètres : http://store.arduino.cc/product/T000020 (le tout fonctionnant sur Carte Arduino Uno)

    Voici deux algorithmes :

    Algorithme - Thomas.jpgAlgorithme - Julianne.jpg

    Nous avions en premier lieu choisi des accéléromètres numériques mais bien trop compliqué à l'utilisation, nous sommes donc passé à l'analogique.
    Lorsqu'il ne se passe rien, on a 2,6 V. Lorsque l'on va lever le bras droit, cela va augmenter de 1V (soit 3,6 V) et donc on va activer les LED à partir de 3,6 V.
    Pour le bras gauche, on va allumer les LED lorsque la tension sera de moins 1 V donc 1,6 V.
    Pour le "stop", il faut voir avec les valeurs constantes et capter la décélération.

    LE PROBLEME :

    Nous sommes des élèves de terminale qui n'avons jamais réaliser de programme. Nous avons vu les bases de la programmation, mais cela ne nous permet pas de réaliser un programme entier et surtout, fonctionnel.
    Nous avons quand même tenter des brouillons de programme, que voici :

    Code:
    Accéléromètre droite/gauche
    
    void setup()
    Lire l’accéléromètre (Read)
    Valeur > 676 //Valeur supérieur à 1V au dessus de 3,6 V
    Si (If) oui
    Allume Led Jaune1 (Tourner à droite → )
    Si (if) non
    //Ne s’allume pas
    void loop() //Faire une boucle
    delay(100) //Obtenir une nouvelle valeur toutes les 100ms
    
    Valeur < 266 //Valeur inférieur à 1V en dessous de 3,6 V
    Si (If) oui
    Allume Led Jaune2 (Tourner à gauche ←)
    Si (If) non
    //Ne s’allume pas
    void loop() //Faire une boucle
    delay(100) //Obtenir une nouvelle valeur toutes les 100ms
    
    ____________________________________________________
    
    Accéléromètre "stop" (Premier brouillon)
    
    void setup()
    Lire l’accéléromètre (Read)
    Valeur
    Si (If) oui 
    Allume Led Rouge (STOP)
    Si (iF) non
    Ne s’allume pas
    void loop() //Faire une boucle
    delay(100) //Obtenir une nouvelle valeur toutes les 100ms
    
    ____________________________________________________
    
    Accéléromètre "stop" (Second brouillon)
    
    const int led=13  // déclaration constante de broche
    void setup() 
    pinMod (LED, OUTPUT); // met la led en sortie
    analogRead(accelerometer) //lire l’accéléromètre
    {
    if (valeur > seuil) // si valeur > seuil
    else //alors
    digitalWrite(LED, HIGH); //met la broche au niveau haut, allume la LED
    delay(1000); //pause de 1000ms
    }
    {
    if (valeur< 656 max)  //si valeur < seuil max
    else //alors
    digitalWrite(LED, OUT); //met la broche à l’état bas, éteins la LED
    delay(1000); //pause de 1000ms
    }
    voidloop() //recommencer, faire une boucle
    Donc s'il y a une âme généreuse qui peut nous sauver en nous corrigeant/complétant ce n'est pas de refus

    Merci pour votre aide !

  16. Publicité
  17. #13
    Ridezebigone

    Re : [Arduino] Programme pour accélérometre

    Bonjour,

    avant de faire logiciel, avez-vous regarder les signaux de sorties des acceléro à l'oscilloscope par hasard ?

    sinon, voici une bonne base pour votre programme : http://www.mouser.com/catalog/specsh...elerometer.pdf

    A+

Discussions similaires

  1. Adaptation d'un programme Arduino pour Zigbee
    Par thomas785 dans le forum Électronique
    Réponses: 0
    Dernier message: 30/04/2014, 18h25
  2. [PROJET SI] Aide pour programme Arduino avec Bluetooth
    Par Soyalorea dans le forum TPE / TIPE et autres travaux
    Réponses: 1
    Dernier message: 04/03/2014, 09h37
  3. Programme pour carte arduino
    Par robotfan dans le forum Électronique
    Réponses: 17
    Dernier message: 28/11/2013, 08h52
  4. accéléromètre 20g arduino
    Par sachast dans le forum Électronique
    Réponses: 15
    Dernier message: 16/04/2013, 16h28
  5. carte arduino et accéléromètre
    Par flicka57 dans le forum Électronique
    Réponses: 6
    Dernier message: 01/12/2012, 10h03
Découvrez nos comparatifs produits sur l'informatique et les technologies.