Logo carnetderootxzz@carnetderoot.net"La simplification est la sophistication suprême" - Léonard De Vinci
dimanche 04 décembre 2016

:: Archlinux - Aide mémoire ::

Systemd

Commandes

systemctl                                 # Contrôle systemd et gère les unités.
journalctl                                # Consultation du journal de systemd.
loginctl                                  # Contrôle des sessions utilisateurs (systemd-logind).

Commandes système

systemctl reboot
systemctl poweroff
systemctl suspend
systemctl hibernate

Opérations basiques

Gestion des unités

systemctl                                 # Liste des unités
systemctl list-units
systemctl status <unit>                   # Affiche le statut de l'unité
systemctl list-dependencies [<unit>]      # Liste des dépendances d'une unité

Opérations

systemctl start <unit>                    # Démarre l'unité
systemctl stop <unit>                     # Arrête l'unité
systemctl restart <unit>                  # Redémarre l'unité
systemctl reload <unit>                   # Recharge l'unité
systemctl enable <unit>                   # Active l'unité au démarrage
systemctl disable <unit>                  # Désactive l'unité au démarrage

Maintenance

Lister les services en échec

$ systemctl --failed
  UNIT                         LOAD   ACTIVE SUB    DESCRIPTION
● systemd-modules-load.service loaded failed failed Load Kernel Modules

On récupère ainsi le nom du service en échec à partir duquel on va pouvoir demander plus de détails.

Détails sur le service en échec

$ systemctl status systemd-modules-load.service
● systemd-modules-load.service - Load Kernel Modules
   Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sun 2016-12-04 09:24:59 CET; 18min ago
     Docs: man:systemd-modules-load.service(8)
           man:modules-load.d(5)
  Process: 333 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
 Main PID: 333 (code=exited, status=1/FAILURE)

Ces informations nous permettent de récupérer le PID du process incriminé, et de cibler plus précisément notre recherche :

$ journalctl _PID=333
-- Logs begin at Mon 2016-11-21 08:22:44 CET, end at Sun 2016-12-04 09:40:41 CET. --
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxdrv'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxpci'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxnetadp'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxnetflt'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxdrv'

Maintenant c'est déjà plus clair, le problème semble provenir de modules absents. Le nom de ces modules nous donne un indice sur l'application incriminée, ici VirtualBox.

Gestion du journal

$ journalctl --disk-usage                 # Taille occupée par les journaux sur le disque
$ journalctl --verify                     # Vérification de la "possible" corruption des fichiers journaux

Taille du journal

Editer le fichier /etc/systemd/journald.conf et modifier la valeur suivante :

[Journal]
...
SystemMaxUse=50M

Nettoyage du journal

$ sudo journalctl --vacuum-size=50M       # Suppression des journaux archivés jusqu'à ce que leur taille totale descende en deça de 50Mo
$ sudo journalctl --vacuum-time=2weeks    # Suppression des événements agés de plus de deux semaines

Gestion des paquets

Liste des miroirs

Générer la liste des miroirs

Site de référence : Archlinux - Pacman Mirrorlist Generator

Evaluer les miroirs

La liste des miroirs les plus rapides peut être déterminée à l'aide de l'utilitaire /usr/bin/rankmirrors.
Pour mettre à jour la liste des miroirs français en http/https et IPv4, lancer les commandes suivantes :

$ wget 'https://www.archlinux.org/mirrorlist/?country=FR&protocol=http&protocol=https&ip_version=4' -O mirrorlist.new
$ sed -i 's/^#Server/Server/' mirrorlist.new
$ rankmirrors -n 6 mirrorlist.new > mirrorlist
$ sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
$ sudo cp mirrorlist /etc/pacman.d/mirrorlist

Automatiser la mise à jour de la liste des miroirs

Installer l'utilitaire update-pacman-mirrorlist

$ yaourt -S update-pacman-mirrorlist

Adapter la configuration (si besoin) :

$ sudo vi /etc/update-pacman-mirrorlist
$ sudo vi /usr/lib/systemd/system/update-pacman-mirrorlist.timer

