L'écran tactile de mes rêves...
https://www.ebay.com/itm/Serial-SPI-4-3-inch-TFT-LCD-Touch-Shield-for-Arduino-Due-MEGA-2560-Uno-w-Library-/291873847671
Sur la base de cette écran, mon idée est de réaliser une raquette de commande qui ressemble un peu à une console de jeux portable en format paysage. L’écran est piloté par un Arduino Due 32 bits ARM afin d’offrir plus de liberté qu’une carte Arduino MEGA. Avec 84Mhz et 96Ko de SRAM le Due est l’Arduino le plus puissant du moment. Je vais pouvoir faire des folies!
Après la Nintendo Switch voici la naissance de l’Astro Switch... ;)
La puce GPS de l’ancien prototype va être réimplantée dans la raquette...
Un aperçu de l’adaptation de l’abaque numérique de l’EM-10 calé sur les données de la puce GPS (lumière bleue à l’intérieur du boitier)...
Vref pour MKS MINI V2.0
I = Vref / 0.8.
Documentation Makerbase:
Traduction:
« 1. Algorithme actuel du driver 4988: i = vref /0.8.
Vref par défaut est environ 0.8v.
Le courant par défaut est 1.0A. Le courant maximal est 2.0A. »
Source: https://github.com/makerbase-mks/Datasheet/blob/master/Chinese%20datasheet/MKS%20MINI%20V2.0%20数据手册.pdf
Test d'un écran tactile TFT 400x240
http://www.volumerate.com/product/450236

Par rapport au Kuman K60 2.8’’, j’aime:
- Ecran plus grand.
- Résolution de 400x240 contre 320x240 pour le Kuman.
- Meilleur contraste et meilleur angle de vue que le Kuman. On l’aperçoit sur la photo, le Kuman vire vite au bleuté dans les noirs dès qu’on est pas dans l’axe.
- Affichage plus rapide (environ 2x) que ce soit en dessin vectoriel ou lors du chargement de bitmaps depuis une carte micro SD.
- L’écran chauffe moins que le Kuman.
- On dispose d’une sonde de température LM75 intégrée.
- Malgré le gain en taille, ce modèle n’occulte pas les ports supérieurs du Mega...
Maj du 25/06 : le nouvel écran permet aussi l’accès au buffer d’affichage contrairement au Kuman. Il m’est ainsi possible de faire des captures d’écran en bmp sur la carte micro SD… :)
Ebauche de viseur polaire (mode nuit à gauche et mode jour à droite).
Avancée du cablage du proto V1...
- perçage de quelques trous dans le support afin de passer des serre-câbles et fixer le câble de la manette.
- fixation du Arduino avec des visseries qui vont bien.
- coup de cutter sur l’Arduino Mega afin de couper la liaison vers le polyfuse (alimentation 5v) de l’entrée USB.
- repiquage de l’alimentation 5v sur le régulateur UBEC du circuit de puissance.
- câblage d’un interrupteur marche/arrêt.
Pour le proto, je préfère garder un cordon d’alimentation et le repiquer sur le régulateur 5v plutôt que de câbler le arduino directement dessus. Je peux ainsi travailler sur le Arduino en le branchant à une simple alim 5v (vu qu’il n’y a plus d’alimentation par USB) sans alimenter les moteurs lorsque ce n’est pas nécessaire aux développements.



Installation d'un Arduino Mega et d'un LCD


Sega c'est plus fort que Taka...

