Pages: [1]   Go Down
Author Topic: Choix de moteur : contrôle précis de la vitesse  (Read 1517 times)
0 Members and 1 Guest are viewing this topic.
Massongex, Suisse
Offline Offline
Full Member
***
Karma: 2
Posts: 169
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 32
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

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

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
 smiley-razz
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3010
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 10
Posts: 1294
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-wink

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.
« Last Edit: June 10, 2012, 04:31:58 am by Super_Cinci » Logged

Offline Offline
Faraday Member
**
Karma: 19
Posts: 4170
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



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.
« Last Edit: June 10, 2012, 05:49:40 am by Artouste » Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3010
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Massongex, Suisse
Offline Offline
Full Member
***
Karma: 2
Posts: 169
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 !)
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3010
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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().
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 10
Posts: 1294
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3010
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: June 13, 2012, 09:43:30 am by fdufnews » Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Quote
Pourquoi un DAC? il suffit d'utiliser une sortie OCnX d'un timer, ça, c'est super stable
Je confirme smiley
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 smiley-wink
(Exemple de signaux généré) http://twitpic.com/9vmxzg (ça peut aussi "lire" des .wav @8KHz smiley-wink)
(Exemple de la version 2 voies qui génére une image sur un écran d'oscilloscope) http://twitpic.com/9vyzm6
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1]   Go Up
Jump to: