Aller au contenu


Sandro

Inscrit(e) (le) 30 déc. 2013
Déconnecté Dernière activité mars 25 2026 09:22
*****

Messages que j'ai postés

Dans le sujet : Formation : conception de PCBs pour résister aux décharges ESD

11 mars 2026 - 08:21

Bonjour,

Dans mon cas particulier, j'aurais du mal à agir au niveau de l'entré dans le chassis, car il s'agit de robots sous marins, donc le choix est très limité en connecteurs (surtout si on veut rester sur des modèles facile à approvisionner et à des prix à peu près raisonnables).

Du coup, mon idée était de protéger autant que possible le PCB (assemblé) au niveau des connecteurs présents sur le PCB (ie l'arrivée des cables venant des connecteurs étanches).


Dans le sujet : [Avis Schéma] Robot 4WD sous Linorobot2 (Pico + RPi 4 + TB6612FNG)

28 janvier 2026 - 11:18

Pour les condensateurs 470µF :

- pour le cas où les moteurs sont bloqués, augmentent donc le courant, et que c'est la résistance interne de ta batterie (ou la résistance des fils + fusible) qui font chuter la tension : les condensateurs ne servent à rien (à part retarder le problème d'une durée de l'ordre de la milliseconde)
- par contre, ils aident énormément à stabiliser la tension en réduisant les variations qui ont lieu à la fréquence du PWM.

 

À noter que tant que tu restes sur des valeurs raisonnables de fréquence de PWM, à condensateurs donnés, les variations de tension sont inversement proportionnelles à la fréquence du PWM. Donc n'hésites pas à augmenter la fréquence du PWM si tu peux. Si tu augmentes trop, tu finira par être limité soit par le driver (en vitesse, ou en pertes de commutation), soit par les condensateurs (les condensateurs électrolytiques ne sont pas très réactifs, donc perdent en capacité "apparente" à haute fréquence. Si tu veux optimiser, le mieux est de se baser sur la doc du driver et des condensateurs.


Pour les condensateurs 0.1µF :
c'est un compromis entre courant d'appel sur les ponts en H, variations de courant (donc radiations magnétiques et arcs) et diminution des arcs électriques au niveau des balais de tes moteurs.
Je penses que personnellement, je commencerais sans, et que je les ajouterais si j'ai des problèmes d'interférences électromagnétiques (ou de moteurs qui s'usent trop vite). Mais je n'ai pas trop creusé la question, donc n'hésites pas à te faire ton propre avis (ou à chercher des avis contradictoires)


Dans le sujet : [Avis Schéma] Robot 4WD sous Linorobot2 (Pico + RPi 4 + TB6612FNG)

28 janvier 2026 - 12:28

Bonsoir,
À part la partie raspberry pi / lidar où il manque les masses et les fils de signaux, je ne vois pas non plus de problèmes évidents à première vue.

Après, vu que tu n'as pas fourni les liens vers les datasheets (ie la doc complète) de tes composants, je ne suis pas allez chercher à ce niveau là si tout convient (par exemple est-ce que le courant max des moteurs est compatible avec tes drivers, ...).

Un point sur lequel j'ai un doute, c'est sur le pin SBY des drivers : si c'est réellement standby, et pas standby avec une barre, ou #SBY ou n_SBY ou SBY* (ie s'il n'y a pas de négation), alors il faudra probablement brancher ces pins à GND si tu ne veux pas que tes drivers soient en standby (donc inutiles). NB : il est tout à fait possible que l'erreur soit juste le texte et pas le branchement : il faut aller vérifier dans la datasheet des drivers.


Remarques diverses :
- Pour les 2 condensateurs 470µF : ça ne peut pas faire de mal. À noter que la résistance interne (ESR) et le courant max (ripple current) à la fréquence de ton PWM jouent probablement plus que la valeur exacte de la capacité.
- Si ton principal but avec les condensateurs est de stabiliser la tension d'entrée du DC/DC, alors une diode et un gros condensateur juste devant le DC/DC est probablement plus efficace que tes 2 gros condensateurs (la diode permet de garder exclusivement pour le DC/DC l'énergie stockée). Si le but est de réduire le rayonnement magnétique (perturbations potentielle d'autres cartes, en particulier de la raspberry pi 4), alors placer les condensateurs proche des drivers est le meilleur choix. Si jamais tu rencontres des problèmes, n'hésites pas à essayer de combiner les 2.
- Dans tous les cas, je te conseilles de torsader les fils + et - allant de la batterie aux drivers, puis les 2 fils d'alimentation allant à chaque moteur : ça rend souvend plus propre, et surtout ça réduit significativement le rayonnement magnétique.
- Pour les condensateurs 0.1µF céramiques sur les 2 alims des moteurs : ça sert surtout à réduire le rayonnement du aux brosses des moteurs. En revanche, le driver voit des appels de courants plus important lors de chaque commutation du pont en H. Sans analyse poussée, je ne saurais pas dire si c'est mieux avec ou sans. En tout cas, je mets pas des condensateurs significativement plus gros. Et si tu les mets, place les au plus prêt des moteurs

- Je ne suis pas sûr si ton pico est alimenté (prévu via cable USB)?

- Si le Pico est alimenté via cable USB, mais que les batteries ne sont pas présentes, alors le Pico risque d'envoyer des signaux au driver alors que celui-ci est éteint. À confirmer avec la doc du driver, mais si ce n'est pas explicitement autorisé, alors ça risque d'endomager le driver et/ou le pico (car une entrée d'une carte non alimentée se comporte souvent comme une diode vers l'alim, donc si celle-ci est abscente, ton GPIO va essayer d'alimenter le rail 5V (et d'en charger les condensateurs), ce qui dépassera largement le courant max autorisé)

Par rapport au schéma en lui même :
- essaye de garder un code couleur cohérent : réserve le noir pour le GND (0V) et rien d'autre. Pareil pour tes tensions d'alimentation (si tu décides que le 12V est rouge et le 5V est violet, alors réserve ces couleurs à cet usage). Dans les deux cas, ça veut dire remplacer les "fils" rouge et noir des moteurs par une autre couleur. Mais c'est mieux de toute façon (mon premier réflexe, c'était de penser qu'il s'agissait des fils d'alim des encodeurs)
- tu atteins un niveau de complexité où dessiner tout les fils explicitement n'est plus forcément une bonne idée. À ta place, je remplacerais tout les fils GND par un symbole GND à chaque fois. Et probablement la même chose pour le 12V et le 5V. Ça enlèverait pas mal de fils, et rendrait le schéma plus lisible

- À réfléchir, mais pour ma part, je préfères un schéma électrique "symbolique" (symbole condensateur pour un condensateur, un bloc avec juste le nom des signaux pour un driver/convertisseur/moteur/...). Mais prendre en main un logiciel pour faire des schémas symboliques est un peu de boulot.
- si certains fils deviennent trop tordus, il est possible d'utiliser des étiquettes qui "remplacent" le fil (à ne pas abuser non plus).

Bon, j'arrêtes là pour ce soir, et je vais me coucher. N'hésites pas si tu as des questions. Et si tu fournis des datasheets, je peux regarder plus en détail à l'occasion (si c'est des achats amazon/aliexpress/ebay sans doc digne de ce nom, alors je pourrais beaucoup moins pousser l’analyse, et le risque de mauvaises surprises à l'assemblage sera d'autant plus élevé)


 


Dans le sujet : tressage avec 2 moteurs pas à pas

27 janvier 2026 - 11:35

Je penses que le problème vient du fait que sur Arduino, un int ne fait que 16 bits (et pas 32 ou 64 bits comme sur les ordinateurs).

Je penses que le problème vient de cette ligne :

long steps = toursTorsade * 800;

toursTorsade=100 (de type int)

800 = 800 (de type int)

100*800 = 80 000 >2^16 : donc ça ne rentre pas dans un int. Le résultat est donc 800 * 100 modulo 2^16 = 14 464 = 18.08 * 800, soit environ 18 tours

De même pour 200*800 modulo 2^16 = 28928 = 36.16 * 800, soit un petit peu plus de 36 tours
 

Le "problème" est qu'une opération entre 2 int est calculée en tant que int, et ce n'est qu'ensuite que le résultat est convertit en long (qui contient 32 bits, assez pour contenir le résultat).


Je vois donc 2 solutions.

Solution 1 : changer le type des variables :
Remplacer :

// ----- Variables -----
int toursBobine = 100;
int toursTorsade = 1;
int vitesseMax = 5000;

par :

// ----- Variables -----
long toursBobine = 100;
long toursTorsade = 1;
int vitesseMax = 5000;

Solution 2 : forcer le calcul à se faire en long :
Remplacer

long steps = toursTorsade * 800;

par

long steps = (long)toursTorsade * (long)800;

NB : il faut faire la même modif pour
 

long steps = toursBobine * 800;


EDIT : 
@Mike : je ne sais pas si la librairie limite, mais en tout cas, tu as un dépassement de capacité (overflow) des int, qui ne font que 16 bits sur arduini


Dans le sujet : capteur de préssion

04 janvier 2026 - 08:48

Je suppose que quand tu dis que tu as acheté "un HX711", tu veux dire que tu as acheté un module basé sur un HX711, et pas juste un HX711 (qui est un circuit intégré)?

Si oui, sans une datasheet du capteur ET du module HX711 (ou son schéma électrique), il n'est pas possible de garantir leur interopérabilité, même si elle me semble probable. De même, on ne pourra pas calculer une conversion "exacte" entre la valeur lue et la pression, ni estimer la précision. En revanche, si tu arrives à lire la valeur pour quelques poids (je te conseilles vivement de rajouter 0kg à ta liste, et éventuellement 75kg), alors on peut faire une courbe d'interpolation, qui devrait de donner des résultats "pas trop mauvais".