Activer et lancer le timer :

$ sudo systemctl enable update-pacman-mirrorlist.timer
$ sudo systemctl start update-pacman-mirrorlist.timer

Pacman

Opérations de base

Synchronisation (-S)

$ sudo pacman -Sy                      # Synchronise la liste des paquets
$ sudo pacman -Syu                     # Synchronise la liste des paquets et effectue une mise à jour
$ sudo pacman -Ss <package>            # Cherche un paquet contenant le terme "package"
$ sudo pacman -Si <package>            # Information sur un paquet
$ sudo pacman -S  <package>            # Installe "package"
$ sudo pacman -S --asdeps              # Installe un paquet comme dépendance

Mise à jour (-U)

$ sudo pacman -U  <package>            # Met à jour "package"

Requête (-Q)

$ sudo pacman -Q                       # Liste les paquets installés
$ sudo pacman -Ql <package>            # Liste les fichiers d'un paquet
$ sudo pacman -Qo /path/file           # Demande à quel paquet appartient le fichier
$ sudo pacman -Qdtq                    # Liste des dépendances inutiles

Suppression (-R)

$ sudo pacman -Rs <package>            # Supprime un paquet et ses dépendances
$ sudo pacman -Rsn <package>           # Supprime un paquet, sa configuration et ses dépendances
$ sudo pacman -Rs $(pacman -Qtdq)      # Suppression des dépendances inutiles

Création de la liste des paquets installés pour réinstallation

$ sudo pacman -Qqet | grep -v "$(pacman -Qqg base)" > pkglist

Réinstallation à partir de la liste des paquets

$ sudo pacman -S $(cat pkglist)

Gestion du cache de paquets

Suppression des paquest non-installés du cache (anciennes versions ou non installées sur le système) :

$ sudo pacman -Sc

Il est aussi possible de vider complètement le cache. Il s’agit d’une très mauvaise pratique qui empêche toute réinstallation de paquets depuis le cache et impose donc de les télécharger à nouveau. Vous ne devriez jamais utiliser cette commande à moins d’un besoin absolu de récupérer de l’espace disque.

$ sudo pacman -Scc

AUR

$ yaourt (utilise la même syntaxe que pacman)

Mise à jour du système

$ yaourt -Syua                         # Mise à jour du système (pacman + aur)

Local

Attention ! Pour des raisons de sécurité, éviter d'utiliser makepkg en root. Préférer l'utilisation de sudo.

Création du paquet

$ sudo makepkg -s

Installation du paquet créé

$ sudo pacman -U <package>-pkg.tar.gz

vendredi 18 novembre 2016

:: Flasher le Nokia N9 ::

Prérequis

  • flasher

    $ yaourt -S flasher-harmattan
  • Les roms correspondants au modèle (main.bin + emmc.bin), disponibles sur NokiaFirmware

Procédures de flashage

Partie système uniquement

$ sudo flasher -f -F main.bin
$ sudo flasher -R

Partie système et emmc

$ sudo flasher -f -F main.bin
$ sudo flasher -f -F main.bin -F emmc.bin --flash-only=mmc
$ sudo flasher -R

Flashage complet (avec repartitionnement)

$ sudo flasher -f -F main.bin -F emmc.bin --no-preserve
$ sudo flasher -f -F main.bin -F emmc.bin --no-preserve --flash-only=mmc
$ sudo flasher -R

dimanche 13 novembre 2016

:: Gestion des versions de Perl avec Perlbrew ::

Installation

$ curl -kL http://install.perlbrew.pl | bash

Ou, si vous préférez utiliser wget :

$ wget --no-check-certificate -O - https://install.perlbrew.pl | bash

Installation

Editer le fichier .bashrc

$ vi ~/.bashrc

Et ajouter la ligne suivante à la fin du fichier :

# Perlbrew
source ~/perl5/perlbrew/etc/bashrc

Puis charger le nouvel environnement :

$ . ~/.bashrc

Utilisation

Lister les versions disponibles

