Informations sur la carte pixl (raspberry Pi - XL320)

electronics
français
Tags: #<Tag:0x00007fae8b566710> #<Tag:0x00007fae8b5665d0>

#35

En effet tes problèmes de vitesse pourrais être due à la résistance de pull-up. En réalité ça dépend du nombre de moteurs que tu as sur ta chaîne.
Attention il faut que les moteurs soit configuré à la même vitesse que celle à laquelle tu envoie, c’est un bus asynchrone.

Par défaut la RPI utilise le port série comme console de debug, a tu bien désactivé cette fonction?


#36

Il y a en fait deux étapes à réaliser avant de pouvoir communiquer avec les ports séries de la Raspberry vers les moteurs:

  • désactiver le log série
  • changer la fréquence de l’UART

Tu peux voir comment faire ici : https://github.com/poppy-project/poppy-installer/blob/master/install-deps/install-hardware-changes.sh

Et en particulier:

# Disable tty over serial
if [[ "$POPPY_BOARD" == "rpi" ]]; then

    if [[ $(uname -a) == *"essie"* ]]; then
        # If it is based on Debian Jessie which use systemd
        # https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=123081
        sudo systemctl stop serial-getty@ttyAMA0.service
        sudo systemctl disable serial-getty@ttyAMA0.service

    elif [[ $(uname -a) == *"heezy"* ]]; then
        # If it is based on Debain Wheezy (still use sysvinit)
        # We have to modify /boot/cmdline.txt and /etc/inittab to remove the ttyAMA0 occurences
        # Taken from raspi-config source code
        sudo sed -i.bak /etc/inittab -e "s|^.*:.*:respawn:.*ttyAMA0|#&|"
    fi

    sudo sed -i.bak /boot/cmdline.txt -e "s/console=ttyAMA0,[0-9]\+ //"

    if ! grep "init_uart_clock=16000000" /boot/config.txt
    then
        sudo su -c "echo \"init_uart_clock=16000000\" >> /boot/config.txt"
    fi
fi

#37

Ok merci.
J’avais bien adapté la vitesse des moteurs et désactiver la console pour mes différents tests mais je pensais que Python changeait la fréquence de l’UART quand on initialise une liaison série avec un certain baudrate.

Je vais refaire des tests en utilisant le script. Pour ma chaine, pour l’instant je n’utilise qu’un seul moteur.
J’ai réussi à capturer des trames et j’observe bien le même défaut que @Nicolas

Par contre, ma fréquence d’échantillonnage est par terrible mais avec un arduino comme oscillo j’arrive pas à faire mieux (je sens que je vais me trouver un Pico2205, c’est bien ça ?) :wink:

Et il y a bien un problème quand j’envoie des commandes en rafale qui retourne un could not parse data de la part de Pypot.
C’est compliqué à changer la résistance de pull-up (elle est où sur la carte ?)


Use OpenCM9.04 as a USB2Dynamixel?
#38

C’est le cas … en général ; cependant sur la Raspberry Pi il faut changer la clock pour permettre un range de baudrate plus élevé. C’est vraiment propre au driver qui gère le port série du mirco processeur.

Si tu as des problèmes de type “could not parse data” alors que tu as moins de 8 moteurs (le max qu’on ai testé sur des XL320), ce n’est vraiment pas normal.

C’est la résistance juste à côté du conncteur du moteur. Pour la désouder, la meilleure technique est de la chauffer en rajoutant de l’etain dessus (c’est contre intuitif mais de loin la meilleure technique).

Si tu veux un analyseur logique pas cher, je te conseille celui d’hobbycomponents


#39

En effet, c’est pas cher un analyseur logique. Mais mais ce type d’analyseur me dira juste si il y a du courant ou pas, hors j’aimerais bien faire aussi de l’analogique pour voir le forme réelle du signal.

Il y a un truc que j’arrive pas à comprendre sur le full duplex vers half duplex. En full duplex, la réception (Rx) et la transmission (Tx) peuvent être simultanées. Alors que ce passe t-il sur la carte Pixl si pendant que les moteurs renvoient une trame de réponse, le Tx du Raspberry envoi une trame en même temps ?

Il me semble pas qu’il y ait un buffer sur la Pixl capable d’enregistrer le Tx en attendant que le Rx soit passé ?


#40

