News, FR

Oneshot, Multishot, Dshot : tir groupé


J’ai enfin un peu de temps pour m’adonner à la rédaction de mes articles préférés : les sujets plus techniques. Aujourd’hui, je vais vous expliquer comment un ESC communique avec un moteur. Ce faisant, vous comprendrez la différence entre le PWM de l’ancien temps, ( le Oneshot125, le multishot ) et le Dshot. Car bien que ces notions soient au programme des études d’electronique, elles sont parfaitement compréhensibles et constituent un socle de base. Mais surtout, cela va vous permettre de choisir entre les deux protocoles du moment : le multishot et le Dshot

Ce qui se conçoit clairement, s’énonce clairement. Et les mots pour le dire arrivent aisément.”, nous dit Nicolas Boileau, un esthéticien de la littérature. Merci Nicolas ! Puisque tu es si malin, explique nous le traitement du signal ! 

On l’entend plus l’esthéticien ! Il m’a donc fallu intégrer le concept de rapport cyclique afin de vous l’expliquer. Mais cela n’est pas suffisant puisque tout comme le PPM et le Sbus, le Multishot et le Dshot sont respectivement analogiques et numériques. Il faudra donc que nous abordions la différence entre les deux. Mais rassurez-vous, je vais aller au plus simple. Voici le programme, on va bien s’amuser. Ouaiche man ! 

  1. C’est le quoi le PWM ? Oneshot et Multishot
  2. Pourquoi le numérique est préférable ( Dshot ) ? 

Sens unique

Attention ! Messieurs les pinailleurs, j’ai volontairement omis ou remplacé certains termes. 

Afficher l'image d'origineLa problématique entre le PWM ( Oneshot, multishot ) et le Dshot est la même que celle du PPM et du Sbus. En disant cela, je réduis volontairement le langage numérique à un signal ne fonctionnant que dans un sens. Alors que c’est faux. Mais peu importe car si on va par là, on peut obtenir un signal bilatéral avec de l’analogique aussi. Peu importe, considérons le PWM et le numérique comme des signaux permettant d’envoyer des ordres dans un seul sens : de l’ESC au moteur. Oui plutôt de la carte de vol à l’ESC.

Mais pour envoyer ces ordres, il faut trouver une langue commune entre la carte de vol, l’ESC et le moteur ( qui lui agira comme un muscle et n’a donc pas besoin de parler ). 

Un bon dessin peut aider, voici l’image que j’avais utilisée pour illustrer la différence entre le langage analogique et le numérique : 

unspecified

Petit problème d’incompréhension !

Il est temps de vous expliquer ce dessin. 

C’est quoi le PWM ? 

Qu’il s’agisse du Oneshot ou du Multishot, il s’agit toujours de PWM. Disons que le PWM est la langue française. Or, une langue est composée de mots ( pas vraiment en réalité mais bon, on est pas dans un cours de linguistique ). En PWM les mots changent de sens selon leurs longueurs ou plus précisément selon la longueur de leurs syllabes. Et ils sont tous bisyllabiques ( deux syllabes, quoi ). Je m’explique : 

Un mot en PWM, c’est une largeur d’impulsion ou une période, pour simplifier. C’est à dire du temps à très petite échelle. Disons pour clarifier les choses qu’un mot dure 100 ms. Dans ces 100 ms, on trouve les deux syllabes dont je vous parlais : 

sans-titre

Ce mot a un sens défini par la longueur de ses syllabes. Elles expriment un rapport cyclique ( il se répète ). Et se rapport est défini par l’état du signal. Le sans-titre-pngzryghPWM est effectivement un signal que l’on trouve sous deux états 

  1. l’état haut( 5 v )
  2. l’état bas ( 0 v )

Sur une période de 100 ms, on a le signal à son état bas ( 0 v ) pendant 30 ms et à son état haut ( 5 v ) pendant 70 ms. On peut exprimer ces deux périodes grâce à un pourcentage par exemple. Ici, 70 %. Et comment a t-on l’habitude de parler de nos gaz ? 

Un mot = un pourcentage de gaz

