{"id":521,"date":"2013-03-21T14:41:25","date_gmt":"2013-03-21T13:41:25","guid":{"rendered":"http:\/\/f5len.org\/blog\/?page_id=521"},"modified":"2026-02-05T10:22:46","modified_gmt":"2026-02-05T09:22:46","slug":"convertisseur-an","status":"publish","type":"page","link":"http:\/\/f5len.org\/blog\/sismologie-amateur\/convertisseur-an\/","title":{"rendered":"Convertisseur A\/N"},"content":{"rendered":"<p>Apr\u00e8s avoir utilis\u00e9 une convertisseur 12 bits et un PC pendant quelques temps, j&rsquo;ai commenc\u00e9 au cours du mois de juin 2014 la migration vers un ensemble bas\u00e9 sur un Raspberry Pi et un convertisseur ADS1115.<\/p>\n<p>Je ne m&rsquo;\u00e9tendrai pas sur l&rsquo;utilisation ou\u00a0ce qu&rsquo;est un Raspi. On trouve \u00e7a partout. La distribution utilis\u00e9e est une classique Raspbian. Le convertisseurs ADC est interrog\u00e9 via le bus I2C.<\/p>\n<p><strong>Le convertisseur<\/strong><\/p>\n<p><a href=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/ads1115.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-871 size-full\" src=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/ads1115.jpg\" alt=\"ads1115\" width=\"970\" height=\"728\" srcset=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/ads1115.jpg 970w, http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/ads1115-300x225.jpg 300w, http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/ads1115-399x300.jpg 399w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/a><\/p>\n<p>Le c\u00e2blage est tr\u00e8s sommaire.<\/p>\n<p>Raspberry \u00a0 \u00a0 \u00a0 ADS1115<br \/>\nGND \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#8211;&gt; \u00a0 GND<br \/>\n+ 5V \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#8211;&gt; \u00a0 \u00a0VDD<br \/>\nSCL \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &#8211;&gt; \u00a0 \u00a0SCL<br \/>\nSDA \u00a0 \u00a0 \u00a0 \u00a0 \u00a0&#8211;&gt; \u00a0 \u00a0SDA<br \/>\nADRR \u00a0 \u00a0 -&gt; GND (dans ma config adresse 0x48 sur le bus I2C)<br \/>\nA0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 -&gt; pre-amp capteur 1<br \/>\nA1 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 -&gt; pre-amp\u00a0capteur 1<br \/>\nA2 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 -&gt; pre-amp\u00a0capteur 2<br \/>\nA3 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 -&gt; pre-amp\u00a0capteur 2<\/p>\n<p>J\u2019utilise un vieux bout de Pyton r\u00e9cup\u00e9r\u00e9 sur ce site o\u00f9 tout le d\u00e9marrage y est bien expliqu\u00e9 :\u00a0<a href=\"http:\/\/openlabtools.eng.cam.ac.uk\/Resources\/Datalog\/RPi_ADS1115\/\" target=\"_blank\" rel=\"noopener\">http:\/\/openlabtools.eng.cam.ac.uk\/Resources\/Datalog\/RPi_ADS1115\/<\/a><\/p>\n<pre>#print_adc_readings.py - 12\/9\/2013. Written by David Purdie as part of the openlabtools initiative\r\n#Uses the adafruit python libraries to sample the ADS1115 at a user defined sampling frequency<\/pre>\n<p>from Adafruit_ADS1x15 import ADS1x15<br \/>\nimport datetime<br \/>\nimport time<br \/>\nimport numpy as np<\/p>\n<p>pga = 6144 # Set full-scale range of programable gain amplifier (page 13 of data sheet), change depending on the input voltage range<br \/>\nADS1115 = 0x01 # Specify that the device being used is the ADS1115, for the ADS1015 used 0x00<br \/>\nadc = ADS1x15(ic=ADS1115) # Create instance of the class ADS1x15 called adc<\/p>\n<p># Function to print sampled values to the terminal<br \/>\ndef logdata():<\/p>\n<p>#print \u00ab\u00a0sps value should be one of: 8, 16, 32, 64, 128, 250, 475, 860, otherwise the value will default to 250\u00a0\u00bb<\/p>\n<p>frequency = 40 # Get sampling frequency from user<br \/>\nsps = 100 # Get ads1115 sps value from the user<br \/>\ntime1 = 3599 # Get how long to sample for from the user<\/p>\n<p>period = 1.0 \/ frequency # Calculate sampling period<\/p>\n<p>datapoints = int(time1*frequency) # Datapoints is the total number of samples to take, which must be an integer<\/p>\n<p>startTime=time.time()<br \/>\nnow = datetime.datetime.now() # Time of first sample<br \/>\nname = now.strftime(\u00ab\u00a0%Y%m%d-%H\u00a0\u00bb)<br \/>\nname = name +\u00a0\u00bb.txt\u00a0\u00bb<br \/>\nt1=startTime # T1 is last sample time<br \/>\nt2=t1 # T2 is current time<\/p>\n<p>for x in range (0,datapoints) : # Loop in which data is sampled<br \/>\nwhile (t2-t1 &lt; period) : # Check if t2-t1 is less then sample period, if it is then update t2<br \/>\nt2=time.time() # and check again<br \/>\nt1+=period # Update last sample time by the sampling period<\/p>\n<p>result = adc.readADCDifferential01( pga, sps)<br \/>\nresult23 = adc.readADCDifferential23( pga, sps)<br \/>\n#print \u00ab\u00a0%s %s\\n\u00a0\u00bb % ( result, result23) # Print sampled value and time to the terminal<br \/>\nwritefile.write(\u00ab\u00a0%s %s\\n\u00a0\u00bb % ( result, result23))<br \/>\n# Call to logdata function<br \/>\nnow = datetime.datetime.now() # Time of first sample<br \/>\nname = now.strftime(\u00ab\u00a0%Y%m%d-%H\u00a0\u00bb)<br \/>\nname = name +\u00a0\u00bb.txt\u00a0\u00bb<\/p>\n<p>writefile = open(name,&rsquo;w&rsquo;,1024)<br \/>\nlogdata()<br \/>\nwritefile.close()<\/p>\n<p>Les donn\u00e9es issues de la conversion A\/N sont stock\u00e9es dans des fichiers d&rsquo;une dur\u00e9e d&rsquo;une heure de 144 000 \u00e9chantillons (40\/s). Les fichiers sont \u00e9crits\u00a0sur un serveur via un <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Network_File_System\" target=\"_blank\" rel=\"noopener\">montage NFS<\/a> pour \u00e9conomiser la carte SD.<br \/>\nIl serait plus astucieux d&rsquo;enregistrer les donn\u00e9es dans un autre format que du texte(&#8230;) mais dans un premier temps et \u00e0 titre d&rsquo;essai ca fonctionne.<\/p>\n<p>Reste \u00e0 afficher le r\u00e9sultat. On peut utiliser pour cela Gnuplot. C&rsquo;est un exemple parmi d&rsquo;autres. Gnuplot permet d&rsquo;afficher une courbe mais ne permet pas de filtrage ou d&rsquo;analyse.\u00a0Pour ce faire j&rsquo;utilise un logiciel TSOFT \u00a0<a href=\"http:\/\/seismologie.oma.be\/TSOFT\/tsoft.html\" target=\"_blank\" rel=\"noopener\">http:\/\/seismologie.oma.be\/TSOFT\/tsoft.html<\/a>\u00a0publi\u00e9 par the\u00a0<span style=\"color: #000000;\">Royal Observatory of Belgium.<\/span><\/p>\n<p>Voici une sortie brute obtenue avec Gnuplot<\/p>\n<p><a href=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-875\" src=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex.jpg\" alt=\"gnuplot_ex\" width=\"1024\" height=\"400\" srcset=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex.jpg 1024w, http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex-300x117.jpg 300w, http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex-500x195.jpg 500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>C&rsquo;est \u00e9videment tr\u00e8s sommaire, mais on voit qu&rsquo;il se passe quelque chose \ud83d\ude09<\/p>\n<p>La m\u00eame \u00e0 un moment plus calme<\/p>\n<p><a href=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-876\" src=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex2.jpg\" alt=\"gnuplot_ex2\" width=\"1024\" height=\"400\" srcset=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex2.jpg 1024w, http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex2-300x117.jpg 300w, http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/gnuplot_ex2-500x195.jpg 500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p>Les pics vers 6h, 6h33 et 06h37 sont des trains passant non loin.<\/p>\n<p><em>To be continued&#8230;<\/em><\/p>\n<p><strong>Ancienne config<\/strong><\/p>\n<p><del>Le convertisseur analogique-num\u00e9rique est\u00a0b\u00e2ti\u00a0autour d&rsquo;un<a href=\"https:\/\/www.google.com\/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;cad=rja&amp;ved=0CDQQFjAA&amp;url=http%3A%2F%2Fdatasheets.maximintegrated.com%2Fen%2Fds%2FMAX186-MAX188.pdf&amp;ei=EB1LUeL2MYPMPf_QgbAM&amp;usg=AFQjCNEIaOHlq1sASUaOerxvwCPzUyeqMA&amp;sig2=OlDMDymzmaq7ZGhCWQEX4g&amp;bvm=bv.44158598,d.ZWU\" target=\"_blank\" rel=\"noopener\"> MAX 186<\/a>. Le montage est inspir\u00e9 de celui utilis\u00e9 pour le projet\u00a0<a href=\"http:\/\/radiosky.com\/skypipeishere.html\" target=\"_blank\" rel=\"noopener\">Radio-SkyPipe<\/a>. Les donn\u00e9es sont lues depuis un port parall\u00e8le d&rsquo;un PC sous Linux.<\/del><\/p>\n<p><del> Le MAX186 poss\u00e8de 8 entr\u00e9es analogiques (pin 1 \u00e0 8) avec une r\u00e9solution de 12 bits. La tension sur une entr\u00e9e peut varier de 0 \u00e0 4096 mV.<\/del><br \/>\n<del> Le sch\u00e9ma est ultra simple comme on le voit ci-dessous.<\/del><\/p>\n<p><del><a href=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/max186.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-536\" src=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/max186-300x197.jpg\" alt=\"max186\" width=\"300\" height=\"197\" srcset=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/max186-300x197.jpg 300w, http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/max186-455x300.jpg 455w, http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/max186.jpg 513w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/del><\/p>\n<p><del><a href=\"http:\/\/f5len.org\/blog\/wp-content\/uploads\/2013\/03\/k118-1.0.tar.gz\" target=\"_blank\" rel=\"noopener\">Le code source du logiciel<\/a> permettant d&rsquo;utiliser le convertisseur. Sa compilation sous Linux ne pose aucun probl\u00e8me. Se\u00a0r\u00e9f\u00e9rer au Readme inclus dans l&rsquo;archive. Ce logiciel lit les valeurs de une ou plusieurs des entr\u00e9es du MAX186 et les enregistre dans un fichier texte. Ci-dessous un exemple avec deux entr\u00e9es.<\/del><\/p>\n<p><del>1363816801 2167 2075<\/del><br \/>\n<del> 1363816801 2139 2073<\/del><br \/>\n<del> &#8230;<\/del><\/p>\n<p><del>Le d\u00e9but de la ligne est un timestamp Unix. Sa pr\u00e9cision est de 1 seconde seulement. Donc si on demande une vitesse\u00a0d\u2019\u00e9chantillonnage \u00e0 10 ech\/s le timestamp sera le m\u00eame pour 10 lignes cons\u00e9cutives. Il faudra donc pr\u00e9voir un petit post traitement de cette valeur si on souhaite obtenir l&rsquo;heure en dessous de la seconde. Ou plus \u00e9l\u00e9gant, modifier le source du programme pour obtenir une valeur en micro-seconde par exemple.<\/del><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s avoir utilis\u00e9 une convertisseur 12 bits et un PC pendant quelques temps, j&rsquo;ai commenc\u00e9 au cours du mois de juin 2014 la migration vers un ensemble bas\u00e9 sur un Raspberry Pi et un convertisseur ADS1115. Je ne m&rsquo;\u00e9tendrai pas &hellip; <a href=\"http:\/\/f5len.org\/blog\/sismologie-amateur\/convertisseur-an\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":495,"menu_order":5,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-521","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/f5len.org\/blog\/wp-json\/wp\/v2\/pages\/521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/f5len.org\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/f5len.org\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/f5len.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/f5len.org\/blog\/wp-json\/wp\/v2\/comments?post=521"}],"version-history":[{"count":16,"href":"http:\/\/f5len.org\/blog\/wp-json\/wp\/v2\/pages\/521\/revisions"}],"predecessor-version":[{"id":1862,"href":"http:\/\/f5len.org\/blog\/wp-json\/wp\/v2\/pages\/521\/revisions\/1862"}],"up":[{"embeddable":true,"href":"http:\/\/f5len.org\/blog\/wp-json\/wp\/v2\/pages\/495"}],"wp:attachment":[{"href":"http:\/\/f5len.org\/blog\/wp-json\/wp\/v2\/media?parent=521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}