Exporter un fichier .obj sur Solidworks

Voici 2 méthodes pour obtenir un fichier .obj depuis Solidworks sans passer par un logiciel tiers.
La seconde méthode est de loin la meilleure, elle fonctionne à partir de Solidworks 2005, testée dans ce tutoriel sur la version 2013.

1- En activant ScanTo3d sous Solidworks 2013 Premium

Au moment de l’export, enregistrer votre modèle au format stl.
Ensuite aller dans Outils > Compléments puis cocher ScanTo3d, cocher également son démarrage automatique si nécessaire.
Redémarrez Solidworks
Ouvrir le modèle précédemment enregistré au format stl en prenant soin de sélectionner « Fichiers de maillage » dans la fenêtre Ouvrir (fig.1).
Une fois ouvert, on réenregistre le fichier une nouvelle fois en se rendant dans Fichier > Enregistrer sous…, le menu déroulant propose maintenant de nouvelles extensions dont ScanTo3d (*.obj) (fig.2).

Continue Reading


Configurer le wifi sur Raspberry

Procédure pour Clef Wifi IEEE 802.11 b/g/n TP-LINK TL-WN725N Ver.2
Installer 2013-07-26-wheezy-raspbian
Installer le driver et rebooter

wget https://dl.dropboxusercontent.com/u/80256631/8188eu-20130209.tar.gz
tar -zxvf 8188eu-20130209.tar.gz                                          
sudo install -p -m 644 8188eu.ko /lib/modules/3.6.11+/kernel/drivers/net/wireless
sudo insmod /lib/modules/3.6.11+/kernel/drivers/net/wireless/8188eu.ko
sudo depmod -a

Continue Reading


Partage de fichiers entre Raspberry et Windows

Partage de fichiers avec windows

1- Installer Samba et création du dossier de partage.

En l’absence de la dépendance samba-common-bin, l’utilisateur ne pourra pas enregistrer le mot de passe avec la commande smbpasswd -a userName

sudo apt-get install samba samba-common-bin
sudo mkdir partage
sudo chmod 777 partage # ouverture des droits

2- Configuration de Samba

Editer le fichier /etc/samba/smb.conf pour configurer le partage.

sudo vim /etc/samba/smb.conf

Modifier les paramètres suivants dans la section [global] :

workgroup = WORKGROUP # groupe de travail Windows
server string = %h server # Permet d'afficher la description du serveur Samba dans l'explorateur Windows.
security = user

Continue Reading


Utiliser l’infrarouge avec une carte Arduino

1- Les composants

Utilisation d’un décodeur IR TSOP_4838. Ce composant intègre un démodulateur. Le signal doit être modulé en PWM à 38Khz et la led IR avoir une longueur d’onde accordée au spectre du décodeur, soit 950nm. Ces 2 valeurs sont optimales, il est possible de travailler sur les plages indiquées dans le datasheet moyennant une baisse des performances. Le décodeur renvoie la masse en présence du signal modulé et Vs au repos.

Un décodeur infrarouge offre 2 avantages par rapport aux cellules photo-sensible. Le premier est de supprimer le bruit ambiant, l’infrarouge émis par des sources de lumières ambiantes par exemple. Le deuxième est de faire émettre la led IR à forte puissance.

Continue Reading


Utilisation de la carte Melzi en impression 3D

Nécessite l’utilisation de l’IDE Arduino 1.0.5 ainsi que la libraire u8glib

L’installation manuelle ou via le gestionnaire de carte ne fonctionne pas avec la carte Sanguino sur les versions ultérieures de l’IDE Arduino.
L’écran LCD en mode SPI ne fonctionne pas directement sur le port SPI de la carte Melzi qui est aussi partagé par le lecteur de carte SD.

Carte Melzi

Important : La numérotation des pins 24 à 31 du port analogique est inversée. L’entrée analogique A7 devrait normalement correspondre à l’E/S digital 31 mais sur la carte Melzi elle correspond au numéro 24.
Dans Marlin le support de la carte SD est déclaré en pin 24, hors si on active cette dernière on surcharge A7 normalement réservée à la thermistance hotend. Il faut donc redéfinir dans le fichier pins.h l’assignation des signaux SD-SS, Z-ENABLE et LED.
Les signaux A1,A2,A3 et A4 disponibles au connecteur JP16 sont seront eux aussi inversées si la numérotation digitale est utilisée. Le problème vient de Sanguino sur laquelle la carte Melzi est basée, il est donc nécessaire de se référer à leurs documentations.
La meilleure solution consiste à utiliser uniquement la numérotation analogique.

