Je travaille actuellement sur un projet Arduino dans lequel il va falloir que j'utilise une technique d'échantillonnage à l'aide d'un convertisseur CAN rapide . Est-ce d'optimiser une conversion rapide avec un Arduino Uno? j'aimerais savoir si vous auriez des propositions qui m'aideront à implémenter une conversion CAN rapide?
il s'agit d'un convertisseur sur 10 bits, pour obtenir des échantillons , car je voudrais effectuer la lecture d'un signal analogique ( réception) masqué en partie par un autre signal (entrée).
Quelle est la fréquence max a échantilloner ?
C’est une donnée indispensable.
Pour bien comprendre le fonctionnement d’un CAN, et ses défauts la datasheet de l’atmega328p est très bien faite.
Il faut comprendre que quand le can donne 345, la vraie mesure est comprise à plus ou moins 5, ou à plus ou moins 10.
Un CAN a plusieurs défauts qui sont bien listés dans la datasheet.
Si tu n’avais donné aucune contrainte cela n’aura pas eu de réponse de ma part. Un uno en mode passe partout convient dans 99 % des cas.
D’ailleurs as-tu essayé ?
A partir du moment ou tu avances des contraintes il faut être cohérent et tout prendre en compte.
Ou alors ce ne sont pas des vraies contraintes mais une attitude ceinture plus bretelles..
Et tu veux acquérir combien d'échantillons?
Parce que la UNO risque d'être un peu à la ramasse, elle n'a que 2kB de RAM et une partie est utilisée par le système et il va falloir soigner le code pour soutenir le rythme.
Si tu as le choix il faudrait peut-être voir des cibles un peu plus capables (ESP32, Raspberry Pi Pico, .....)
Attention, les cycles sont des périodes horloge de l'ADC. Il y a des diviseurs entre le 16 MHz général et la fréquence effective de l'ADC.
By default, the successive approximation circuitry requires an input clock frequency between 50kHz and 200kHz to get
maximum resolution.
13 cycles de 200 000 Hz = 5 µs * 13 = 65 µs.
If a lower resolution than 10 bits is needed, the input clock frequency to the ADC can be higher than 200kHz to get a higher sample rate.
The ADC module contains a prescaler, which generates an acceptable ADC clock frequency from any CPU frequency above 100kHz.
The prescaling is set by the ADPS bits in ADCSRA. The prescaler starts counting from the moment the ADC is switched on by setting the ADEN bit in ADCSRA. The prescaler keeps running for as long as the ADEN bit is set, and is continuously reset when ADEN is low.
Sauf à accepter une précision moindre (en nombre de bit) et savoir comment on peut le faire (je ne sais pas et j'ai abandonné ce micro), le microcontrôleur de la UNO n'est pas assez rapide, ............si tu confirmes ton besoin.