$ perlbrew available
perl-5.21.6
perl-5.20.1
perl-5.18.4
perl-5.16.3
perl-5.14.4
perl-5.12.5
perl-5.10.1
perl-5.8.9
perl-5.6.2
perl5.005_04
perl5.004_05
perl5.003_07

Lister les versions installées

$ perlbrew list
perl-5.21.6
perl-5.20.1

Installation d'une version particulière

$ perlbrew install perl-5.16.3

Utilisation d'une version particulière

De manière permanente

$ perlbrew switch perl-5.16.3

Uniquement dans le shell courant

$ perlbrew use perl-5.16.3

Tester un script sur toutes les versions de perl disponibles

$ perlbrew exec perl monscript.pl

Accéder à l'aide

$ perlbrew help

Utilisation dans un script bash

Pour utiliser perlbrew dans un script, il faut definir PERLBREW_ROOT et PERLBREW_HOME avant de charger l'environnement bashrc.

#!/bin/bash

## Variables d'environnement requises
export PERLBREW_ROOT=/opt/perlbrew
export PERLBREW_HOME=/tmp/.perlbrew
source ${PERLBREW_ROOT}/etc/bashrc

## Utilisation de la version 5.14.1
perlbrew use 5.14.1
perl /app/mon-application

## Utilisation de la version 5.12.3
perlbrew use 5.12.3
perl /app/mon-application

Gestion des modules CPAN

Pour installer des modules CPAN additionnels, on utilisera cpanm, une alternative à cpan offrant une meilleure compatibilité avec perlbrew.

$ perlbrew install-cpanm

Installation du module List::Util

$ cpanm List::Util

Lister les modules installés

$ perlbrew list-modules

Mettre à jour les modules installés

$ perlbrew list-modules | perlbrew exec cpanm

Migrer les modules installés dans la version courante vers une autre (ici 5.16.3).

$ perlbrew list-modules | perlbrew exec --with perl-5.16.3 cpanm

Références


dimanche 18 septembre 2016

:: Rundeck ::

CLI Tool

Rappel

Aller dans le répertoire "rundeck"

PS C:\> cd D:\rundeck

rd-queue

Lister exécutions en cours

PS D:\rundeck> .\tools\bin\rd-queue -p Galaxy
Queue: x items
[id] NomJob <http://lien_vers_details_du_job>
...

rd-jobs

Lister jobs d'un projet

PS D:\rundeck> .\tools\bin\rd-queue -p NomProjet
# Found x jobs:
- NomJob - 'Description'
...

dimanche 28 août 2016

:: MMD Cheat Sheet ::

Généralités

Résultat Syntaxe
Italique *Italique* ou _Italique_
Gras **Gras** ou __Gras__
Gras et italique ***Gras et italique*** ou ___Gras et italique___
Citation > Citation
Liste à puces *, + ou - devant chaque élément
Liste numérotée 1. devant le 1er élément
Entête ### Entête
Ligne horizontale --- ou *** sur une ligne vide

Liens

