mercredi 27 mai 2015

DummyLoad : une charge électronique variable

TL;DR

Comment construire soit-même une charge électronique variable contrôlable par ordinateur, avec des composants de récupération. Bonus: elle est entièrement OpenHardware et OpenSource.
Grâce à cet outil, on peut tester les capacités/performances d'une alimentation, caractériser une batterie, vérifier des circuits de protection (fusibles, PTC) ...

Le besoin

Pour un projet récent, j'ai eu besoin de consommer une quantité pré-définie de courant: 500mA, 750mA, 1A, 2A et ce sous différentes tensions.
Cela est relativement facile à faire. Un rhéostat ou quelques résistances de puissance font l'affaire, une simple application de la loi d'ohm et voila.

un rhéostat de puissance

Par exemple, pour 1A sous 12V :
U= R * I
R = U / I = 12 / 1 = 12 ohm
pour 750mA sous 3.3V :
R = 3.3 / 0.75 = 0,044 ohm

Cela dit, ça devient vite laborieux ! Il serait très pratique de disposer d'un appareil sur lequel régler la consommation en ampère et qui gérerait cela tout seul. C'est ce qu'on appelle une charge électronique (Dummy load).

Le circuit


La 1ère idée qui vient est d'utiliser un LM317 en générateur/consommateur de courant, un circuit simple et facile (bien sur il faut ajouter quelques condensateurs à ce schéma).
Le problème est qu'il nous faut un potentiomètre de puissance, ce qui n'est pas évident à trouver.

C'est la qu'est venu à mon secours Dave Jones et son EEVBlog #102 puisqu'il adresse justement ce problème et propose un circuit. Une bonne occasion pour me remettre en tête le fonctionnement d'un ampli-op ;)
En repartant de son schéma, j'ai réalisé le mien avec le cahier des charges suivant :
  • consommation de 0 à 2A
  • des composants que je possède dans mes tiroirs
  • un contrôle numérique (je n'ai pas de potentiomètre 10 tours dans mes tiroirs)
  • pouvoir le commander depuis l'ordinateur (tant qu'à faire !)
J'ai donc fait le tour et j'ai trouvé à peu prêt tout ce dont j'avais besoin sur place.

Commençons par jeter un œil sur le schéma :
https://github.com/jerome-labidurie/DummyLoad/raw/master/hardware/pdf/DummyLoad.pdf

Évacuons tout de suite le facile :
  • Un arduino nano pour le cerveau. Cela peut paraître très surdimensionné, mais j'y reviendrais dans un prochain article
  • un écran lcd à base de HD44780, on en a toujours un qui traîne pas loin
  • deux boutons poussoirs (up et down) pour l'interface utilisateur
  • comme on va dissiper pas mal de puissance, il va falloir un gros radiateur et peut-être un ventilateur. Dans ce cas, autant lui rajouter un contrôle puisqu'on dispose de plein de PWM sur l'arduino
Passons alors au plat de résistance que constitue le montage avec les 3 amplificateurs opérationnels.

Un PWM arrive de l'arduino (V_SET), celui-ci est d'abord converti en tension continue de 0 à 5V par un montage RC (R3 et C1). Cette tension est ensuite multipliée par 2 grâce au 1er ampli-op (U2A) monté en amplificateur non-inverseur.
En haut le PWM, en bas la tension continue amplifiée (sondes x10)

Cette tension de 0-10V arrive sur l'entrée + d'un montage suiveur (U2B). Celui-ci commande un MOSFET et va faire en sorte que ses entrées + et - soient au même potentiel. On retrouvera donc notre tension d'entrée 0-10V autour de la résistance de puissance R9.
Ici une note s'impose. j'avais prévu une résistance de 1ohm ce qui ferait une intensité théorique de 0 à 10A. C'est beaucoup :) Mais dans mes cartons je n'avais qu'une résistance de 10ohms, ce qui a dicté mon rapport d'amplification de 2 pour pouvoir tirer théoriquement 1A. Je prévois de la remplacer dans un futur proche par une de 1ohm (de ce type)
Enfin, cette tension passe dans un buffer (U3A) et un pont diviseur par 2 (R5 et R7) pour revenir à 0-5V et entrer dans l'arduino (V_SENSE). Ainsi on pourra mesurer la tension aux bornes de R9 et donc l'intensité consommée.