Pour les amateurs du genre, le code est dispo sur mon github. Plus de détails ici…
Réglage de drivers A4988 StepStick
http://reprap.org/wiki/StepStick
Voici les formules:
Imax = Vref/(8*Rcs) ou reformulé pour Vref: Vref = 8*Imax*Rcs
Avec:
- Vref: tension de référence du potentiomètre.
- Imax: tension maximale globale.
- Rcs: résistance de référence = 0,2 ohm pour les StepStick.
L’intensité max (par bobine) en fullstep peut être calculée par la formule:
Imax = √( (I bobine1)^2 + (I bobine2)^2 )
Comme l’intensité est la même dans les deux bobines:
Imax = √( (I bobine)^2 + (I bobine)^2 )
Imax = √( 2*(I bobine)^2 )
Imax = √2 * I bobine
Imax = 1,4142 * I bobine
En d’autres termes et pour faire simple: en fullstep les bobines sont alimentés à 70% seulement. Cela est dû au fait que le driver n’a pas de mode fullstep dédié. Il se cale simplement sur sa table de microstepping. Un graphique parle plus que de longs discours…
Dans le cadre de mes moteurs pas à pas unipolaires 6 fils (24 pas / 1v / 2 ohms), nous laissons les fils communs (fils rouge) non connectés pour utiliser les moteurs en mode bipolaires...
L’intensité en fullstep biphasé est de 0,354A (70% d’Imax) par bobine.
En appliquant les formules, cela nous donne:
Imax =1,4141*0,354
Imax = 0,500A -> le max que peuvent supporter les bobines de mes moteurs en unipolaire.
et par richochet:
Vref = 8*0,354*0,2
Vref = 0,801v
Il suffit donc de régler Vref à 0,8v (Attention: ce calcul peut être différent en fonction de la résistance Rcs du driver utilisé: StepStick, Pololu, etc).
Seule ombre au tableau, le moteur dispose d’un peu moins de couple en fullstep. Je préfère néanmoins rester sur ce réglage et réduire la vitesse max à 40x/45x la vitesse sidérale au lieu de 50x (la perte de couple se fait sentir et le moteur débraye au bout d’un moment en charge à 50x). En contrepartie, cela me permet de basculer en micropas ce qui donne beaucoup plus de fluidité et moins de vibrations aux moteurs.
Cablage de l'electronique de puissance de l'EM-10 Taka (suite)
Pour les premiers tests, j’ai utilisé le moteur avec la démultiplication hors service et une alimentation stabilisée. Comme ça aucun risque. L’ensemble est pour l’instant piloté avec un Arduino Uno…

D’un point de vue électronique, rien de bien sorcier sur la platine: en bas un régulateur 12V pour alimenter les moteurs en puissance, un condensateur pour absorber les pics de tension lors des démarrages, un second régulateur UBEC pour l’alimentation 5v de la partie logique et enfin en haut avec leur radiateur les deux drivers A4988…

Vue arrière avec câblage, une led pour l’éclairage du viseur polaire et un potentiomètre de réglage...

Cela peut paraitre un peu touffu car j’ai aussi câblé le microstepping pour une gestion logicielle en temps réel ainsi que l’activation/désactivation des drivers (Enable) pour limiter la conso lorsque les moteurs seront à l’arrêt mais rien de bien sorcier dans les faits...

Cablage de l'electronique de puissance de l'EM-10 Taka


Premier test d’un des drivers A 4988 en ascension droite. Rien ne crame… C’est bon signe… ;)
Le temps de mettre tout ça en forme et un article détaillé va venir sur les calculs pour la calibration des drivers avec les moteurs pas à pas d’origine.
Début de prototypage de la partie puissance

A terme les composants seront positionnés vers l’intérieur de la monture pour minimiser l’épaisseur de la façade.
Pour l’instant tout n’y est pas encore. En bas nous avons un régulateur (qui va être remplacé par un modèle plus haut de gamme) et le bouton de mise en marche. Au milieu un condensateur pour amortir les pointes de surtension. Et en haut les deux drivers de moteur pas à pas A4988.
D’ailleurs au passage, voici un article très intéressant qui fait la part belle au A4988…
http://hackaday.com/2016/08/29/how-accurate-is-microstepping-really/
Il reste un peu de place sur le pcb pour la led du viseur polaire, un régulateur pour abaisser la tension 12v à 5V pour l’alimentation du Arduino de la raquette de commande, un connecteur vers la raquette. Je me tâte aussi à installer les connectiques ST4 et l’USB directement sur la monture. Cela éviterait les câblages externe sur la raquette. Réflexion à poursuivre… :)
Analyseur logique Saleae à moins de 15€