Résultat Syntaxe
Google [Google](http://google.com)
http://google.com <http://google.com> <pierce@twinforces.com>
nobody@nowhere.com <nobody@nowhere.com>
Référence [lien][idlien] pour [lien][idlien] avec [idlien]: http://url.com "title" sur sa propre ligne
Lien défini [idlien]: http://url.com "title" on its own line elsewhere.
Interne [Links][] (any header name)
Note de bas de page 1 [^note] Note
Note définie [^note]: text
Image ![Image Name](URL "title") for an image
![Image Ref] then later def
![Caption][Image Ref] then later def
Image Définie [Image Ref]: URL "Title" width="45px" height="45px"

Tableaux

Table caption, also works as a reference
First Header Second Header Third Header
First row Gras Very long data entry
Second row Cell that spans across two columns

| First Header | Second Header | Third Header | | :------------ | :-----------: | -------------------: | | : Left align | : centered : | Right align : | | First row | **Gras** | Very long data entry | | Second row | Cell that spans across two columns || [Table caption, also works as a reference][section-mmd-tables-table1]

Autres

What Syntax
{--a delete. --} a delete. {-- remove --}
{++an add. ++} {++ add++}
swap {~~from~>to~~} {\~\~\from\~>to\~\~}
{==a highlight==} {\=\=highlight\=\=}
Comment, which you can't see{>>What is it a test of?<<}. {>>Comment?\<\<}

  1. Ceci est une note de bas de page [idlien]: http://url.com "title" ↩


jeudi 14 juillet 2016

:: Installer Kali NetHunter sur Nexus 4 ::

Installer la ROM Stock

Activer le mode Développeur

Déverrouiller le téléphone et flasher TWRP

adb reboot-bootloader
fastboot oem unlock

Si pas déjà installé, télécharger la dernière image de TWRP et la flasher :

fastboot flash recovery recovery-twrp.img

Rooter le téléphone

Installer Kali NetHunter


mercredi 22 juin 2016

:: Nokia MCE Tools sur Sailfish OS ::

Présentation

MCE, pour Mode Control Entity, est un service système supervisant divers modes et états incluant senseurs et entrées utilisateurs.

Plus spécifiquement les entrées tactiles, les boutons, l'état d'activation et la mémoire.

Installation de Fingerterm

  • Aller dans Réglages > Mode développeur
  • Activer le mode développeur et la connexion distante
  • Indiquer un mot de passe de connexion

Dorénavant une nouvelle application nommée Terminal est disponible dans la liste des applications installées, il s'agit de l'application Fingerterm.

Note : pour la connexion distante via SSH, s'authentifier avec l'utilisateur nemo et le mot de passe renseigné précédemment.

Installation de mce-tools

  • Exécuter les commandes suivantes :

    $ devel-su
  • Indiquer le mot de passe pour passer en mode "superuser", puis installer les outils mce en tapant les commandes suivantes :

    # pkcon refresh
    # pkcon install mce-tools
  • Quitter le mode "superuser" :

    # exit

Commandes mce-tools

Gestion du "Double Tap"

  • Définir le double tap pour aller à l'accueil (Attention, le code de verrouillage doit être désactivé dans ce cas)

    $ mcetool --set-doubletap-mode=unlock
  • Définir le double tap pour aller à l'écran de verrouillage (défaut)

    $ mcetool --set-doubletap-mode=show-unlock-screen

Ecran d'aperçu (Glance Screen)

Permet de faire apparaître l'heure lorsque le téléphone se retrouve à la lumière

  • Activation de l'écran d'aperçu

    $ mcetool --set-low-power-mode=enabled
  • Désactivation de l'écran d'aperçu (défaut)

    $ mcetool --set-low-power-mode=disabled

Gestion du bouton "Power"

  • Lorsque l'écran est éteint, un seul appui sur le bouton affiche l'écran et fait vibrer le téléphone

    $ mcetool --set-display-off-single-powerkey-press-actions=unblank,vibrate
  • Lorsque l'écran est allumé, ne fait rien lors d'une double activation

    $ mcetool --set-display-on-double-powerkey-press-actions=
  • Lorsque l'écran est allumé, une longue activation éteint le périphérique (défaut)

    $ mcetool --set-display-off-long-powerkey-press-actions=shutdown

Gestion des connexions et du mode Avion

  • Désactivation

    $ mcetool --disable-radio=[master|cellular|wlan|bluetooth]
  • Activation

    $ mcetool --enable-radio=[master|cellular|wlan|bluetooth]

Note : master correspond à cellular + wlan

  • Activation du mode Avion

    $ mcetool --disable-radio=master

Encore plus de commandes !

$ mcetool --help

Liens intéressants


samedi 04 juin 2016

:: Prusa i3xl - Notes techniques ::

Alimentation

Besoins estimés

  • 12V @ 5A pour les 5 moteurs
  • 12V @ 2A pour la buse chauffante de l'extrudeur (+20W)
  • 12V @ 12A pour un lit chauffant 140W (300x200)
  • 5V @ 2A pour l'électronique embarquée (Arduino, RAMPS, Raspberry Pi)
  • 5V @ 1-2A pour le "base load" de l'alimentation

Cela donne un total d'environ 20A en 12V (240W) et 5A en 5v (25W). Sachant qu'une alimentation ne fournit au mieux que 80% de sa puissance max indiquée et qu'il est préférable de l'utiliser à 50-60% de sa puissance max, on cible une alimentation de 500-600W et de préférence certifiée 80+.

Préparation de l'alimentation

Le modèle est une alimentation Antec Neo ECO 520C 80PLUS. La puissance fournie en sortie sur les différentes tensions est résumée ci-dessous :

+5V +3.3V +12V -12V +5VSB
Intensité max 24A 24A 40A 0.8A 2.5A

Caractéristiques

  • Certification 80+ Bronze
  • ATX 2.3

Connecteurs

  • 1 x +12V (Alimentation P8 - Scindable en 2 x P4)
  • 6 x Alimentation Serial ATA
  • 1 x ATX 20 + 4 Broches
  • 1 x Disquette (Molex 4 Broches Femelle)
  • 6 x Molex (4 broches) Femelle
  • 1 x PCI Express 6 + 2 Broches
  • 1 x PCI Express 6 broches

Diagramme des connecteurs

Diagramme des connecteurs

Câbles

20AWG gaine PVC semi-rigide (RS)

  • 331862 Fil câblage équip. UL1007 noir, 20 AWG
  • 331878 Fil câblage équip. UL1007 rouge, 20 AWG

22AWG / 0,35 mm2 gaine PVC semi-rigide (RS)

  • 1680786 FIL DE CABLAGE UL1061
  • 1680821 FIL DE CABLAGE UL1061
  • 1680764 FIL DE CABLAGE UL1061
  • 1680809 FIL DE CABLAGE UL1061
  • 1680758 FIL DE CABLAGE UL1061

Fils trés souples gaine silicone (Intermodel)

  • fs20awgr fil silicone 20 awg / 0.5mm² pour les courants faibles
  • fs16awgr fil silicone 16 awg / 1.32mm² pour le lit 140W

Moteurs NEMA17

Extrudeur

1 moteur pas à pas Casun 42SHD0404-22 :

  • Angle du pas : 1.8° (200 pas / tour)
  • Couple : 520 mN.m
  • Tension : 3.4 V
  • Intensité : 1.7 A

Axes X, Y et Z

4 moteurs pas à pas Casun 42SHD001-24 :

  • Angle du pas : 1.8° (200 pas / tour)
  • Couple : 260 mN.m
  • Tension : 12 V
  • Intensité : 0.4 A

Stepper drivers (x4)

Le réglage du courant fourni au moteur se fait à l'aide du petit potentiomètre présent sur le stick. Commencer au plus bas (tourner dans sens horaire inverse) et augmenter doucement (par 1/8ème de tour) la tension de référence jusqu'à obtenir le résultat désiré.

Note : la mesure de la tension qui nous sert de référence se fait entre la terre et le potentiomètre lui-même.

La puissance demandée aux moteurs variant en fonction des vitesses maximales paramétrées, j'ai arbitrairement choisi les vitesses maximales suivantes :

  • Axes X et Y : 7500 mm/min <=> 125 mm/s
  • Axe Z : 300 mm/min <=> 5 mm/s

Dans mon cas, après suppression/diminution des bruits et autres vibrations, j'arrive aux réglages suivants :

  • Axe X : 0.419 V
  • Axe Y : 0.573 V
  • Axe Z : 0.669 V
  • Extrudeur : 0.435 V

Schéma de cablage

Schéma de câblage

Parties mécaniques

  • Poulies GT2-20
    • Nombre de dents : 20
    • Longueur de pas : 2 mm
  • Courroies GT2
    • Longueur de pas : 2 mm

mardi 10 mai 2016

:: Prolonger la durée de vie des cartes SD sur Raspberry Pi ::

Les cartes Raspberry Pi sont souvent considérées, à tort, comme des "killeuses" de carte SD. Ceci n'est pas dû à notre framboise préférée mais au fait que la carte SD fasse office de disque dur. Or le système d'exploitation risque de solliciter énormément cette dernière pour y écrire régulièrement de petites quantités de données (fichiers journaux, fichiers temporaires, etc.), traitement pour lequel une carte SD n'a pas été conçue (ses cycles d'écritures sont limités). Le risque ici est de voir fondre comme neige au soleil l'espace disque disponible sur votre carte SD, jusqu'à la rendre inutilisable. Pour limiter ce risque des moyens existent, je vous en présente deux que j'ai personnellement testés (et éprouvés).

tmpfs

tmpfs va nous permettre de déplacer les répertoires fortement sollicités en ram.
A noter que le contenu de ces répertoires sera perdu à chaque redémarrage du système.

Répertoires concernés :

  • /tmp
  • /var/tmp
  • /var/log

Cette liste est bien-sûr exhaustive, n'hésitez pas à ajouter d'autres répertoires fortement sollicités en terme d'écriture.

Pour cela, il faut modifier le fichier /etc/fstab comme suit :

tmpfs /tmp tmpfs defaults,noatime,nosuid,size=16m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=16m 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=16m 0 0

La quantité de RAM disponible sur le raspberry pi étant limitée, on fixe arbitrairement la taille max des partitions à 16Mo.

ramlog (http://www.tremende.com/ramlog/)

Dans le cas des fichiers journaux, la méthode précédente présente l'inconvénient de supprimer ces derniers à chaque redémarrage du Pi. Ce qui, pour un serveur Web ou tout autre serveur public, peut s'avérer rédhibitoire. ramlog permet de contourner ce problème : à chaque démarrage, il crée un volume de stockage virtuel en RAM, y copie le contenu de /var/log puis monte ce volume comme /var/log. Les fichiers journaux sont ainsi stockés sur le disque dans le répertoire /var/log.hdd qui est mis à jour à chaque arrêt/redémarrage du service.

Pour installer ramlog, lancer les commandes suivantes :

$ wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb
$ sudo dpkg -i ramlog_2.0.0_all.deb
$ sudo reboot

Une fois le Pi redémarré, vérifier que ramlog est bien actif avec la commande suivante :

$ service ramlog status

Références


vendredi 06 mai 2016

:: Calibration et gestion du firmware - Marlin LCD ::

Préparation de l'environnement de développement Arduino

Installation

Sur Linux Mint, l'IDE Arduino étant présent dans les repositories officiels, on l'installe en une seule commande :

$ sudo apt-get install arduino 

Permissions utilisateurs

Ajouter les utilisateurs de l'imprimante au groupe "dialout" pour autoriser l'accès aux ports séries.

$ sudo usermod -aG dialout utilisateur

Pour s'ajouter soi-même :

$ sudo usermod -aG dialout $(whoami)

Vérifier à l'aide de la commande "groups" :

$ groups
[...] dialout [...]

Connexion à la carte Arduino

  • Connecter la carte Arduino à l'aide du câble usb.
  • Lancer Arduino IDE et sélectionner le type de carte et le port série, pour ma part :
    • Outils > Type de carte > Arduino Mega 2560 ou Mega ADK
    • Outils > Port série > /dev/ttyACM0

Calibration des moteurs

Informations à collecter

  • Nombre de pas moteur : 200
  • Angle de pas : 1,8 °
  • Résolution ou pas du driver : 1/16ème (A4988) ou 1/32ème (DRV8825)
  • Type de tige filetée et son pas de vis : M5 / 0.8
  • Type de courroie et son pas : GT2 / 2 mm
  • Nombre de dents de l'engrenage de la courroie : 20
  • Nombre de dents du grand engrenage de l’extrudeur : 43
  • Nombre de dents du petit engrenage de l’extrudeur : 10
  • Ratio de l’extrudeur : 1
  • Diamètre de l’axe de la vis entraînant le fil : 6.5

Ces informations sont nécessaires pour calculer le nombre de pas pour chaque moteur (axes X, Y, Z + extrudeur) et définir la valeur DEFAULT_AXIS_STEPS_PER_UNIT du fichier Configuration.h :

#define DEFAULT_AXIS_STEPS_PER_UNIT {X, Y, Z, E}

Calcul des valeurs de pas

Extrudeur

Formule du calcul de pas pour l'extrudeur :

\[ E = \frac{{PasMoteur} * {PasControleur} * \frac{DentsGrandEngrenage}{DentsPetitEngrenage}}{{DiamètreAxe} * {\pi}} \]

  • Extrudeur Wade

    \[ E = \frac{{200} * {32} * \frac{43}{10}}{{6.5} * {\pi}} = 1347,67508735 \]

  • Extrudeur Titan

    \[ E = \frac{{200} * {32} * {3}}{{6.7} * {\pi}} = 912,171614139 \]

Axes X et Y

Formule du calcul de pas pour les axes X et Y :

\[ X | Y = \frac{PasMoteur}{PasCourroie * DentsEngrenage * Résolution} \]

Axe Z

Formule du calcul de pas pour l'axe Z :

\[ Z = \frac{PasMoteur}{PasDeVis * Résolution} \]

Dans mon cas, j'obtiens les valeurs suivantes :

  • Extrudeur Wade

    define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,1347.67}

  • Extrudeur Titan

    define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,912.17}