La construction


Commençons par les composants :
  • le MOSFET est un IRFZ44N sorti d'une perceuse dont la batterie est morte. Avec un Vdss de 55V et un Id de 49A il sera largement suffisant
  • la résistance de puissance sort de mon alim ATX transformée qui a cramé récemment :(
  • les amplis-op sont des LM358 dessoudés d'une carte de traitement vidéo qui traîne depuis des années dans mon carton "à récupérer"
  • le ventirad vient d'un vieux PC (sans doute un socket 7 ou un truc comme ça)
  • arduino et lcd : il faut toujours en avoir de rab' :)
  • le boîtier : un vieux stock acheté sur ebay
Le montage est d'abord testé sur breadboard étape par étape jusqu'à ce qu'il soit complètement fonctionnel. Comme cela on vérifie la théorie au fur et à mesure :)
Comme mon boîtier est plutôt petit, je commence par vérifier le placement des différents composants
et je réalise une construction en deux cartes connectées par des pin-headers. Une pour l'interface (lcd et boutons), une pour le cœur du dispositif (arduino et ampli-ops).
Au final, quelques coups de dremel, de perceuse et tout loge dans la boîte.
Pour les boutons, j'ai imprimé dans mon fablab 2 extensions pour les faire dépasser du couvercle.
Note: Sur cette photo, le MOSFET et la résistance ne sont pas encore reliées au radiateur. Il faut bien entendu le faire !

Côté software, rien de bien compliqué. On lit l'état des boutons (avec debounce) et on agit sur le PWM en conséquence. La lecture de la tension réelle se fait via l'entrée analogique 0. Ces 2 valeurs sont affichées sur l'écran de contrôle.

Comme on a un arduino, rien de plus simple que d'ajouter une interface de contrôle par le port série. Ainsi un petit programme (ou un terminal série) permet de positionner la valeur de courant à consommer, de lire la valeur actuelle ...
Si cela vous intéresse, le protocole est décrit la.

Utilisation

C'est très simple :
  1. On branche l'alimentation 12V sur les 2 fiches de côté
  2. On branche l’appareil à tester sur les 2 fiches en façade
  3. On positionne la valeur à consommer
  4. et voila !
Côté consommation maximale, le montage sature à 640mA. À voir ce que ça donnera avec une résistance de 1ohm au lieu de 10ohms.

J'ai fait quelques mesures de température. Loin des règles de l'art ! C'est juste pour avoir une petite idée de la montée en température du ventirad.
Sur la photo, on voit la sonde de t° de mon multimètre S7150 qui part à droite, coincée entre le boîtier et le radiateur.

S7150 (°C)arduino (°C)fanSpeed (0-255)
avant25.7NANA
on
+15min
26.519.42128
12V 200mA
+10min
27.1419.42128
+5min27.2220.24128
12V 500mA
+5min
28.5121.06128
+5min28.6421.06128
fanSpeed 255
+5min
28.2323.52255
12V 640mA
+5min
28.6124.34255
+5min28.7424.34255

De ce petit test sans prétention, j'en déduis que la vitesse de ventilateur à moitié de sa puissance max par défaut semble correcte pour une utilisation normale. J'ai aussi pu vérifier que les composants de puissance sont à peine tièdes au toucher (à partir de 500mA).

Bibliographie

Voici quelques liens qui m'ont servi pendant cette réalisation. On en trouve quantité d'autres.

Merci d'avoir lu jusqu'ici, et à bientôt pour de nouvelles aventures ;)


dimanche 24 mai 2015

Résurrection

Mon ancien blog est à l'abandon depuis presque 2 ans 1/2.
Voici l'emplacement de sa résurrection.

J'ai déplacé ici de nombreux articles de l'ancien blog (Merci blogger API). Malheureusement je n'ai pas pu déplacer les commentaires. Vous trouverez donc à la fin des anciens articles un lien vers les commentaires de l'article d'origine.

Souhaitons donc une longue vie à ce "nouveau" blog, et à bientôt pour de nouvelles aventures !

mercredi 17 octobre 2012

Embarquer une image dans un script bash