gtbhChaque mot, selon le rapport entre l’état haut et l’état bas du signal, est donc une information. C’est la base du dialogue entre la carte et l’ESC. J’ai choisi l’exemple de 100 ms pour son côté pratique mais en réalité les mots peuvent durer plus ou moins longtemps. Ces mots sont bien sur répétés très rapidement. Heureusement, car s’il duraient par exemple 1 seconde, vous ne pourriez faire varier vos gaz que toutes les secondes. Ce qui nous amène à la notion de fréquence de rafraîchissement. C’est à dire en vulgarisant, à la vitesse à laquelle les mots sont prononcés. Ainsi qu’à leur durée. 

le timer

capture

conv externe

Pour mesurer le temps, il faut un chronomètre. Un ESC est composé de micro contrôleurs et le timer y est généralement inclus. Mais il peut être externe afin de soulager le processeur ( ou micro contrôleur ). Cette tâche est primordiale puisque sans mesure du temps, ou mesure des périodes, le PWM est illisible. 

Un timer est un registre à l’intérieur du microcontrôleur qui s’incrémente (ou se décrémente) chaque fois qu’il reçoit une impulsion d’un signal d’horloge. Ce signal d’horloge peut être propre au microcontrôleur ou bien extérieur à celui-ci. Un timer est donc un compteur capable de compter le temps qui s’écoule, d’où son nom anglais de timer counter.

Source : Locoduino

OneShot 125, Oneshot 42, Multishot

Si on reprend l’exemple d’une période durant une seconde, vous ne pourriez pas changer de régime moteur plus d’une fois par seconde. Avec un tel taux de rafraîchissement il faudrait donc deux secondes pour passer de zéro à 100 % de gaz ( en passant par 50%). Imaginez une course ainsi ! Ce ne serait pas super amusant.

A contrario, plus les périodes sont courtes et nombreuses, plus la résolution sera élevée et la réponse des gaz rapide et réactive. Le Oneshot 125 correspond à des largeurs d’impulsion de 125 us à 250 us. Le OneShot 42 à 42-84 us. Et le MultiShot à 5-25 us.

Ce n’est pas plus compliqué que ça. Plus courte est la période, plus riche sera le signal en un temps donné. Et plus smooth sera le quad. Mais attention, n’importe quel ESC ne peut pas utiliser une période de 5 us. Il faut que le processeur soit suffisamment puissant et que son taux de rafraîchissement soit assez élevé.  

Atmel, Silabs, barbecue

nbvc

racerstar 30 A

iuytrNous avons vu la puissance des processeurs d’ESC augmenter proportionnellement au rétrécissement des périodes. Du F330 au F390 jusqu’aux actuels BB1 ( BarBecue 1 ? ). Pardon pour cette blague totalement naze 32. 

Il faut effectivement beaucoup de puissance pour gérer de si courts et donc si nombreux ordres envoyés. Il existe de plus des facteurs limitants comme l’impédance des câbles et d’autres contraintes liées à la nature du PWM. Un taux d’erreur est également imputable.

En revanche, une fois le PWM analogique acquis par la carte de vol, il reste à le convertir en un langage compréhensible par elle. Et c’est le binaire qui règne en maître. Une autre partie du processeur est donc dédiée à la conversion analogique / numérique. C’est justement ici qu’on ” perd du temps “. Et de la puissance de traitement. 

Le convertisseur analogique numérique (ADC) transforme une valeur de tension analogique ( ou une largeur d’impulsion ) en une valeur numérique. Le niveau de tension autorisé en entrée de l’ADC d’un micro-contrôleur est entre 0 et 5.5V.

Source : Roboticlab

Afficher l'image d'origineVous avez désormais compris la différence entre le Oneshot et le Multishot. Ce dernier est plus rapide et d’une plus grande richesse. Puisqu’on arrive à une résolution de 2048, quatre fois meilleure que BLHeli classique. 

Tout est mieux  avec le multishot : 

  • moins de bruit
  • plus de souplesse
  • plus de précision

Il reste à découvrir ce qu’est le numérique et à voir s’il améliore encore davantage les choses. Et comment l’information est transmise. C’est ici qu’on aborde

le Dshot

Dire que le Dshot est le pendant du Sbus est à la fois vrai et faux. Mais considérons que c’est exact. Car ces deux protocoles ne nécessitent

porcs en série

porcs en série

pas de conversion analogique / numérique. D’ailleurs, si on ne connecte pas un récepteur Sbus au même endroit qu’un récepteur PPM, ce n’est pas un hasard. On branche le Sbus sur un port série prévu pour la communication numérique. 

 Car cela va vous étonner mais en lui même, le multishot est un peu plus rapide que le Dshot. De très peu. Mais le Dshot n’a pas à être traduit, il est donc largement préférable. Tâchons d’expliquer comment fonctionne le signal numérique le plus standard : le RS232

Il s’agit également d’un signal et de son état. Mais il est décomposé dans des séries de 8 bytes ou plus. Ce qui permet bien plus de possibilités qu’un rapport cyclique binaire. 

Pour établir une communication effective via RS-232 (…) en pratique on utilise souvent des UART qui découpent le flux d’un caractère en trames ainsi constituées :

  • 1 bit de départ 
  • 7 à 8 bit de données 
  • 1 bit de parité optionnel 
  • 1 ou 2 bits d’arrêt.

Nous entrons dans un domaine compliqué mais voici les avantages du Dshot. Tout d’abord, il intègre un CRC ( cyclic redundancy check ). C’est à dire que le signal est vérifié et que les erreurs sont théoriquement impossibles. Le CRC est une opération visant à contrôler l’exactitude grâce à une opération mathématique si je ne dis pas de bêtises. Une partie des 8 bytes lui est réservée.

  • 11 bits pour la valeur des gaz ( résolution de 2048 ),
  • 1 bit pour la télémétrie
  • 4 bit pour le CRC 

Les ESC utilisent 16 bytes pour communiquer. Voici un schéma expliquant le RS 232, en substance. 

Les avantages du langage numérique

Il est inutile d’entrer davantage dans le détail. Sachez simplement que le Dshot est un signal numérique. La carte n’a donc plus besoin de convertisseur, si je ne dis pas bêtise. On lui parle directement dans sa langue. Dans le tableau ci dessous, vous verrez qu’il y a plusieurs étapes dans les appareils électroniques depuis le captage des données par le récepteur radio, le travail des MEM ( gyros, accéleros ), la conversion, le traitement et dans notre cas les commandes. Économiser une étape, c’est du temps de gagner.  

Afficher l'image d'origine

Pour vous donner une idée du traitement global

Mais

Afficher l'image d'origineIl ne faut pas rêver. Nous parlons ici de microsecondes. L’être humain n’est pas capable d’apprécier une si petite différence. En revanche, le multishot et le Dshot possèdent surtout l’avantage de proposer une meilleure résolution et le véritable gain est là selon moi. 

Re mais

Si on prends une machine à l’ancienne, à base de PWM pour les voies du RX, sans Oneshot 125, sous une ancienne version de Cleanflight, un ESC âgé et son vieux taux de rafraîchissement tout pourri, on ressentira pourtant une grosse différence avec une machine actuelle. 

Car si on ajoute toutes les améliorations apportées par le sbus, Betaflight, le Dshot ou le multishot et enfin le Damped light ( frein actif ), on arrive à une réactivité largement perceptible par les êtres imparfaits que nous sommes. Ceci est du autant aux progrès du matériel que de la programmation et des PID. Sachez à ce propos que le multishot a une répercussion sur ces derniers. Votre configurateur devrait gérer les modifications sans votre intervention.

Multishot, ce qu’il faut savoir avant d’installer

capture-jpgsrtuyIl est possible d’installer le multishot sur un ESC classique mais il y a des prérequis obligatoires. Tout d’abord un ESC sous BlHeliS est une obligation. Il ne faut pas raisonner en termes de processeur mais de firmware. Il y a aussi des infos à entrer dans le CLI de votre logiciel. Enfin, tous les ESC ne sont pas compatibles. Et une carte de vol F3 au minimum est requise. 

