IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Acquisition données à 1000Hz sur Raspberry Pi 2


Sujet :

Raspberry Pi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Par défaut Acquisition données à 1000Hz sur Raspberry Pi 2
    Bonjour,
    Je suis actuellement sur un projet qui met en oeuvre un*ADC (Analog to Digital Converter) le*MCP3208 et une carte Raspberry Pi 2. Pour ce projet il me faut récupérer la tension aux bornes du MCP3208 sur ma Raspberry et stocker ces valeurs dans un fichier à 1000Hz avec le plus de précision possible. Pour l'instant je parviens à récupérer la tension et à stocker les valeurs dans un fichier mais je ne sais pas comment définir un taux de rafraichissement précis...
    Si cela vous inspire quoi que ce soit n'hésitez pas à m'en faire part.
    Merci d'avance
    Tom

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Tu vas devoir compter les ticks d'une horloge et émettre une valeur toutes les millisecondes environ. Il n'existe rien dans la bibliothèque standard offrant une telle résolution. Le plus précis reste de compter les ticks processeur via les instructions assembleur ad hoc mais sur plate-forme POSIX clock_gettime offre le meilleur compromis entre précision et portabilité et devrait faire le job amplement.

    Je te conseille de bufferiser ta sortie : n'écris dans le fichier que lorsque tu as x valeurs de prêtes. Ou alors ne t'emmerdes carrément pas et envoies tout vers stdout que tu rediriges à l'invocation ou via syslogd.

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Par défaut
    Tout d'abord merci pour ta réponse rapide !
    Pour la première partie de ta réponse je te suis et je pense à présent savoir comment faire, par contre pour cette partie :
    Citation Envoyé par Matt_Houston Voir le message
    Je te conseille de bufferiser ta sortie : n'écris dans le fichier que lorsque tu as x valeurs de prêtes. Ou alors ne t'emmerdes carrément pas et envoies tout vers stdout que tu rediriges à l'invocation ou via syslogd.
    j'avoue être un peu largué... Si tu peux me réexpliquer ça plus doucement ça serait super parce que ça a l'air super intéressant !!

  4. #4
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Par défaut
    Sinon est-ce qu'il y a un moyen de faire de l'interruption pour assurer un déclenchement précis de la lecture de la sortie ?

  5. #5
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Citation Envoyé par tom.aubier Voir le message
    j'avoue être un peu largué... Si tu peux me réexpliquer ça plus doucement ça serait super parce que ça a l'air super intéressant !!
    Aucun souci : le fait d'écrire dans un flux de sortie - sortie standard, fichier, pipe, connexion TCP... - déclenche un appel système qui coûte cher et surtout dont la durée est difficile à prévoir (bon en réalité ça dépend du flux et de l'environnement, mais dans le cas général il est sage de supposer que c'est lent). Pour cette raison, lorsqu'une régularité temporelle est requise comme c'est le cas ici, il vaut mieux différer les opérations d'écriture de manière à en réduire la fréquence. On accumule les données dans un tampon mémoire que l'on vide en écrivant tout un bloc lorsqu'il est plein, ou lorsqu'explicitement demandé (flush).

    La plupart des flux ouverts via la bibliothèque standard sur la plupart des OS sont déjà bufferisés (voir setvbuf, setbuf pour contrôler ce qui peut l'être). Typiquement c'est le cas pour stdout lorsqu'elle est redirigée vers un « vrai » fichier donc tu n'as même pas à t'en préoccuper si par exemple tu invoques le programme comme ceci : $ ./prog > output.txt.


    Citation Envoyé par tom.aubier Voir le message
    Sinon est-ce qu'il y a un moyen de faire de l'interruption pour assurer un déclenchement précis de la lecture de la sortie ?
    Tu évoques une gestion directe des interruptions matérielles du Raspberry ? Honnêtement je me sers du mien seulement comme media center donc je ne suis pas qualifié pour te répondre mais ça m'étonnerait que le kernel de base te le permette. Il existe peut-être des mini-OS plus permissifs pour cette appareil..

  6. #6
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Par défaut
    Merci pour ces infos !
    Sinon j'ai déjà utilisé la bibliothèque MsTimer2 qui fonctionne très bien sur Arduino, est-ce que vous savez s'il est possible de l'utiliser sur Raspberry ?
    Lien vers la bibliothèque : http://www.pjrc.com/teensy/td_libs_MsTimer2.html

Discussions similaires

  1. Acquisition de données analogiques sur Raspberry Pi 2
    Par tom.aubier dans le forum Raspberry Pi
    Réponses: 6
    Dernier message: 19/02/2016, 16h13
  2. Réponses: 1
    Dernier message: 24/01/2015, 20h40
  3. comment afficher des données Access sur Word ??
    Par merlubreizh dans le forum Access
    Réponses: 7
    Dernier message: 16/09/2005, 15h07
  4. comment afficher des données Access sur Excel ??
    Par merlubreizh dans le forum Access
    Réponses: 9
    Dernier message: 14/09/2005, 14h38
  5. Calcul de données present sur des enregistrements different
    Par logistik dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/05/2005, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo