Go Down

Topic: Choix de moteur : contrôle précis de la vitesse (Read 1 time) previous topic - next topic

churchill

Bonjour,

J'aimerais réaliser un petit accordeur stroboscopique.
Le principe est simple : un disque tourne à un certaine vitesse choisie et une lumière clignote à la fréquence du son capturé. Si on est trop bas, l'effet stroboscopique nous montre le disque tournant dans un sens, trop haut, dans l'autre, et quand on est juste, le disque ne tourne plus.
Je suis donc à la recherche d'un moteur, silencieux, dont on peut contrôler précisément la vitesse de rotation (disons de 20Hz à 4 Khz ou moins).
Une petite idée ?

churchill

sype

Salut,

regarde du côté d'un ancien poste radio, tu peux y récupérer un moteur compact. Ou encore mieux baladeur cd !  :D

Sinon pour gérer la vitesse de ton moteur à souhait, il faut changer son rapport cyclique via PWM http://arduino103.blogspot.fr/2011/05/pwm-la-modulation-de-la-largeur.html
:P

fdufnews

Quote
Je suis donc à la recherche d'un moteur, silencieux, dont on peut contrôler précisément la vitesse de rotation (disons de 20Hz à 4 Khz ou moins).

La vitesse de rotation d'un moteur ce compte en tours minute et un moteur qui tourne à 20000 tours/minute c'est déjà une bombe. Et 20000 tours.minutes ça ne fait que 333 tours/seconde. Donc on est très loin des 4kHz.

Dans un accordeur stroboscopique, il y a un disque entraîné par le moteur, ce disque porte des secteurs noirs et blancs. Il faut donc considérer la vitesse du moteur multipliée par le nombre de secteurs sur le disque pour déterminer la fréquence. Un moteur qui tourne à 200 tours/minute entraînant un disque portant 30 secteurs donnera une fréquence de 6kHz.

Maintenant concernant la fourchette de fréquence que tu cherches, je me demande bien quel instrument tu veux accorder avec des fréquences aussi élevées. Il est bien rare qu'un instrument de musique délivre une fondamentale supérieure à 5kHz.

Super_Cinci

#3
Jun 10, 2012, 11:17 am Last Edit: Jun 10, 2012, 11:31 am by Super_Cinci Reason: 1
Attention, Fduf, tu as oublié de passer la rotation en secondes... le moteur à 200tr/min avec 30 secteurs donne 6000 secteurs par minute, soit 100Hz  ;)

Rien n'empêche de multiplier la fréquence, mais ça demande des ressources particulières que l'arduino n'aura pas (il faut deux timers pour traiter la chose).

pour info, les cordes d'une guitare ont des fondamentales comprises entre 165 et 650Hz environ (du mi au mi).

Si tu veux accorder une basse, il faut savoir que le mi grave de l'instrument tourne à 82.4Hz et le sol à 196Hz.

Je ne sais pas du tout si c'est vers là que tu t'orientes...

une led qui clignotte à 83Hz fera paraitre immobile tout disque tournant à une fréquence multiple de 83Hz, tu peux donc tourner à 8300Hz par exemple, mais la led doit alors fonctionner en impulsion très brève (la durée du passage d'un secteur max) sinon le disque sera "flou"...

Pour faire tourner ton disque, tu peux utiliser un moteur synchrone (moteur de lecteur CD par exemple) ou PAP, tu pourras définir une vitesse de rotation précise, un moteur CC est très dur à réguler précisément, surtout si l'alim n'est pas au top. Les moteurs CC des imprimantes possèdent un disque à secteurs, mais ce n'est pas pour le réguler : le moteur tourne comme il peut et chaque secteur déclenche une impulsion. L'imprimante se base sur cette impulsion pour savoir où en est l'avance de la tête et envoyer la giclée d'encre qui correspond.

bon courage!

PS : le rapport de fréquences entre deux notes séparées d'un demi ton est "racine 12ième de 2" (environ 1.0594631), donc si un LA=440Hz, alors LA#=SIb=440 x 1.0594... = 466.164Hz. De même, LAb = 440/1.0594...=415.3Hz, SOL=392Hz etc etc

Tu le savais peut-être déjà, mais ça répondra à tous ceux qui se posent la question.

Artouste

#4
Jun 10, 2012, 12:46 pm Last Edit: Jun 10, 2012, 12:49 pm by Artouste Reason: 1



Pour faire tourner ton disque, tu peux utiliser un moteur synchrone (moteur de lecteur CD par exemple) ou PAP, tu pourras définir une vitesse de rotation précise, un moteur CC est très dur à réguler précisément, surtout si l'alim n'est pas au top. Les moteurs CC des imprimantes possèdent un disque à secteurs, mais ce n'est pas pour le réguler : le moteur tourne comme il peut et chaque secteur déclenche une impulsion. L'imprimante se base sur cette impulsion pour savoir où en est l'avance de la tête et envoyer la giclée d'encre qui correspond.


Bonjour
utiliser un moteur CC avec encodeur peut être une bonne solution, à la condition d'accoupler aussi un "volant d'inertie", il est alors facile de récupérer l'info d'une voie de l'encodeur en quadrature là "on" se fout de la quadrature , seuls  les tops comptent, pour asservir/réguler sa vitesse.

fdufnews

Quote
Attention, Fduf, tu as oublié de passer la rotation en secondes... le moteur à 200tr/min avec 30 secteurs donne 6000 secteurs par minute, soit 100Hz

En fait je me suis pris les pieds dans le tapis. Je voulais repartir de mon moteur à 20000tr/min --> 333 tours/sec avec un disque à 30 secteurs cela donne 10kHz.

churchill

Bon, je vois que j'ai l'embarras du choix :-)

