DIY - Encoder BISS-C de MIGE : encoder relatif avec index ou pas ?

  • Bonjour à tous,

    je suis en train d'implémenter l'encoder BISS-C de MIGE sur OpenFFB, et j'ai un comportement étrange : est ce que c'est réellement un encoder absolu ou a t'il besoin d'une révolution pour trouver un index ?

    Quand j'éteins et rallume le capteur, il ne me renvoie pas la dernière position :

    1. Après avoir allumer l'encoder, j'ai une première position qui est stable.
    2. Je bouge et je reçois la nouvelle position qui est stable.
    3. J'éteins et je rallume l'alimentation et la position que je reçois est différente de la première.
    4. Si je rééteins et rallume plusieurs fois la position ne bouge plus, je récupère toujours la dernière, cette fois si ca marche :-/

    J'ai vérifié les CRC de chaque trame et ils sont bon, aucune erreur. Et en regardant à l'analyseur logique, pas de doute, le signal de réponse est différent...

    Est ce que vous avez un avis ?

    Vincent

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • j'ai un biss-c sur mon sc1

    c'est un encodeur absolu

    Core I5-12600K - ASUS Z690 - Sound BlasterX AE-5 Plus - RTX 3080 FE - 32Go RAM - Châssis Motedis X-Dream - Volant Thomconcept Simucube 1 small mige 130ST-M10010 (20 Nm) Biss-c - Samsung 32/9 G9 49" 5120x1440 - Bass-shakers - Heusinkveld Pédales Sim Ultimate+ - Heusinkveld Handbrake - Shifter Manu-Factory SSH14 - OSP Simpro Vocore 5"

    Mon cockpit     Mon SimXperience G-Belt      Mes Dash

  • Merci Herve45

    Ce n'est donc pas bon signe :/

    Soit j'ai un bug dans le code que je ne vois pas, soit c'est mon encodeur tout neuf qui est mort...

    Mais comme je vois à l'analyseur logique que ca ne marche pas, je pense que ca vient du matos :'(

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • HUmmm, je crois que le bug est entre la chaise et le clavier :/

    Le circuit que j'utilise est un MAX490 et dans la spec il est donné pour 2.5Mbps, je suis à 2.7Mps.... ca aide peut etre pas...

    Mais ce qui est surprenant c'est que le test du CRC passe.

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • Si ton CRC est bon c'est que la transmission est bonne.

    Je ne connais pas le MAX490, mais souvent tu as plus de débit max en réception qu'en transmission.

    On est sûr qu'il n'y a pas de batterie sur les cartes GD ?

    Les encodeurs absolus Yaskawa par exemple en ont besoin, d'une batterie. Je ne trouve pas la doc de ton encodeur.

    Je n'ai pas bien compris ta 4ème étape.

    EDIT: Ok, pas de batterie dans la doc.

    Message modifié 4 fois, dernière modification par Mizoo (5 octobre 2021 à 12:49).

  • Merci pour ton retour. C'est ce que je me dis pour le CRC : s'il est bon, c'est que la communication est bonne.

    Pour reformuler la 4eme étape : si je redébranche, rebranche, je constate un offset qu'à la première mise sous tension, après une rotation.

    Je vois un offset qu'au premier cycle d'alimentation : tant que je tourne pas l'encodeur, les cycles d'alimentation successifs ne génèrent pas d'offset.

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • Tu veux dire qu'il fixe sa valeur initiale, à l'allumage, comme étant égale à la dernière envoyée ?

    Si tu as un doute quant à la fréquence, pourquoi tu ne la diminues pas ?

    Message modifié 3 fois, dernière modification par Mizoo (5 octobre 2021 à 14:09).

  • Je vais essayer ce soir la diminution, je m'en suis rendu compte ce midi pour la Freq.

    Pour donner des valeurs à ce que je constate :

    1. J'allume l'encodeur et je lis 20°, je bouge je lis 40°
    2. J'éteins et rallume, je lis 37°
    3. J'éteins et rallume, je lis 37°
    4. ...

    Et quand je regarde la forme du signal avec l'analyseur, la forme est différente entre le 40° et le 37°...

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • Tu sais dire de combien est l'écart, à peu près, entre la valeur avant extinction, et celle à l'allumage, quand tu bouges le volant ?

    Elle est constante ou complètement aléatoire ?

  • Bon et bien c'est tombé en marche...

    Et je ne sais pas ce que j'ai boutiqué, mais c'est cool que ca marche :)

    Si, j'ai fait un truc, j'ai baissé la vitesse, j'ai redémarré un coup en attendant 30sec avant de rallumer et j'avais debranché l'analyseur logique.

    Et maintenant ca remarche à 2.7Mhz, avec l'analyseur...

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • Merci pour ton retour Etienne, c'est peut etre ce qui c'est passé, en effet.

    Je suis resté dans les specs de mon transducer, mais je vais m'en chercher un à 10Mbps :)

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • Merci Mizoo, je vais me faire une board d'extension sur EasyEDA.

    Je viens d'implémenter le BISSC dans le VESC, les nouvelles sont moyennes : je suis à 10khz de refresh d'encoder, et la majorité du temps n'est pas passé dans le calcul, mais dans les autres threads du vesc.

    J'aurais aimé plus... vous en pensez quoi ?

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • Difficile de te répondre sans voir le code.

    Dans VESC, quel est l'occupation CPU des tâches critiques attachées au contrôle moteur ?

    Vu ce que j'ai relevé la dernière fois, la routine principale prend déjà plus de 25µs, donc à 35kHz ça fait déjà 43% (VESC saute un cycle PWM de rafraichissement).

    Il devrait rester de la place, mais je ne connais pas suffisament VESC.

    Combien prend ta routine de décodage Biss-C ? elle devrait être courte vu le protocole et le fait le DMA doit sûrement faire le boulot de la copie en mémoire.

    Je me suis trompé pour le transceiver, celui-ci est half-duplex, pour Biss-C il faut un full, donc plutôt le MAX3087.

  • Dans le Vesc, 2 systèmes cohabites :

    *) les interruptions qui gères l'ADC et déclenches le calcule du FOC a freq pwm, et les encoder absolu, encoder SPI software (AS5040x, MT6816, AD12s05) à 20khz

    *) Chibios pour tout ce qui est accessoire : USB, Serial, CAN, Eeprom manager, Encoder TS5700N8501, led

    J'ai essayé les deux approches : par interruption et dans une thread chibios.

    A 20khz en interruption, ca merdouille, les interruptions prennent le dessus sur chibios et nous n'avons plus de communication CAN/Usb.

    En thread, je suis à 10 khz.

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • Allez, au mieux j'ai 12 mesures en 1ms :

    Je suis dans une thread sans tempo, qui se block dès le debut du CLK du SPI.

    A la réception des data, ca appelle une callback qui fait le calcul de la position et qui déverrouille la thread qui reboucle.

    Je n'aurai pas mieux :/

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • Hélas c'est un mega FAIL :) J'ai perdu l'USB, sans pause, le rtOS ne gere pas les autres threads (normal, je ne lui rends pas la main...).

    Du coup ce sera 10Khz...

    Je testerai demain sur le moteur pour voir ce que ca donne.

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)

  • Combien de temps dure ta routine, dans un code sans autre IT ?

    EDIT: d'après ta capture à l'analyseur tu as la mesure au bout d'environ 25 µs, il suffit donc de lancer le transfert en début du cycle PWM, récupérer le résultat quand le transfert est terminé, et prendre la valeur extraite comme référence dans le prochain cycle.

    Message modifié 2 fois, dernière modification par Mizoo (7 octobre 2021 à 00:04).

  • J'avoue que ca dépasse mes connaissances actuel, mais je crois que je vois le truc...

    Je ne sais pas ce que ca veut dire d'un point de vu développement par contre, je n'avais jamais codé d'interruption avant ca.

    Volant DIY (OpenFFBoard + BusCAN + VESC + Mige15015 + BissC c.f. forum pour plus d'info), Pédales DIY (LoadCell, capteur à effet hall, impression 3d, sans fil), Roue DIY (16 boutons, 4 encodeurs, sans fil)