J’ai rajouté init_uart_clock=16000000 à la fin de config.txt et ça marche très bien :slightly_smiling:
Avec 1 xl-320 :

%timeit dxl_io.get_present_position(motors)
out : 100 loops, best of 3: 2.01 ms per loop

Avec 23 xl-320 :

%timeit dxl_io.get_present_position(motors)
out : 10 loops, best of 3: 42 ms per loop

Et en utilisant sync_read=True , c’est 2 fois plus rapide :smile:

100 loops, best of 3: 19.1 ms per loop


Poppy 1.1 : Hipi
#41

Dans ce cas la ça ne fonctionnera pas. Le logiciel est sensé l’éviter. Sur la Pixel il faut que TX transmette un 1 pour activer la réception.

Comme le disait @Theo Le driver de communication de la Pixl ne tolère pas plus de 8 moteurs. Avec plus de moteurs la communication devient instable. Cette carte a été spécialement designer pour les ergoJr qui contient au maximum 6 moteurs.
La nouvelle carte que nous sommes actuellement en train de réaliser (Hipi) devrait permettre plus de souplesse.


Poppy 1.1 : Hipi
#42

Bonjour à tous,

Ici Génération Robots qui vous parle ! :slight_smile: Juste un petit message d’informations pour vous annoncer que nous avons bien la carte Pixl et son alimentation sur notre site ! C’est par ici : Carte Pixl pour Poppy Ergo Jr - Génération Robots

Un bon weekend à tous,

Génération Robots


#43

Pour la cate PIXL, sur circuit maker, la valeur de 3 résistances a changé (de 511 à 499 ohm). Est-ce que la carte à déjà été construite avec les nouvelles valeurs de résistance ? Est-ce que le signal est très sensible à ces valeurs ?

@titwin j’ai construit une carte basée sur la dernière Release (donc avec des 499.0 ohm) et le signal fait planter Pypot. Faut que je regarde plus en détail ce qui ne marche pas, mais la seule différence avec la version qui fonctionne semble être les valeurs de résistances.

