un microcontroleur plus performant

un microcontroleur plus performant

Messagede virgule » 07 Juin 2019, 20:40

Bonjour,
est ce que quelqu'un connait un microcontroleur qui aurait
- une fréquence d'échantillonnage d'au moins 40kHz pour les entrées analogiques
- une vraie sortie analogique pour pouvoir générer les signaux que l'on veut
l'idée serait de se passer de carte d'acquisition
merci
virgule
 
Messages: 129
Inscription: 04 Sep 2011, 15:22
Académie: Grenoble
Poste: Enseignant en Lycée

Re: un microcontroleur plus performant

Messagede gts2 » 07 Juin 2019, 22:08

gts2
 
Messages: 330
Inscription: 19 Fév 2019, 10:49
Académie: Orléans-Tours
Poste: Enseignant en Classes préparatoires

Re: un microcontroleur plus performant

Messagede virgule » 08 Juin 2019, 12:30

Merci,
j'ai fait quelque recherches et je suis tombé sur ce site :
http://www.f-legrand.fr/scidoc/docimg/s ... n/can.html
dans lequel il est dit :
"La fonction analogRead est beaucoup trop lente pour effectuer des numérisations échantillonnées à plusieurs kHz. On utilisera donc l'API Atmel, et l'accès direct aux registres pour certaines opérations."
(le mieux que j'arrive à faire avec l'arduino uno, c'est une fréquence échantillonnage d'1kHz environ (avec analogRead() )

dans mon cas, je souhaiterais le faire faire aux élèves, donc plutôt en le programmant depuis l'IDE arduino...

quelqu'un s'est déjà penché sur ce problème ?
virgule
 
Messages: 129
Inscription: 04 Sep 2011, 15:22
Académie: Grenoble
Poste: Enseignant en Lycée

Re: un microcontroleur plus performant

Messagede physicus » 08 Juin 2019, 16:12

Bonjour,
d'après la documentation officielle https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
On ATmega based boards (UNO, Nano, Mini, Mega), it takes about 100 microseconds (0.0001 s) to read an analog input, so the maximum reading rate is about 10,000 times a second.

on a donc au maximum une fréquence d'échantillonnage de 10 KHz.
Mais on va aussi perdre du temps en transférant les données via le port série, si on les transmet une par une.
Il vaut mieux envoyer des paquets de mesures et paramétrer le port série de manière a être capable d'aller très vite https://www.arduino.cc/en/Serial/Begin

Le microcontrôleur ATmega peut avoir des fréquences d’échantillonnages plus grandes (en perdant de la résolution) mais il faut modifier la configuration de différents registres du microcontrôleur, ce qui est expliqué dans de nombreux sites.

Pour générer des signaux analogiques autrement qu'en modulation de largeur d'impulsion (le PWM d'Arduino), il faut utiliser un DAC (digital Analogic Converter)
Il en existe de plusieurs types selon l'adressage (série/parallèle) et la résolution (8/10/12 bits)
Un exemple parmi pleins d'autres https://www.gotronic.fr/art-module-convertisseur-dac-mcp4725-20136.htm
physicus
 
Messages: 809
Inscription: 13 Aoû 2012, 16:48
Académie: Académie de Strasbourg
Poste: Enseignant en Lycée

Re: un microcontroleur plus performant

Messagede gts2 » 08 Juin 2019, 16:42

Toujours sur le site de Frédéric Legrand http://www.f-legrand.fr/scidoc/docimg/sciphys/arduino/adcrapide/adcrapide.html
indique comment faire une acquisition rapide (50 kHz) en restant dans l'éditeur Arduino avec une Arduino Uno.
Il y a même le programme Python pour récupérer les données.
Par contre, cela est très ésotérique, il vaut mieux prendre une carte plus rapide qui permettra d'écrire du code lisible et une carte avec un CNA / DAC intégré pour là encore alléger le code : un simple analogWrite(DAC0,valeur).
gts2
 
Messages: 330
Inscription: 19 Fév 2019, 10:49
Académie: Orléans-Tours
Poste: Enseignant en Classes préparatoires

Re: un microcontroleur plus performant

Messagede virgule » 10 Juin 2019, 20:33

physicus a écrit:on a donc au maximum une fréquence d'échantillonnage de 10 KHz.
Mais on va aussi perdre du temps en transférant les données via le port série, si on les transmet une par une.
Il vaut mieux envoyer des paquets de mesures

du coup j'ai essayé d'enregistrer les mesures sur la carte arduino, puis de les envoyer d'un coup sur le port série, la période d’échantillonnage tombe à 0,12ms (on gagne un facteur 6)

gts2 a écrit:Toujours sur le site de Frédéric Legrand http://www.f-legrand.fr/scidoc/docimg/s ... apide.html
indique comment faire une acquisition rapide (50 kHz) en restant dans l'éditeur Arduino avec une Arduino Uno.
Il y a même le programme Python pour récupérer les données.
Par contre, cela est très ésotérique, il vaut mieux prendre une carte plus rapide qui permettra d'écrire du code lisible et une carte avec un CNA / DAC intégré pour là encore alléger le code : un simple analogWrite(DAC0,valeur).

j'ai été voir, ça fait plutôt mal au dents, même si c'est super bien expliqué, il me faudrait pas mal de temps pour comprendre...alors quand à le faire faire aux élèves...
sinon, a un collègue de la liste phychim dit utiliser le "m4 express de adafruit", qui a l'air assez performant
je vais me renseigner, à suivre..
virgule
 
Messages: 129
Inscription: 04 Sep 2011, 15:22
Académie: Grenoble
Poste: Enseignant en Lycée

Re: un microcontroleur plus performant

Messagede virgule » 26 Juin 2019, 15:35

J'ai pu essayer l'Arduino Due, et avec un programme simple (qui enregistre les données, puis qui les transmets sur la liaison série), on atteint une fréquence d’échantillonnage de 125kHz en utilisant une entrée analogique.
virgule
 
Messages: 129
Inscription: 04 Sep 2011, 15:22
Académie: Grenoble
Poste: Enseignant en Lycée

Re: un microcontroleur plus performant

Messagede j.chouteau » 16 Oct 2019, 14:34

J'ai écrit une réponse à ce propos sur une carte adaptée à nos besoins en sciences physiques :

viewtopic.php?f=138&t=14227#p64239

Pour info , je mets les pinOut pour montrer que cette carte contient deux Digit -> Aanalog -> Converteurs

De mémoire elle peut aussi gérer un bus I2S spécialisé dans l'audio ... (?)
Version ESP32D de mémoire
Info trouvé rapidement sur le net :
https://github.com/miketeachman/micropy ... s-examples

A plus

Jacques
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
j.chouteau
 
Messages: 63
Inscription: 13 Sep 2010, 12:46
Académie: Nantes
Poste: Enseignant en Lycée

Re: un microcontroleur plus performant

Messagede cécile » 16 Oct 2019, 17:40

C'est une excellente idée vu qu'il n'y a rien d'équivalent. Peut-on avoir une idée du prix ? Sera-t-il possible d'y adapter un Module Grove Base Shield et les capteurs Grove qui sont assez intéressants et peu coûteux ? Merci
cécile
 
Messages: 84
Inscription: 26 Aoû 2012, 10:28
Académie: Clermont Ferrand
Poste: Enseignant en Lycée

Re: un microcontroleur plus performant

Messagede j.chouteau » 16 Oct 2019, 20:27

Analyse-absorption.jpg
Je n'ai pas prévu de compatibilité avec les shield et modules groove car les dimensions de la carte ne sont pas adaptées d'une part et parce que la société SOPROLEC doit prendre des précautions pour ne pas être inquiétée de cloner une solution développée par une autre société ... les connecteurs groove sont spécifiques à leur marque !!!

En revanche, je peux m'occuper de développer les modules en fonction de la demande puisqu'il y a un connecteur I2C et que beaucoup de capteurs existent déjà en I2C.
En développant ces cartes, je pensais en même temps développer un réseau d'entre aide sur les protocoles expérimentaux qu'on aurait pu mettre sur une plateforme de partage ...

Je travaille actuellement sur des capteurs de lumière pour analyser les rayonnements UV, visibles, IR.
Objectif : montrer les différences entre des lampes UV, LED, flocompacte, incandescentes
-> observation au spectroscope Jeulin ( tube noir) puis analyse avec les capteurs.
Du coup les capteurs réagissent là où le spectroscope ne montre rien : UV et IR

Du coup j'ai imprimer en 3D un support de tube à essais et le capteur analyse la quantité de rouge / vert / bleu absorbé en fonction de la concentration en masse d'un soluté -> étalonnage de la solution avec réalisation d'un graphique : quantité de R, V, B en fonction de la concentration en masse.
Analyse de la solution inconnue et exploitation du graphique.

J'ai développé aussi deux petits modules buzzer et micro pour mesurer la vitesse de propagation du son ans un tube plastique de PER de 2m.
J'obtiens environ 335 - 338 m/s du coup je pense qu'on peux mettre en évidence que la température peut influer sur la vitesse de propagation en isolant le tube et en faisant passer de l'air chaud dedans (sèche cheveux) ou au contraire de l'air froid ... à voir ;-)

Pour les tarifs, je pense à priori que la societe SOPROLEC doit pouvoir s'aligner à peu près mais comme les cartes sont fabriquées en france, ça risque d'être un peu plus cher. A priori j'ai cru comprendre que la carte principale ESP32 serait aux alentours d'une quarantaine d'euros avec les deux capteurs (lumière et température) ainsi que la led neopixel. Il y aura aussi une version avec un écran pour afficher des informations ( valeurs mesurées, ...).
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
j.chouteau
 
Messages: 63
Inscription: 13 Sep 2010, 12:46
Académie: Nantes
Poste: Enseignant en Lycée

Suivante

Retourner vers Ondes et signaux

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités