<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Prototypage rapide de commande</title><link>https://lubin.kerhuel.eu/fr/</link><atom:link href="https://lubin.kerhuel.eu/fr/index.xml" rel="self" type="application/rss+xml"/><description>Prototypage rapide de commande</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Sat, 01 Aug 2026 00:00:00 +0000</lastBuildDate><image><url>https://lubin.kerhuel.eu/media/icon_hu_854b44b36e8700d6.png</url><title>Prototypage rapide de commande</title><link>https://lubin.kerhuel.eu/fr/</link></image><item><title>bloc récepteur &amp; télémétrie : S.BUS, Smart Port, F.Port</title><link>https://lubin.kerhuel.eu/fr/uxv/block-receiver-telemetry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/uxv/block-receiver-telemetry/</guid><description>&lt;!-- Enable Photo Swipe + gallery features --&gt;
&lt;p&gt;Trois blocs ajoutent la prise en charge de trois protocoles présents sur les récepteurs. Un récepteur traditionnel à sortie PWM se traite directement avec le périphérique Input Capture ou Change Notification : il n&amp;rsquo;exige pas de bloc spécifique.&lt;/p&gt;
&lt;h2 id="sbus-smart-port-et-fport"&gt;S.BUS, Smart Port et F.Port&lt;/h2&gt;
&lt;p&gt;S.BUS, Smart Port (également appelé S.Port) et F.Port sont trois protocoles disponibles sur les récepteurs RC FrSky et compatibles. Les trois protocoles reposent sur le périphérique UART avec des réglages différents. Chacun remplit un rôle propre :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;S.BUS&lt;/strong&gt; est un protocole unidirectionnel du récepteur vers un équipement externe, qui fournit les valeurs des canaux et le RSSI&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; (c.-à-d. la qualité de la liaison radio).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smart Port (S.Port)&lt;/strong&gt; est un protocole bidirectionnel. Le récepteur interroge (ping) les différents capteurs connectés et acquiert les mesures à envoyer par télémétrie à la radiocommande.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;F.Port&lt;/strong&gt; est un protocole bidirectionnel dans lequel le récepteur communique les valeurs des canaux et le RSSI, et obtient les valeurs des capteurs connectés pour les envoyer par télémétrie à la radiocommande.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les deux protocoles bidirectionnels &lt;em&gt;Smart Port&lt;/em&gt; et &lt;em&gt;F.Port&lt;/em&gt; utilisent un seul fil pour Tx et Rx. La communication s&amp;rsquo;effectue en mode half duplex (semi-duplex).&lt;/p&gt;
&lt;p&gt;Les récepteurs FrSky existent en deux variantes (modèles livrés avec le Smart Port : x4r, rx4r, x6r, s6r, rx6r, x8r, s8r, xsr, xsr-m, r-xsr &amp;hellip;) :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;S.Bus &amp;amp; Smart Port&lt;/strong&gt; (d&amp;rsquo;origine), disponibles sur deux ports à trois broches distincts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;F.Port&lt;/strong&gt; disponible sur un unique port à trois broches, qui remplace le Smart Port&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Un récepteur d&amp;rsquo;origine possède deux ports : S.BUS et Smart Port. Le passage à un F.Port unique s&amp;rsquo;effectue en installant un micrologiciel alternatif fourni par &lt;a href="https://www.frsky-rc.com/" target="_blank" rel="noopener"&gt;FrSky&lt;/a&gt;. Ce micrologiciel supprime le port S.BUS et convertit le Smart Port en F.Port.&lt;/p&gt;
&lt;h3 id="réglages-uart-et-mise-en-œuvre"&gt;Réglages UART et mise en œuvre&lt;/h3&gt;
&lt;p&gt;S.BUS, S.Port et F.Port ont des réglages UART différents, définis dans le tableau :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th style="text-align: center"&gt;Débit (baud)&lt;/th&gt;
&lt;th style="text-align: center"&gt;Duplex&lt;/th&gt;
&lt;th style="text-align: center"&gt;Logique&lt;/th&gt;
&lt;th style="text-align: center"&gt;Parité&lt;/th&gt;
&lt;th style="text-align: center"&gt;Bits de stop&lt;/th&gt;
&lt;th style="text-align: center"&gt;Contrôle de flux&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;S.BUS&lt;/td&gt;
&lt;td style="text-align: center"&gt;100000&lt;/td&gt;
&lt;td style="text-align: center"&gt;Rx seul&lt;/td&gt;
&lt;td style="text-align: center"&gt;3,3V inversée&lt;/td&gt;
&lt;td style="text-align: center"&gt;paire&lt;/td&gt;
&lt;td style="text-align: center"&gt;2&lt;/td&gt;
&lt;td style="text-align: center"&gt;non&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart Port&lt;/td&gt;
&lt;td style="text-align: center"&gt;57600&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;strong&gt;Half&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;3,3V inversée&lt;/td&gt;
&lt;td style="text-align: center"&gt;aucune&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;non&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F.Port&lt;/td&gt;
&lt;td style="text-align: center"&gt;115200&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;strong&gt;Half&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;3,3V inversée&lt;/td&gt;
&lt;td style="text-align: center"&gt;aucune&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;non&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;La mise en œuvre sur dsPIC avec le bloc MPLAB pour Simulink a donné des résultats satisfaisants avec les réglages ci-dessous, définis dans le bloc UART Configuration :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th style="text-align: center"&gt;Mise en œuvre&lt;/th&gt;
&lt;th style="text-align: center"&gt;Taille du tampon&lt;/th&gt;
&lt;th style="text-align: center"&gt;Priorité d&amp;rsquo;interruption&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;S.BUS Rx&lt;/td&gt;
&lt;td style="text-align: center"&gt;Circular Buffer&lt;/td&gt;
&lt;td style="text-align: center"&gt;64&lt;/td&gt;
&lt;td style="text-align: center"&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S.BUS Tx&lt;/td&gt;
&lt;td style="text-align: center"&gt;None&lt;/td&gt;
&lt;td style="text-align: center"&gt;-&lt;/td&gt;
&lt;td style="text-align: center"&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart Port Rx&lt;/td&gt;
&lt;td style="text-align: center"&gt;Circular Buffer&lt;/td&gt;
&lt;td style="text-align: center"&gt;32&lt;/td&gt;
&lt;td style="text-align: center"&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smart Port Tx&lt;/td&gt;
&lt;td style="text-align: center"&gt;Circular Buffer&lt;/td&gt;
&lt;td style="text-align: center"&gt;32&lt;/td&gt;
&lt;td style="text-align: center"&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F.Port Rx&lt;/td&gt;
&lt;td style="text-align: center"&gt;Circular Buffer&lt;/td&gt;
&lt;td style="text-align: center"&gt;32&lt;/td&gt;
&lt;td style="text-align: center"&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F.Port Tx&lt;/td&gt;
&lt;td style="text-align: center"&gt;Circular Buffer&lt;/td&gt;
&lt;td style="text-align: center"&gt;64&lt;/td&gt;
&lt;td style="text-align: center"&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="connexion-des-blocs-simulink-sbus-smart-port-et-fport-à-luart-rx--tx"&gt;Connexion des blocs Simulink S.BUS, Smart Port et F.Port à l&amp;rsquo;UART Rx &amp;amp; Tx&lt;/h3&gt;
&lt;p&gt;Les blocs S.Bus, F.Port et Smart Port xxx prennent le flux de sortie du récepteur pour en extraire les valeurs de commande envoyées par la radiocommande. Le flux d&amp;rsquo;entrée est un vecteur dont la longueur est définie par l&amp;rsquo;utilisateur. Toutes les valeurs du vecteur n&amp;rsquo;ont pas à être renseignées. Le bloc utilise le scalaire N, longueur d&amp;rsquo;entrée, pour savoir combien d&amp;rsquo;octets du vecteur d&amp;rsquo;entrée sont des valeurs reçues et doivent être traités. Le vecteur d&amp;rsquo;entrée du bloc peut recevoir des paquets de données partiels. Le paquet complet du récepteur peut être découpé dans le temps et envoyé au fur et à mesure que le MCU reçoit les valeurs ; ces blocs reconstituent le paquet avant de le traiter.&lt;/p&gt;
&lt;h2 id="protocole-sbus"&gt;Protocole S.BUS&lt;/h2&gt;
&lt;p&gt;Configuration de l&amp;rsquo;UART :&lt;/p&gt;
&lt;p&gt;Seul le canal Rx est utilisé, avec les paramètres suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;100 000 bauds/s&lt;/li&gt;
&lt;li&gt;Logique Rx inversée (l&amp;rsquo;état de repos est le niveau bas), 3,3V&lt;/li&gt;
&lt;li&gt;Parité paire&lt;/li&gt;
&lt;li&gt;2 bits de stop&lt;/li&gt;
&lt;li&gt;Pas de contrôle de flux&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rx utilise un Circular Buffer de 64 octets, avec une priorité d&amp;rsquo;interruption de 5.&lt;/p&gt;
&lt;p&gt;Le bloc UART Rx est échantillonné à 1kHz (1ms).
La taille du vecteur de sortie, réglée sur « inherited via internal rule », prend la valeur 10 (pas plus de 10 octets ne peuvent être reçus en 1 ms à 100000 bauds/s avec deux bits de stop).&lt;/p&gt;
&lt;p&gt;Dans l&amp;rsquo;interface graphique du bloc S.BUS, on sélectionne les sorties à décoder et la mise à l&amp;rsquo;échelle de chaque canal décodé.&lt;/p&gt;
&lt;div class="box" style="max-width:40%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/uxv-block-sbus-gui-control-frame.png" loading="lazy" alt="Ce bloc Simulink décode le flux d&amp;rsquo;entrée S.BUS. On choisit la mise à l&amp;rsquo;échelle de chaque canal RC de sortie."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/uxv-block-sbus-gui-control-frame.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Interface utilisateur du bloc Simulink S.BUS&lt;/h4&gt;
&lt;p&gt;Ce bloc Simulink décode le flux d&amp;rsquo;entrée S.BUS. On choisit la mise à l&amp;rsquo;échelle de chaque canal RC de sortie.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:100%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/uxv-block-sbus-scheme-uart-connection.png" loading="lazy" alt="Schéma de décodage du S.BUS pour un dsPIC"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/uxv-block-sbus-scheme-uart-connection.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Schéma du bloc UART Rx connecté au bloc S.BUS.&lt;/h4&gt;
&lt;p&gt;Schéma de décodage du S.BUS pour un dsPIC&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:100%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/uxv-block-sbus-sport-channels-scaling.png" loading="lazy" alt="Les valeurs brutes du S.BUS ne sont ni centrées ni mises à l&amp;rsquo;échelle par une puissance de 2."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/uxv-block-sbus-sport-channels-scaling.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Schéma de centrage et de mise à l&amp;rsquo;échelle des canaux S.BUS en sortie dans [-1000 1000]&lt;/h4&gt;
&lt;p&gt;Les valeurs brutes du S.BUS ne sont ni centrées ni mises à l&amp;rsquo;échelle par une puissance de 2.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h2 id="protocole-smart-port"&gt;Protocole Smart Port&lt;/h2&gt;
&lt;p&gt;Le Smart Port (S.Port) utilise un UART dont les broches Rx et Tx sont affectées à la même broche, en logique inversée (1 est le niveau haut). Un seul fil est utilisé, en communication half duplex.&lt;/p&gt;
&lt;p&gt;Configuration de l&amp;rsquo;UART :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;57600 bauds/s&lt;/li&gt;
&lt;li&gt;Half duplex&lt;/li&gt;
&lt;li&gt;Logique Rx et Tx inversée (l&amp;rsquo;état de repos est le niveau bas), 3,3V&lt;/li&gt;
&lt;li&gt;Pas de parité&lt;/li&gt;
&lt;li&gt;1 bit de stop&lt;/li&gt;
&lt;li&gt;Pas de contrôle de flux&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mise en œuvre :&lt;/p&gt;
&lt;p&gt;Rx utilise un Circular Buffer de 32 octets, avec une priorité d&amp;rsquo;interruption de 5.&lt;br&gt;
Tx utilise un Circular Buffer de 32 octets, avec une priorité d&amp;rsquo;interruption de 6.&lt;/p&gt;
&lt;p&gt;Le bloc Smart Port décode les entrées provenant du récepteur et des autres capteurs connectés au bus à un seul fil.&lt;/p&gt;
&lt;p&gt;Si une trame de capteur est reçue, elle est décodée et les valeurs sont disponibles en sortie du bloc.&lt;/p&gt;
&lt;p&gt;Lorsqu&amp;rsquo;une requête du récepteur pour un identifiant de capteur est reçue et que cet identifiant est défini dans l&amp;rsquo;un des blocs Sensor du modèle, le bloc Smart Port génère la trame du capteur avec les dernières valeurs définies dans le bloc Sensor.
Le message est envoyé par un bloc UART Tx.&lt;/p&gt;
&lt;h2 id="protocole-fport"&gt;Protocole F.Port&lt;/h2&gt;
&lt;div class="box" style="max-width:40%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/uxv-block-fport-gui-control-frame.png" loading="lazy" /&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/uxv-block-fport-gui-control-frame.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/uxv-block-fport-scheme-uart-connection.png" loading="lazy" /&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/uxv-block-fport-scheme-uart-connection.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="gallery caption-position-bottom caption-effect-slide hover-effect-zoom hover-transition" itemscope itemtype="http://schema.org/ImageGallery"&gt;
&lt;div class="box" &gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img" style="background-image: url('/img/uxv-block-rc-pwm-gui.png');"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/uxv-block-rc-pwm-gui.png" loading="lazy" alt="caption"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/uxv-block-rc-pwm-gui.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Title&lt;/h4&gt;
&lt;p&gt;caption&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" &gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img" style="background-image: url('/img/uxv-block-rc-pwm-input-scaling.png');"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/uxv-block-rc-pwm-input-scaling.png" loading="lazy" alt="caption"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/uxv-block-rc-pwm-input-scaling.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;title&lt;/h4&gt;
&lt;p&gt;caption&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Configuration de l&amp;rsquo;UART :
Les canaux Rx et Tx sont utilisés. Ils sont affectés à la même broche. L&amp;rsquo;UART est configuré en half duplex.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;115200 bauds/s&lt;/li&gt;
&lt;li&gt;Half duplex&lt;/li&gt;
&lt;li&gt;Logique Rx et Tx inversée (l&amp;rsquo;état de repos est le niveau bas), 3,3V&lt;/li&gt;
&lt;li&gt;Pas de parité&lt;/li&gt;
&lt;li&gt;1 bit de stop&lt;/li&gt;
&lt;li&gt;Pas de contrôle de flux&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rx utilise un Circular Buffer de 32 octets, avec une priorité d&amp;rsquo;interruption de 5.&lt;/p&gt;
&lt;p&gt;Tx utilise un Circular Buffer de 64 octets, avec une priorité d&amp;rsquo;interruption de 5.&lt;/p&gt;
&lt;h3 id="ressources"&gt;Ressources&lt;/h3&gt;
&lt;p&gt;Les protocoles FrSky ne sont pas toujours documentés. Les sites web suivants ont contribué à la compréhension des différents protocoles :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.robotmaker.eu/home/quadcopters-360-degree-proximity-sensing-project-overview/frsky-s-port-interface" target="_blank" rel="noopener"&gt;Smart Port sur ROBOTmaker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.google.com/archive/p/telemetry-convert/wikis/FrSkySPortProtocol.wiki" target="_blank" rel="noopener"&gt;Smart Port, projet telemetry-convert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yaapu/FrskyTelemetryScript/wiki/FrSky-SPort-protocol-specs" target="_blank" rel="noopener"&gt;Smart Port, TelemetryScript d&amp;rsquo;Allesandro Apostoli&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bolderflight/SBUS" target="_blank" rel="noopener"&gt;S.BUS, bibliothèque Arduino&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/athertop/MavLink_FrSkySPort/wiki" target="_blank" rel="noopener"&gt;Smart Port, projet MavLink-FrSkySPort&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/betaflight/betaflight/tree/master/src/main/telemetry" target="_blank" rel="noopener"&gt;code source de Betaflight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ardupilot.org/copter/docs/common-frsky-passthrough.html" target="_blank" rel="noopener"&gt;projet ArduCopter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sbustelemetrysensors.blogspot.com/" target="_blank" rel="noopener"&gt;SBUS2, par Jerry Chapman&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Received Signal Strength Indicator (indicateur de puissance du signal reçu)&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>bloc Sensor</title><link>https://lubin.kerhuel.eu/fr/uxv/block-sensor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/uxv/block-sensor/</guid><description>&lt;!-- Enable Photo Swipe + gallery features --&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.css" integrity="sha384-yX+tSqQp3yF8BiTuLLOwNyaqtmZ9yFQT7IYg7U9YU9Dz/JDlh6JJQmNClCmvYl+b" crossorigin="anonymous"&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/default-skin/default-skin.min.css" integrity="sha384-R6P/wJIrxjHcm//YCjb0S6rRgebsNn3u6U4NxVI8R03iSPAR5CwPqoq1n6U/tjFE" crossorigin="anonymous"&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.js" integrity="sha384-jkeJ/ETDRD/P4Y3I3CQi1QIwrEJjR9GdAZV2/aqDwwgA5ldCNiExYJeBwKyQC/+q" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe-ui-default.min.js" integrity="sha384-HotcxRWS6/oszHPwknjGnd066fV8+ycnO5TXDcOscFWvTtaiCtEEv+9s5Qrn1iJD" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"&gt;
&lt;div class="pswp__bg"&gt;&lt;/div&gt;
&lt;div class="pswp__scroll-wrap"&gt;
&lt;div class="pswp__container"&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__ui pswp__ui--hidden"&gt;
&lt;div class="pswp__top-bar"&gt;
&lt;div class="pswp__counter"&gt;&lt;/div&gt;
&lt;button class="pswp__button pswp__button--close" title="Close (Esc)"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--share" title="Share"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--fs" title="Toggle fullscreen"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--zoom" title="Zoom in/out"&gt;&lt;/button&gt;
&lt;div class="pswp__preloader"&gt;
&lt;div class="pswp__preloader__icn"&gt;
&lt;div class="pswp__preloader__cut"&gt;
&lt;div class="pswp__preloader__donut"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"&gt;
&lt;div class="pswp__share-tooltip"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"&gt;
&lt;/button&gt;
&lt;button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"&gt;
&lt;/button&gt;
&lt;div class="pswp__caption"&gt;
&lt;div class="pswp__caption__center"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Le bloc ajoute un « paquet » capteur à transmettre à un récepteur par le Smart Port ou le F.Port. Le récepteur envoie le paquet de télémétrie à la radiocommande (RC). Le modèle Simulink doit par conséquent comporter soit un bloc Smart Port, soit un bloc F.Port.&lt;/p&gt;
&lt;p&gt;Chaque bloc Sensor déclare la référence du capteur, composée des deux paramètres PhysId et {Address+Offset}. La valeur du capteur est fournie par l&amp;rsquo;entrée du bloc sous la forme d&amp;rsquo;un tableau de 4 octets. Plusieurs instances du bloc Sensor peuvent être ajoutées dans un modèle. Deux instances peuvent avoir la même référence de capteur, ce qui convient à un capteur qui envoie plusieurs paquets de valeurs différentes (voir le capteur FrSky FVLSS ou GPS).&lt;/p&gt;
&lt;p&gt;Chaque instance du bloc ajoute un tampon de 4 octets qui stocke la valeur du capteur, mise à jour à l&amp;rsquo;exécution du bloc. Le temps d&amp;rsquo;échantillonnage du bloc définit la cadence de mise à jour du tampon interne.&lt;/p&gt;
&lt;p&gt;Le comportement diffère entre les protocoles Smart Port et F.Port :&lt;/p&gt;
&lt;h3 id="comportement-avec-le-smart-port"&gt;Comportement avec le Smart Port&lt;/h3&gt;
&lt;p&gt;Le récepteur interroge (ping) l&amp;rsquo;électronique connectée au Smart Port pour une référence de capteur donnée. Lorsqu&amp;rsquo;un capteur donné est interrogé, il doit répondre en fournissant ses 4 octets de valeur dans un délai de 3 ms.&lt;/p&gt;
&lt;p&gt;Si plusieurs instances du bloc Sensor utilisent la même référence de capteur (PhysId, Address+Offset), les paquets de données de chaque bloc sont envoyés les uns après les autres.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si un identifiant de capteur donné est interrogé deux fois sans que son bloc (aucun de ses blocs, s&amp;rsquo;il y en a plusieurs) n&amp;rsquo;ait été mis à jour entre-temps, le même contenu est renvoyé.&lt;/li&gt;
&lt;li&gt;Si un bloc Sensor est mis à jour alors que son contenu précédent n&amp;rsquo;a pas encore été envoyé, la mise à jour est sans effet et la nouvelle valeur est perdue.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="comportement-avec-le-fport"&gt;Comportement avec le F.Port&lt;/h3&gt;
&lt;p&gt;Le contrôleur unique connecté au F.Port envoie une valeur de capteur à chaque paquet de canaux RC reçu. Le capteur à envoyer dépend uniquement du contrôleur, qui peut envoyer un capteur quelconque.&lt;/p&gt;
&lt;p&gt;Chaque mise à jour d&amp;rsquo;un bloc Sensor ajoute le capteur dans une file FIFO de demandes d&amp;rsquo;envoi de capteurs.
Une seule demande par instance de bloc Sensor peut être présente dans cette FIFO.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si un bloc Sensor est mis à jour alors que sa valeur précédente n&amp;rsquo;a pas encore été envoyée, c&amp;rsquo;est-à-dire que sa demande d&amp;rsquo;envoi est toujours dans la FIFO, la mise à jour est sans effet et la nouvelle valeur est perdue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Contrairement au Smart Port, un capteur ne peut pas être envoyé deux fois sans avoir été mis à jour entre-temps, car le capteur est placé dans la FIFO des demandes d&amp;rsquo;envoi au moment de sa mise à jour.&lt;/p&gt;
&lt;p&gt;pour le capteur correspondant
La cadence de mise à jour du bloc est choisie par l&amp;rsquo;utilisateur final. dont la valeur sera envoyée au récepteur. Le récepteur envoie ensuite l&amp;rsquo;identifiant du capteur et les valeurs correspondantes à la radiocommande par télémétrie.&lt;/p&gt;
&lt;p&gt;La communication avec le récepteur peut utiliser soit le Smart Port, soit le F.Port.&lt;/p&gt;
&lt;p&gt;Le PhyId du capteur, l&amp;rsquo;APPID et la variante d&amp;rsquo;offset d&amp;rsquo;APPID sont définis dans le bloc.
Le champ PRIM doit être positionné à 0X10 pour un capteur. L&amp;rsquo;unité de la valeur du capteur est définie dans le bloc.
L&amp;rsquo;entrée du bloc est le codage sur 4 octets de la valeur du capteur.&lt;/p&gt;</description></item><item><title>Développer des applications de commande moteur avec MATLAB/Simulink</title><link>https://lubin.kerhuel.eu/fr/talk/2026-masters-motor-control-class/</link><pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/talk/2026-masters-motor-control-class/</guid><description/></item><item><title>Conception basée modèle : du laboratoire au déploiement embarqué</title><link>https://lubin.kerhuel.eu/fr/talk/2025-12-04-centrale-nantes-model-based-design/</link><pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/talk/2025-12-04-centrale-nantes-model-based-design/</guid><description/></item><item><title>Tutoriel sur la conception basée modèle</title><link>https://lubin.kerhuel.eu/fr/talk/2025-hilres-model-based-design-tutorial/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/talk/2025-hilres-model-based-design-tutorial/</guid><description/></item><item><title>Offline Real-Time High Frequency Data Logging Based Methodology for PMSM Observer Design</title><link>https://lubin.kerhuel.eu/fr/publication/2025-electrimacs-pmsm-observer/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/publication/2025-electrimacs-pmsm-observer/</guid><description/></item><item><title>Tutoriel sur la conception basée modèle</title><link>https://lubin.kerhuel.eu/fr/talk/2024-hilres-model-based-design-tutorial/</link><pubDate>Mon, 25 Nov 2024 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/talk/2024-hilres-model-based-design-tutorial/</guid><description/></item><item><title>Tutoriel sur la commande moteur : FOC, défluxage et observateurs sans capteur</title><link>https://lubin.kerhuel.eu/fr/talk/2024-icem-motor-control-tutorial/</link><pubDate>Sun, 01 Sep 2024 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/talk/2024-icem-motor-control-tutorial/</guid><description/></item><item><title>Méthodologie pour la conception d'observateurs basée sur l'enregistrement de données à hautes fréquences en temps réel</title><link>https://lubin.kerhuel.eu/fr/publication/2024-sagip-observateurs-pmsm/</link><pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/publication/2024-sagip-observateurs-pmsm/</guid><description/></item><item><title>On Chip Rapid Control Prototyping for DC motor</title><link>https://lubin.kerhuel.eu/fr/publication/2021-j3ea-rcp-dc-motor/</link><pubDate>Fri, 01 Jan 2021 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/publication/2021-j3ea-rcp-dc-motor/</guid><description/></item><item><title>Moteur de remplacement pour l'aile volante FPV Parrot Disco</title><link>https://lubin.kerhuel.eu/fr/post/parrot-disco-motor-replacement/</link><pubDate>Sun, 11 Oct 2020 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/post/parrot-disco-motor-replacement/</guid><description>&lt;!-- Enable Photo Swipe + gallery features --&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.css" integrity="sha384-yX+tSqQp3yF8BiTuLLOwNyaqtmZ9yFQT7IYg7U9YU9Dz/JDlh6JJQmNClCmvYl+b" crossorigin="anonymous"&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/default-skin/default-skin.min.css" integrity="sha384-R6P/wJIrxjHcm//YCjb0S6rRgebsNn3u6U4NxVI8R03iSPAR5CwPqoq1n6U/tjFE" crossorigin="anonymous"&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.js" integrity="sha384-jkeJ/ETDRD/P4Y3I3CQi1QIwrEJjR9GdAZV2/aqDwwgA5ldCNiExYJeBwKyQC/+q" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe-ui-default.min.js" integrity="sha384-HotcxRWS6/oszHPwknjGnd066fV8+ycnO5TXDcOscFWvTtaiCtEEv+9s5Qrn1iJD" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"&gt;
&lt;div class="pswp__bg"&gt;&lt;/div&gt;
&lt;div class="pswp__scroll-wrap"&gt;
&lt;div class="pswp__container"&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__ui pswp__ui--hidden"&gt;
&lt;div class="pswp__top-bar"&gt;
&lt;div class="pswp__counter"&gt;&lt;/div&gt;
&lt;button class="pswp__button pswp__button--close" title="Close (Esc)"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--share" title="Share"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--fs" title="Toggle fullscreen"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--zoom" title="Zoom in/out"&gt;&lt;/button&gt;
&lt;div class="pswp__preloader"&gt;
&lt;div class="pswp__preloader__icn"&gt;
&lt;div class="pswp__preloader__cut"&gt;
&lt;div class="pswp__preloader__donut"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"&gt;
&lt;div class="pswp__share-tooltip"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"&gt;
&lt;/button&gt;
&lt;button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"&gt;
&lt;/button&gt;
&lt;div class="pswp__caption"&gt;
&lt;div class="pswp__caption__center"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Le moteur d&amp;rsquo;origine de mon aile volante Parrot Disco est tombé en panne après quelques vols. Il n&amp;rsquo;est pas électriquement défectueux. Le contrôleur CHUCK reste fonctionnel, y compris l&amp;rsquo;étage de puissance du moteur. La défaillance provient de fils rompus à la jonction entre le moteur et le câble d&amp;rsquo;alimentation. La réparation est difficile, car la rupture se situe à quelques millimètres seulement des bobinages du moteur.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;origine de ces ruptures de fils semble résider dans les vibrations : sur le moteur DISCO d&amp;rsquo;origine PF070253, le câble d&amp;rsquo;alimentation n&amp;rsquo;est pas fixé au moteur mais relié directement au fin câblage du moteur. Les vibrations du câble d&amp;rsquo;alimentation du moteur risquent de rompre le fin câblage du moteur à la jonction entre le câble et le moteur.&lt;/p&gt;
&lt;link rel="stylesheet" href="https://lubin.kerhuel.eu/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/parrot-original-motor-front-small.jpg" loading="lazy" alt="Moteur d&amp;rsquo;origine Parrot DISCO PF070253 (1280KV) avec connecteurs ajoutés - face avant"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/parrot-original-motor-front.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Moteur d&amp;rsquo;origine Parrot DISCO PF070253 (1280KV) avec connecteurs ajoutés - face avant&lt;/h4&gt;
&lt;p&gt;Moteur d&amp;rsquo;origine Parrot DISCO PF070253 (1280KV) avec connecteurs ajoutés - face avant&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/parrot-original-motor-back-small.jpg" loading="lazy" alt="Moteur d&amp;rsquo;origine Parrot DISCO PF070253 - face arrière"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/parrot-original-motor-back.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Tentative de réparation du moteur PF070253 du DISCO FPV&lt;/h4&gt;
&lt;p&gt;Moteur d&amp;rsquo;origine Parrot DISCO PF070253 - face arrière&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Le moteur DISCO d&amp;rsquo;origine (PF070253, 1280KV) est difficile à se procurer et excessivement coûteux. Le SURPASS Hobby C2826 (taille 2208) - 1350KV présente une forme et des caractéristiques électriques similaires. Il est compatible avec l&amp;rsquo;hélice pliante d&amp;rsquo;origine de Parrot et avec le support moteur de l&amp;rsquo;aile DISCO. La référence du moteur est ambiguë : la taille correspond à un « 2208 », mais le moteur est estampillé (et vendu) sous la référence C2826. La boîte du moteur SURPASS Hobby indique « C2826 (2208) - 1350KV ».&lt;/p&gt;
&lt;p&gt;Avec ce nouveau moteur, l&amp;rsquo;aile volante DISCO présente en vol le même comportement qu&amp;rsquo;avec le moteur d&amp;rsquo;origine. Le contrôleur Parrot CHUCK commande la vitesse du moteur comme s&amp;rsquo;il s&amp;rsquo;agissait du moteur d&amp;rsquo;origine. La consommation semble similaire à celle du moteur d&amp;rsquo;origine. Le montage a été évalué avec l&amp;rsquo;hélice DISCO d&amp;rsquo;origine.&lt;/p&gt;
&lt;p&gt;Une hélice de rechange a été identifiée au cas où l&amp;rsquo;originale ne conviendrait pas à ce moteur : la GEMFAN 8040, qui s&amp;rsquo;y adapte et a la même taille que l&amp;rsquo;hélice d&amp;rsquo;origine (non évaluée).&lt;/p&gt;
&lt;div class="box" style="max-width:100%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/parrot-surpass-c2826-mount-wires-small.jpg" loading="lazy" alt="Parrot DISCO avec le moteur de remplacement SURPASS Hobby C2826 (2208) - 1350KV - vue intérieure"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/parrot-surpass-c2826-mount-wires.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Parrot DISCO avec le moteur de remplacement SURPASS Hobby C2826 (2208) - 1350KV - vue intérieure&lt;/h4&gt;
&lt;p&gt;Parrot DISCO avec le moteur de remplacement SURPASS Hobby C2826 (2208) - 1350KV - vue intérieure&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:100%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/parrot-surpass-c2826-mount-final-small.jpg" loading="lazy" alt="Parrot DISCO avec le moteur de remplacement SURPASS Hobby C2826 (2208) - 1350KV - détail"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/parrot-surpass-c2826-mount-final.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Parrot DISCO avec le moteur de remplacement SURPASS Hobby C2826 (2208) - 1350KV - détail&lt;/h4&gt;
&lt;p&gt;Parrot DISCO avec le moteur de remplacement SURPASS Hobby C2826 (2208) - 1350KV - détail&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;</description></item><item><title>On Chip Rapid Control Prototyping for Education</title><link>https://lubin.kerhuel.eu/fr/publication/2020-ifac-rcp-education/</link><pubDate>Wed, 01 Jul 2020 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/publication/2020-ifac-rcp-education/</guid><description/></item><item><title>Vélo Kombi électrique</title><link>https://lubin.kerhuel.eu/fr/post/motorized-kombi-bike/</link><pubDate>Thu, 16 Jan 2020 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/post/motorized-kombi-bike/</guid><description>&lt;!-- Enable Photo Swipe + gallery features --&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.css" integrity="sha384-yX+tSqQp3yF8BiTuLLOwNyaqtmZ9yFQT7IYg7U9YU9Dz/JDlh6JJQmNClCmvYl+b" crossorigin="anonymous"&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/default-skin/default-skin.min.css" integrity="sha384-R6P/wJIrxjHcm//YCjb0S6rRgebsNn3u6U4NxVI8R03iSPAR5CwPqoq1n6U/tjFE" crossorigin="anonymous"&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.js" integrity="sha384-jkeJ/ETDRD/P4Y3I3CQi1QIwrEJjR9GdAZV2/aqDwwgA5ldCNiExYJeBwKyQC/+q" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe-ui-default.min.js" integrity="sha384-HotcxRWS6/oszHPwknjGnd066fV8+ycnO5TXDcOscFWvTtaiCtEEv+9s5Qrn1iJD" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"&gt;
&lt;div class="pswp__bg"&gt;&lt;/div&gt;
&lt;div class="pswp__scroll-wrap"&gt;
&lt;div class="pswp__container"&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__ui pswp__ui--hidden"&gt;
&lt;div class="pswp__top-bar"&gt;
&lt;div class="pswp__counter"&gt;&lt;/div&gt;
&lt;button class="pswp__button pswp__button--close" title="Close (Esc)"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--share" title="Share"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--fs" title="Toggle fullscreen"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--zoom" title="Zoom in/out"&gt;&lt;/button&gt;
&lt;div class="pswp__preloader"&gt;
&lt;div class="pswp__preloader__icn"&gt;
&lt;div class="pswp__preloader__cut"&gt;
&lt;div class="pswp__preloader__donut"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"&gt;
&lt;div class="pswp__share-tooltip"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"&gt;
&lt;/button&gt;
&lt;button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"&gt;
&lt;/button&gt;
&lt;div class="pswp__caption"&gt;
&lt;div class="pswp__caption__center"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Un vélo KOMBI motorisé par le moteur à entraînement central TSDZ2.
Le firmware du moteur est remplacé par le &lt;a href="https://github.com/OpenSource-EBike-firmware/TSDZ2_wiki/wiki" target="_blank" rel="noopener"&gt;firmware open source flexible TSDZ2&lt;/a&gt; initié par Casainho.&lt;/p&gt;
&lt;p&gt;En utilisation typique, le vélo roule à vide ou chargé de deux enfants (trois en de rares occasions). Il a parcouru 2300 km à ce jour avec la chaîne d&amp;rsquo;origine du vélo, ainsi que le pignon bleu et l&amp;rsquo;embrayage d&amp;rsquo;origine du moteur.&lt;/p&gt;
&lt;p&gt;Le premier vélo, bleu (photos ci-dessous), utilise un moteur 36 V avec une batterie 36 V (la tension de la batterie varie de 33 V à 42,4 V). Un second vélo a été réalisé avec le moteur TSDZ2 48 V et une batterie 48 V (variation de 40 V à 52 V).
La version 48 V est plus confortable que la version 36 V. Avec la version 36 V, la variation de tension de la batterie ne permet pas d&amp;rsquo;exploiter pleinement le potentiel du moteur une fois la batterie à moitié déchargée. Ce phénomène n&amp;rsquo;est pas observé avec le moteur 48 V.&lt;/p&gt;
&lt;p&gt;Difficultés rencontrées :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2300 km : bruit provenant du roulement du pédalier.
Le pédalier semble insuffisamment serré. Le bruit apparaît par temps chaud (&amp;gt;15°C). Défaut non encore corrigé ; toutefois, le vélo fonctionne correctement (c&amp;rsquo;est l&amp;rsquo;hiver).&lt;/li&gt;
&lt;/ul&gt;
&lt;link rel="stylesheet" href="https://lubin.kerhuel.eu/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-pedal-removal-01.jpg" loading="lazy" alt="Pédales d&amp;rsquo;origine"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-pedal-removal-01.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Installation du moteur (1/3)&lt;/h4&gt;
&lt;p&gt;Pédales d&amp;rsquo;origine&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-pedal-removal-02.jpg" loading="lazy" alt="Accès au boîtier de pédalier BSA 68"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-pedal-removal-02.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Installation du moteur (2/3)&lt;/h4&gt;
&lt;p&gt;Accès au boîtier de pédalier BSA 68&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-pedal-removal-03.jpg" loading="lazy" alt="Boîtier de pédalier BSA 68"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-pedal-removal-03.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Installation du moteur (3/3)&lt;/h4&gt;
&lt;p&gt;Boîtier de pédalier BSA 68&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-motor-installation.jpg" loading="lazy" alt="Le TSDZ2 appuyé contre le tube avant, protégé par une chambre à air"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-motor-installation.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Moteur TSDZ2 installé&lt;/h4&gt;
&lt;p&gt;Le TSDZ2 appuyé contre le tube avant, protégé par une chambre à air&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-battery-installation.jpg" loading="lazy" alt="Batterie installée verticalement derrière la selle"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-battery-installation.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Vélo Yuba KOMBI équipé du moteur TSDZ2 et de la batterie&lt;/h4&gt;
&lt;p&gt;Batterie installée verticalement derrière la selle&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-tracting-bike-01.jpg" loading="lazy" alt="Dispositif permettant de tracter un vélo BMX de course mini (personne sur le BMX). Le vélo tracté est libre de pivoter autour de l&amp;rsquo;axe de direction et verticalement (haut-bas), et suit sans à-coups le vélo tracteur."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-tracting-bike-01.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Vélo Yuba KOMBI tractant un vélo&lt;/h4&gt;
&lt;p&gt;Dispositif permettant de tracter un vélo BMX de course mini (personne sur le BMX). Le vélo tracté est libre de pivoter autour de l&amp;rsquo;axe de direction et verticalement (haut-bas), et suit sans à-coups le vélo tracteur.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-tracting-bike-02.jpg" loading="lazy" alt="La roue avant du vélo tracté est engagée dans une barrière du repose-pieds. Une sangle fixe rigidement la roue avant au vélo tracteur, ce qui laisse deux degrés de liberté au cadre du vélo tracté. Une seconde sangle aide à maintenir le vélo dans le même plan vertical. On observe le faible angle de la barrière du repose-pieds, qui ménage l&amp;rsquo;espace nécessaire aux pieds des enfants sur le vélo tracteur."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-tracting-bike-02.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Système de fixation pour tracter un autre vélo&lt;/h4&gt;
&lt;p&gt;La roue avant du vélo tracté est engagée dans une barrière du repose-pieds. Une sangle fixe rigidement la roue avant au vélo tracteur, ce qui laisse deux degrés de liberté au cadre du vélo tracté. Une seconde sangle aide à maintenir le vélo dans le même plan vertical. On observe le faible angle de la barrière du repose-pieds, qui ménage l&amp;rsquo;espace nécessaire aux pieds des enfants sur le vélo tracteur.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-on-car.jpg" loading="lazy" alt="Vélo Yuba KOMBI fixé avec deux autres vélos sur le porte-vélos de la voiture."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/yuba-kombi-tsdz2-on-car.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption &gt;&lt;h4&gt;Vélo KOMBI sur un porte-vélos de voiture&lt;/h4&gt;
&lt;p&gt;Vélo Yuba KOMBI fixé avec deux autres vélos sur le porte-vélos de la voiture.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h3 id="divers"&gt;Divers&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://em3ev.com/" target="_blank" rel="noopener"&gt;https://em3ev.com/&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Batterie 36 V : 3,385 kg&lt;/li&gt;
&lt;li&gt;Batterie 42 V : 3,965 kg&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Capteur de vitesse air miniature pour avion RC et drones.</title><link>https://lubin.kerhuel.eu/fr/post/pitot-build/</link><pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/post/pitot-build/</guid><description>&lt;!-- Enable Photo Swipe + gallery features --&gt;
&lt;details class="toc-inpage d-print-none " open&gt;
&lt;summary class="font-weight-bold"&gt;Table des matières&lt;/summary&gt;
&lt;nav id="TableOfContents"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#principe-du-tube-de-pitot"&gt;Principe du tube de Pitot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tube-de-pitot-prandtl"&gt;Tube de Pitot-Prandtl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#électronique"&gt;Électronique&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#exigences-de-sensibilité-et-capteur-de-pression"&gt;Exigences de sensibilité et capteur de pression&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#conditionnement-du-signal-et-conversion"&gt;Conditionnement du signal et conversion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#essais-statiques-du-capteur"&gt;Essais statiques du capteur&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#montage-en-vol"&gt;Montage en vol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#résultats-expérimentaux"&gt;Résultats expérimentaux&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#gps-vs-airspeed"&gt;Comparaison avec la vitesse sol GPS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#wind-estimation"&gt;Estimation du vent&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/details&gt;
&lt;h2 id="principe-du-tube-de-pitot"&gt;Principe du tube de Pitot&lt;/h2&gt;
&lt;p&gt;Une sonde de Pitot-Darcy est un capteur de vitesse air couramment utilisé en aviation. Elle se compose d&amp;rsquo;un tube orienté vers l&amp;rsquo;avant. Lorsque le capteur avance, une pression d&amp;rsquo;arrêt $P_t$ s&amp;rsquo;ajoute à son extrémité. La pression différentielle $P_{diff}$ est mesurée entre l&amp;rsquo;extrémité du tube $P_t$ et la pression statique $P_s$. Une variante, le tube de Prandtl (du nom de son inventeur), possède des prises de pression statique directement sur le côté du tube.&lt;/p&gt;
&lt;p&gt;La pression ajoutée à l&amp;rsquo;extrémité du tube est proportionnelle au carré de la vitesse air : $P_t = P_s + \frac{1}{2}\rho v^2$ où $ P_t $ et $P_s$ sont mesurées en pascals (Pa). $\rho$ est la masse volumique de l&amp;rsquo;air, généralement comprise dans l&amp;rsquo;intervalle $[1.14 \ 1.34]$ selon la température et l&amp;rsquo;altitude. $v$ est la vitesse air en $m.s^{-1}$. La pression différentielle mesurée est $P_{diff} = P_t - P_s = \frac{1}{2}\rho v^2$&lt;/p&gt;
&lt;h2 id="tube-de-pitot-prandtl"&gt;Tube de Pitot-Prandtl&lt;/h2&gt;
&lt;p&gt;Le tube de Prandtl est une version de la sonde de Pitot dans laquelle un tube interne est placé au centre d&amp;rsquo;un tube externe. L&amp;rsquo;espace entre les deux tubes est comblé, sur quelques mm près de l&amp;rsquo;extrémité, avec une colle époxy (Araldite ou équivalent). Le côté du tube externe est percé pour capter la pression statique. En bas, le tube interne, plus long, sert de raccord pour le capteur de pression dynamique, et un troisième tube court est ajouté pour créer un raccord vers la zone de pression statique, qui se situe dans l&amp;rsquo;espace vide entre les deux tubes.&lt;/p&gt;
&lt;p&gt;Les trous de pression statique doivent être percés à une distance minimale de l&amp;rsquo;extrémité du tube, où les perturbations de l&amp;rsquo;écoulement d&amp;rsquo;air sont réduites. Une distance égale à 4 fois le diamètre (d=4mm) du tube externe (16mm) est retenue ici. Quatre trous de 1mm ont été percés avec un outil rotatif Dremel. Les trois tubes sont présentés sur la figure ci-dessous.&lt;/p&gt;
&lt;p&gt;Pour le premier essai, des tubes en laiton ont été utilisés. Le tube interne mesure 2/1mm (extérieur/intérieur) et le tube externe 4/3mm.&lt;/p&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-build-brasstubes.jpg" loading="lazy" alt="Tube Alfer acheté chez Leroy Merlin. Le tube interne mesure 2mm/1mm. Le tube externe mesure 4mm/3mm. La longueur du tube externe est m=86mm. Quatre trous de 1mm sont percés à l=16mm de l&amp;rsquo;extrémité."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-build-brasstubes.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Tubes interne et externe en laiton du tube de Pitot.&lt;/h4&gt;
&lt;p&gt;Tube Alfer acheté chez Leroy Merlin. Le tube interne mesure 2mm/1mm. Le tube externe mesure 4mm/3mm. La longueur du tube externe est m=86mm. Quatre trous de 1mm sont percés à l=16mm de l&amp;rsquo;extrémité.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Références :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ntrs.nasa.gov/api/citations/19930092297/downloads/19930092297.pdf" target="_blank" rel="noopener"&gt;rapport WIND-TUNNEL INVESTIGATION OF &amp;lsquo;A NUMBER OF TOTAL-PRESSURE TUBES AT HIGH ANGLES OF ATTACK SUBSONIC, TRANSONIC, AND SUPERSONIC SPEEDS&amp;rsquo;&lt;/a&gt; de W. Gracey sur l&amp;rsquo;influence de la forme sur la mesure.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.planete-sciences.org/espace/IMG/pdf/tube_de_pitot.pdf" target="_blank" rel="noopener"&gt;rapport (en français)&lt;/a&gt; de l&amp;rsquo;ANSTJ avec des informations générales sur le capteur de Pitot.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://voiletech.free.fr/skyassistant/pitot.htm" target="_blank" rel="noopener"&gt;site web (en français)&lt;/a&gt; de Rémi Bourgin présentant un tube de Pitot expérimental pour avion RC&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- Tube laiton macif (alfer) au Leroy Merlin;
Tube intèrieur: 2mm, trou 1mm
Tube extèrieur: 4mm, trou 3mm
Longueur total:
d = 4mm
l = 4d =&gt; 16mm
m = 11d =&gt;44mm
Tube altigator:
d = 4mm
l = 18mm
m = 72mm
--&gt;
&lt;h2 id="électronique"&gt;Électronique&lt;/h2&gt;
&lt;h3 id="exigences-de-sensibilité-et-capteur-de-pression"&gt;Exigences de sensibilité et capteur de pression&lt;/h3&gt;
&lt;p&gt;La pression différentielle mesurée varie avec le carré de la vitesse. La vitesse d&amp;rsquo;un avion RC peut être relativement faible. L&amp;rsquo;enjeu est de conserver une sensibilité suffisante pour mesurer correctement les basses vitesses, de quelques mètres par seconde.&lt;/p&gt;
&lt;p&gt;Le &lt;a href="https://www.nxp.com/part/MP3V5004DP#/" target="_blank" rel="noopener"&gt;MP3V5004dp&lt;/a&gt; de NXP est un capteur de pression différentielle sensible. Sa plage de mesure différentielle va de 0 à 3,92 kPa. La sortie analogique est ratiométrique et varie de 0,6V à 3V ($\Delta V =2.4V$). À titre de repère, 1 kPa correspond approximativement à la pression de 10cm d&amp;rsquo;eau.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;étude porte sur une plage de vitesses allant de $0$ à $25 m.s^{-1}$ ($90km/h$), ce qui correspond à une pression différentielle maximale de 3,75 cm d&amp;rsquo;eau, soit 0,375 kPa. Le capteur MP3V5004DP est par conséquent utilisé à 10 % de sa plage nominale.&lt;/p&gt;
&lt;p&gt;Le tableau ci-dessous donne la pression différentielle théorique attendue pour diverses vitesses, avec $P_{diff} = \frac{1}{2}\rho v^2$ et $\rho=1.15$.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: center"&gt;v (m/s)&lt;/th&gt;
&lt;th style="text-align: center"&gt;v (Km/h)&lt;/th&gt;
&lt;th style="text-align: center"&gt;$P_{diff}$ (Pa)&lt;/th&gt;
&lt;th style="text-align: center"&gt;~ $H_2O$ (cm)&lt;/th&gt;
&lt;th style="text-align: center"&gt;&lt;a href="https://www.nxp.com/part/MP3V5004DP#/" target="_blank" rel="noopener"&gt;MP3V5004dp&lt;/a&gt; &amp;amp; &lt;a href="https://www.microchip.com/wwwproducts/en/MCP3428" target="_blank" rel="noopener"&gt;MCP3428&lt;/a&gt; (0.2041Pa / LSB&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;3.6&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.6&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.006&lt;/td&gt;
&lt;td style="text-align: center"&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;2&lt;/td&gt;
&lt;td style="text-align: center"&gt;7.2&lt;/td&gt;
&lt;td style="text-align: center"&gt;2.4&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.024&lt;/td&gt;
&lt;td style="text-align: center"&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;4&lt;/td&gt;
&lt;td style="text-align: center"&gt;14.4&lt;/td&gt;
&lt;td style="text-align: center"&gt;9.6&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.096&lt;/td&gt;
&lt;td style="text-align: center"&gt;47&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;7&lt;/td&gt;
&lt;td style="text-align: center"&gt;25.2&lt;/td&gt;
&lt;td style="text-align: center"&gt;29.4&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.294&lt;/td&gt;
&lt;td style="text-align: center"&gt;144&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;10&lt;/td&gt;
&lt;td style="text-align: center"&gt;36&lt;/td&gt;
&lt;td style="text-align: center"&gt;60&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.6&lt;/td&gt;
&lt;td style="text-align: center"&gt;294&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;15&lt;/td&gt;
&lt;td style="text-align: center"&gt;54&lt;/td&gt;
&lt;td style="text-align: center"&gt;135&lt;/td&gt;
&lt;td style="text-align: center"&gt;1.3&lt;/td&gt;
&lt;td style="text-align: center"&gt;661&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;20&lt;/td&gt;
&lt;td style="text-align: center"&gt;72&lt;/td&gt;
&lt;td style="text-align: center"&gt;240&lt;/td&gt;
&lt;td style="text-align: center"&gt;2.4&lt;/td&gt;
&lt;td style="text-align: center"&gt;1176&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;25&lt;/td&gt;
&lt;td style="text-align: center"&gt;90&lt;/td&gt;
&lt;td style="text-align: center"&gt;375&lt;/td&gt;
&lt;td style="text-align: center"&gt;3.75&lt;/td&gt;
&lt;td style="text-align: center"&gt;1837&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;30&lt;/td&gt;
&lt;td style="text-align: center"&gt;108&lt;/td&gt;
&lt;td style="text-align: center"&gt;540&lt;/td&gt;
&lt;td style="text-align: center"&gt;5.4&lt;/td&gt;
&lt;td style="text-align: center"&gt;2646&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;40&lt;/td&gt;
&lt;td style="text-align: center"&gt;144&lt;/td&gt;
&lt;td style="text-align: center"&gt;960&lt;/td&gt;
&lt;td style="text-align: center"&gt;9.6&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;em&gt;4704&lt;/em&gt; (4095 sat)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="conditionnement-du-signal-et-conversion"&gt;Conditionnement du signal et conversion&lt;/h3&gt;
&lt;p&gt;L&amp;rsquo;électronique du capteur de pression est placée dans l&amp;rsquo;aile, à proximité (~10cm) du tube de Pitot. La conversion analogique-numérique est intégrée à la carte du capteur. Le &lt;a href="https://www.microchip.com/wwwproducts/en/MCP3428" target="_blank" rel="noopener"&gt;MCP3428&lt;/a&gt; de Microchip est un convertisseur sigma-delta haute résolution avec un gain programmable de 1 à 8. Il communique par bus I2C et son adresse I2C est sélectionnable. D&amp;rsquo;autres convertisseurs similaires sont envisageables : les MCP342x, la famille plus récente MCP346x ou la MCP356x offrent une précision accrue et une cadence d&amp;rsquo;échantillonnage plus élevée ; en revanche, leur boîtier, plus petit, est plus difficile à manipuler pour un prototype artisanal.&lt;/p&gt;
&lt;p&gt;Le signal analogique de sortie du &lt;a href="https://www.nxp.com/part/MP3V5004DP#/" target="_blank" rel="noopener"&gt;MP3V5004dp&lt;/a&gt; est relié au CAN sigma-delta &lt;a href="https://www.microchip.com/wwwproducts/en/MCP3428" target="_blank" rel="noopener"&gt;MCP3428&lt;/a&gt; par un filtre passe-bas RC du premier ordre de fréquence de coupure $28Hz$ ($R=5.6 kOhm$,$C=1\mu F$). La 2ᵉ entrée différentielle est reliée à un pont diviseur de tension pour obtenir 1V à partir de la référence 3,3V (480 &amp;amp; 1kOhms). Des condensateurs de découplage de $10\mu F$ sont placés sur l&amp;rsquo;alimentation. Les lignes du bus I2C sont rappelées à l&amp;rsquo;alimentation par des résistances de 10kOhm et reliées à un condensateur de 10pf qui les protège des parasites.&lt;/p&gt;
&lt;!-- Measured 480 840 for the divisor. Write down 560 and 1.2k --&gt;
&lt;p&gt;Le CAN sigma-delta &lt;a href="https://www.microchip.com/wwwproducts/en/MCP3428" target="_blank" rel="noopener"&gt;MCP3428&lt;/a&gt; est configuré ainsi :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;12 bits&lt;/li&gt;
&lt;li&gt;gain x8&lt;/li&gt;
&lt;li&gt;240 échantillons par seconde (SPS)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La résolution obtenue est donnée par :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(1) La sensibilité de la sortie analogique du &lt;a href="https://www.nxp.com/part/MP3V5004DP#/" target="_blank" rel="noopener"&gt;MP3V5004dp&lt;/a&gt; est de 1633 Pa/V&lt;/li&gt;
&lt;li&gt;(2) &lt;a href="https://www.microchip.com/wwwproducts/en/MCP3428" target="_blank" rel="noopener"&gt;MCP3428&lt;/a&gt; 12 bits avec un gain de 8 : 0,125mV/LSB&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Avec (1) et (2), on obtient une résolution de $1633 * 0.125e^{-3} $ = &lt;em&gt;&lt;strong&gt;0,2041 Pa / LSB&lt;sup id="fnref2:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-build-mp3v5004dp-mcp3428.jpg" loading="lazy" alt="Capteur de pression différentielle (MP3V5004dp) avec convertisseur analogique-numérique intégrant un amplificateur différentiel (MCP3428). Le MCP3428 communique avec le microcontrôleur par un bus I2C. Un régulateur de tension 3,3V MCP1700 adapte et filtre la tension d&amp;rsquo;entrée de 5V."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-build-mp3v5004dp-mcp3428.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Capteur de pression et électronique montés sur une carte adaptatrice DIP.&lt;/h4&gt;
&lt;p&gt;Capteur de pression différentielle (MP3V5004dp) avec convertisseur analogique-numérique intégrant un amplificateur différentiel (MCP3428). Le MCP3428 communique avec le microcontrôleur par un bus I2C. Un régulateur de tension 3,3V MCP1700 adapte et filtre la tension d&amp;rsquo;entrée de 5V.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h3 id="essais-statiques-du-capteur"&gt;Essais statiques du capteur&lt;/h3&gt;
&lt;p&gt;Une mesure de 90 minutes en intérieur, sans mouvement, a été effectuée, la sortie du capteur étant enregistrée à 100Hz. La figure ci-dessous met en évidence une dérive lente (corrélée à la température ou à la décharge de la batterie ? À DÉTERMINER). L&amp;rsquo;écart-type mesuré sur l&amp;rsquo;ensemble de l&amp;rsquo;enregistrement est de 0,54 Pa (dérive incluse).&lt;/p&gt;
&lt;div class="box" style="max-width:100%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-static-characteristic.png" loading="lazy" alt="Une mesure statique de 90 minutes en intérieur met en évidence une dérive lente et un écart-type de 0,54 Pa. La résolution est de 0,2041 Pa / LSB"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-static-characteristic.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Caractéristique statique expérimentale du tube de Pitot avec le capteur de pression différentielle MP3V5004dp&lt;/h4&gt;
&lt;p&gt;Une mesure statique de 90 minutes en intérieur met en évidence une dérive lente et un écart-type de 0,54 Pa. La résolution est de 0,2041 Pa / LSB&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h4 id="sources-possibles-de-bruit-et-de-décalage-offset"&gt;Sources possibles de bruit et de décalage (offset)&lt;/h4&gt;
&lt;p&gt;Le capteur est sensible à sa propre orientation. Retourner le capteur introduit un décalage négatif de 12,5mV (100 LSB&lt;sup id="fnref3:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; avec la configuration du circuit de conversion analogique-numérique).&lt;/p&gt;
&lt;p&gt;Le MCP3428 et le MP3V5004dp sont tous deux alimentés en 3,3V. Un régulateur linéaire de tension (&lt;a href="https://ww1.microchip.com/downloads/en/DeviceDoc/20001826D.pdf" target="_blank" rel="noopener"&gt;MCP 1700&lt;/a&gt;) filtre l&amp;rsquo;entrée 5V de la carte capteur pour la ramener à 3,3V. Le signal analogique reste néanmoins sensible aux fluctuations de l&amp;rsquo;entrée 5v. Il convient de surveiller la télémétrie, qui perturbe l&amp;rsquo;alimentation lorsqu&amp;rsquo;elle ne dispose pas de son propre régulateur. Par ailleurs, les salves électromagnétiques du module de télémétrie peuvent perturber l&amp;rsquo;ensemble de l&amp;rsquo;électronique, y compris la masse ; j&amp;rsquo;ai observé sur la sortie du Pitot une salve périodique corrélée aux paquets MAVLink émis (20 à 300 LSB, aucune perturbation sur les capteurs de l&amp;rsquo;IMU). Elle était due à un module de télémétrie 3DR dont l&amp;rsquo;antenne était placée trop près d&amp;rsquo;éléments électroniques non protégés. J&amp;rsquo;ai corrigé ce défaut en éloignant l&amp;rsquo;antenne et en réduisant la puissance d&amp;rsquo;émission.&lt;/p&gt;
&lt;h2 id="montage-en-vol"&gt;Montage en vol&lt;/h2&gt;
&lt;p&gt;Le capteur est monté sur l&amp;rsquo;aile d&amp;rsquo;un avion RC FirStar 1600.&lt;/p&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/firstar1600-qx7.jpg" loading="lazy" alt="Avion utilisé pour les vols d&amp;rsquo;essai"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/firstar1600-qx7.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Avion RC FirStar 1600 Volantex&lt;/h4&gt;
&lt;p&gt;Avion utilisé pour les vols d&amp;rsquo;essai&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Un tube flexible de 2mm, à l&amp;rsquo;origine destiné à protéger les lignes de pêche, relie le capteur au tube de Pitot.&lt;/p&gt;
&lt;div class="box" style="max-width:50%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-tubesoupledecathlon.jpg" loading="lazy" alt="Tube de pêche utilisé pour relier le capteur de pression différentielle MP3V5004dp au tube de Pitot."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-tubesoupledecathlon.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Flashmer – tube flexible 2mm. Image Decathlon (France).&lt;/h4&gt;
&lt;p&gt;Tube de pêche utilisé pour relier le capteur de pression différentielle MP3V5004dp au tube de Pitot.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Un aimant est collé sur le tube de Pitot. Un 2ᵉ aimant intégré à l&amp;rsquo;aile permet de fixer le tube de Pitot. Les deux aimants sont en contact. Le tube reste fermement en place pendant les vols et se détache en cas d&amp;rsquo;atterrissage brutal, ce qui limite les dégâts. Cette solution modulable permet d&amp;rsquo;évaluer d&amp;rsquo;autres conceptions de tube de Pitot ; elle est également pratique pour le rangement et le transport.&lt;/p&gt;
&lt;div class="box" style="max-width:100%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-wing-brass-mp3v5004dp-mcp3428.jpg" loading="lazy" /&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-wing-brass-mp3v5004dp-mcp3428.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Tube de Pitot en laiton avec sa carte électronique, embarqué sur l&amp;rsquo;avion Firstar 1600.&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="box" style="max-width:60%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-wing-carbon2.jpg" loading="lazy" alt="Le tube externe est un tube en carbone de 5/3mm. Le tube interne est un tube en laiton de 2mm/1mm."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-wing-carbon2.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Capteur à tube de Pitot léger en carbone et laiton, fixé à l&amp;rsquo;aile par un aimant.&lt;/h4&gt;
&lt;p&gt;Le tube externe est un tube en carbone de 5/3mm. Le tube interne est un tube en laiton de 2mm/1mm.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h2 id="résultats-expérimentaux"&gt;Résultats expérimentaux&lt;/h2&gt;
&lt;p&gt;Le MCP3428 échantillonne $P_{diff}$ à 250Hz pendant les vols. $V_{Pitot}=\sqrt{\frac{2}{\rho}*P_{diff}}$ avec $\rho = 1.15$.&lt;/p&gt;
&lt;p&gt;Aucun étalonnage n&amp;rsquo;a été nécessaire. L&amp;rsquo;échelle théorique de sortie du capteur et la formule permettant de déterminer la vitesse à partir de la pression ont été utilisées. La valeur de $\rho$ a été ajustée de la valeur par défaut 1,2 à 1,15, ce qui minimisait l&amp;rsquo;erreur moyenne ; l&amp;rsquo;amélioration n&amp;rsquo;était cependant pas significative. La seule valeur à ajuster est le décalage (zéro) de la mesure brute de pression. La valeur du zéro pour le capteur utilisé est -1800.&lt;/p&gt;
&lt;p&gt;Script MATLAB convertissant les données brutes du MCP3428 à 250Hz en pression (Pa) et en vitesse (m/s) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-matlab" data-lang="matlab"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% Pitot Calibration. P_pitot is a vector with raw MCP3428 output read from I2C bus.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;P_pitot_cal&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.2041&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;double&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;P_pitot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1800&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;% to Pa unit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% Compute Speed (m/s) from diff pressure (in Pa).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;V_pitot&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1.15&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;P_pitot_cal&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="gps-vs-airspeed"&gt;Comparaison avec la vitesse sol GPS&lt;/h3&gt;
&lt;p&gt;Par temps calme, la vitesse sol $V_{GPS}$ et la vitesse air $V_{Pitot}$ sont égales.&lt;/p&gt;
&lt;p&gt;En présence de vent, on estime la direction et la force moyennes du vent en combinant $V_{GPS}$, $V_{Pitot}$ et la direction de lacet de l&amp;rsquo;avion $\Theta_{heading}$ (obtenue avec le COG&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; du GPS). Cette &lt;a href="#wind-estimation"&gt;estimation du vent&lt;/a&gt; est décrite plus loin.&lt;/p&gt;
&lt;p&gt;La vitesse sol de l&amp;rsquo;avion (GPS) est estimée par la différence entre la vitesse air (Pitot) et le vent projeté sur la direction d&amp;rsquo;avancement de l&amp;rsquo;avion :&lt;/p&gt;
&lt;p&gt;$V_{GPS} \approx V_{Pitot} - V_{wind}*cos(\Theta_{heading} + \Theta_{wind}) $&lt;/p&gt;
&lt;p&gt;La figure ci-dessous présente la vitesse air en bleu. La vitesse sol reconstruite (noir) concorde précisément avec la vitesse GPS (rouge), ce qui confirme la justesse de la mesure de vitesse air ainsi que de la force et de la direction du vent. Le vent de mer est laminaire, avec de faibles turbulences. La mesure de vitesse air présente une sensibilité élevée, même à basse vitesse.&lt;/p&gt;
&lt;div class="box" style="max-width:100%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-gps-wind-calibration.png" loading="lazy" alt="Vitesse sol GPS (rouge). Vitesse air Pitot (bleu) calculée avec $\rho=1.15$. Vent de face reconstruit (vert). Vitesse air Pitot moins vent estimé (noir), où $V_pitot$ est moyennée et sous-échantillonnée d&amp;rsquo;un facteur 5, ce qui ramène sa fréquence d&amp;rsquo;échantillonnage de 250Hz à 50Hz. Le vent de face est estimé à partir de l&amp;rsquo;angle COG du GPS ($\approx \theta_{heading}$), de la force du vent estimée ($V_{wind}= 2.5 m/s$) et de sa direction ($\theta_{wind} = 101°$)."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-gps-wind-calibration.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Mesure expérimentale comparant la vitesse sol GPS à la vitesse air du tube de Pitot sur 200s d&amp;rsquo;un vol d&amp;rsquo;avion RC Firstar 1600. Concordance entre la vitesse sol GPS et la vitesse du tube de Pitot corrigée du vent estimé.&lt;/h4&gt;
&lt;p&gt;Vitesse sol GPS (rouge). Vitesse air Pitot (bleu) calculée avec $\rho=1.15$. Vent de face reconstruit (vert). Vitesse air Pitot moins vent estimé (noir), où $V_pitot$ est moyennée et sous-échantillonnée d&amp;rsquo;un facteur 5, ce qui ramène sa fréquence d&amp;rsquo;échantillonnage de 250Hz à 50Hz. Le vent de face est estimé à partir de l&amp;rsquo;angle COG du GPS ($\approx \theta_{heading}$), de la force du vent estimée ($V_{wind}= 2.5 m/s$) et de sa direction ($\theta_{wind} = 101°$).&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Des figures complémentaires figurent dans la &lt;a href="https://lubin.kerhuel.eu/slides/pitot-build/#/10"&gt;présentation en ligne&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La fréquence de mise à jour du GPS est de 10Hz, mais elle est échantillonnée à 50Hz afin de minimiser le retard. Celle du capteur à tube de Pitot est de 240 SPS, mais elle est échantillonnée à 250Hz.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;erreur est définie par $error = V_{gps} - \left( V_{Pitot} - V_{wind}*cos(\Theta_{heading} + \Theta_{wind}) \right) $. Sur les 200s du vol présenté sur la figure, l&amp;rsquo;erreur mesurée est :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: center"&gt;erreur&lt;/th&gt;
&lt;th style="text-align: center"&gt;m/s&lt;/th&gt;
&lt;th style="text-align: center"&gt;km/h&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;moyenne&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.017&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;écart-type&lt;/td&gt;
&lt;td style="text-align: center"&gt;0.74&lt;/td&gt;
&lt;td style="text-align: center"&gt;2.6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;L&amp;rsquo;erreur RMS est relativement faible au regard de la valeur de vitesse mesurée. Une partie de l&amp;rsquo;erreur est également due aux rafales de vent et à la précision limitée du GPS, en particulier pour estimer les variations rapides de vitesse verticale.&lt;/p&gt;
&lt;h3 id="wind-estimation"&gt;Estimation du vent&lt;/h3&gt;
&lt;p&gt;Le modèle de vent considéré est constant, caractérisé par :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sa direction constante $\Theta_{wind}$&lt;/li&gt;
&lt;li&gt;sa force constante $V_{wind}$&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="vent--v_pitot---v_gps"&gt;Vent =&amp;gt; $V_{Pitot} - V_{gps}$&lt;/h4&gt;
&lt;p&gt;La courbe ci-dessous montre la différence entre la vitesse sol (GPS) et la vitesse air (Pitot) en fonction de la direction de vol de l&amp;rsquo;avion. Cette erreur (points bleus en pointillés) est ajustée par une sinusoïde. Cette sinusoïde est le décalage de vitesse ajouté, pour chaque direction de l&amp;rsquo;avion dans $[0 \ 2\pi]$, par un vent de force et de direction constantes. L&amp;rsquo;amplitude et la phase de la sinusoïde permettent de déterminer la force et la direction du vent.&lt;/p&gt;
&lt;div class="box" style="max-width:100%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-speed-error-wind-estimation.png" loading="lazy" alt="Les points bleus sont la différence de vitesse entre le GPS et le Pitot. La courbe verte continue est la projection sinusoïdale du vent sur la direction de l&amp;rsquo;avion $\Theta_{heading}$. La phase de la sinusoïde est la direction du vent ($(\pi-1.37*\frac{180}{\pi})=101°$, d&amp;rsquo;est en ouest) et son amplitude est la force du vent (2,56m/s). Les valeurs du Pitot sont moyennées et sous-échantillonnées d&amp;rsquo;un facteur 5."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/pitot-darcy-prandtl-speed-error-wind-estimation.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Résultat expérimental présentant la différence entre la vitesse sol GPS et la vitesse air Pitot en fonction de la direction de l&amp;rsquo;avion, sur 450s de vol de l&amp;rsquo;avion RC Firstar 1600.&lt;/h4&gt;
&lt;p&gt;Les points bleus sont la différence de vitesse entre le GPS et le Pitot. La courbe verte continue est la projection sinusoïdale du vent sur la direction de l&amp;rsquo;avion $\Theta_{heading}$. La phase de la sinusoïde est la direction du vent ($(\pi-1.37*\frac{180}{\pi})=101°$, d&amp;rsquo;est en ouest) et son amplitude est la force du vent (2,56m/s). Les valeurs du Pitot sont moyennées et sous-échantillonnées d&amp;rsquo;un facteur 5.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Cette estimation du vent est utilisée pour compenser la vitesse air lors de la comparaison de la vitesse sol GPS $V_{gps}$ avec la vitesse air Pitot $V_{Pitot}$ &lt;a href="https://lubin.kerhuel.eu/post/pitot-build/#gps-vs-airspeed"&gt;ci-dessus&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="script"&gt;Script&lt;/h4&gt;
&lt;p&gt;Script MATLAB pour estimer le vent hors ligne :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-matlab" data-lang="matlab"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% V_gps and V_pitot are two vector with all data measured.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% V_pitot was under-sampled (averaging) by a factor 5 to fit the 50Hz log from the GPS.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;% GPS chip update frequency is 10Hz, but it is logged at 50Hz.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;V_err&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;V_pitot&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;V_gps&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;% Ground and Airspeed difference (i.e. wind) &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;M&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;cos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;COG&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="nb"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;COG&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;% COG is the direction (Theta in rad) vector data measured from the GPS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;V_err&lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;M&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;% Solve wind strength and direction using linear algebra (MMSE)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Theta_Wind&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;atan2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c"&gt;% Wind (go to) direction. Azimuth direction is opposite to trigo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;V_Wind&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.^&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c"&gt;% Wind strength (m/s)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;COG&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;V_err&lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="n"&gt;hold&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;% plot Error blue dots &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:.&lt;/span&gt;&lt;span class="mi"&gt;01&lt;/span&gt;&lt;span class="p"&gt;:(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nb"&gt;pi&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt;&lt;span class="n"&gt;V_Wind&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;cos&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:.&lt;/span&gt;&lt;span class="mi"&gt;01&lt;/span&gt;&lt;span class="p"&gt;:(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nb"&gt;pi&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;Theta_Wind&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;-k&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;linewidth&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;% plot wind&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="discussion"&gt;Discussion&lt;/h4&gt;
&lt;p&gt;Le champ COG&lt;sup id="fnref1:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; du GPS n&amp;rsquo;est pas exactement la direction de lacet de l&amp;rsquo;avion $\Theta_{heading}$ mais sa direction de déplacement.
Le COG constitue donc une direction de lacet $\Theta_{heading}$ biaisée. Il serait préférable d&amp;rsquo;utiliser l&amp;rsquo;orientation de l&amp;rsquo;avion fournie par le capteur IMU. Cette option n&amp;rsquo;a pas été retenue, afin de réduire le nombre de capteurs de cette démonstration. Le biais du COG reste suffisamment faible si l&amp;rsquo;on suppose que la vitesse du vent est faible devant la vitesse air de l&amp;rsquo;avion. Un script plus élaboré pourrait compenser ce biais.&lt;/p&gt;
&lt;p&gt;W. Premerlani propose une &lt;a href="https://drive.google.com/file/d/0ByvTkVQo3tqXVzBYQUZicUNvbEE/view" target="_blank" rel="noopener"&gt;estimation du vent&lt;/a&gt; à partir des seules données GPS. Sur le jeu de données GPS considéré, les essais n&amp;rsquo;ont pas été concluants lorsque tous les échantillons GPS ont été utilisés pendant les phases où la direction de l&amp;rsquo;avion varie (c&amp;rsquo;est-à-dire lorsque la dérivée du COG dépasse un seuil donné). La dynamique du GPS semble trop lente pour fournir des résultats robustes.&lt;/p&gt;
&lt;h4 id="autres-données-de-vol"&gt;Autres données de vol&lt;/h4&gt;
&lt;p&gt;L&amp;rsquo;avion était équipé de deux GPS :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un GPS uBlox M8N et&lt;/li&gt;
&lt;li&gt;un MTK3339.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La trace uBlox présentée sur la carte ci-dessous est de meilleure qualité que la trace MTK. Seul le GPS uBlox a été utilisé pour les courbes ci-dessus. La trace MTK peut être affichée sur la &lt;a href="https://www.google.com/maps/d/u/0/embed?mid=1-K7dsmfbMCDL3IQK1z3IEtSduB2OWXr9" target="_blank" rel="noopener"&gt;carte&lt;/a&gt; (icône en haut à gauche). Le fichier KML peut être ouvert avec Google Earth, qui fournit une vue 3D de la trace montrant l&amp;rsquo;altitude de l&amp;rsquo;avion.&lt;/p&gt;
&lt;iframe src="https://www.google.com/maps/d/u/0/embed?mid=1-K7dsmfbMCDL3IQK1z3IEtSduB2OWXr9" style="width: 100% ; height: 480px"&gt;&lt;/iframe&gt;
&lt;!--
Project folder:
C:\M91449\MCHP_Blockset\Projects\2017_10_Autopilote\2018_04_12_LogChampdeTir_PitotNum_magOk_LowWind
--&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Least Significant Bit (bit de poids faible)&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref1:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref2:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref3:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;Course Over Ground (route sol)&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref1:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Pilote automatique d'avion à voilure fixe basé sur un modèle Simulink</title><link>https://lubin.kerhuel.eu/fr/project/autopilot-plane/</link><pubDate>Sun, 19 May 2019 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/project/autopilot-plane/</guid><description>&lt;!-- Enable Photo Swipe + gallery features --&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.css" integrity="sha384-yX+tSqQp3yF8BiTuLLOwNyaqtmZ9yFQT7IYg7U9YU9Dz/JDlh6JJQmNClCmvYl+b" crossorigin="anonymous"&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/default-skin/default-skin.min.css" integrity="sha384-R6P/wJIrxjHcm//YCjb0S6rRgebsNn3u6U4NxVI8R03iSPAR5CwPqoq1n6U/tjFE" crossorigin="anonymous"&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.js" integrity="sha384-jkeJ/ETDRD/P4Y3I3CQi1QIwrEJjR9GdAZV2/aqDwwgA5ldCNiExYJeBwKyQC/+q" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe-ui-default.min.js" integrity="sha384-HotcxRWS6/oszHPwknjGnd066fV8+ycnO5TXDcOscFWvTtaiCtEEv+9s5Qrn1iJD" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"&gt;
&lt;div class="pswp__bg"&gt;&lt;/div&gt;
&lt;div class="pswp__scroll-wrap"&gt;
&lt;div class="pswp__container"&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__ui pswp__ui--hidden"&gt;
&lt;div class="pswp__top-bar"&gt;
&lt;div class="pswp__counter"&gt;&lt;/div&gt;
&lt;button class="pswp__button pswp__button--close" title="Close (Esc)"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--share" title="Share"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--fs" title="Toggle fullscreen"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--zoom" title="Zoom in/out"&gt;&lt;/button&gt;
&lt;div class="pswp__preloader"&gt;
&lt;div class="pswp__preloader__icn"&gt;
&lt;div class="pswp__preloader__cut"&gt;
&lt;div class="pswp__preloader__donut"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"&gt;
&lt;div class="pswp__share-tooltip"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"&gt;
&lt;/button&gt;
&lt;button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"&gt;
&lt;/button&gt;
&lt;div class="pswp__caption"&gt;
&lt;div class="pswp__caption__center"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="un-pilote-automatique-16-bits-conçu-avec-simulink-et-des-outils-de-prototypage-rapide-de-commande"&gt;Un pilote automatique 16 bits conçu avec Simulink et des outils de prototypage rapide de commande&lt;/h2&gt;
&lt;h3 id="motivation"&gt;Motivation&lt;/h3&gt;
&lt;p&gt;Il est désormais aisé de construire une plateforme destinée à évaluer différentes boucles de commande de pilote automatique, grâce aux nombreux composants à faible coût disponibles. En voici quelques-uns :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Centrale inertielle (IMU) 10 DoF&lt;/strong&gt; : (~$5\ $$),&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carte GPS&lt;/strong&gt; : (~$10\ $$),&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tube de Pitot&lt;/strong&gt; (&lt;a href="https://lubin.kerhuel.eu/post/pitot-build/"&gt;sur mesure&lt;/a&gt;) : (~$20\ $$),&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carte microcontrôleur&lt;/strong&gt; : dépend de la carte ; repose sur un microcontrôleur à $\approx 5\ $$,&lt;/li&gt;
&lt;li&gt;Plateforme &lt;strong&gt;avion&lt;/strong&gt; : de $60$ à $120\ $$ servos et moteurs inclus.&lt;/li&gt;
&lt;li&gt;Quelques éléments de radiocommande sont également nécessaires :
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;récepteur&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;télécommande&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;batterie&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;quelques éléments optionnels pour l&amp;rsquo;&lt;strong&gt;enregistrement de données&lt;/strong&gt;, la &lt;strong&gt;télémétrie&lt;/strong&gt;, la &lt;strong&gt;caméra&lt;/strong&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="différences-avec-les-pilotes-automatiques-existants"&gt;Différences avec les pilotes automatiques existants&lt;/h3&gt;
&lt;p&gt;De nombreux pilotes automatiques prêts à l&amp;rsquo;emploi existent et donnent de bons résultats. En voici quelques-uns :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ardupilot.org/" target="_blank" rel="noopener"&gt;Ardupilot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://px4.io/" target="_blank" rel="noopener"&gt;PX4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://inavflight.com/" target="_blank" rel="noopener"&gt;iNav&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.librepilot.org/site/index.html" target="_blank" rel="noopener"&gt;LibrePilot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.paparazziuav.org/wiki/Main_Page" target="_blank" rel="noopener"&gt;Paparazzi&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;D&amp;rsquo;autres sont listés dans le &lt;a href="https://blog.dronetrest.com/flight-controller-firmware/" target="_blank" rel="noopener"&gt;comparatif de DroneTrest&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De manière générale, leurs paramètres internes peuvent être réglés. Cependant, l&amp;rsquo;insertion d&amp;rsquo;une boucle de commande personnalisée dans un tel pilote automatique suppose de comprendre la structure du code sous-jacent. Même bien documenté, celui-ci comporte des centaines de fonctions C à examiner avant de pouvoir entreprendre la moindre modification.
Une boucle de commande personnalisée peut ne pas s&amp;rsquo;intégrer dans la structure existante. Il peut être souhaitable de mettre en œuvre un correcteur plus avancé que les PID existants, utiliser une autre fréquence d&amp;rsquo;échantillonnage, etc.&lt;/p&gt;
&lt;p&gt;Il est parfois plus rapide de démarrer un nouveau projet que de réutiliser un projet avancé préexistant.
Le pilote automatique présenté utilise une approche de conception basée sur modèle (Model Based Design, MBD) : le code du pilote automatique est généré à partir d&amp;rsquo;un unique modèle Simulink. Tout se trouve dans le diagramme, de la gestion bas niveau des capteurs jusqu&amp;rsquo;à la synthèse du correcteur. Cette approche MBD est également appelée prototypage rapide de commande (Rapid Control Prototyping, RCP).&lt;/p&gt;
&lt;p&gt;La boucle de commande du pilote automatique utilise des blocs mathématiques standard. La couche bas niveau est assurée par le blockset Microchip, qui gère les périphériques du microcontrôleur. Le blockset UxV donne un accès simple au GPS, à la radiocommande (S.BUS), aux protocoles F.Port et Smart Port, ainsi qu&amp;rsquo;à la messagerie MAVLink, y compris les protocoles de points de passage (Way Point) et de paramètres.
Un tel modèle Simulink permet d&amp;rsquo;« entrer » dans le projet de manière graphique. Il permet de simuler des parties du système à partir d&amp;rsquo;un avion simulé ou à partir de valeurs préalablement enregistrées lors d&amp;rsquo;un vol réel, ce qui est utile pour concevoir des algorithmes de fusion de capteurs avec anticipation (feed-forward).&lt;/p&gt;
&lt;p&gt;Une autre différence essentielle est l&amp;rsquo;utilisation d&amp;rsquo;un microcontrôleur 16 bits, alors que les autres pilotes automatiques utilisent des microcontrôleurs 32 bits. Les dsPIC 16 bits disposent de toutes les ressources nécessaires grâce à leur architecture efficace, qui gère aisément les nombreux périphériques utilisés (UART, I2C, Output Compare, Input Capture&amp;hellip;).&lt;/p&gt;
&lt;p&gt;Signalons toutefois qu&amp;rsquo;une démarche de conception basée sur modèle similaire, utilisant un microcontrôleur dsPIC, a été développée à l&amp;rsquo;UCSC par le Pr G.H. Elkaim dans un projet nommé SLUG. Leur conception est indépendante de celle présentée ici. Le projet original mené par M.I. Lizarraga [SLUG] (&lt;a href="https://slugsuav.soe.ucsc.edu/" target="_blank" rel="noopener"&gt;https://slugsuav.soe.ucsc.edu/&lt;/a&gt;) est disponible en ligne. La version &lt;a href="https://doi.org/10.1155/2018/6892153" target="_blank" rel="noopener"&gt;SLUG II&lt;/a&gt; s&amp;rsquo;appuie sur le même outil que celui utilisé ici pour cibler le dsPIC : le blockset pour microcontrôleurs Microchip (gratuit).&lt;/p&gt;
&lt;h3 id="liste-du-matériel"&gt;Liste du matériel&lt;/h3&gt;
&lt;p&gt;Plusieurs configurations matérielles ont été évaluées. Voici une sélection de composants ayant donné des résultats satisfaisants.&lt;/p&gt;
&lt;link rel="stylesheet" href="https://lubin.kerhuel.eu/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/firstar1600-qx7.jpg" loading="lazy" alt="Volantex Firstar 1600 avec la télécommande Qx7."/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/firstar1600-qx7.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;plateforme du pilote automatique&lt;/h4&gt;
&lt;p&gt;Volantex Firstar 1600 avec la télécommande Qx7.&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Avion radiocommandé&lt;/strong&gt; : Volantex Firstar 1600 avec moteurs et servos d&amp;rsquo;origine (Bixler 2 et Ranger 1600 sont des plateformes alternatives)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Télécommande&lt;/strong&gt; : FrSky QX7&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Récepteur&lt;/strong&gt; : FrSky XSR-M / XSR utilisé soit avec le protocole S.Bus (sortie des voies du récepteur) et Smart Port (télémétrie), soit avec le protocole F.Port qui combine S.Bus et Smart Port et économise un périphérique UART du microcontrôleur. Chaque protocole n&amp;rsquo;utilise qu&amp;rsquo;un seul fil, par conséquent une liaison UART en half-duplex. Le module UART du dsPIC permet de regrouper Tx et Rx sur une seule broche.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microcontrôleur&lt;/strong&gt; : dsPIC 33EP sur une carte AUAV V3. Un capteur de mouvement externe est utilisé à la place des capteurs intégrés à l&amp;rsquo;AUAV3. Une petite carte capteur équipée d&amp;rsquo;un circuit récent se fixe plus facilement et rigidement près du centre de gravité (CG), ce qui réduit les vibrations. Une carte sur mesure basée sur un dsPIC pourrait remplacer la carte AUAV3, devenue difficile à se procurer. L&amp;rsquo;UDB5 mini est similaire et reste disponible.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capteur IMU&lt;/strong&gt; : Gy-91 (10 DoF avec 3 accéléromètres, 3 gyromètres, 3 magnétomètres et un baromètre). Fixé rigidement près du CG de l&amp;rsquo;avion. Un bus I2C relie les capteurs au microcontrôleur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tube de Pitot&lt;/strong&gt; :
&lt;ul&gt;
&lt;li&gt;Un tube intérieur et un tube extérieur sur lequel quatre trous sont percés latéralement.&lt;/li&gt;
&lt;li&gt;Conditionnement du signal : le capteur de pression du tube de Pitot (MP3V 5004 DP) est lu par un convertisseur ADC MCHP qui intègre un amplificateur analogique. La pression convertie est envoyée au microcontrôleur par le bus I2C. Voir la page &lt;a href="https://lubin.kerhuel.eu/post/pitot-build/"&gt;construction et test&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPS&lt;/strong&gt; : basé sur un module $\mu$blox M8N offrant jusqu&amp;rsquo;à 10 Hz de rafraîchissement, avec des résultats satisfaisants par rapport aux autres modules du marché.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enregistreur de données&lt;/strong&gt; : carte OpenLager pour l&amp;rsquo;enregistrement sur carte SD. Elle permet d&amp;rsquo;enregistrer en continu le flux de sortie d&amp;rsquo;une UART à une vitesse allant jusqu&amp;rsquo;à 2 470 000 bauds (bien supérieure aux 115 200 bauds que l&amp;rsquo;enregistreur OpenLog ne peut pas suivre).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Liaison radio&lt;/strong&gt; : module radio de type 3DR Sik pour la télémétrie MAVLink (attitude de l&amp;rsquo;avion, position, points de passage et réglage des paramètres) avec la station sol &lt;a href="https://qgroundcontrol.com/" target="_blank" rel="noopener"&gt;qgroundcontrol&lt;/a&gt; qui fonctionne sur la plupart des plateformes (PC, Android, Windows, Linux).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caméra d&amp;rsquo;action&lt;/strong&gt; : RunCam2 pour filmer l&amp;rsquo;avion et ses gouvernes depuis le dessus ; on observe ainsi le comportement du pilote automatique en fonctionnement.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="box" style="max-width:80%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/autopilot-electronic-sensors-bundle_1.jpg" loading="lazy" /&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/autopilot-electronic-sensors-bundle_1.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;&lt;h4&gt;Électronique embarquée. Une des premières configurations destinées à évaluer divers capteurs. Éléments utilisés : récepteur X8R, carte de distribution PDB-XPM, enregistreur de données sur SD OpenLager, microcontrôleur dsPIC 16 bits AUAV3 avec capteurs (MPU6050), carte IMU 1, carte IMU 2, capteur de pression MP3V5004DP pour le tube de Pitot, GPS1, GPS2, batterie LiPo 3S 2200 mAh, émetteur Qx7.&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h3 id="résultats"&gt;Résultats&lt;/h3&gt;
&lt;p&gt;Un correcteur par modes glissants a été évalué sur les axes de tangage et de roulis, selon deux modes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Commande de la vitesse angulaire de l&amp;rsquo;avion (consigne de vitesse angulaire donnée par la télécommande)&lt;/li&gt;
&lt;li&gt;Commande de l&amp;rsquo;angle d&amp;rsquo;attitude de l&amp;rsquo;avion (consigne d&amp;rsquo;angle donnée par la télécommande)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La charge moyenne du processeur était de 7 à 8 % sur un dsPIC 33EP cadencé à 70 MIPS. Elle inclut l&amp;rsquo;algorithme d&amp;rsquo;estimation de l&amp;rsquo;IMU, la boucle de commande du pilote automatique et toutes les tâches de bas niveau (gestion de divers protocoles (I2C, NMEA pour le GPS, F.Port, MAVLink) et enregistrement des données capteurs à 1 kHz via une UART configurée à 2 470 000)&lt;/p&gt;
&lt;p&gt;Le dispositif a été éprouvé par vent fort. Il met en évidence une robustesse satisfaisante malgré le faible nombre de paramètres réglés jusqu&amp;rsquo;ici (lien vidéo en haut de page).&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;estimation de la vitesse air par le tube de Pitot a été validée en prenant la vitesse GPS comme référence (&lt;a href="https://lubin.kerhuel.eu/post/pitot-build"&gt;ici&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;estimation de la vitesse et de la direction du vent, basée sur la différence entre les mesures de vitesse GPS et du tube de Pitot en tenant compte de l&amp;rsquo;orientation de l&amp;rsquo;avion, a été validée.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;étalonnage automatique du décalage et du gain des axes du magnétomètre a été validé. Une fois en vol, les perturbations magnétiques près du sol sont négligeables. Un algorithme détermine automatiquement si l&amp;rsquo;étalonnage peut être affiné avec les données courantes (à partir de données de vol standard, sans looping ni tonneau).&lt;/p&gt;
&lt;h3 id="prochaines-étapes"&gt;Prochaines étapes&lt;/h3&gt;
&lt;p&gt;Réduire le broutement (chattering) sur les ailerons lorsque la commande par modes glissants est activée.&lt;/p&gt;
&lt;p&gt;Valider en vol le réglage des paramètres via le protocole MAVLink.&lt;/p&gt;
&lt;p&gt;Mettre en œuvre le guidage automatique de l&amp;rsquo;avion, à l&amp;rsquo;aide de points de cheminement (waypoints) MAVLink.&lt;/p&gt;
&lt;h3 id="contenu-du-site"&gt;Contenu du site&lt;/h3&gt;
&lt;p&gt;Faute de temps, il n&amp;rsquo;est pas possible de rédiger une description complète du projet comme initialement prévu. Les parties les plus pertinentes seront publiées.&lt;/p&gt;
&lt;p&gt;Idées à développer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IMU&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lubin.kerhuel.eu/post/pitot-build/"&gt;Tube de Pitot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lubin.kerhuel.eu/post/pitot-build/#wind-estimation"&gt;Estimation du vent&lt;/a&gt; combinant la vitesse sol GPS et la vitesse air du tube de Pitot&lt;/li&gt;
&lt;li&gt;Blocs UxV, dont les blocs et fonctionnalités GPS, radiocommande et MAVLink&lt;/li&gt;
&lt;li&gt;Étalonnage automatique des magnétomètres&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Modification du module double BEC et mesure de courant MATEKSYS PDB-XPW pour augmenter la sensibilité de la mesure de courant</title><link>https://lubin.kerhuel.eu/fr/post/matek-pdb-xpw/</link><pubDate>Sat, 18 May 2019 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/post/matek-pdb-xpw/</guid><description>&lt;!-- Enable Photo Swipe + gallery features --&gt;
&lt;p&gt;La carte &lt;a href="https://www.mateksys.com/?portfolio=pdb-xpw" target="_blank" rel="noopener"&gt;PDB-XPW&lt;/a&gt; de MATEK System est un régulateur de tension équipé d&amp;rsquo;une mesure de courant adaptée aux courants des quadricoptères, avec une mesure maximale de 140 ampères. Pour un projet d&amp;rsquo;avion RC, il est possible de réduire la plage de mesure du courant afin d&amp;rsquo;augmenter la résolution de la mesure.&lt;/p&gt;
&lt;p&gt;Le circuit « INA1x9 High-Side Measurement Current Shunt Monitor » de Texas Instrument conditionne et amplifie la chute de tension aux bornes de la résistance de shunt, et fournit une sortie analogique proportionnelle au courant.&lt;/p&gt;
&lt;p&gt;Sur la carte PDB-XPW, le circuit INA1x9 est le composant noir à 5 broches marqué E39, situé sous la résistance de shunt de 0,05 ohm, elle-même placée immédiatement sous le connecteur d&amp;rsquo;entrée d&amp;rsquo;alimentation.&lt;/p&gt;
&lt;p&gt;Le gain d&amp;rsquo;amplification est fixé par la résistance de 47 kOhm adjacente au composant INA1x9. Cette valeur d&amp;rsquo;origine de 47 kOhm correspond à un gain de 47.
Le gain correspond à la valeur exprimée en kOhm, comme l&amp;rsquo;indique la documentation du circuit :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: center"&gt;Résistance&lt;/th&gt;
&lt;th style="text-align: center"&gt;Gain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;1 kOhm&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;5 Kohm&lt;/td&gt;
&lt;td style="text-align: center"&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;10 Kohm&lt;/td&gt;
&lt;td style="text-align: center"&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;50 Kohm&lt;/td&gt;
&lt;td style="text-align: center"&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;100 Kohm&lt;/td&gt;
&lt;td style="text-align: center"&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;La résistance de 47 kOhm est remplacée par une résistance de 270 kOhm, ce qui conduit à un gain de 270 au lieu de 47.
La plage de mesure de courant d&amp;rsquo;origine passe ainsi de 140 A à 20 A (140 * 47/270 = 20).&lt;/p&gt;
&lt;p&gt;La sortie de mesure du courant est un signal analogique variant de 0 à 3,3 V, codant linéairement le courant sur la plage [0 - 20] ampères. Cette plage de courant plus faible est adaptée aux avions RC tels que le Bixler 2, le Firstar 1600 ou le Ranger 1600.&lt;/p&gt;</description></item><item><title>Signal de démarrage/arrêt pour la caméra d'action RunCam2</title><link>https://lubin.kerhuel.eu/fr/post/runcam-remote-control-cable/</link><pubDate>Sat, 18 May 2019 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/post/runcam-remote-control-cable/</guid><description>&lt;!-- Enable Photo Swipe + gallery features --&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.css" integrity="sha384-yX+tSqQp3yF8BiTuLLOwNyaqtmZ9yFQT7IYg7U9YU9Dz/JDlh6JJQmNClCmvYl+b" crossorigin="anonymous"&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/default-skin/default-skin.min.css" integrity="sha384-R6P/wJIrxjHcm//YCjb0S6rRgebsNn3u6U4NxVI8R03iSPAR5CwPqoq1n6U/tjFE" crossorigin="anonymous"&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.js" integrity="sha384-jkeJ/ETDRD/P4Y3I3CQi1QIwrEJjR9GdAZV2/aqDwwgA5ldCNiExYJeBwKyQC/+q" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe-ui-default.min.js" integrity="sha384-HotcxRWS6/oszHPwknjGnd066fV8+ycnO5TXDcOscFWvTtaiCtEEv+9s5Qrn1iJD" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"&gt;
&lt;div class="pswp__bg"&gt;&lt;/div&gt;
&lt;div class="pswp__scroll-wrap"&gt;
&lt;div class="pswp__container"&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__ui pswp__ui--hidden"&gt;
&lt;div class="pswp__top-bar"&gt;
&lt;div class="pswp__counter"&gt;&lt;/div&gt;
&lt;button class="pswp__button pswp__button--close" title="Close (Esc)"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--share" title="Share"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--fs" title="Toggle fullscreen"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--zoom" title="Zoom in/out"&gt;&lt;/button&gt;
&lt;div class="pswp__preloader"&gt;
&lt;div class="pswp__preloader__icn"&gt;
&lt;div class="pswp__preloader__cut"&gt;
&lt;div class="pswp__preloader__donut"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"&gt;
&lt;div class="pswp__share-tooltip"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"&gt;
&lt;/button&gt;
&lt;button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"&gt;
&lt;/button&gt;
&lt;div class="pswp__caption"&gt;
&lt;div class="pswp__caption__center"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Il existe des câbles pour relier une caméra d&amp;rsquo;action RunCam2 à un récepteur RC afin de démarrer et d&amp;rsquo;arrêter l&amp;rsquo;enregistrement à distance à partir de la sortie PWM du récepteur (période de 20 ms, rapport cyclique de 1 ms à 2 ms).
Le câble contient une logique qui décode le signal PWM RC et génère la séquence d&amp;rsquo;impulsions qui démarre et arrête l&amp;rsquo;enregistrement de la RunCam2.&lt;/p&gt;
&lt;p&gt;Il est également possible de commander la caméra avec un microcontrôleur, en générant la séquence d&amp;rsquo;impulsions requise décrite ci-dessous.&lt;/p&gt;
&lt;p&gt;Le brochage du câble micro USB est le suivant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Broche 1 (VCC) : +5 V (une tension plus élevée est possible sur le connecteur de la RunCam2)&lt;/li&gt;
&lt;li&gt;Broche 3 (D+) : signal TTL (5 V)&lt;/li&gt;
&lt;li&gt;Broche 5 (GND) : GND&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lorsqu&amp;rsquo;on règle le port USB de la caméra sur « Remote Control » (et non « mass storage ») avec l&amp;rsquo;application de configuration, il est possible de faire basculer la caméra du mode vidéo au mode photo et inversement, de démarrer ou d&amp;rsquo;arrêter l&amp;rsquo;enregistrement, ou de prendre une photo.&lt;/p&gt;
&lt;p&gt;La séquence d&amp;rsquo;impulsions est la suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une impulsion fait passer la caméra du mode enregistrement vidéo au mode photo.&lt;/li&gt;
&lt;li&gt;Deux impulsions séparées de 85 ms démarrent ou arrêtent un enregistrement vidéo (ou prennent une photo en mode photo).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le niveau des impulsions est de 5 V, mais le dispositif fonctionne également avec 3,3 V. La ligne est à l&amp;rsquo;état bas au repos. Les impulsions durent 85 ms à l&amp;rsquo;état haut et sont séparées de 85 ms lorsque plusieurs impulsions sont émises.&lt;/p&gt;
&lt;p&gt;Dispositif évalué avec une runCam2 alimentée par une batterie LiPo 3S (10 à 14 V), sans batterie dans la caméra, et avec des impulsions générées par une broche de dsPIC configurée en sortie numérique 3,3 V.&lt;/p&gt;
&lt;p&gt;La figure ci-dessous est le diagramme Simulink contenant la logique utilisée pour générer les impulsions souhaitées sur un dsPIC. Le code est généré avec Simulink Coder et le &lt;a href="https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/SW007023" target="_blank" rel="noopener"&gt;bloc MPLAB&lt;/a&gt; de Microchip.&lt;/p&gt;
&lt;link rel="stylesheet" href="https://lubin.kerhuel.eu/css/hugo-easy-gallery.css" /&gt;
&lt;div class="box" style="max-width:100%"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
&lt;div class="img"&gt;
&lt;img itemprop="thumbnail" src="https://lubin.kerhuel.eu/img/runcam2-startstop-simulink-logic.png" loading="lazy" alt="Logique Simulink pour commander une caméra d&amp;rsquo;action runCam2. Le pas de temps du sous-système est de 1 ms. L&amp;rsquo;intégrateur est remis à zéro à chaque changement d&amp;rsquo;état de l&amp;rsquo;entrée du sous-système, ce qui déclenche la génération d&amp;rsquo;une séquence de deux impulsions de 85 ms. La remise à zéro de l&amp;rsquo;intégrateur est verrouillée pendant la génération des impulsions. La logique en sortie de l&amp;rsquo;intégrateur génère les impulsions. Le code généré a été évalué sur une cible dsPIC"/&gt;
&lt;/div&gt;
&lt;a href="https://lubin.kerhuel.eu/img/runcam2-startstop-simulink-logic.png" itemprop="contentUrl"&gt;&lt;/a&gt;
&lt;figcaption data-pre="Figure " data-post=":" class="numbered"&gt;
&lt;p&gt;Logique Simulink pour commander une caméra d&amp;rsquo;action runCam2. Le pas de temps du sous-système est de 1 ms. L&amp;rsquo;intégrateur est remis à zéro à chaque changement d&amp;rsquo;état de l&amp;rsquo;entrée du sous-système, ce qui déclenche la génération d&amp;rsquo;une séquence de deux impulsions de 85 ms. La remise à zéro de l&amp;rsquo;intégrateur est verrouillée pendant la génération des impulsions. La logique en sortie de l&amp;rsquo;intégrateur génère les impulsions. Le code généré a été évalué sur une cible dsPIC&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;</description></item><item><title>Pendule inversé</title><link>https://lubin.kerhuel.eu/fr/project/inverted-pendulum/</link><pubDate>Sat, 01 Dec 2018 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/project/inverted-pendulum/</guid><description>&lt;p&gt;Pendule inversé réalisé par prototypage rapide de commande avec Simulink et exécuté sur une carte dsPIC microstick II.
L&amp;rsquo;algorithme de fusion de données de la centrale inertielle (IMU) utilise le capteur ICM-20608 pour estimer l&amp;rsquo;angle.
La boucle de commande LQR pilote les deux moteurs DC du jouet modifié.
Aucun codeur n&amp;rsquo;est utilisé.&lt;/p&gt;</description></item><item><title>TP INSA - Commande temps réel d'un moteur DC / PMSM</title><link>https://lubin.kerhuel.eu/fr/project/lab-dc-motor/</link><pubDate>Sat, 01 Dec 2018 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/project/lab-dc-motor/</guid><description>&lt;p&gt;Commande d&amp;rsquo;un moteur 24 V (Pravalux 24 V DC) avec la carte MCLV-V2 équipée d&amp;rsquo;un dsPIC 33EP256MC506.
Ce TP s&amp;rsquo;adresse aux étudiants de 5e année de l&amp;rsquo;INSA-Lyon.&lt;/p&gt;
&lt;p&gt;Le sujet du TP est disponible à l&amp;rsquo;adresse : &lt;a href="https://rtdc.ctrl-elec.fr/" target="_blank" rel="noopener"&gt;https://rtdc.ctrl-elec.fr/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Les diapositives présentent les adaptations nécessaires pour passer d&amp;rsquo;un modèle Simulink de simulation (ou dSPACE) à un modèle Simulink ciblant un microcontrôleur. Deux sujets sont abordés :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ordonnancement temps réel / analyse de la charge du processeur&lt;/li&gt;
&lt;li&gt;Types de données en virgule fixe&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2021 : le TP sur dSPACE n&amp;rsquo;étant pas envisageable en salle à cause de la pandémie de Covid-19, il a été remplacé par un TP à domicile sur des cartes MCLV-2 envoyées aux étudiants.
Le sujet du TP est disponible à l&amp;rsquo;adresse : &lt;a href="https://rcp.ctrl-elec.fr/" target="_blank" rel="noopener"&gt;https://rcp.ctrl-elec.fr/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Ancien site</title><link>https://lubin.kerhuel.eu/fr/project/www-kerhuel-eu-wiki/</link><pubDate>Sat, 25 Jun 2011 00:00:00 +0000</pubDate><guid>https://lubin.kerhuel.eu/fr/project/www-kerhuel-eu-wiki/</guid><description>&lt;!-- Enable Photo Swipe + gallery features --&gt;
&lt;!--
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.css" integrity="sha384-yX+tSqQp3yF8BiTuLLOwNyaqtmZ9yFQT7IYg7U9YU9Dz/JDlh6JJQmNClCmvYl+b" crossorigin="anonymous"&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/default-skin/default-skin.min.css" integrity="sha384-R6P/wJIrxjHcm//YCjb0S6rRgebsNn3u6U4NxVI8R03iSPAR5CwPqoq1n6U/tjFE" crossorigin="anonymous"&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe.min.js" integrity="sha384-jkeJ/ETDRD/P4Y3I3CQi1QIwrEJjR9GdAZV2/aqDwwgA5ldCNiExYJeBwKyQC/+q" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.3/photoswipe-ui-default.min.js" integrity="sha384-HotcxRWS6/oszHPwknjGnd066fV8+ycnO5TXDcOscFWvTtaiCtEEv+9s5Qrn1iJD" crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"&gt;
&lt;div class="pswp__bg"&gt;&lt;/div&gt;
&lt;div class="pswp__scroll-wrap"&gt;
&lt;div class="pswp__container"&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;div class="pswp__item"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__ui pswp__ui--hidden"&gt;
&lt;div class="pswp__top-bar"&gt;
&lt;div class="pswp__counter"&gt;&lt;/div&gt;
&lt;button class="pswp__button pswp__button--close" title="Close (Esc)"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--share" title="Share"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--fs" title="Toggle fullscreen"&gt;&lt;/button&gt;
&lt;button class="pswp__button pswp__button--zoom" title="Zoom in/out"&gt;&lt;/button&gt;
&lt;div class="pswp__preloader"&gt;
&lt;div class="pswp__preloader__icn"&gt;
&lt;div class="pswp__preloader__cut"&gt;
&lt;div class="pswp__preloader__donut"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"&gt;
&lt;div class="pswp__share-tooltip"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"&gt;
&lt;/button&gt;
&lt;button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"&gt;
&lt;/button&gt;
&lt;div class="pswp__caption"&gt;
&lt;div class="pswp__caption__center"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
--&gt;</description></item></channel></rss>