Edit : J’ai trouvé une autre différence, C7 a été déplacé, mais bon pas de raison que cela change quelque chose. Il y a un problème avec l’alimentation, comportement très très strange (marche seulement si les 3 connecteurs RPI sont branchés mais avec la pixl enclenché sur les 10 broches je tombe à 2V sur l’alim… Trop bizarre.

Edit2 : R1 fait du bruit (bzzzzzzz) quand je met le doigt dessus, elle ne fait plus de bruit, mais ça coupe Vout. J’ai testé tous les composants vérifié toutes les pistes, là je vois pas… Ma carte est peut-être envoutée !!


#44

Salut,

Oui la carte a ete construite et testée sans soucis. Le signal n’est pas très sensible: ce sont des résistances de pull-up et passer de 510 à 499 ohms ne change pas l’allure du signal de manière significative.

Pour ce qui est de l’alimentation c’est normal que tu ne voies pas de tension de sortie lorsqu’elle n’est pas branchée à la raspberry: le régulateur est un régulateur à découpage et comme la plupart de ce type il a besoin d’une résistance de charge minimale (un courant de sortie min) pour pouvoir fonctionner correctement.

Par contre Vout tombant à 2V lors d’un branchement, pour moi c’est qu’il y a un court-circuit quelque part.
Essaie de voir si tu n’as pas des marques de brûlure près de certains composants, vérifies les valeurs des résistances, et regardes si certains condensateurs n’ont pas grillé (en les testant au bip metre).
Si rien de cela ne marche c’est peut-être le régulateur lui-même qui a grillé (mais j’espère pas). Pour des tests sous tension je te conseille de ne pas brancher la pixl sur la raspberry (pas nécessaire mais au cas où). Si tu as des résistances traversantes mais en une d’environ 10 ohms entre 5V et GND sur l’header de la pixl (attention quand même à ce que la résistance puisse dissiper autant de puissance).

Tiens-moi au courant.


#45

Salut,
J’ai sous la main des cartes PIXL qui fonctionne très bien et ma version qui ne marche pas. Ma version est basée sur ta dernière release avec quelques changements mineures au niveau des connecteurs : http://workspace.circuitmaker.com/Projects/Details/Julien-JEHL/PIXL-Poppy-roboticia

Le court circuit me semble en effet, le plus probable, reste à trouver où. Capa testée à l’ohmètre OK, pas de trace de brulure. Je pense que le régulateur est HS à cause du court circuit justement, ce qui est surprenant c’est qu’il marche mais mal.

Carte non connectée à la RASPI, alimentée en 12V ou 7.5V les résultats sont similaires :

J’ai 4,95 V sur VCC mais le tension chute rapidement (4,5V avec 150 mA de courant, 0.5V avec 1 A).
Les tensions sur Tx (-0.30V), Rx (6.36V) et +3.3 (-0.36V) me semble totalement anormale vu que la carte n’est pas connectée. Sur la carte qui fonctionne, j’ai des tensions de l’ordre de 0.1 - 0.2 V sur ces 3 Pins.

Je vais remplacer le régulateur par un neuf pour refaire des tests carte non connectée.


#46

Je pense en effet que c’est le régulateur qui a lâcher. Et a replacer ça me semble chaud (dessouder le pad en dessous n’est pas une mince affaire). Pour les cause je ne sais pas, @Nicolas et @Theo avais essayer toutes sortes de manip sans arriver à en cramer définitivement.


#47

Les seuls fois ou nous avons réussi a cramer un régulateur de Pixl c’est lorsqu’on les soudait à la main. En effet le pad sous le boitier est très important, une mauvaise soudure est fatale pour le composant.


#48

J’ai trouvé, et devinez quoi et ben c’est ma faute ! En modifiant légèrement le câblage, sans le vouloir j’ai formé un îlot de masse isolé de la masse générale autour de C1… Un petit trou et de la soudure et ça devrait marcher. En tout cas, merci de m’avoir répondu, ça fait toujours du bien quand on comprend plus :slight_smile:

Tout ça me fait penser qu’il y a beaucoup de trous qui relient les masses des 2 faces, c’est pour une meilleur dissipation de la chaleur du régulateur ?


#49

De memoire c’est pour eviter les fluctuations de tension sur la masse duent a la propagation des perturbations sur le plan de masse. Si tu mets des vias ‘partout’ entre les plans de masse, tu reduis le probleme en t’assurant que les potentiels sont bien les memes a plein de points sur les plans. En theorie l’espacement des vias se fait en fonction de la frequence des perturbations que tu as.


#50

En effet, mais là la distance qui les sépare n’a pas été calculée. J’en ai mis pour la répartition thermique du régulateur et pour une homogénéité des potentiels. après il n’y a pas beaucoup de place donc je les ai disposés un peu “au hasard”.


#51

Maintenant que j’ai mis la masse…à la masse, cela marche beaucoup mieux ! Temps de réponse moyen sur une RPI3 avec 1 moteur (1.44 ms), c’est vraiment pas mal.

Donc, il existe maintenant une version un peu différente de la PIXL avec 4 connecteurs XL-320, je m’en sers pour gérer 23 moteurs à 50 Hz.


#52

comment ? comment ? comment ?
on peut piloter 23 XL-320 avec une PIXL ? mais, mais… c’est ce que j’attendais de la Hipi :slight_smile:

@juju tu as beaucoup modifié le schéma d’origine ? Tu soudes toit même les composants SMD ?


#53

Pour le schéma, j’ai tiré des pistes pour relier les connecteurs et agrandi un peu la carte pour que ça passe.

Soit je soude moi-même, soit je fais prototyper par un sous traitant. En l’occurrence, pour la carte présentée, j’ai fait faire le CMS et j’ai soudé les autres.

C’est pas facile de souder les CMS, il faut une bonne loupe, un fer à panne fine et il faut pas trembler !
Si tu es intéressé, j’ai des cartes vierges et des composants.

Sinon, je peux aussi t’en vendre une un peu traficoté mais qui marche.

A+


#54

Petite aparté, mais honnêtement c’est pas si dur que ca, beaucoup de gens pourraient le faire (pas tout le monde je vous l’accorde, il faut pas avoir trop la tremblotte) si on leur répétais pas tout le temps que c’est si dur.
Il faut oser essayer :slight_smile:
Apres je dis ca, mais c’est vrai que c’est un peu chiant à la longue, mais pour faire un one-shot un peu pressé c’est complètement faisable, ca ne vaut pas le coup de se mettre tant de limites.