Caractéristiques :

  • Processeur: ATMEGA1284P (basé sur Sanguino V1.2)
  • Tension de travail : 5V
  • 4 x A4982 drivers moteur pas à pas
  • Marlin ID board : Motherboard 63
  • Dimensions: 210mm x 50mm x 17mm
  • Poids: 70g
  • Broches disponibles : 27(A4),28(A3),29(A2),30(A1) / 16(scl),17(sda) / 10(RX1),11(TX1)
  • AOFI et AIFO (RX0 et TX0) pointe vers le C.I FTDI

Liens utiles :

Eclairage (en cours de rédaction)

Sketch Marlin_main.cpp. Sortie led déjà réservée en Marlin pin 28 pour Melzi. Problème de numérotation redéfinir 28 en A3. Utilisation des pins 26 et 27 en sus pour gérer le ledstrip RGB en analogique.
Le ledstrip 5050 smd consomme 60mA (3 canaux de 3 leds de 20mA), soit une consommation de 0.24W par canal. Pour habiller l’arceau de la foldarap, il faut 3 bande de 20cm monté en série soit une puissance de 3W min par canal.
Une résistance limite déjà le courant dans chaque canal, elle est de 330 ohm pour le canal rouge, la led fonctionnant sous une tension plus faible.
Possibilité de diminuer la consommation en utilisant une tension inférieure à 12V, en utilisant les couleurs primaires (à l’exception du blanc) ou en utilisant le signal PWM.

Malheureusement les pins disponibles sur la Melzi ne permettent pas de gérer le PWM et de simples transistors bipolaires ne suffiront pas. Achat de transistor MOSFET STP16NF06.

Création d’un Gcode m43 afin de conserver m42 qui offre plus de souplesse sur le controle des pins A1-A4 du port JP16. Il est possible de personnaliser la fonction code_seen() avec la lettre de son choix et de récupérer son paramètre numérique via code_value(). N’ayant pas accès aux signaux PWM, aucune nuance étant possible, le codage des couleurs se fera par codage bianaire sur 3 bit. Par exemple 010 pour le vert.

Reste à lancer la couleur blanche à l’alimentation / repos, le rouge pour indiquer que les températures sont atteintes et le bleu pour indiquer le travail.
Il n’y a pas de fonction in_array() en langage C, ni de variable typé TEXT. Va falloir potasser

Brancher les ventilateurs hotend et extrudeur sur la pin RX1 pour un controle via gcode

Le code binaire sur 3 bits a posé des problèmes pour une raison inconnue, le code 010 n’était pas vu par l’instruction switch. La méthode code_value() retourne un float , c’est donc très certainement un problème de zéros de remplissage. Le problème a été contourné en codant sur 2 bits de la manière suivante :

00 => sleep / pink
01 => done / red
10 => hot / pink
11 => working /blue

Ventilateur Akasa AK 160 BL-S Cool Blue Fan :

  • Dimension : 40x40x10mm
  • Niveau bruit : 24 dB
  • Vitesse : 5000 R.P.M
  • Tension : 12V
  • Courant : 0.07A
  • Connecteur : 3 broches – 1/led, 2/Vcc, 3/led+fan
  • Documentation

La connectique du venitlateur Akasa 3 broches correspond au 12V pour la broche centrale, soit masse 1 pour alimenter le ventilateur, soit masse 2 pour alimenter le ventilateur et l’éclairage. La masse 2 est indiquée par une encoche sur la prise.

Graphic LCD

1- Présentation

Afin de diminuer les coûts de revient de l’imprimante, on privilégiera un GLCD nu comme le LCD 12864. En effet, là où un LCD Shield pour RAMPS coûte aux alentours de 50$ (Gadgets3D), le LCD 12864 se trouve à 6$ sur ebay.

Caractéristiques :

  • Écran lcd graphique 3.2″
  • Résolution : 128 x 64 pixels
  • Couleur blanc sur fond bleu
  • Alimentation : 4.5 à 5.5V
  • Consommation : IC 3mA / BLK 55mA
  • Câblage en parallèle (4 bit et 8 bits) ou en SPI
  • Horloge : 2MHz
  • Contrôleur ST7920 compatible 1/32DUTY, 1/5BIAS
  • Dimensions: 3.66 in x 2.76 in x 0.39 in (9.3 cm x 7.0 cm x 1.0 cm)
  • Poids: 2.82 oz (80 g)
  • Datasheet