Quand je programmais en perl, une fonctionnalité de ce langage me plaisait beaucoup. Il est en effet possible d'embarquer des données dans un script après le mot clef __END__. Ces données sont alors facilement accessible dans celui-ci à  l'aide du descripteur <main::DATA> Cela donne quelque chose comme cela :

#!/usr/bin/perl

while (<main::DATA>)
{
  print $_;
}

__END__
1ère ligne
2ème ligne

Il m'est venu l'envie d'avoir la même chose en bash pour pouvoir embarquer une image à  modifier dans un script[1]. Si bash ne propose pas une telle fonction par défaut, il est très facile de l'émuler avec les outils standard d'unix. Sans plus attendre, voila ce que ça donne :

#!/bin/bash

END_LINE=$( awk '/^__END__/{print NR + 1}' $0)
tail -n +$END_LINE $0 | base64 -di | display

exit 0
__END__
iVBORw0KGgoAAAANSUhEUgAAAQgAAADAAQMAAADC9G/RAAAABlBMVEX///8AAABVwtN+AAAAVUlE
QVRYhe3TwQ2AQAhFQfpvGhNNDCxSgfNu+5nrRtxlZvTOhSCIZfo4EwRRphlBEFO873priCCIjLpu
EQRRxfZrnp0giCmiRxDEFHWqvytmBPF3cQGgZ+PFvE0lDQAAAABJRU5ErkJggg==

Les explications : grà¢ce à  awk, on récupère le numéro de ligne suivant le patern __END__. Puis tail nous permet de récupérer les données à  partir de cette ligne que l'on passe à  base64 en mode décodage. L'image ainsi obtenue est envoyée simplement à  display[2]. Libre à  vous d'en faire ce que vous voulez.On n'oubliera pas le exit avant les données, sinon bash va essayer de les interpréter comme du code.

Pour intégrer l'image, on utilisera par exemple :

$> base64 si.png >> img.sh

On peut aussi pour gagner de la place garder l'image en binaire (et éviter ainsi l'encodage/décodage base64) mais comme certains éditeurs ont parfois du mal avec les fichiers contenants du binaire, je préfère le base64. Il est facile de remplacer l'image par n'importe quoi, comme par exemple un tgz pour faire un script auto-extractible.

Voila une astuce simple mais diablement utile !

Notes

[1] pour les curieux, afin d'avoir les données de ma station météo en fond d'écran

[2] d'imagemagick


Commentaires du post original

lundi 3 septembre 2012

Une table de défonceuse d'établi

Une défonceuse est un outil génial[1] mais qui a ses limitations. En particulier, dès que l'on veut travailler sur de petites pièces ou réaliser des tà¢ches en série, la mise en place devient très vite galère et répétitive. C'est pour cela qu'en général, dès que l'on à  une défonceuse portative, on cherche à  la mettre sous table. Ceci consiste à  la fixer sous un plateau, la fraise dépassant alors vers le haut. On ne bouge plus la défonceuse, mais la pièce de bois à  travailler. Comme tout le monde j'ai donc voulu faire ça :)
Il existe une quantité incroyable de plans, de discussions et de méthodes pour faire une table de défonceuse. Dans mon cas, mon cahier des charges tenait en quelques points :
  • à  poser sur un établi plutôt qu'un meuble à  part entière (portative donc)
  • relativement simple à  réaliser
  • le moins de perte de hauteur possible (évidement)
  • utiliser un peu du bois qui traà®ne et encombre mon atelier, garage, étagères, armoires ...