Outil indispensable

Le calculateur de pas RepRap : RepRap Calculator

Optimisation des paramètres PID

Les paramètres Proportionnelle Intégrale et Dérivation concernent les éléments chauffants de l'imprimante (buses de chauffe et lit).
Afin d'éviter tout problème de dépassement de température et d'optimiser la consommation électrique, il est important d'affiner au maximum ces paramètres.
Pour cela, une commande existe qui fait tout le travail pour nous :-)

Buse de chauffe extrudeur

Le code suivant chauffe la buse n°1 (E0) jusqu'à 200°C durant 8 cycles, puis remonte les valeurs PID calculées :

M303 E0 S200 C8

Après quelques minutes, le résultat donne :

[...]
 bias: 102 d: 102 min: 194.70 max: 205.94
 Ku: 23.12 Tu: 61.87
 Clasic PID
 Kp: 13.87
 Ki: 0.45
 Kd: 107.29
PID Autotune finished! Put the Kp, Ki and Kd constants into Configuration.h

Lit chauffant :

Le code suivant chauffe le lit (E-1) jusqu'à 50°C durant 8 cycles, puis affiche les valeurs PID calculées.

M303 E-1 S50 C8

Après plusieurs minutes, on obtient :

[...]
 bias: 126 d: 126 min: 49.92 max: 50.70
 Ku: 410.70 Tu: 87.54
 Clasic PID
 Kp: 246.42
 Ki: 5.63
 Kd: 2696.34