Le clone est parfaitement compatible avec le logiciel proposé par Saleae qui est on ne peut plus simple d’usage. Mon Mac adore et moi tout autant...

Du coup, je me suis amusé à pousser mon Arduino dans ses retranchements juste pour le fun histoire de voir si l’analyseur suivait. Aucun problème, le Arduino décroche bien avant lui. 8Mhz semble sa limite (optimisation max avec suppression du loop et écriture direct sur les ports d’entrées/sorties) soit 0,125us*2 = 0,250us de largeur de période d’impulsion. Largement de quoi faire clignoter une led quoi… Lol

La mesure de gauche (0,25us) montre le rebouclage de la boucle infinie while.
On voit encore mieux en dézoomant: 16 périodes du fait de la redondance de code dans la boucle sur 3,875us puis un trou lié au rebouclage…

Et voici un lien vers le code source pour les curieux…

arduino_max_blink.zip
Je pense que j’en ferais un article détaillé à l’occasion car cela va être un outil précieux pour une calibration optimale de mes moteurs pas à pas par rapport à la vitesse sidérale.
Edit: non en fait on peut encore mieux faire et monter à 8Mhz par période. On en reparle un peu plus tard. :)
De drôles d'oeufs de pâques

Le fait que les moteurs d’origine soient finalement alimentés en 12v simplifie grandement les choses. Du coup, vu le coût modique, j’ai acheté un lot de cinq (moins de 10€ l’ensemble avec radiateurs inclus). Cela m’en fait deux en plus pour le prototypage et un encore en sus pour par exemple piloter un moteur de mise au point. :)
Lien ebay...
http://www.ebay.fr/itm/252826447862?ul_noapp=true
Article étude mécanique et électronique de l'EM10 USD
http://em10-usd-arduino-takahashi.eliotis.com/etude-em10-takahashi/index.html

Mesures de l'électronique de l'em-10 USD
Je reviendrais dans un prochain billet sur le câblage mais première chose importante constatée: les moteurs 1Volt / 2 Ohms sont en fait alimentés en… 12 volts!!!

Voilà qui explique sans doute la phrase d’avertissement dans la documentation d’origine de Takahashi. Je cite:
« Attention: une sollicitation prolongée (plus d’une minute en continu) des déplacements en vitesse rapide 50 X peut endommager le circuit électronique de votre monture. »
Deuxième mesure intéressante, la période des impulsions en vitesse sidérale au niveau d’une bobine du moteur unipolaire en AD est de 6,244Hz.
Le calcul suivant nous permet de déterminer l’erreur résiduelle:
// Mesures
FrequenceBobine = 6,244 Hz
FrequencePas = FrequenceBobine × 4 = 24,976 Hz
// Caractéristiques moteur
NombreDePasMoteur = 24 pas
Demultiplication = 1/500 = 0,002
VitesseMoteur = 60 × FrequencePas / NombreDePasMoteur × Demultiplication = 0,12488 tr/min
// Engrenages intermédiaires
NombreDeDentsEngrenageMoteur = 36 dents
NombreDeDentsEngrenageVisSansFin = 45 dents
DémultiplicaitionEngrenages = NombreDeDentsEngrenageMoteur/NombreDeDentsEngrenageVisSansFin = 0,8
// Vis sans fin
VitesseVisSansFin = VitesseMoteur × DémultiplicaitionEngrenages = 0,099904 tr/min
NombreDeDentsRouteDentéeAD = 144 dents
// Vitesse sidérale monture
PeridodeVitesseSideraleMonture = NombreDeDentsRouteDentéeAD/VitesseVisSansFin = 1 441,38 min
// Vitesse sidérale parfaite : 23h56m04s
PeriodeVitesseSideraleParfaite = 23*60+56 + 4/60 = 1 436,07 min
// Erreur (ratio théorie/pratique)
(1-PeridodeVitesseSideraleMonture/PeriodeVitesseSideraleParfaite) × 100 = -0,37%
A noter que si l'on prend une « vitesse sidérale parfaite » arrondie à 24h, l’erreur résiduelle tombe à -0,096%. Il est donc probable que les ingénieurs de Takahashi se soient simplifiés la tâche à l’époque.
Régulateur Foxnovo HOBBYWING 3A UBEC 5V

