Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Surveillance de présence de tension externe
Surveillance de présence de tension externe
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
OK , à 5K je fais une bonne moyenne alors . cela ne sert a rien ne s'approcher trop de la limite . ce n'est vraimùent pas critique dans mon application .
Pour le programme je préfère faire une moyenne plutôt qu'une lecture seule non ?
Si je fais ceci c'est bon ?
une moyenne sur 10 lectures ainsi j'élimine les éventuelles erreurs?
PS : j'ai rien compris au schéma
Pour le programme je préfère faire une moyenne plutôt qu'une lecture seule non ?
Si je fais ceci c'est bon ?
Code : Tout sélectionner
valeur_ADC = 0;
valeur_ADC_moy = 0;
for (i=0;i=9;i++){
valeur_ADC = ADC_Read(4);
delay_ms(5);
valeur_ADC_moy = valeur_ADC + valeur_ADC_moy ;
}
valeur_ADC_moy = valeur_ADC_moy / 10;
une moyenne sur 10 lectures ainsi j'élimine les éventuelles erreurs?
PS : j'ai rien compris au schéma
Surveillance de présence de tension externe
- Gérard
Expert- Messages : 1644
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
Tu es sûr de ta routine?
Pour faire la moyenne de 10 valeurs, il faut acquérir les 10 valeurs dans un tableau, faire la somme des 10 valeurs et diviser par 10.
Si les valeurs de départ sont sur 8 bit, la valeur somme devra être sur 16 bit.
Pas grave pour le schéma, ce n'est pas vital, la valeur de 5K est importante.
Edit, j'ai de nouveau regardé ta routine, je crois que c'est bon.
Le C et moi ...
Pour faire la moyenne de 10 valeurs, il faut acquérir les 10 valeurs dans un tableau, faire la somme des 10 valeurs et diviser par 10.
Si les valeurs de départ sont sur 8 bit, la valeur somme devra être sur 16 bit.
Pas grave pour le schéma, ce n'est pas vital, la valeur de 5K est importante.
Edit, j'ai de nouveau regardé ta routine, je crois que c'est bon.
Le C et moi ...
Surveillance de présence de tension externe
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Tu es sûr de ta routine?
non pas sûr du tout je viens de la faire .
Mais je pense que c'est bon ; La valeur valeur_ADC et valeur_ADC_moy sont des int .
Code : Tout sélectionner
unsigned int valeur_ADC, valeur_ADC_moy;
Code : Tout sélectionner
valeur_ADC = 0; // RAZ de la valeur
valeur_ADC_moy = 0; // RAZ de la valeur
for (i=0;i=9;i++){ // 10 boucles de mesure
valeur_ADC = ADC_Read(4); // Enregistrement de la valeur lue dans la variable
delay_ms(5);
valeur_ADC_moy = valeur_ADC + valeur_ADC_moy ; // Ajout de la valeur lue au total pour faire la moyenne
}
valeur_ADC_moy = valeur_ADC_moy / 10; // Après collecte de 10 valeurs on divise par 10 pour sortir la moyenne
}
Surveillance de présence de tension externe
Surveillance de présence de tension externe
Surveillance de présence de tension externe
Surveillance de présence de tension externe
- sylvain54
Amateur- Messages : 194
- Âge : 51
- Enregistré en : août 2015
- Localisation : Dans l'est de la France
Salut à tous,
Juste pour pinailler, il serait mieux de déclarer une valeur ''unsigned int Max_Sampling = 10;'' pour faciliter la reprise ou la modification de code ultérieure.
Cela donnerai ça du coup :
C'est sur que pour un petit programme, cela ne change pas grand chose, mais imagine dans un truc monstrueux , tu n'as que ta valeur Max_Sampling à modifier, pas besoin d'aller voir ta routine.
A ++
Juste pour pinailler, il serait mieux de déclarer une valeur ''unsigned int Max_Sampling = 10;'' pour faciliter la reprise ou la modification de code ultérieure.
Cela donnerai ça du coup :
Code : Tout sélectionner
unsigned int valeur_ADC, valeur_ADC_moy;
unsigned int Max_Sampling = 10; //nombre d'échantillons
valeur_ADC = 0; // RAZ de la valeur
valeur_ADC_moy = 0; // RAZ de la valeur
for (i=0;i< Max_Sampling ;i++){ // 10 boucles de mesure
valeur_ADC = ADC_Read(4); // Enregistrement de la valeur lue dans la variable
delay_ms(5);
valeur_ADC_moy = valeur_ADC + valeur_ADC_moy ; // Ajout de la valeur lue au total pour faire la moyenne
}
valeur_ADC_moy = valeur_ADC_moy / Max_Sampling ; // Après collecte de 10 valeurs on divise par 10 pour sortir la moyenne
}
C'est sur que pour un petit programme, cela ne change pas grand chose, mais imagine dans un truc monstrueux , tu n'as que ta valeur Max_Sampling à modifier, pas besoin d'aller voir ta routine.
A ++
Surveillance de présence de tension externe
bonsoir
Bon je sais, je vais être rabat-joie, plutôt que de faire une moyenne sur dix, c'est notre éducation la base 10, nous travaillons pas ici sur la base 10, mais plutôt sur base 2( binaire)
la rotation droite >> est une divisions en base 2. La rotation gauche << étant une multiplication en base 2
Donc cela nous donne :
2 additions et 1 rotation droite, c'est une moyenne
4 additions et 2 rotations droite c'est aussi une moyenne
8 additions et 3 rotations droite cela est aussi une moyenne
etc....
Avantage plus rapide et bien plus court au niveau occupation flash pour avoir la moyenne, plus de division par 10 pas très bon pour nos petits pic
Pose toi la question pourquoi 10 ? pourquoi pas 12 15 18 , une moyenne est une moyenne. Maintenant si tu veux base de dix .Comme tu veux tu choises
perso j'aime bien les 3 rotations droite
A+
Bon je sais, je vais être rabat-joie, plutôt que de faire une moyenne sur dix, c'est notre éducation la base 10, nous travaillons pas ici sur la base 10, mais plutôt sur base 2( binaire)
la rotation droite >> est une divisions en base 2. La rotation gauche << étant une multiplication en base 2
Donc cela nous donne :
2 additions et 1 rotation droite, c'est une moyenne
4 additions et 2 rotations droite c'est aussi une moyenne
8 additions et 3 rotations droite cela est aussi une moyenne
etc....
Avantage plus rapide et bien plus court au niveau occupation flash pour avoir la moyenne, plus de division par 10 pas très bon pour nos petits pic
Pose toi la question pourquoi 10 ? pourquoi pas 12 15 18 , une moyenne est une moyenne. Maintenant si tu veux base de dix .Comme tu veux tu choises
perso j'aime bien les 3 rotations droite
A+
Modifié en dernier par Anonymous le lun. 9 mai 2016 19:53, modifié 1 fois.
Surveillance de présence de tension externe
Je rejoins tout à fait maï.
Il est plus propre de faire appel aux décalages que de faire une division, sauf contrainte majeure.
Tu peux prendre 8 ou 16 ce qui revient à faire un décalage à droite du résultat de respectivement 3 et 4 -> (2^3=8)
Perso je prends 16 quand je veux bien filtrer (technique de décimation).
La décimation augmente le nombre de bits mais diminue la vitesse de conversion, donc le choix dépend des contraintes de l'application.
Il est plus propre de faire appel aux décalages que de faire une division, sauf contrainte majeure.
Tu peux prendre 8 ou 16 ce qui revient à faire un décalage à droite du résultat de respectivement 3 et 4 -> (2^3=8)
Perso je prends 16 quand je veux bien filtrer (technique de décimation).
La décimation augmente le nombre de bits mais diminue la vitesse de conversion, donc le choix dépend des contraintes de l'application.
Retourner vers « Généralités sur les PICs »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 62 invités