Archives

All posts for the month avril, 2015

Aussitôt, oscillo

Allez, on continu sur notre lancé.

Ce moi ci, nous avons eu deux discutions pertinentes. Vous avez vu, je censure nos propos.
Est-ce que l’accéléromètre est suffisant ou non faut-il un gyroscope ? et Comment faire pour le calcul de basse altitude en ultrason ne soit pas trop gourmand en temps.
D’abord, la plaque à ultrason est un HC-SR04 dont le datasheet prétend qu’il peut mesurer une distance de 4m. Ensuite, pour fonctionner, il faut lui envoyer une impulsion haute de 10µs et la carte répond un signal PWM dont il nous faut diviser la valeur par 58 pour obtenir la distance en cm.
C’est bien beau tout ça mais si on demande à l’arduino de gérer cette partie, il va devoir envoyer une impulsion puis attendre une réponse qui va mettre quelque chose comme 50ms à revenir. Pas Glop du tout. Mais si l’étage de capture était totalement autonome ?
Commençons par rendre la prise de valeur automatique, il suffit de générer un signal rectangulaire et le tour est joué. Le datasheet défini le signal optimum comme étant 10µs à haut et 60ms à bas, soit un signal de 16Hz. Mon premier réflexe a été de monter sur le papier un oscillateur rectangulaire stabilisé par un quartz et là c’est le drame.
Avec un quartz à 1MHz, on se retrouve avec un besoin de 62 500 bascule jk. Alors, on revient à nos premiers oscillateurs avec des simples condensateurs et transistors. Si on regarde le schéma suivant, c’est un bête oscillateur rectangulaire où l’état haut est T1 = 0.7 * R1 * C1 = 10µs et l’état bas est T2 = 0.7 * R2 * C2 = 60ms.

oscillateur

Ce qui nous donne R1 a environ 174kΩ pour un C1 de 82pF. Pourquoi ces valeurs ? Bah vous avez le calcul. Pourquoi je n’ai pas choisi de nombres ronds ? Au moins un sur deux ? Et bien parce que 82pF est une valeur standard de composant, c’est pas moi qui les conçoit donc voila pourquoi. Maintenant passons au deuxième calcul, ça nous donne 182kΩ pour 470nF.
Ces valeurs me plaisent bien sur le papier mais quid de la réalité. Déjà des potentiomètres de 200KΩ, j’ai. Des condensateurs de 82pF, j’ai mais je n’ai pas de condensateur de 470nF, bah je demanderai à mon collègue de me trouver ça. Faut bien qu’il bosse un peu.
Mais ça va être coton, vu que 470nF, c’est une grosse valeur, une très grosse valeur et de mémoire, c’est utilisé pour des très grosses tensions, genre 250V.
Argg, pauvre de moi, il a trouvé la solution. Utiliser le condensateur céramique le plus gros que l’on ai, soit un 100nF, ce qui implique une résistance de 857KΩ, qui rentre dans la plage de variation du plus gros potentiomètre 1MΩ.
Maintenant, passons à comment traduire un signal PWM en valeur lisible instantanément par un arduino. Première idée, un simple filtre passe bas où fc = 1/(2*pi*RC) = 16Hz

Accéléromètre et/ou Gyroscope

Accéléromètre gère la translation en fonction d’axes. Le Gyroscope gère l’inclinaison en fonction d’axes. L’accéléromètre a une fonction 0G permettant de détecter une chute libre. Le gyroscope est commandé par protocole I2C. Bon stop, I2C, ça coute rien de le rajouter, allez hop, un gyroscope de plus dans le monstre.
J’appelle donc mon fournisseur de composant préféré pour lui demander s’il a des gyroscopes électroniques du même type que l’accéléromètre qu’il m’a vendu la dernière fois. J’ai pas fini ma phrase qu’il m’annonce fièrement qu’il vient de m’en envoyer. Heu merci mais quoi ? Réponse une semaine plus tard, j’ai deux MPU-6050 gratuits. Comment il fait pour se faire des sous ? Déjà que le MMA7361 m’a couté moins d’1€ frais de port compris et les 1 000 condensateurs pour 5€.
Donc pour les capteurs, on aura deux étages non I2C et tout le reste en I2C.

  • Étage ultrason en analogique.
  • Étage accéléromètre en numérique avec une interruption sur la patte 0G.
  • Étage I2C contenant le baromètre BMP180, le gyroscope MPU-6050 et le magnétomètre HMC5883L.

Non ! c’est trop facile, c’est le gyroscope MPU-6050 qui sera maître I2C du magnétomètre HMC5883L. Voila qui devrait rajouter un peu de piment à l’I2C.
Qu’en pensez-vous ?

PS: au petit spammeur qui s’amuse à mettre des commentaires en pagaille sur ce blog. Premièrement, les commentaires ont toujours été modérés donc ils n’avaient aucune chance de passer et surtout, j’ai activé le bot de filtre donc j’ai encore moins de boulot maintenant. A bon entendeur, salut!