Contrôler la fréquence d'un Arduino...

Voici une manip que je trouve géniale et qui a été proposée par ChristopheFr sur le forum français d’arduino.cc. Son idée permet de contrôler très simplement la fréquence réelle de fonctionnement des cartes Arduino et compatibles. Et cela sans aucun matériel complexe! Il suffit de télécharger le logiciel gratuit Processing.

processing3-logo

Dans l’éditeur arduino, on copie/colle le sketch suivant et on l’upload sur la carte:
void setup() {
  Serial.begin(115200);
}

void loop() {
  static uint32_t t = micros();

  while (micros() - t < 16000000);
  t += 16000000;
  Serial.write('1'); // envoi un octet sur le port série toutes les 16 secondes
}


Et dans l’éditeur Processing, on utilise le code suivant:
import processing.serial.*;

Serial Port;
int t1,t2;

void setup() {
  int i;
  Port = new Serial(this, "COM7", 115200); // remplacez COM7 par le port occupé par l'Arduino, sinon bug!
  
  t1 = millis();
  while(true) {
    while(Port.available() > 0) {
      i = Port.read();
      t2 = millis();
      println(256000000 / (t2-t1) + "KHz"); // affiche la fréquence du quartz de l'Arduino en KHz toutes les 16 secondes (la première mesure n'est pas fiable).
      t1 = t2;
    }
    delay(1);
  }
}

void draw() {
}


C’est terminé! On lance l’exécution du code sur Processing et on patiente.

Testé chez moi avec la MKS MINI V2.0 Makerbase et une carte Arduino MEGA de chez SUNFOUNDER:
- La SUNFOUNDER tourne à 15996KHz (avec +-1 KHz de variation entre les mesures).
- La MKS MINI est parfaitement calibrée à 16000KHz.

J’ai ensuite testé en chauffant les cartes avec un sèche cheveux:
- La carte SUNFOUNDER perd quasi instantanément 10Khz et elle descend encore un peu pour se stabiliser autour des 15983Khz au bout de quelques minutes.
- La MKS MINI ne bronche pas et reste parfaitement stable à 16000KHz.

Voilà qui confirme la MKS MINI comme un excellent choix pour mon projet. Sa fréquence est conforme et elle ne souffre pas de dérive en fonction de la température ambiante. :)

Moralité: attention aux cartes choisies pour un usage en astronomie. Si possible, vérifiez bien dans les specs qu’elles sont équipées de Quartz. Moi je me suis fait berner de visu avec la SUNFOUNDER qui est équipée de résonateurs céramiques en boitier métallique ressemblant à un boitier de Quartz (merci à al1fch pour l’info).

Lien vers le topic original lancé par ChristopheFr:
Mesurer la fréquence d'un Arduino avec Processing

MKS MINI sous les étoiles

Premier crash test sous le ciel avec le nouveau prototype 2018 basé sur une carte contrôleur MKS MINI pour imprimante 3D. Il reste pas mal de chemin à faire côté logiciel mais déjà le gain est indéniable par rapport à l’électronique d’origine: 4 vitesses au lieu de deux, gestion des moteurs en micro stepping 1/16, mise au point motorisée, courbes d’accélération/décélération sinusoïdale donnant des mouvement très doux sans aucun accoup de freinage. A l’usage c’est vraiment un plaisir. :D

proto-em10-mk-mini-4

proto-em10-mk-mini-5

Aperçu de la courbe d’accélération de type sinusoïdale...

courbe-acceleration

Comme le montre le graphique, on obtient un démarrage et un arrêt très doux offrant un bon amortissement de l’inertie du télescope. Pour plus d’infos, voir cet ancien billet: Accélération/décélération: Sinus or not Sinus?

Sunny: de la réalité à la simulation

De la conception 3D à la réalité, puis de la réalité au simulateur en image de synthèse: la boucle est bouclée avec maintenant le simulateur de Sunny... :)
SunnyRobotSimulator

Sunny: le petit traqueur solaire

En aparté de mon projet principal, je vous présente Sunny. C’est un petit projet de traqueur solaire fait maison. Conception sous OpenSCAD, tranchage des pièces avec Simplify3D, impression 3D avec la TEVO Tarantula. Et pour terminer on saupoudre le tout d’un peu d’électronique pilotée par un Arduino…



sunny-solar-tracker-completed

sunny-solar-tracker

Antrailles du robot sunny - Arduino

Capteur de lumière du robot Sunny

Plutôt cool, non? :D

Nouvelle librairie SkyCatalog en cours de dev

Ce weekend, c’était bdd (base de données) party!!! But du jeu: créer une base de fichiers sur carte SD pour servir de pseudo base de données d’objets célestes (étoiles, Messier, NGC, IC). Faute de trouver des bases de données homogènes et cohérentes en accès libre sur le web, j’ai opté pour le logiciel Coelix qui permet d’exporter ses données. Simple et efficace, je le recommande vivement.

Une fois les fichiers d’export générés, j’ai ensuite traité les données pour les transformer en une arborescence de fichiers et ne conserver que les données utiles. Ce travail devrait donner lieu à une nouvelle librairie Arduino baptisée SkyCatalog et complétant Ephemeris.

coelix

Arduino sous Xcode

Cela faisait un moment que je bricolais entre Xcode et l’IDE Arduino et ça y est j’ai craqué. Je me suis enfin posé sur le problème afin d’avoir un environnement de travail 100% Xcode. N’en déplaise aux développeurs du projet Arduino, l’IDE d’origine est bien trop juste pour travailler confortablement sur de gros projets.

A noter que si vous recherchez un template dédié pour la dernière version d’Xcode, jetez un oeil à embedXcode:
http://embedxcode.weebly.com

Pour ma part, j’ai préféré opter pour du configuré maison car embedXcode ne supporte que la dernière version 8 d’Xcode voire au mieux 7 au moment d’écrire ces lignes. J’avoue que j’en ai marre de cette marche forcée imposée par Apple pour pousser à migrer sur leur dernier système d’exploitation poussif à souhait.

Mais revenons à nos moutons. Plutôt que d’opter pour des makefiles, je me contente de piloter l’ide Arduino à partir d’Xcode 4 (OS X 10.7.5 oblige) et d’un projet custom. C’est plutôt aisé puisque l’IDE Arduino propose tout ce qu’il faut pour l’accès en ligne de commande. Voir la doc officielle…
https://github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc

Je peux ainsi lancer la compilation et l’upload...
xcode-arduino-1

…tout en éditant mon projet avec « code completion » et toutes les joyeusetés qu’on attend d’un environnement de travail productif.
xcode-arduino-2

Pour l’affichage de la liaison série, j’ai opté pour CoolTerm que je pilote par AppleScript à partir d’Xcode (lancement, connexion/déconnexion, effacement, affichage en avant plan à la fin du transfert). L’ensemble est beaucoup plus robuste et agréable que la console du logiciel Arduino…
xcode-arduino-3

Bref c’est maintenant que du bonheur pour bosser! <3 <3 <3