PID Autotune finished! Put the Kp, Ki and Kd constants into Configuration.h

Modification du firmware

Configuration.h

Valeurs modifiées :

  • Version et auteur

    #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__
    #define STRING_CONFIG_H_AUTHOR "Xzz"
  • Connexion à l'imprimante

    #define SERIAL_PORT 0
    #define BAUDRATE 250000
  • Type de carte (RAMPS 1.4 avec sorties extrudeur, ventilateur et lit)

    #define MOTHERBOARD 33
  • Thermistances

    #define TEMP_SENSOR_0 5
    #define TEMP_SENSOR_BED 7
  • Buse de chauffe de l'extrudeur

    // Prusa i3 - Hotend 12V 40W
    #define  DEFAULT_Kp 13.87
    #define  DEFAULT_Ki 0.45
    #define  DEFAULT_Kd 107.29
  • Lit chauffant

    // Mk8 300x200 12V
    #define  DEFAULT_bedKp 246.42
    #define  DEFAULT_bedKi 5.63
    #define  DEFAULT_bedKd 2696.34 
  • Bornes d'arrêt (endstop)

    const bool X_MIN_ENDSTOP_INVERTING = false;
    const bool Y_MIN_ENDSTOP_INVERTING = false;
    const bool Z_MIN_ENDSTOP_INVERTING = false;
    #define DISABLE_MAX_ENDSTOPS
    [...]
    #define INVERT_X_DIR false
    #define INVERT_Y_DIR false
    #define INVERT_Z_DIR false
    #define X_HOME_DIR -1
    #define Y_HOME_DIR -1
    #define Z_HOME_DIR -1
  • Dimensions du lit

    #define X_MAX_POS 200
    #define X_MIN_POS 0
    #define Y_MAX_POS 260
    #define Y_MIN_POS 0
    #define Z_MAX_POS 180
    #define Z_MIN_POS 0
  • Mouvements

    #define HOMING_FEEDRATE {50*60, 50*60, 3*60, 0} 
    #define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,4000,1347.67}
    #define DEFAULT_MAX_FEEDRATE          {100, 100, 3, 25}

    Note : les valeurs d'accélération par défaut sont extraordinairement élevées pour ma Prusa i3. Afin d'éviter les sauts de pas (que j'ai surtout constaté sur l'axe Y), je les ai diminuées drastiquement.

    #define DEFAULT_MAX_ACCELERATION      {220,220,10,200}
    #define DEFAULT_ACCELERATION          180
    #define DEFAULT_RETRACT_ACCELERATION  180
  • Constantes de préchauffage

    #define PLA_PREHEAT_HOTEND_TEMP 190
    #define PLA_PREHEAT_HPB_TEMP 45
    #define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
    
    
    #define ABS_PREHEAT_HOTEND_TEMP 240
    #define ABS_PREHEAT_HPB_TEMP 100
    #define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255