Ecran déporté de débogage via Bluetooth

Et voici le résultat en vidéo…
https://www.youtube.com/watch?v=Eh7B9osfDkk
Note pour plus tard: plus j’y pense et plus je me dis qu’à terme cela pourrait être assez classe d’avoir un petit écran d’abaque numérique pour le viseur polaire. On allume l’écran. On l’approche de la monture. Il se connecte en Bluetooth et à partir des informations GPS nous affiche automatiquement l’emplacement de la polaire dans le réticule.
Nouveau prototype nomade pour le dev...

Il suffit d’ouvrir le coffret, de le brancher et hop c’est parti pour les devs...

Le prototype en l’état est maintenant quasi complet et constitué des éléments opérationnels suivant:
- Arduino Mega.
- Ecran LCD 16x2.
- Buzzer.
- Led de mise en veille.
- Capteur de température/humidité DHT 11 (qui sera remplacé à terme par un DHT22 pour plus de précision).
- Puce GPS qui remplace l’ancienne horloge.
- Lecteur micro SD en remplacement du premier lecteur SD trop encombrant.
- Puce bluetooth pour la connection sans fil avec un ordi, un ipad ou un iPhone.
Voici une vue côté câblage interne...

Ecran TFT or not écran TFT?
https://www.amazon.fr/gp/product/B01C3RDFN6/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1
L’écran offre une résolution de 320x240 en 16bits (65535 couleurs). Au dos on trouve un lecteur de carte micro SD. Et pour le tactile c’est du résistif on ne peut plus commun. Alors autant le dire tout de suite, pour 14€ ce shield est une plagia pur et simple du produit proposé par Adafruit…
2.8" TFT TOUCH SHIELD FOR ARDUINO WITH RESISTIVE TOUCH SCREEN
D’ailleurs, Kuman fournit le code source du driver sur demande uniquement par mail. Et pour cause, c’est une version à peine modifiée du code proposé par Adafruit. Sacrés chinois!!!
Les plus:
- Shield plug & play.
- Pas cher.
- Lecteur de carte SD intégré.
- Qualité d’écran très correcte notamment en mode portrait.
Les moins:
- Performance d’affichage assez limitées.
- Utilise quasiment toutes les connections d’un Arduino Uno.
- Angle de vue optimisé pour un affichage portrait ce qui devient désagréable visuellement si on préfère un usage en mode paysage.
- L’usage en simultané des librairies pour l’affichage, le tactile et la carte SD consomme quasi entièrement les 32Ko de stockage. L’usage d’un Arduino Mega n’est donc pas du luxe.
Astuce: le remplacement de la librairie SD par la librairie SDFat permet un gain substantiel: l’usage de la mémoire Flash est plus réduit (environ 9% sur un Uno) ainsi que l’usage de la SRAM et les performances sont sensiblement améliorées.
Dans l’immédiat, je ne pense pas utiliser cet écran TFT pour la raquette de commande mais il pourrait être pratique pour concevoir une console de débogage déportée avec une connexion Bluetooth.
Et hop un GPS pour le projet
Le module est piloté via la librairie TinyGPS ou TinyGPS++. Et vous savez quoi? Ca le fait carrément! Latitude/Longitude/Altitude et bien sûr horloge interne synchronisée par satellite. Voilà qui va remplacer avantageusement l’horloge avec pile bouton de mon kit de base. :)
Niveau connectique, c’est on ne peut plus basique: deux pins d’alimentations (VCC et GND) et deux pins de communications (Tx/Rx) pour la communication série des infos de la puce GPS vers le Arduino.
Seul petit bémol, le module ne maintient pas l’horloge interne en cas de coupure prolongée.
Voici la modélisation 3D sous OpenSCAD…
Module Bluetooth HC-05 et HM-10
J’ai tout d’abord opté pour un HC-06 de chez Neuftech à 10€. La puce est automatiquement reconnue par le PC au niveau des périphériques Bluetooth et se comporte ensuite comme une simple liaison série. Cela fonctionne vraiment bien. Le hic c’est qu’il n’en va pas de même pour un iBidule comme mon iPhone ou l’iPad qui ne le détectent pas.