J'ai donc retenu ces quelques solutions :
  • un morceau de plan de travail de cuisine (de l'aglo mélaminé épais, cela restera rigide et plat dans le temps)
  • un piètement en contreplaqué de 22 qui me reste des étagères de la cuisine
  • une plaque support pour perdre un minimum de hauteur en garantissant la rigidité (le seul achat)
  • un guide simple en CP basé sur le même principe que pour ma perceuse à  colonne
On commence donc par tracer la plaque support sur le plan de travail puis réaliser une rainure ayant comme profondeur l'épaisseur de la plaque. Comme la précision est importante à  ce point, l'aide d'un gabarit droit est très utile[2]. Il suffit ensuite de découper le surplus intérieur à  l'aide d'une scie sauteuse.

Étape suivante, le piètement. Facile, 3 morceaux de CP et 3 bouts de tasseaux. Un montage à  blanc pour tester, un petit chanfrein pour le plaisir et voila. Reste une opération importante, percer deux[3] trous dans la plaque support pour fixer la semelle de la défonceuse dessous. C'est la partie la plus critique. Il ne faut pas que les vis de fixation dépassent de la plaque et la défonceuse doit être bien maintenue.

On pourrait s'arrêter la. Un tasseau bien droit et 2 serre-joints pour le guide et ça marche ! Mais bon, pourquoi bouder son plaisir ? Allons un peu plus loin !
Comme les tables de défonceuses, les guides pour celles-çi sont multiples. Du simple tasseau (dégauchi) évoqué ci-dessus jusqu'au guide à  réglage micrométrique. Restons simples[4] : deux morceaux de CP tenus en angle droit avec des équerres, une découpe pour passer la fraise et une cage avec un trou derrière pour l'aspiration. Sitôt dit (presque)sitôt fait. On s'appliquera bien pour que le guide soit d'équerre par rapport au plan de travail et bien poncé pour que les pièces glissent bien dessus[5]. Pour le régler, très simple: un point de pivot d'un coté[6] et une pince de l'autre.

Tant qu'on est lancés, on va faire une petite boà®te pour stocker les fraises et autres petits trucs. Quitte à  avoir une défonceuse, autant l'utiliser, donc rainures et feuillures[7] nous donnent un boà®te qui ne se défera pas de sitôt :)

Enfin, on termine par les très importants poussoirs qui éloigneront les mains de cet engin somme toute très dangereux. La encore, on fait dans la récup, morceau de parquet et vieux bout de tasseaux. L'anti-dérapant est coupé dans un tapis acheté il y a des années au bricotruc du coin.

Et voila, enfin, je peux rendre fixe ma défonceuse mobile :)

Blague à  part, je ne regrette pas le temps passé, c'est super pratique. Le temps de montage/démontage est très raisonnable (quelques minutes), le réglage est assez facile (je sort la défonceuse de sous la table).
Edit: Comme je n'ai pas été très clair à  propos de l'utilisation du guide, voici quelques précisions. Tout d'abord, un plan :

On voit qu'il y a une rainure traversante découpée dans la base du guide. Positionnée en face d'un trou dans la table, elle permet à  l'aide d'un boulon de faire un point de pivot. L'autre coté peut ainsi bouger d'avant en arrière pour régler la distance entre le guide et la fraise. Le guide n'a pas besoin d'être parallèle au bords de la table[8] Le pivot est un simple trou dans la table, mais doit (dans mon cas) être une rainure dans le guide. Cela permet de déplacer le guide dans l'autre sens (de droite à  gauche) pour aligner la lumière d'aspiration avec la fraise (et aussi garder le coté proche du bord de la table pour coincer avec ma pince).

Notes

[1] Je renvoi ceux qui ne connaissent pas vers Wikipedia
[2] On pensera aussi à  préparer des butées pour éviter de dépasser des traits comme moi.
[3] ou trois selon votre défonceuse
[4] mais pas trop :)
[5] j'envisage aussi de le cirer
[6] un boulon qui traverse la table et le guide
[7] on peut même les faire avec la table nouvellement réalisée \o/
[8] ou à  l'outil, contrairement à  un guide pour scie circulaire par exemple


Commentaires du post original

jeudi 8 décembre 2011

Fabrication d'un établi

