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
Faire une moyenne pour detection
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
J'utrilise un capteur a microwave pour detecter un mouvement. Ce détecteur ne sert qu'a scruter une valeur analogique dans la pratique.
En début de programme j'initialise avec une valeur de référence. qui est une moyenne sur 100 valeurs.
Ensuite mon idée est de surveiller les valeurs qui arrivent pour détecter un mouvement. Mais comment bien scrutezr en permanence les valeurs ?
Je suis partis dans l'idée, de scruter toutes les 5ms si une valeur est en dessous ou au dessus de la référence avec un petit threshold pour pouvoir a terme régler la sensibilité.
Si sur une salve de 10 mesures j'en mesure 3 hors cadre, alors je détecte un mouvement.
Le probleme si je passe par une moyenne c'est uqe la moyenne risque d'étre faussée si je par ueemple une valeur au dessus et une autre en dessous.
Disons que j'a iune référence à 2.5V, sdi je mesure 2V puis 3V, je me retrouve avec une moyenne de 2.5V et donc pas de detection.
D'ou mon idée de compteur le nombre de mesure hos cadre!
Qu'en pensez vous ? je ne doute pas qu'il y a beaucoup mieux pour rendre cela plus fiable.
J'utrilise un capteur a microwave pour detecter un mouvement. Ce détecteur ne sert qu'a scruter une valeur analogique dans la pratique.
En début de programme j'initialise avec une valeur de référence. qui est une moyenne sur 100 valeurs.
Ensuite mon idée est de surveiller les valeurs qui arrivent pour détecter un mouvement. Mais comment bien scrutezr en permanence les valeurs ?
Je suis partis dans l'idée, de scruter toutes les 5ms si une valeur est en dessous ou au dessus de la référence avec un petit threshold pour pouvoir a terme régler la sensibilité.
Si sur une salve de 10 mesures j'en mesure 3 hors cadre, alors je détecte un mouvement.
Le probleme si je passe par une moyenne c'est uqe la moyenne risque d'étre faussée si je par ueemple une valeur au dessus et une autre en dessous.
Disons que j'a iune référence à 2.5V, sdi je mesure 2V puis 3V, je me retrouve avec une moyenne de 2.5V et donc pas de detection.
D'ou mon idée de compteur le nombre de mesure hos cadre!
Qu'en pensez vous ? je ne doute pas qu'il y a beaucoup mieux pour rendre cela plus fiable.
Code : Tout sélectionner
while (1){
//Detection();
cnt = 0;
for ( sampler = 0; sampler < 10 ; sampler++ )
{
single = ADC_Read(2);
delay_ms(5);
if ( (single < reference-10) || (single > reference+10))
{
cnt++;
}
}
if ( cnt > 3)
{
UART1_Write_Text("Mouvement");
UART1_Write(10);
UART1_Write(13);
}
}
}
Faire une moyenne pour detection
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Bonjour Jérémy,
C’est possible de fournir la référence de ton capteur et le schéma de celui-ci si tu le possèdes ?
Il serait intéressant d’avoir une copie d’écran du signal à l’oscilloscope en régime stable et perturbé de ton capteur
A voir aussi l’impact du niveau de la lumière ambiante sur ton capteur
De souvenir cela joue aussi sur le niveau de sortie
A+
Francois
C’est possible de fournir la référence de ton capteur et le schéma de celui-ci si tu le possèdes ?
Il serait intéressant d’avoir une copie d’écran du signal à l’oscilloscope en régime stable et perturbé de ton capteur
A voir aussi l’impact du niveau de la lumière ambiante sur ton capteur
De souvenir cela joue aussi sur le niveau de sortie
A+
Francois
Faire une moyenne pour detection
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour Francois7,
Rien de bien extraordinaire mais je m'exécute !
Voici les photos demandées. Une droite presque plate de 2.44V . le curseur du zéro est tout en bas.
Et suivant qu'on bouge ou non la fréquence et l'amplitude varie énormément. D’où mon souhait de pouvoir régler un peu tout ça, suivant si c'est un chat ou un éléphant que j'ai a détecté.
Le module c'est celui ci : microwave
On trouve un code de sampling; Mais il ne teste que les données inférieur à la référence au lieu de prendre aussi celle du dessus.
Tu trouveras le schéma ici : schéma
J'ai rajouté un condo chimique de 10µF et 100nF sur l'entrée de mon PIC pour lisser un peu.
L'idée est de pouvoir détecter des très faibles mouvements pour simuler une paroi. dès qu'on s’éloigne un peu ou que l'on met un obstacle la détection devient plus "touchy"
Rien de bien extraordinaire mais je m'exécute !
Voici les photos demandées. Une droite presque plate de 2.44V . le curseur du zéro est tout en bas.
Et suivant qu'on bouge ou non la fréquence et l'amplitude varie énormément. D’où mon souhait de pouvoir régler un peu tout ça, suivant si c'est un chat ou un éléphant que j'ai a détecté.
Le module c'est celui ci : microwave
On trouve un code de sampling; Mais il ne teste que les données inférieur à la référence au lieu de prendre aussi celle du dessus.
Tu trouveras le schéma ici : schéma
J'ai rajouté un condo chimique de 10µF et 100nF sur l'entrée de mon PIC pour lisser un peu.
L'idée est de pouvoir détecter des très faibles mouvements pour simuler une paroi. dès qu'on s’éloigne un peu ou que l'on met un obstacle la détection devient plus "touchy"
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Faire une moyenne pour detection
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Hello,
Je ferais un module type dérivée réglable avec seuil
le problème, c'est de mesurer le variation de signal
tu pourrais avec un tuyau pvc faire varier un objet (une balle de tennis par exemple )et quantifié les variation de signal en fonction du déplacement
Apres c'est du traitement de signal
ton programme est a peu près ce que j'aurais fait mais en ASM
je blague
A+
Francois
Je ferais un module type dérivée réglable avec seuil
le problème, c'est de mesurer le variation de signal
tu pourrais avec un tuyau pvc faire varier un objet (une balle de tennis par exemple )et quantifié les variation de signal en fonction du déplacement
Apres c'est du traitement de signal
ton programme est a peu près ce que j'aurais fait mais en ASM
je blague
A+
Francois
Faire une moyenne pour detection
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonjour à tous,
Pourquoi ne pas utiliser directement les Comparateurs ...
Seuils avec valeur Ana => interruption si en dehors des clous ..
Rajout d'un filtre sur entree Ana ?
le double ampli OP MCP622 est deja bien limité en bande passante avec 1nF en // avec 150K
un filtrage exponentiel au lieu d'une moyenne ?
tres utile avec des mesures via ADC 16 ,18,ou 24 bits !
Init : Valeur Filtree=New valeur
filtre=0.2 ; ( filtre de 0.0 = jamais rafraichi max=1.0 =pas de filtrage)
boucle ayant un timing regulier
{
Valeur filtree = (New Valeur* filtre + (1-Filtre) Old valeur)
Old valeur=valeur Filtree
}
ou avec un calcul d'ecart type sur 30 mesures glissantes ?
Quelle portée (distance) de detection maxi peut-on espérer avec ce module ?
Je suis partis dans l'idée, de scruter toutes les 5ms si une valeur est en dessous ou au dessus de la référence avec un petit threshold pour pouvoir a terme régler la sensibilité.
Pourquoi ne pas utiliser directement les Comparateurs ...
Seuils avec valeur Ana => interruption si en dehors des clous ..
Rajout d'un filtre sur entree Ana ?
le double ampli OP MCP622 est deja bien limité en bande passante avec 1nF en // avec 150K
un filtrage exponentiel au lieu d'une moyenne ?
tres utile avec des mesures via ADC 16 ,18,ou 24 bits !
Init : Valeur Filtree=New valeur
filtre=0.2 ; ( filtre de 0.0 = jamais rafraichi max=1.0 =pas de filtrage)
boucle ayant un timing regulier
{
Valeur filtree = (New Valeur* filtre + (1-Filtre) Old valeur)
Old valeur=valeur Filtree
}
ou avec un calcul d'ecart type sur 30 mesures glissantes ?
Quelle portée (distance) de detection maxi peut-on espérer avec ce module ?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Faire une moyenne pour detection
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 44
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonsoir,
Merci à tous pour vos conseils.
J'ai opté pour un truc simple.
Je fais un échantillonnage sur 30 valeurs et je compte combien de valeurs on dépassé les limites hautes et basses.
Dans le même temps je fais une moyenne.
Si le nombre de valeurs qui ont dépassées les limites sont supérieurs à un nombre( ici 3/30 = 10%) alors je considère qu'il y a eu un mouvement.
Si le nombre de valeurs erronées est à 0 , alors je recalcule la valeur référence pour étalonner. Car je me suis rendu compte qu'avec la température la référence évolue lentement dans le temps.
Le threshold est la variable pour régler la sensibilité du capteur.
J'aurai pus aussi jouer avec le nombre d'erreurs pour la répétabilité mais bon .....
Merci à tous pour vos conseils.
J'ai opté pour un truc simple.
Code : Tout sélectionner
while (1){
Error_cnt = 0;
sum = 0;
for ( sampler = 0; sampler < 30 ; sampler++ )
{
single = ADC_Read(2);
sum += single;
if ( (single < reference - THRESHOLD) || (single > reference + THRESHOLD))
{
Error_cnt++;
}
delay_ms(2);
}
if ( Error_cnt > 3)
{
MOUVEMENT
}
if ( Error_cnt == 0)
{
sum = sum / 30;
reference = sum;
}
}
Je fais un échantillonnage sur 30 valeurs et je compte combien de valeurs on dépassé les limites hautes et basses.
Dans le même temps je fais une moyenne.
Si le nombre de valeurs qui ont dépassées les limites sont supérieurs à un nombre( ici 3/30 = 10%) alors je considère qu'il y a eu un mouvement.
Si le nombre de valeurs erronées est à 0 , alors je recalcule la valeur référence pour étalonner. Car je me suis rendu compte qu'avec la température la référence évolue lentement dans le temps.
Le threshold est la variable pour régler la sensibilité du capteur.
J'aurai pus aussi jouer avec le nombre d'erreurs pour la répétabilité mais bon .....
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 43 invités