Références


mercredi 02 mars 2016

:: Tableau de correspondance AWG ::

Introduction

Plus la valeur AWG est élevée, plus le diamètre est petit. La résistance est donnée pour un fil de cuivre (résistivité = 1,8 10-8 ohm mètre)

Tableau de correspondance

Gauge AWG Diamètre (mm) Section (mm^2) Résistance (ohms/km)
0000 (4/0) 11.684 107 0.17
000 (3/0) 10.40384 85.0 0.21
00 (2/0) 9.26592 67.4 0.26
0 (1/0) 8.25246 53.5 0.33
1 7.34822 42.4 0.40
2 6.54304 33.6 0.51
3 5.82676 26.7 0.64
4 5.18922 21.2 0.81
5 4.62026 16.8 1.03
6 4.1148 13.3 1.30
7 3.66522 10.5 1.63
8 3.2639 8.37 2.06
9 2.90576 6.63 2.60
10 2.58826 5.26 3.28
11 2.30378 4.17 4.13
12 2.05232 3.31 5.21
13 1.8288 2.62 6.57
14 1.62814 2.08 8.29
15 1.45034 1.65 10.4
16 1.29032 1.31 13.20
17 1.15062 1.04 16.60
18 1.02362 0.823 20.90
19 0.91186 0.653 26.40
20 0.8128 0.518 33.30
21 0.7239 0.410 41.99
22 0.64516 0.326 52.95
23 0.57404 0.258 66.80
24 0.51054 0.205 84.20
25 0.45466 0.162 106
26 0.40386 0.129 134
27 0.36068 0.102 169
28 0.32004 0.0810 213
29 0.28702 0.0642 268
30 0.254 0.0509 339
31 0.22606 0.0404 427
32 0.2032 0.0320 538
33 0.18034 0.0254 679
34 0.16002 0.0201 856
35 0.14224 0.0160 1079
36 0.127 0.0127 1361
37 0.1143 0.0100 1716
38 0.1016 0.00797 2164
39 0.0889 0.00632 2729
40 0.07874 0.00501 3441
41 0.0711 0.00397 4340
42 0.0633 0.00315 5470
43 0.0564 0.0025 6900
44 0.0502 0.00198 8700
45 0.0447 0.00157 11000
46 0.0398 0.00125 13800

Références