le 1er accessoire indispensable dans un atelier est l'établi. Jusqu'à  présent je me suis contenté d'un plan de travail de cuisine posé sur des tréteaux. Comme en prévision du bricolage de cet hiver je réorganise mon atelier, j'ai trouvé que c'était le moment parfait pour réaliser un vrai établi. Le plan de travail sus-cité et du bois d'ouvrage récupéré sur le chantier[1] m'ont fournit la matière première.
Si l'on cherche sur le grand ternet, on trouve de nombreux plans et idées allant du plus simple au plus perfectionné q(ui aurait plus sa place dans le salon tellement il est beau). Comme exemple, je vous en ai sélectionné 3, tous en vidéos :
De mon côté, comme je ne voulais rien acheter[3], j'étais limité dans mes dimensions et ma structure par le bois disponible. En plus, c'était l'occasion rêvée de s'entraà®ner sur des techniques pas trop maà®trisées. Les ratages ne sont pas très graves cachés au fond de l'atelier :) J'ai donc fait mes plans en choisissant un assemblage à  mis-bois, plus solide que de simples vis mais facile à  réaliser quand même.
Bien entendu, je commence par réaliser l'établi en virtuel avec Google sketchup. Les dimensions principales sont fixées par le plan de travail dont je dispose déjà . C'est l'occasion d'essayer différents assemblages en ayant une idée rapide du rendu. Ensuite cela me permet de voir les pièces à  découper et leurs dimensions. J'ai poussé le vice jusqu'à  représenter fidèlement toutes les liaisons entre les montants mais on peut se contenter de représenter juste le principal. De toutes façons les dimensions finales sont mesurées et marquées lors des multiples assemblages à  sec réalisés au fur et à  mesure de la construction. L'éclaté est réalisé simplement à  l'aide de l'excellent script Eclate_deplace
plan éclaté
Puis, je prépare le bois de récup' à  l'aide de ma nouvelle rabau-dégau[4]. J'en suis très content, c'est un vrai bonheur de travailler avec du bois bien plan et d'équerre. J'ai quand même un peu galéré pour les pièces de 150cm de long. Une machine d'entrée de gamme ne vaut pas celles à  plus de 1000€. Rien que de très normal. Pour la longueur, une 1ère coupe large suivie d'une coupe ajustée après. Cela permet d'assurer des longueurs équivalentes et des coupes bien droites. Bien sur, protection des yeux et des oreilles indispensables !
bois brut dégauchir
Viens ensuite les découpes des assemblages à  mis-bois. J'ai réalisé la majorité avec la scie circulaire installée sous table. On règle la hauteur de la lame suivant la profondeur de l'entaille[5] et à  l'aide de multiples passages on enlève le superflu. Il ne reste plus qu'a nettoyer le fond au rabot et au ciseau à  bois. J'en ai aussi fait certaines juste à  la scie à  main[6]. J'envisage depuis d'investir dans une scie spéciale pour le bois de bout, c'est dur[7] avec une scie égoà¯ne standard. Enfin d'autres entailles ont été réalisées avec plusieurs trais de scie à  main et le ciseau. (photo ci-dessous) L'expérience étant irremplaçable, mes derniers ajustements sont bien meilleurs que les 1er. Ayant un peu honte de ceux-ci, je ne vous met la photo que d'un des derniers :) Tout au long du processus, on marque bien toutes les pièces et on réalise de fréquents assemblages à  blanc.
entaille manuelle mis-bois
Enfin, lorsque toutes les pièces sont prêtes, je réalise un dernier assemblage à  blanc puis je colle/visse tout cela. Vu le nombre conséquent d'imbrications j'ai fait en plusieurs étapes. En premier les cotés. J'en ai profité pour chanfreiner tous les coins accessibles à  la défonceuse et au rabot. Cela permet d'éviter de se blesser ou de prendre des échardes. En plus ça donne un look beaucoup plus fini à  l'ensemble.
tous les morceaux ça sèche
Pour finir un peu d'huile pour parquet étalée au pinceau sur toute la structure (ça protège le bois) et on colle/visse le plateau dessus. Pour l'étagère, j'ai retaillé de vielles étagères en pin dont les montants sont inutilisables. La aussi colle et vis offriront une résistance maximale. Voila donc un établi solide qui ne bougera plus comme mes tréteaux dès que je veux scier ou donner des coups de marteaux.
ayé

Notes

[1] et patiemment stocké au grand dam de madame
[2] un nom prédestiné s'il en est !
[3] un petit challenge perso
[4] cadeau de Noà«l en avance
[5] un poil moins en fait
[6] au bout des montants
[7] et donc peu précis


Commentaires du post original

dimanche 13 novembre 2011

Aménagement d'atelier : French Cleats