2- Câblage

  • VSS -> GND
  • VCC -> 5V
  • VO -> contraste (0-5V)
  • RST -> reset (actif à LOW)
  • PSB -> mode (LOW = SPI, HIGH = parallèle)
  • BLK -> cathode
  • BLA -> anode (avec résistance de limitation)
  • Mode parallèle
  • RS -> Register Select
  • R/W -> « Read/Write control »
  • E -> Enable »
  • Do ~ D7 -> bus de données
  • Mode SPI
  • RS -> Chip Select (CS)
  • R/W -> Serial input (MOSI)
  • E -> Serial clock (SCLK)

3- Librairie

Utilisation de la librairie U8glib. Supportée dans Marlin V1, elle nécessite cependant une installation dans l’IDE Arduino.

4- Marlin

Dans le fichier Pins.h ajouter la condition de préprocesseur suivante :

#ifdef U8GLIB_ST7920 // SPI GLCD 12864 ST7920 
        #define LCD_PINS_RS 4 // CS
        #define LCD_PINS_ENABLE 5 // MOSI
        #define LCD_PINS_D4 7 // SCLK
        #define BEEPER -1
        // Pins for DOGM SPI LCD Support
       #else
        #define DOGLCD_A0 30
        #define DOGLCD_CS 29
        #define LCD_CONTRAST 1
       #endif

Dans Configuration.h décommenter la ligne :

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Les pins disponibles sous Melzi ne gèrent pas le PWM, le réglage du contraste par Vo a aussi échoué. Le contraste étant inactif, on désactive son réglage dans le fichier ultralcd.cpp en ajoutant la condition suivante :

#ifdef DOGLCD
#ifdef LCD_CONTRAST > 0
// MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63);
MENU_ITEM(submenu, MSG_CONTRAST, lcd_set_contrast);
#endif
#endif

5- Libérer le port SPI

L’activation du REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER entraîne la surcharge de la constante SDSUPPORT dans le fichier Configuration.h.
Cette constante active la gestion de la carte SD et le port SPI par la même occasion.
L’imprimante est gérée par un Raspberry, la carte SD est donc inutile. Il est possible de condamner son accès pour récupérer les broches SCK, MISO et MOSI afin d’y câbler un encodeur rotatif par exemple.

Dans le fichier Configuration.h, au niveau de la condition #ifdef ULTIPANEL supprimer la surcharge SDSUPPORT en commentant la ligne.

Le reste du travail s’effectue dans le fichier ultralcd.cpp. L’afficheur LCD permet de lancer des impressions depuis la carte SD, le fichier intègre donc la librairie cardreader.h afin de créer un menu de navigation. Il va donc falloir également supprimer les objets de cette classe sans dénaturer la mise en page.

Voici le code résultant du fichier ultralcd.cpp : Fichier ultralcd.cpp

Fin de course optique

Le fin de course mécanique en Z est vissé dans le plastique posant le soucis de déformer légèrement le taraud à chaque homing. Il en résulte une perte de précision, là où il est nécessaire d’avoir entre un ou deux dixièmes suivant la hauteur de couche. Une solution rapide à mettre en oeuvre et peu coûteuse consiste à remplacer le capteur mécanique par un autre capteur de type optique TCST2103.

Il est basé sur ce projet. On le trouve facilement sur ebay pour 2 dollars frais de port compris mais avant de le brancher il est nécessaire de faire quelques vérifications.

Schéma du capteur : Consulter le schéma

Important : Alimenter le capteur avec la même tension de fonctionnement du microcontrôleur.
Ne pas le brancher en 5V si la carte traite du 3V3 !

Le fin de course optique possède 3 slots de configuration situés à côté du connecteur. La présence d’une résistance de limitation de courant sur U$7 et d’une led en U$5 va poser problème. En effet ce setting ramène 3.7V en niveau bas ce qui risque de ne pas l’être au niveau du microcontrôleur. Il est donc nécessaire de dessouder ces 2 composants permettant d’économiser 20mA et surtout de récupérer un niveau bas digne de ce nom, moins de 0.5V.
Le capteur a un fonctionnement inversé par rapport à un fin de course classique. Au repos il conduit d’où l’éclairage de la led, au travail (faisceau coupé) il bloque.

Il va donc falloir modifier le fichier configuration.h du Marlin en inversant le fonctionnement du fin de course Z_min en le passant à false.

const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.