Je vous déconseille de faire ça à moins de maîtriser les réglages pargaitement. Remplacez vos ESC par un modèle avec le multishot en natif. Activez-le dans Betaflight. C’est mieux car le looptime, la fréquence des ESc et les PID sont un ensemble harmonieux et les problèmes de désynchronisation peuvent vite arriver. Si vous envoyez plein d’ordres à votre ESC mais que le reste des réglages est mal fait, cela revient à répéter le même ordre mille fois à votre moteur ( j’avais une copine comme ça, mal réglée ). 

La case PWM speed separated from PID speed est éloquente ( à l’image ). 

Et le dshot ? 

Depuis hier ou presque, le Dshot n’est plus une version alpha ni beta. Ceci dit, le couple idéal selon les gars de Raceflight est une FC puissante avec des contrôleurs dernière génération. Des ESC Dshot vont vite sortir et il est mieux d’attendre que d’installer ce firmware. Surtout que selon les développeurs de Raceflight, betaflight n’est pas forcément compatible avec toutes les cartes et le Dshot ( cartes F1 impossible ). Un processeur BB2 est fortement recommandé dans tous les cas. Vous trouverez une liste et des infos ici et surtout . Vous verrez que la liste de bugs est impressionnante. Voici une astuce pour voir si le firmware que vous avez chargé est compatible avec le Dshot

etuk

Tapez get pwm dans le CLI, Dshot doit apparaître. Sinon c’est pas bon.

Conclusion

Vous savez maintenant ce qu’est le multishot. C’est simplement un signal analogique plus rapide et plus riche que le Oneshot. Tout comme le Sbus est plus rapide que le PPM, le dshot est plus rapide que le multishot. Mais attention, c’est le temps de traitement économisé qui permet au Dshot d’emporter la palme de la rapidité. Vous ne me croyez pas ? Voici la preuve : 

dshot-chart

Vous avez bien lu cet article ? Alors vous connaîtrez les différences entre les 3 Dshot

  • Dshot 150
  • Dshot 300
  • Dshot 600

Un dernier conseil 

Si vous devez choisir entre ces deux protocoles, optez pour le multishot. Bien que le Dshot soit extra et qu’il ne nécessite plus de synchroniser ses ESC, le multishot est désormais bien en place. Il est moins gourmand en ressources et le matériel actuel y est adapté. N’oubliez pas de cocher multishot dans betaflight, de bien synchroniser vos ESC et d’ajouter 10 à la moyenne des valeurs de départ de vos moteurs. 

Lecture sur le sujet :

tuto en video

demo par Danny Pasha


17 comments on “Oneshot, Multishot, Dshot : tir groupé

  1. Pingback: Super BL Heli 32 ! Plus de puissance, de nouvelles fonctions. Et les explications qui vont avec. - FPV PASSION

  2. flykiller22

    Pour pinailler, un byte est la traduction d’un octet en anglais, donc 8 bits (bit est à la fois un mot anglais et français), m’enfin c’est juste pour être ennuyeux. Pardon, bon article !

    • nico

      Eh non! En réalité, la traduction française de “byte” est “multiplet”, et celle d'”octet” est… “octet”. Un byte ne fait pas nécessairement 8 bits, et dans le monde de l’informatique embarquée ou enfouie c’est même rarement le cas (exemple sur certaines architectures Texas, le byte fait 16 bits). Mais généralement pour le grand public, et leurs x86, un byte fera 8 bits mais ce n’est certainement pas par définition 😉
      Il existe même des architecture exotique où le byte fait 7 ou 9 bits.

  3. A noter que DShot a été développé à initiative des développeurs de Kiss et que ça tourne à la perfection en DSho600 sur un combo Kiss FC + Kiss ESC avec une CPU F3 sous-exploitée. C’est une toute autre histoire avec les autres cartes et autres ESC…

  4. Romain

    Salut,
    Je suis sous raceflight et si je tape get pwm dans le cli comme toi,
    Je n’ai pas du tout ce que tu as indiqué.

    Jai:
    Motor pwm rate 32000
    Servo pwm rate 50

    Et c’est tout.

Laisser un commentaire