En prévision du bricolage que je vais avoir à  faire dans les mois qui viennent[1], j'ai commencé à  ranger/organiser mon atelier. Il est bien plus facile de travailler quand chaque chose est à  sa place et est donc rapidement accessible. Parmi les actions entreprises, je voulais accrocher mes outils au mur. n'ayant pas de mur dispo, j'en ai créé un avec une plaque de fermacel reposant sur mon plan de travail. restait alors à  choisir comment agencer tout cela.
Quand il s'agit de ranger des outils, la première recherche renvoi vers les pegboard et équivalents. mais cela revient très vite très cher et il manque toujours le petit accessoire dont on a besoin tout de suite. Celle qu'on trouve en promo sont généralement de piètre qualité et je ne leur confierai pas forcément tous mes outils. Par contre l'énorme avantage sur un agencement maison est la modularité. Du coup comment garder une forte modularité combiné à  un agencement fait main et donc parfaitement adapté/adaptable à  ses propres outils ?
Je n'ai pas trouvé la solution tout seul, mes lectures du moment m'ont amené sur le site TheWoodWhisperer[2] et en particulier son épisode 106 – French Cleat Storage System ou il décrit sa méthode pour ranger ses outils. Le terme étant alors connu on trouve de multiples références dénotant de la très large utilisation de cette technique. à€ noter qu'on l'appelle aussi parfois Split Batten. Si quelqu'un connait l'appellation française, je suis preneur, je n'ai pas réussit à  trouver.
Le principe est très simple, on découpe un morceau de bois avec un angle à  45° dans le sens de la longueur. Une scie circulaire placée sous table est parfaite pour cela. on obtient deux parties: une qui sera fixée au mur, et une autre sur l'accessoire porte-outil. On a alors un système modulaire facile à  personnaliser. nous ne sommes plus limités que par notre imagination pour fixer n'importe quoi au mur.
Par exemple, voici le support pour les ciseaux à  bois et les rapes :

On distingue en dessous les deux parties avec la coup à  45°. Le reste est constitué de morceaux de contreplaqué qui traà®naient dans le coin[3]
Il est très facile de se confectionner des supports parfaitement adaptés et déplacables à  volonté.

Ici, une petite tablette parfaite pour le mètre/gomme/taille-crayon et son support à  crayon en véritable gaine électrique !
Et voila, en quelques heures de travail me voici avec un magnifique système de rangement évolutif, parfaitement adapté à  mes outils et qui ne m'a rien coà»té[4]

Notes

[1] j'y reviendrais
[2] Attention cliquer sur ce lien peut provoquer des heures de visionnage de vidéo sur le travail du bois
[3] toutes les chutes précieusement conservées depuis des années qui servent enfin à  quelque chose ;)
[4] enfin si mon temps ne coà»te rien


Commentaires du post original

lundi 12 septembre 2011

Generic Mapping Tools (GMT) pour tracer des cartes sous Ubuntu

GMT (Generic Mapping Tools) est une collection d'outils libres et multi-plateformes permettant la génération de cartes et de diagrammes. Regroupant de l'ordre de 60 programmes en ligne de commande elle offre de nombreuses possibilités telles la création de cartes selon différentes projections, la représentation de données géographiques, la génération de graphiques et même la représentation en 3D.

Pour avoir un aperçu des possibilités, je vous renvoi vers les exemples, et en particulier celui-la ou cet autre ou encore ce dernier

Je vais me contenter dans cet article d'aborder les fonctions de base pour la génération de cartes. Pour les autres la documentation offcielle est très fournie. Vous y trouverez un manuel de référence, un tutoriel très bien fait et les nombreuses pages de man.

Avant de rentrer dans le vif du sujet, voici ce que vous devriez être capable de produire à  la fin : Manche

Installation & configuration

GMT étant présent dans les dépots, il vous suffit d'installer les paquets gmt, gmt-coastline-data, gmt-doc, gmt-examples et gmt-tutorial ces 3 derniers ne sont pas nécessaires, mais je vous les recommande tant la doc est importante.

Il vous faut aussi créer quelques variables d'environnement. Ajoutez ces lignes à  votre ~/.bashrc

# gmt variables
export NETCDFHOME=/usr/lib
export GMTHOME=/usr/lib/gmt
export PATH=$PATH:$GMTHOME/bin

