Bonjour, j'ai commencer à bosser sur un projet pour mon BTS mais me voila un peut en galère.
Je vous explique :
Je doit remplacer un multimètre/ampèremètre pour une entreprise. Le leur à une résolution de 10 bits. Ils m'ont donc fournis une Arduino Due (qui a donc une résolution de 12 bits) afin que je puisse leurs faire le programme etc. Pour le moment je n'ai pas plus d'infos intéressante a donner, rien sur l'utilisation si ce n'est les choses suivantes :
Le multimètre à une entrée 3.3V, un 6V, une +16, une -16, une -16/+16 (soit 32V), et une 24 V. ça c'est pour les entrée en tension. Ils me demandent pour le moment de m'occuper juste de ça et on verra pour la suite après.
J'utilise donc le logiciel IDE Arduino 1.7.10 car il est le seul a avoir les fonctions de l'arduino Due. Mon arduino due dispose de ceci comme processeur : "The Arduino Due is a microcontroller board based on the Atmel SAM3X8E ARM Cortex-M3 CPU" un peut plus d'info : 54 entrées/sorties digitales, 12 entrées analogiques, 4 UARTs et 2 sorties analogiques.
Je me sert des entrées analogiques pour récupérer une tension qui sera adapté en 3.3 V quand avant d'arriver sur la carte, sinon elle fume. Donc en gros :
Je récupère une tension en 3.3V, je doit l'analyser, la convertir en bonne tension (selon l'entrée utilisée) et ensuite ajouter un coefficient de correction (je n'ai pas trop compris pourquoi mais ils m'ont dit que ce sera sous la forme ax²+bx ou ax^3+bx²+c).
Pour le moment j'ai fais fonctionner ceci sur une entrée, j'ai un potentiomètre connecté au 3.3 et a la masse de la carte, et qui a sa sortie sur A0 pour mes test.
Dans mon programme, j'imagine que la tension est de 6V (alors qu'actuellement elle est en 3.3) j'ai donc le programme suivant :
des suggestions pour m'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 const int AI_A0 = A0; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A1 = A1; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A2 = A2; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A3 = A3; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A4 = A4; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A5 = A5; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A6 = A6; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A7 = A7; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A8 = A8; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A9 = A9; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A10 = A10; // PIN d'entrée analogique sur le quel est attaché le potentiomètre const int AI_A11 = A11; // PIN d'entrée analogique sur le quel est attaché le potentiomètre int sensorValue = 0 ; //Déclaration d'une variable en INT float V_A0 = 0; //Déclaration d'une variable en flottante void setup() { **Serial.begin(9600); // Initialise la communication série à 9600 Bauds. } void loop() { ***analogReadResolution(12);*************************//règle la résolution sur 12 bits **//Lis les valeurs analogiques du port AO : **sensorValue*=*analogRead(AI_A0); //Donne à la variable les valeurs lue sur le port A0 **// Affiche les mesures sur le moniteur série **V_A0*=*sensorValue; **Serial.print("A0_HEXA = " ); //affiche "A0_HEXA=" **Serial.print(sensorValue,HEX); //Affiche la valeur actuel du potentiomètre (sur une résolution de 12 bits) **Serial.print("\t A0_3.3V = "); //Affiche "VA0_3.3V =" **Serial.print(V_A0*(3.3/4096)); //Affiche la valeur de V_A0 en 3.3V **Serial.print("\t\t A0_6V = "); //Affiche "VA0_6V = " **Serial.print(V_A0*(6.0/4096)); //Affiche la valeur de V_A0 en 6V **Serial.print("\t A0_6V_Corr = "); //Affiche "A0_6V_corr = " **Serial.println(((V_A0*(6.0/4096))+0.1)); //Affiche la valeur de V_A0 en 6V + une correction **// Attendre 2 MS avant la prochaine boucle **// pour laisser le temps de convertir **// avant la prochaine lecture. **delay(2); ** }
J'aimerai faire une boucle qui fais ce que j'ai fais sur un port, sur tous les ports, sans faire un copier coller 11 fois afin que le programme ne soit pas trop lourd (même si la carte à une grosse capacité). Je n'ai pas trop d'idée de comment faire.. peut être avec un compteur qui incrémente jusqu'à 12 puis qui repart a zero histoire de tout checker.
Pour le moment pour voir les valeurs je me sert de la console de l'IDE. pas d'afficheur ni rien pour le moment.
Merci à vous !
Partager