{"id":379,"date":"2013-01-07T16:25:07","date_gmt":"2013-01-07T15:25:07","guid":{"rendered":"http:\/\/telefab.fr\/?p=379"},"modified":"2026-04-30T16:39:11","modified_gmt":"2026-04-30T14:39:11","slug":"multiplexage-dadc-sur-arduino","status":"publish","type":"tutoriel","link":"https:\/\/hub.imt-atlantique.fr\/fablab\/tutoriel\/multiplexage-dadc-sur-arduino\/","title":{"rendered":"Multiplexage d&rsquo;ADC sur Arduino"},"content":{"rendered":"<p style=\"text-align: justify;\">Les cartes Arduino sont id\u00e9ales pour s&rsquo;initier \u00e0 la programmation, ou bien r\u00e9aliser simplement de petits projets d\u2019\u00e9lectronique. Elles disposent d\u2019I\/O num\u00e9riques, de sorties num\u00e9riques PWM ainsi que d\u2019entr\u00e9es analogiques, les ADCs. Cependant, dans certains cas, la carte \u00e9tudi\u00e9e n\u2019a pas un nombre suffisant d\u2019entr\u00e9es ou de sorties. Au lieu de monter en gamme de mat\u00e9riel ou tout simplement de doubler le microcontr\u00f4leur, nous allons voir qu\u2019il est possible de contourner ce probl\u00e8me. Pour le prix d\u2019une sortie num\u00e9rique du microcont\u00f4leur, nous pourrons doubler le nombre d\u2019entr\u00e9es analogiques.<\/p>\n<p style=\"text-align: justify;\">Par exemple, supposons que nous avons besoin de 32 entr\u00e9es analogiques alors qu\u2019au maximum, les cartes Arduino n\u2019en proposent que 16. Nous allons utiliser des multiplexeurs externes 1:2 afin de pouvoir connecter 2 informations analogiques sur une seule entr\u00e9e ADC de l\u2019Arduino. Il faut donc un multiplexeur par ADC dans notre cas. Les entr\u00e9es de commande des multiplexeurs ont juste besoin d\u2019\u00eatre reli\u00e9es ensemble sur une sortie num\u00e9rique du microcontr\u00f4leur. Voici un sch\u00e9ma de la r\u00e9alisation hardware\u00a0:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2013\/01\/mux-adc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-380 aligncenter\" src=\"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-content\/uploads\/archives\/2013\/01\/mux-adc-285x300.png\" alt=\"\" width=\"285\" height=\"300\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Au niveau software, pour scanner les entr\u00e9es, on va proc\u00e9der 16 par 16. On fixe d\u2019abord une\u00a0 valeur pour la commande des multiplexeurs, puis on scanne les 16 entr\u00e9es qui sont disponibles. Il suffit ensuite de changer la commande des multiplexeurs et de scanner encore les 16 ADCs. On a alors parcouru les 32 entr\u00e9es. Voici le code correspondant\u00a0au multiplexage d\u2019une entr\u00e9e :<\/p>\n<p>[cpp]<br \/>\nint sensorPin = A0;\t\/\/ s\u00e9lectionne l&#039;ADC<br \/>\nint muxPin = 22;\t\/\/ s\u00e9lectionne le pin de commande des mux<br \/>\nint sensorValue = 0;\u00a0\t\/\/ variable pour stocker la valeur de l&#039;ADC<br \/>\nint mux = 0;<\/p>\n<p>void setup() {<br \/>\n\tpinMode(muxPin, OUTPUT);<br \/>\n}<\/p>\n<p>void loop() {<br \/>\n\tsensorValue = analogRead(sensorPin); \/\/ on lit l&#039;ADC<\/p>\n<p>\tif(mux==0){<br \/>\n\t\t\/\/ commandes pour la premi\u00e8re entr\u00e9e<br \/>\n\t}<br \/>\n\telse{<br \/>\n\t\t\/\/ commandes pour la seconde entr\u00e9e<br \/>\n\t}<\/p>\n<p>\tmux =\u00a0 1 &#8211; mux; \/\/ on change d&#039;\u00e9tat le pin de commande mux<br \/>\n\tdigitalWrite(muxPin, mux);<br \/>\n\tdelay(10);<br \/>\n}<br \/>\n[\/cpp]<\/p>\n<p>L\u2019op\u00e9ration est bien entendu 2 fois plus longue que pour 16 entr\u00e9es, mais ce temps peut \u00eatre n\u00e9gligeable selon l\u2019application. Il est aussi possible de multiplier les entr\u00e9es analogiques par 3 ou 4 en utilisant des multiplexeurs 1:3 ou 1:4, mais le temps de scan sera multipli\u00e9 d\u2019autant.<\/p>\n","protected":false},"featured_media":0,"parent":0,"template":"","meta":{"_acf_changed":false},"class_list":["post-379","tutoriel","type-tutoriel","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/tutoriel\/379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/tutoriel"}],"about":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/types\/tutoriel"}],"wp:attachment":[{"href":"https:\/\/hub.imt-atlantique.fr\/fablab\/wp-json\/wp\/v2\/media?parent=379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}