Les étapes suivantes sont facultatives mais nécessaires pour suivre ce petit tutoriel.

GMT permet plusieurs niveaux de détails pour la représentation des côtes (crude, low, intermediate, high, full). Ubuntu fournit les 3 premiers via le paquet gmt-coast-low. Nous allons installer en plus le niveau full. Vous trouverez les différents miroirs la

wget ftp://gd.tuwien.ac.at/pub/gmt/4/GMT4.2_full.tar.bz2
cd /usr/share/gmt/
sudo tar xvjf /chemin/vers/GMT4.2_full.tar.bz2

Pour avoir une idée du niveau de détails, voici la carte de la manche avec les différents niveaux[1].

crude low intermediate full

Nous aurons aussi besoin de données topographiques, c'est à  dire des données d'altitude et de profondeur. Il existe plusieurs sources dont vous trouverez les liens à  la fin. Nous utiliserons les données ETOPO2v2 fournies par la NOAA[2]. Elles ont l'avantage d'être précises à  2 minutes d'arc prêt et de combiner les terres et mers. Vous pouvez télécharger les données mondiales (Attention le fichier fait 97Mo) ou alors ne récupérer que celles qui vous seront utiles (procédure plus bas).

# Pour télécharger et installer toutes les données :
wget http://www.ngdc.noaa.gov/mgg/global/relief/ETOPO2/ETOPO2v2-2006/ETOPO2v2g/netCDF/ETOPO2v2g_f4_netCDF.zip
sudo unzip ETOPO2v2g_f4_netCDF.zip -d /usr/share/gmt/dbase/

Enfin, fixons quelques paramètres par défaut[3].

gmtset -G$HOME/.gmtdefaults4 BASEMAP_TYPE fancy+ PLOT_DEGREE_FORMAT ddd:mmF
  • BASEMAP_TYPE pour l'affichage des axes comme sur la carte ci-dessus (noir et blanc, coins arrondis)
  • PLOT_DEGREE_FORMAT pour afficher les coordonnées du type 48°23'N

voir le manuel de référence pour plus de détails.

Cartographier

Ma première carte

Maintenant lançons nous et générons notre première carte, la commande peut faire peur, mais nous allons détailler :

pscoast -R-7/2/47.5/51.5 -JM10c -P -Ggreen -Sblue -W -Df -Ir -B1g1 > gmt_manche_01.ps

pscoast va vous permettre de dessiner les terres, mers, côtes et rivières. Les options sont :

  • -R-7/2/47.5/51.5 : les limites de la carte à  réaliser. Ici, un rectangle dont les coordonnées sont 7° de longitude Est, 2° de longitude Ouest, 47,5° de Latitude Nord et 51,5° de Latitude Nord.
  • -JM10c : projection Mercator, la carte fera 10cm de large
  • -P : créer une page en mode portrait
  • -Ggreen : couleur des terres
  • -Sblue : couleur des mers
  • -W : dessine le trait de côte (en noir par défaut)
  • -Df : utiliser la base de côte full (c, l ou i pour les autres bases disponibles)
  • -Ir : affiche les rivières permanentes
  • -B1g1 : créer les axes avec une unité tous les degrés

Un fichier postcript est alors produit. Vous pouvez le convertir en png à  l'aide de la commande ps2raster (qui nécessite ghostcript)

ps2raster -Tg -A gmt_manche_01.ps
  • -Tg : format de sortie PNG (-Tj pour Jpeg et -Tf pour PDF)
  • -A : pour ne conserver que la partie utile

Capture

Ajoutons un peu de relief

Il faut tout d'abord créer un fichier .grd lisible par GMT avec les données topographiques. Si vous avez installé l'ensemble des données, créez le ainsi[4] :

grdreformat /usr/share/gmt/dbase/ETOPO2v2g_f4.nc gmt_manche_02.grd -R

Sinon, allez sur le site Geodas pour récupérer un fichier .xyz. Remplissez ainsi :

Capture

et téléchargez le fichier xyz. Vous pouvez alors générer le grd avec cette commande :

xyz2grd -Ggmt_manche_02.grd -I2m -R manche02_1630.xyz

Pour afficher les détails sur le nouveau fichier :

grdinfo gmt_manche_02.grd