Note : Il n’est pas nécessaire d’activer les pullups pour ce capteur une résistance de 2.2Ko est déjà fixée. De la même façon une résistance de tirage est déjà présent sur l’ensemble des broches fin de course de la carte Melzi.
Cependant pour éviter toute erreur, en téléversant Marlin sur une autre carte par exemple, il est plus prudent de définir les pullups avec #define ENDSTOPPULLUPS.

Connectique Melzi

  • RS => 30 (blanc) Chip Select
  • R/W => 28 (rouge) MOSI
  • E => 29 (noir) SCLOCK
  • Servo => 27
  • BTN Droite => 16 (rouge)
  • BTN Gauche => 17 (noir)
  • BTN Click => 11 (blanc)

Marlin

Code M42 gère la pin libre de la carte melzi. (à traiter)

Code M44 gère le cooling fan. (à traiter)

Code M43 permet d’attribuer un éclairage au statut de l’imprimante. Les couleurs ne sont pas bonnes…à finir !

  • C00 =>sleep (pink)
  • C01 =>done (red)
  • C10 =>hot (purple)
  • C11 =>working (blue)
switch( pin_status )
        {
          case 00 : // sleep
            digitalWrite(LED_R, HIGH);
            digitalWrite(LED_G, HIGH);
            digitalWrite(LED_G, HIGH);
          break;
          
          case 01 : // done
            digitalWrite(LED_R, HIGH);
            digitalWrite(LED_G, HIGH);
            digitalWrite(LED_B, LOW);
          break;
          
          case 10 : // hot
            digitalWrite(LED_R, HIGH);
            digitalWrite(LED_G, LOW);
            digitalWrite(LED_B, HIGH);
          break;
          
          case 11 : // working
            digitalWrite(LED_R, LOW);
            digitalWrite(LED_G, HIGH);
            digitalWrite(LED_B, HIGH);
          break;   
         } 

Il existe maintenant un sketch blinkM sous marlin pour gérer l’éclairage par led. Le code est M150 et prend R,U et B comme paramètre. La fonction SendColors est ensuite appelée, elle utilise la librairie Wire.

Troubleshoot

/PROGRA~1/Printrbot/Pronterface/Slic3r0.9.10/lib/std/Slic3r/Layer/Region.pm line 542

Erreur Slicer – Si qu’un seul STL est concerné par ce problème, il s’agit d’un problème de dimension non résolu par Slicer. Cette erreur est apparue en passant une dimension de 0.5mm à 0.25mm.

La carte Melzi ne doit pas se trouver sous tension lors de sa programmation. Choisir la board Sanguino W/ ATmega1284 16Mhz.

Fin de course optique

On peut controler jusqu’à 3 servos via la commande M280 qui prend comme paramètre P pour l’index et S pour l’angle ou le nombre de microseconde.


Installation d’Arduino sous Linux

Installation testée sous Ubuntu 13.10 avec l’IDE Arduino 1.5.6-r2 beta.
Les opérations ci-dessous s’effectue sur le compte utilisateur Xavier, ne passez pas en super utilisateur certaines commandes seraient invalides.

Installation de l’IDE

1. Arduino est écrit en java, un langage facilitant le portage des applications sur les différents OS. L’installation de java sur la distribution est donc nécessaire.
Pour vérifier sa présence lancer la commande :

java -version

Si java n’est pas présent, installer le package openJDK correspondant aux besoins.
OpenJDK est le portage open source de la technologie java.

sudo apt-get install openjdk-7-jdk # Kit de développement
sudo apt-get install openjdk-7-jre # Environnement d’exécution, si aucun développement en java est prévu

L’environnement d’exécution se lance automatiquement au démarrage de Linux.
Si java Sun est installé sur la distribution, il faut mettre openjdk comme version java par défaut en lançant la commande suivante autant de fois que nécessaire :

sudo update-alternatives --config java

Continue Reading


Interfacer Lirc avec Python sur Raspberry

Part.1 – Installer Lirc

1. Installation du paquet.

sudo apt-get install lirc

2. Editer le fichier /etc/modules pour lancer dev lirc au boot.

lirc_dev
lirc_rpi gpio_in_pin=numeroPin # En l'absence de cette ligne le capteur devra être brancher en GPIO18

Important : Les gpio 28, 29, 30 et 31 (connecteur P5) ne sont pas déclarés dans Lirc, il est nécessaire de recompiler un patch disponible à cette adresse.

Continue Reading


Pages :12