Aller au contenu


Sandro

Inscrit(e) (le) 30 déc. 2013
Déconnecté Dernière activité févr. 06 2026 08:50
*****

Messages que j'ai postés

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".


Dans le sujet : capteur de préssion

31 décembre 2025 - 12:32

Bon, c'est un début ... de telles tables sont fréquentes dans un datasheet, même si d'habitude il y a plus d'infos et d'explications

- capacity : 0-500kg : ça définit la gamme de mesure de ton capteur : de 0 à 500kg. À noter que du coup, ça définit F.S. = full-scale = plage de mesure = 500 - 0 = 500kg
- rated output : 1.0+-20%mV/V : pour le coup, je trouve que ce n'est pas clair. 1.0+-20% semble vouloir dire entre 0.8 et 1.2mV/V. Les mV sont la tension de sortie. Mais je ne suis pas sur ce que sont les V. Est-ce la tension d'alimentation? Et si oui, est-ce que ça veut dire que 1kg donne 0.8 à 1.2mV de tension de sortie? Ou que 500kg donnent 0.8 à 1.2mV de tension de sortie? Ou autre chose?
- zero balance : +-5%FS : ça veut dire qu'à 0kg, tu as une erreur de mesure d'au plus 5% * FS, soit 0.05*500kg = 25kg d'erreur max quand tu n'as pas de pression (mesure du zéro). La bonne nouvelle, c'est que tu peux éliminer cette erreur en qualibrant ton capteur (tu mesures une fois pour toute la valeur à 0kg, et ensuite tu la soustrait à tes mesures. Ce n'est problématique que si tu ne peux pas qualibrer
- non-linearity : 1%FS : en plus de ça, tu as une erreur de max 1%*FS=0.01*500kg = 5kg qui dépend de la valeur que tu mesure (c'est potentiellement calibrable si tu as un deuxième appareil de mesure beaucoup plus précis, et que tu es prêt à prendre plein de mesures à toutes les pressions possibles, mais dans la pratique, ce ne sera probablement pas corrigé)
- hysteresis : 0.5%FS : la capteur a un effet mémoire, qui peut aller jusqu'à 0.5%FS = 2.5kg (ie l'erreur si tu viens de mesurer un poids beaucoup plus ou moins important)
- repeatability : 0.5%FS : si tu mesures plusieurs fois la même pression (toutes conditions égales), alors le résultat peut varier de 0.5%FS=2.5kg (nb : pas clair quels autres effets sont inclus dedans)
- creep (30min) : 0.1%FS : au cours du temps, la valeur peut changer légèrement alors que rien ne change. En 30 minutes, elle dévie au plus de 0.1%FS= 0.5kg
- temp effect on Output : 0.2%FS/10°C. Output est mal définit, mais tu as des variabilités de tension mesurée de jusqu'à 0.2%FS=1kg par tranche de 10°C d'écart de température. Cette partie de l'erreur semble concerner uniquement la pente, et pas l'offset
- temp effect on Zero : 0.2%FS : idem, mais pour le zéro. S'ajoute à l'erreur précédente. NB : si tu travailles à une température fixe, alors c'est pas dérangeant, tu calibre cette erreur en même temps que celle du zéro. Autrement, c'est une erreur supplémentaire (sauf si tu es prêt à faire plusieurs calibrations à plusieurs températures différentes, et à ajouter un capteur de température)
-response fréquency : 10kHz : bande passante de 10kHz, ou de manière plus pratique, en 0.1ms, tu atteins 2/3 d'un changement de pression en sortie
- Material : Sainless steel : le capteur est en inox
- Impedance : 350/500/1000 ohms : impédence (= résistance dans notre cas (très probablement)) de 350/500/1000 ohms. Je ne suis pas sûr à quoi correspond cette triple valeur, il manque le schéma explicatif
- Insulation : >=5000Mohms/100VDC : l'isolation (entre quoi? j'imagine entre les fils et la partie en inox) est d'au moins 5Gohms (très bon), et résiste à au moins 100V en tension continue (si tu as besoin d'isolation, alors ça fait pas beaucoup)
- Service voltage: 5-10V : tension d'utilisation : 5 à 10V (je suppose entre Exc- et Exc+)
- operating temp range : -20-80°C : le capteur peut être utilisé de -20°C à +80°C
- safe overload : 120%. Tu peux en toute sécurité avoir une surcharge de 120% (la valeur lue sera en dehors des spécifications, mais tu n’endommages pas le capteur). Il n'est pas tout à fait clair si c'est une surcharge de 120% (ie pression max = 500kg * (100% + 120%)=1100kg), ou une charge totale de 120% (pression max = 500kg * 120% = 600kg)
- maximum overload : même principe, mais cette fois si on parles probablement juste d'éviter que le capteur casse. Par contre, il est possible que ses performances soient affectées définitivement
- cable specifications : O2x2m : cable de 2mm (probablement) de diamètre et 2m de long
- cable utlimate pull : 10kg : je suppose que ça veut dire rupture complète du cable à 10kg (possibilité de dommages avant)
- TEDS : aucune idée de ce que ça veut dire.