/!\ Vous avez peut-être noté que je n'ai pas donné les paramètres à  l'option -R. C'est normal, GMT conserve les derniers paramètres utilisés dans le fichier .gmtcommands4 du repertoire courant. Cela vous permet de simplifier l'écriture mais est parfois source d'incompréhension :)

Nous allons maintenant ajouter les lignes de niveaux à  notre carte :

pscoast -R -JM20c -Ggreen -Sblue -W -Df -B -K  > gmt_manche_02.ps
grdcontour gmt_manche_02b.grd -J -S4 -C20 -O >> gmt_manche_02.ps

Dans les nouvelles options, notons :

  • -K : pour dire que l'on va encore ajouter des données au fichier
  • -O : pour dire que l'on ajoute des données au fichier (notez aussi le >>)
  • -C20 : pour dire à  grdcontour de tracer les lignes tous les 20m[5]
  • -S4 : pour lisser les lignes

Capture

Colorisons un peu plus

Les couleurs plates, c'est bien joli, mais ça manque un peu de ... relief :) Voyons comment arranger cela.

D'abord, il faut créer une palette de couleur à  partir de celles par défaut mais mise à  l'échelle de nos valeurs :

makecpt -Crelief -T-450/450/20 -Z > gmt_manche_03.cpt
psscale -Cgmt_manche_03.cpt -D10c/2c/20c/1ch -Ba100 > gmt_manche_03_cpt.ps
  • -Crelief, -Cgmt_manche_03.cpt : palette utilisée
  • -T-450/450/20 : translation à  appliquer à  la palette de -450m à  450m par pas de 20m, on trouve les extrêmes grà¢ce à  la commande grdinfo vue ci-dessus
  • -Z : palette continue (dégradé de couleurs)[6]

La commande psscale permet de générer une échelle. Je vous laisse lire la documentation pour les détails. Vous pouvez aussi l'utiliser pour ajouter l'échelle sur votre carte Palette

Créons maintenant la carte topographique à  l'aide de grdimage

grdimage gmt_manche_02.grd -J -Cgmt_manche_03.cpt -E50 -K > gmt_manche_03.ps
grdcontour gmt_manche_02.grd -J -S4 -C25 -O >> gmt_manche_03.ps
  • -E50 : permet d'augmenter la résolution en interpolant les données, souvenez-vous, nos données sont par pas de 2 minutes d'arc, si on laisse comme cela, nous aurons des carrés
  • les autres options sont déjà  connues ;)

Capture

Conclusion

Voila, comme l'article est déjà  (très) long, je vais m'arrêter la. Nous n'avons fait qu'effleurer les possibilités de GMT et je vous encourage donc vivement à  suivre le tutoriel officiel, à  lire la doc de référence et à  expérimenter. Vous pouvez aussi télécharger le script regroupant toutes les commandes vues.

Pour réaliser la carte de la manche présentée en début d'article, il ne vous manque que psxy pour afficher des symboles et pstext pour le texte. Leur utilisation est relativement simple et vous trouverez des exemples commentés dans le script qui génère celle-ci. Tout le reste est déjà  expliqué dans cette page.

Enfin, il existe une interface graphique pour GMT : iGMT, mais celle-ci n'étant pas disponible dans les dépots, je ne l'ai pas testé.

Liens

Pour finir les liens utiles :

A ce propos, je ne résiste pas à  citer luckytoyn qui dans ce même sujet disait :

J'ai l'impression que moins un programme est convivial, plus il est puissant.
gmt est très puissant.

Continuons les liens :

Voila, merci et bravo à  ceux qui sont arrivés jusque la ;) A vos cartes !

Notes

[1] vous trouverez le script pour les produire à  cet endroit, ne vous inquiétez pas des options nous allons détailler plus loin

[2] National Oceanic and Atmospheric Administration, une agence Américaine

[3] On peut aussi les donner en ligne à  chaque commande, voir gmtdefaults

[4] il y a surement moyen de ne pas donner le chemin complet grà¢ce au fichier coastline.conf, mais je n'ai pas trop cherché

[5] il prend aussi l'option -A50 pour labéliser les lignes tous les 50 mètres

[6] notez aussi -I pour inverser la palette


Commentaires du post original