Pour un projet scolaire, je dois accéder à un flux de particules pendant un vol en ballon et pour cela j'ai acheté un compteur Geiger qui sort une tension continue d'environ 3V et qui retourne à 0V à chaque détection d'une particule.
Maintenant, ce qui m'intéresse c'est de compter sur 5s le nombre de particules, et faire sortir de l'arduino une tension continue proportionnelle aux nombre de retour à 0V comptés sur 5s.
L'idée est donc d'utiliser un signal PWM et faire varier le cycle en fonction du nombre de particules détectées, un filtre passe-bas en sortie me permettra d'obtenir ma tension continue tant désirée !!
Malheureusement après bon nombre de tentative, et étant novice sur Arduino, mon code ne marche pas. Pour réaliser une boucle pendant un temps donné (ici 5s) j'ai essayé d'utiliser la fonction millis() et de la comparer à un délai fixé.
Voilà mon code qui ne fonctionne pas,
Toute tentative d'explication et/ou d'aide serait la bienvenue ...
merci d'avance
// pin sur lequel le compteur est branché
int nb_particule; // compteur d'impulsions
int analogPin = A0;
int Delta;
unsigned long Depart;
void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT); // définit le port numérique 3 comme sortie
analogWrite(3,0); //crée sur le port 3 une tension moyenne de 0 V
pinMode(A0, INPUT); // active le pin_geiger pour être celui utilisé pour compter ses chutes à 0
nb_particule=0;
analogPin=0;
Depart=millis();
Delta=1000;
}
void loop() {
if((millis()-Depart)<=Delta)
{
if (analogRead(analogPin)==0)
{
nb_particule++;
Serial.println(nb_particule);
}
}
Depart=millis();
analogWrite(3,10*nb_particule); //la valeur moyenne du signal PWM est proportionnelle au nombre de particules
delay(1000);
}
// PLACER UN FILTRE RC EN SORTIE POUR NE CONSERVER QUE LA VALEUR MOYENNE: fréquence du PWM: 490,20 Hz
// fréquence de coupure du filtre : 40 Hz ; C=20microF ; R=200 Hz
j'en doute je suis en classe préparatoire et c'est une partie de sujet de TIPE ...
Sinon je suis curieux de voir ces réponses à mon problème, peut être serait il plus utile de me les indiquer plutôt que de souligner la redondance de cette question ...
1 En haut à droite du Forum il est possible de lancer une recherche Google circonscrite au Forum.
2 Le 'retour à la masse' d'un signal logique' est pour un électonicien un 'front descendant' (='failing edge')
Toutes les cartes Arduino permetttent d'incrémenter automatiquement un compteur à chaque front descendan survenant sur une entrée numérique bien préparée à cet effet.
Faire compter les fronts descendant par une boucle logicielle est loin d'être optimal, penser à l'exploitation d'une interruption matarielle.
Cette page fait le tour de la question sur les interruptions matérielles avec Arduino, sujet traité dans nombre de turoriels à la portée de tout moteur de recherche. https://www.locoduino.org/spip.php?article64
Si on te dit que le sujet a déjà été abordé, c'est qu'il a déjà été abordé.
Il n'y a pas que ton sujet de prépa qui existe ou qui a existé.
Si tu commences à mettre en doute ce que l'on te dit tu es mal parti, en tout cas moi je suis parti.
Est-ce qu'il ne fonctionne pas ou mal?
Une chose, tu devrait définir une échelle maximum. Ainsi, pour commander ta sortie PWM, tu pourras utiliser le fonction map()