Effectivement je n'ai peut-être pas besoin de tester le 5 khz, quoi que...
J'envisage l'utilisation (bon c'est surtout pour le plaisir de la bricole) avec des instruments d'orchestre d'harmonie.
On aura certainement le plus grave avec la timbale dès 50 hz ou le tuba (avec un musicien en forme) à 20 hz, et la plus aigüe avec le piccolo ~4khz.

Je vais faire des tests avec ce que j'ai en stock (moteur de lecteur CD, magnétoscope, ventilateur PC...) et je reviendrai rendre compte (mais pas tout de suite, hein, je suis pas rapide !)

fdufnews

Je vois quand même un problème. C'est la résolution de la commande analogWrite(). Elle n'est pas du tout adaptée. Il va falloir implémenter un vrai asservissement de vitesse avec un capteur sur le moteur et peut être même un DAC externe en lieu et place de la fonction analogWrite().

Super_Cinci

Pourquoi un DAC? il suffit d'utiliser une sortie OCnX d'un timer, ça, c'est super stable (enfin aussi stable que le quartz) Pour un moteur CC. Pour un moteur synchrone, on peut imaginer deux sorties OCnX aussi... Reste la question de la régulation, car le PID, j'ai longtemps cherché, ben c'est pas donné à tout le monde...

fdufnews

#9
Jun 13, 2012, 08:55 am Last Edit: Jun 13, 2012, 04:43 pm by fdufnews Reason: 1
Quote
Pourquoi un DAC? il suffit d'utiliser une sortie OCnX d'un timer, ça, c'est super stable

Je ne parle pas de stabilité mais de résolution.
Il cherche à couvrir 8 octaves. Et comme il veut générer des notes, il doit avoir une précision relativement important sinon l'instrument jouera faux. Pour mémoire le rapport entre deux notes demi-tons voisins c'est racine douzième de deux (soit 1.0594630944) et il ne faut pas se contenter de 2 décimales pour que ça sonne juste.

Edit: Après réflexion, il n'est pas nécessaire de couvrir 8 octaves. Il suffit de couvrir une seule octave. C'est lié au principe des systèmes stroboscopiques, car il y a un repliement du spectre. Si le disque (avec une seule bande noire pour la simplicité de l'explication) tourne à la fréquence N et qu'on l'éclaire avec une fréquence N/2 on verra 2 fois la bande. Si on l'éclaire avec une fréquence 2*N on éclairera la bande un tour sur 2 donc on verra 1 bande. Cela ne diminue en rien la résolution nécessaire pour remplir le fonction d'accordeur.

skywodd

Salut,

Quote
Pourquoi un DAC? il suffit d'utiliser une sortie OCnX d'un timer, ça, c'est super stable

Je confirme :)
Si tu utilise un timer en "Fast PWM" à 16MHz il est possible de générer un signal équivalent à celui en sortie d'un vrai DAC 8 bits.

Je suis justement en train de faire un projet sur base d'ATtiny58 utilisant ce principe ;)
(Exemple de signaux généré) http://twitpic.com/9vmxzg (ça peut aussi "lire" des .wav @8KHz ;))
(Exemple de la version 2 voies qui génére une image sur un écran d'oscilloscope) http://twitpic.com/9vyzm6
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up