Après quelques recherches sur le Net, il s’avère que c’est un problème connu avec les HC. La solution est le HM-10. Etant un peu échaudé par les soucis de « fake chinois » avec le souci rencontré sur les Arduino Mega, j’ai opté pour une carte SunFounder Bluetooth 4.0 HM-10. Cela reste du chinois mais cette marque semble relativement plus fiable.

Le module fonctionne parfaitement que ce soit avec le PC ou la tablette. Le seul défaut du HM-10 est de ne pas être « Plug & Play » comme le HC-06. Il faut donc en passer par les frameworks système dédiés à la gestion du Bluetooth comme par exemple IOBluetooth sur Mac.
DFRobot MicroSD

https://www.amazon.fr/gp/product/B01C8EWDDW/
Couplé à une carte 4GB, cela fera parfaitement l’affaire pour stocker la base d’objets célestes.
Voici la modélisation 3D sous OpenSCAD…

Prototypage de la raquette de commande avec OpenSCAD


Pas assez parlant? Ok. Une connaissance de mon Fab lab ayant eu la bonne idée de m’initier à OpenSCAD, voici donc un début d’ébauche que je vais peaufiner avec le temps (le squelette en carton est ici représenté en bleu)…

A terme le but est de modéliser l’ensemble des pièces électroniques pour contrôler leur intégration et au final réaliser la raquette de commande avec une imprimante 3D.
Modification des moteurs pas à pas de l'EM-10 USD


Je pourrais maintenant interchanger d'électronique à loisir le temps du prototype...


J'en ai profité pour mesurer les fils des bobines. Les résultats sont cohérents avec les specs à l'erreur de mesure près de mon ohmmètre. Il faut se faire un raison. Avec 2 ohms de résistance et 1 volt de tension, on est loin des standards habituels.
Arduino Mega

Autre chose intéressante, alors qu’un Arduino Uno dispose d’un seul timer 16 bits matériel (Timer1) le Mega en a 4 (Timer1, Timer3, Timer4, Timer5). Après quelques essais, il s’avère que les timers matériels sont beaucoup plus précis pour la gestion des pulsations de moteurs pas à pas. Avec un Arduino Mega, on peut donc piloter les deux axes avec des timers matériels ce qui est idéal.
Note: attention aux Arduinos chinois. Le premier modèle à bas prix que j’avais commandé sur Ebay s’est avéré avoir des Timers au fonctionnement hasardeux. Ils fonctionnaient au premier chargement du programme et ensuite plus rien après un reset. Heureusement, pas de mauvaise surprise avec ce modèle SunFounder un peu plus cher (18€) commandé sur amazon.
Début du prototype
Voici un aperçu du prototype destiné à valider les premiers composants du système de commande. Ok, c’est un peut « roots » mais l’essentiel est là...

En complément du kit, un lecteur de carte SD (situé à proximité de la télécommande sur la photo) a été ajouté pour le stockage de la base de donnée d’objets célestes.
Observations:
- Je pensais que l’afficheur LCD 16 caractères sur 2 lignes serait un peu juste mais c’est pas si mal.
- Le capteur d’humidité du kit est un DHT-11. Il fait le job mais sa précision de +-2°c n’est pas idéale. Prévoir de le remplacer par un DHT-22.
- Le lecteur de carte SD est un peu gros. Je vais le remplacer par un lecteur micro SD plus compact.
- L’Arduino Uno du prototype est déjà au taquet niveau entrées/sorties et la librairie du lecteur SD est assez gourmande en mémoire. Il va falloir passer à un Arduino Mega pour tenir la route.
Un kit Arduino comme base de travail
http://eud.dx.com/product/uno-learning-kit-for-arduino-with-ir-1602lcd-relay-temperature-humidity-clock-module-resistor-card-844424271
Attention: prévoir un délai d’un bon mois pour réception.

Listing du kit (in English sur le site):
1 x UNO main board
1 x 1602 screen
1 x Stepper motor driver board
1 x Temperature humidity module
1 x Clock module
1 x 1 relay module
1 x 400 holes breadboard
1 x Small breadboard
1 x Fixed board
1 x Battery box (6 x AA, 15cm-cable)
4 x Button switches
3 x Photoresistors
1 x Flame sensor
2 x Buzzers
1 x Temperature sensor
2 x Tilt switches
1 x IR receiver
1 x LED light
1 x Adjustable resistor
1 x 74HC595
1 x Remote controller
1 x 1-digit seven-segment display
1 x 4-digit seven-segment display
1 x 8x8 dot matrix
1 x 9g servo (25cm-cable)
1 x Stepper motor (23cm-cable)
10 x Jumper wires (10cm)
20 x Jumper wires (20cm)
10 x DuPont wires (20cm)
1 x USB cable (139cm)
8 x 220R resistors
5 x 1K resistors
5 x 10K resistors
5 x Red led
5 x Yellow led
5 x Blue led
1 x Resistor card
1 x 16 pin header
1 x Box
Les éléments qui me semblent les plus intéressants:
- Un contrôleur Arduino Uno pour commencer le prototype.
- Un écran LCD deux lignes pour l’affichage.
- Un capteur IR avec une télécommande plutôt bien adaptée pour nos besoins.
- Un buzzer pour les effets sonores (ex: signalement fin de pointage).
- Led pour la mise en veille.
- Horloge avec pile.
- Capteur d’humidité/température pour les mesures ambiantes.
- Capteur de température simple pour le miroir.
- Un moteur pas à pas et son circuit de puissance pour se faire les dents (utilisable pour se faire une mise au point électrique à terme?).
- Capteur d’inversion pour la position du télescope (détection du pointage Ouest ou Est).
- De quoi voir venir pour câbler le prototype et vérifier la faisabilité du projet.
Moteurs pas à pas de l'EM-10 USD

Il s’agit de deux moteurs unipolaires 6 fils avec pour caractéristiques:
- 2 Ohms.
- 1 Volt.
- 24 pas.
- démultiplication de 1/500.
Dans l’immédiat, faute de mieux, j’ai mesuré le courant à l’ampèremètre côté batterie. Voici ce qui en ressort:
Conso au « repos » (vitesse sidérale en AD): 0,48A
Mouvement rapide en AD: 1,16A.
Mouvement rapide en Dec: 1,64A.
Mouvement rapide en AD et Dec: 2,32A.
Dans la foulée, j'ai remis la main sur la doc d'origine:
>>Motorisation:
>> - pas à pas quartz 50 pulsations/sec.
>> - rattrapage rapide Alpha 50x (la vitesse sidérale)
>> - rattrapage rapide delta 750" d'arc/sec.
>> - rattrapage fins alpha +/- 1.1 à 1.9x la vitesse sidérale.
>> - rattrapage fins delta +/- 1.5 à 13.5" d'arc/sec.
>>Consommation:
>> - 500mA en vitesse sidérale et rattrapage lents.
>> - 2.5A en vitesse rapide.
>>Alimentation:
>> - 12V continu.
J’ai évoqué ces caractéristiques avec un électronicien de métier de mon Fab lab local. Il en ressort que la partie puissance risque d’être plus complexe que je l’espérais. Affaire à suivre avec un passage à l’oscilloscope pour caractériser l’électronique actuelle. La première étape sera de mettre en place des connecteurs entre les moteurs et le circuit de puissance.
Présentation du projet
- Calibration plus précise de la vitesse sidérale.
- Rattrapage automatique du backslash sur la déclinaison.
- Correction d'erreur périodique par modulation de fréquence.
- Interface d'autoguidage modernisée (genre protocole LX200).
- Goto relatif.
- Etc.