Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1683 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Génération d'une fréquence précise via carte son en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Génération d'une fréquence précise via carte son en C

n°1811866
oazice
Posté le 14-11-2008 à 03:02:30  profilanswer
 

Bonjour à tous!
 
Je cherche à contrôler 2 servo-moteurs (pour asservir une webcam) via la carte son de mon PC (le système en sortie est déjà fait et fonctionne très bien)
Je génère actuelle 2 signaux PWM (pour contrôler les moteurs) via Audacity. Ils s'agit simplement de deux signaux de période 18 ms avec un temps « haut » de 1,5 à 2,5 ms comme le montre l'image ci-après.  
http://www.bricotronique.com/montages/servosound/principe.png
et ci-après les signaux sous Audacity!
http://www.bricotronique.com/montages/servosound/Audacity.png
 
J'aimerai désormais générer ces signaux son avec un programme en C (je suis ouvert à d'autres langages mais ayant un programme en C en amont pour l'acquisition de données, je préfererai rester avec ca! :) ). Bien sûr ces signaux doivent être générer en temps-réel par le prog car ce sont est eux qui permettent de contrôler les servo-moteurs et donc changerons en permanence, je ne veux donc pas générer de fichier .WAV ou autre à lire.  
 
J'ai fait pas mal de recherche sur le net mais pour le moment sans succès!!!
Je vous remercie beaucoup pour toutes les pistes que vous pourrez m'indiquer!
 
 
 

mood
Publicité
Posté le 14-11-2008 à 03:02:30  profilanswer
 

n°1811871
h0taru
Posté le 14-11-2008 à 07:01:41  profilanswer
 

Salut à toi,
 
Juste par curiosité, pourquoi utilises-tu des sigaux son pour controler ton servo-moteur? il se commande avec la sortie audio de ton PC uniquement?
 
J'ai vu rapidement l'existence d'une biblothèque <mmsystem.h> pour Windows qui semble descendre en suffisament bas niveau pour gerer tes fréquences.
 
A tester...


Message édité par h0taru le 14-11-2008 à 07:09:09
n°1811920
Je@nb
Kindly give dime
Posté le 14-11-2008 à 10:11:10  profilanswer
 

Si il utilise ça je pense que c'est tout simplement parce que un son qui sort d'une carte son est un simple signal analogique tout bête. Tu lui fais passer ta sinusoïde/signal carré/rampe et c'est fini.
 
Après je ne sais pas comment faire ton truc :D

n°1811990
h0taru
Posté le 14-11-2008 à 12:26:38  profilanswer
 

Si c'est juste pour generer un signal il peut utiliser en théorie toutes tes sorties. Ce genre de programmation se trouve simplifiée sous Linux où les périphériques sont considérées comme des fichiers et où la glibc donnent toutes les fonctionnalités. Juste besoin d'utiliser par exemple outb(), les bons droits d'acces et des compteurs pour la fréquence.

n°1842284
fayr
Posté le 23-01-2009 à 19:47:45  profilanswer
 

Bonjour  :hello:  
je voudrais savoir si tu as réussi à faire ton programme.
Je suis confronter au même probleme sauf que je dois génerer un signal ppm pour controler une radio et non directement les servos...
J'ai également penser à utiliser audacity pour tester mais je n'ai pas essayer (encore). A priori la carte son peut generer un signal de 20 khz ce qui est suffisant.
Pour ce qui de la programmation je suis en train d'essayer d'utiliser la fonction waveOutWrite() en c
Es tu arrivé à quelques choses?   :heink:  
 

n°1848792
cimourdain
Posté le 09-02-2009 à 09:17:14  profilanswer
 

la librairie FMOD permet de faire ça. Moi j'avais généré des sinusoïdes avec les fréquences de mon choix avec changement en temps réel. De mémoire il y a un objet qui s'appelle oscillator dans cette librairie.

n°1849171
youen
Posté le 09-02-2009 à 22:19:41  profilanswer
 

Et, par curiosité, les cartes son n'ont pas de problème pour sortir des signaux carré ?
 
J'avais bidouillé des trucs pour générer du son en temps réel à une époque, et je crois que winmm permet effectivement de faire ce qu'on veut. De mémoire, il y a deux buffers (ou plus) ; on en remplit un pendant que la carte son est en train de sortir l'autre, ensuite on est notifié par une callback quand il faut remplir un nouveau buffer, etc. Du point de vue logiciel, on est absolument libre de générer le signal qu'on veut. Par contre il y a une latence qui dépend de la taille des buffers, des drivers et de la carte son, mais ça doit être de l'ordre de la centaine de millisecondes, donc pour contrôler des servo pas de soucis.


Message édité par youen le 09-02-2009 à 22:21:38
n°1850372
bjone
Insert booze to continue
Posté le 12-02-2009 à 14:31:19  profilanswer
 

bah tu peux prendre fmod, la sdl, ou autre.
 
Après tu auras le filtre passe-bas après le convertisseur, mais si avec Audacity et un oscillo tu vois que tu as ce qu'il te faut sur les cas extrêmes, ça devrait aller.


Message édité par bjone le 12-02-2009 à 14:31:48

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Génération d'une fréquence précise via carte son en C

 

Sujets relatifs
[C] Utilisation d'une DLL[C++][resolu]error: no matching function for call to...
[ C ] Erreur de segmentation (core dumped)Programmation Threads en C++
utiliser une dll compilée en C# dans un projet VisualC++Exercices programmation C++
VBA - C++ - DLLRécupération de temps de réponse (PING) en C
[DRUPAL] C'est içi?probleme de programmation en C
Plus de sujets relatifs à : Génération d'une fréquence précise via carte son en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR