Archives de catégorie : Projets

Consultez ici la liste de mes projets

Etat d’avancement du projet NFC au 19 Septembre 2013

Après avoir travaillé de manière intense sur ma fraiseuse numérique pour pouvoir la présenter au salon des Associations de ma ville, j’ai repris du temps pour faire avancer mon projet NFC. Voici ce qui a été réalisé.

J’ai implémenté les codes nécessaires pour piloter le bus SPI depuis le chip ARM de commande. Ce n’était pas très complexe. J’ai pu vérifier avec un analyseur logique que les signaux étaient corrects. Le Tiva a plein de registres qu’il faut configurer correctement, mais il met à disposition une doc assez complète qui décrit les séquences d’initialisation. Quand on les suit sans se tromper, ça marche!

Les choses sont plus compliquées du côté du front end NFC. Pour commencer, j’ai réussi à obtenir de nouveaux samples de Texas, que j’ai soudé correctement cette fois: Pas d’apport supplémentaire de pâte à braser, mais utilisation de flux et chauffage rapide. Le soudage est très nettement amélioré, l’étain déjà présent sur la carte suffit à assurer la soudure sans débordements.

Il me manque encore tous les composants de la partie analogique et les condensateurs de découplage, mais j’avais envie d’essayer quand même. Effectivement, le chip réagit, puisque le passage de sa ligne “Enable” dans le bon état produit le démarrage de toutes les alimentations secondaires produites par le chip. Au moins, j’ai la preuve que certaines pattes sont correctement soudées et que le chip n’est pas totalement grillé 😀

Par contre, il m’a été pour l’instant impossible de lire par SPI la moindre valeur de registre depuis le chip. Et c’est là que j’ai commencé à découvrir pas mal de défauts du circuit.

Pour commencer, sa documentation n’est absolument pas claire. Elle répète certaines informations dans des paragraphes différents, se contredit, et contient des manques et des erreurs. On ne s’en rend pas compte en première lecture, mais le nombre de messages d’incompréhension sur leur forum “E2E” en dit long.

Le circuit n’est pas non plus exempt de bugs “silicium”. Il réagit de manière non documentée, ou imprévue, quand son pilotage est réalisé comme dans la datasheet. Par exemple, le chip dispose de trois modes de pilotage:

  • un mode parallèle (on pilote 8 fils de données, puis on valide une horloge)
  • un mode SPI sans signal CS : dans ce cas ils ont “inventé” un genre de start condition ressemblant à de l’I2C, mais qui n’est pas de l’I2C, et qui n’est pas supporté par le Tiva, ce qui demanderait un pilotage manuel par bit banging
  • un mode SPI avec signal CS : dans ce cas l’assertion de la ligne CS démarre la transaction SPI, et la désassertion la termine. Sauf que, lors de cette déassertion, il n’y a pas de nouveau signal d’horloge généré,ce qui est normal pour du SPI. Eh bien dans certains cas, ceci empêche le circuit de prendre en compte la commande envoyée. Pour corriger cela, il faut générer une unique pulse d’horloge supplémentaire pour valider la commande. Pas 8, sinon le chip croit qu’une autre commande lui est addressée. Ceci demande de reconfigurer terporairement le bus SPI en GPIO normales, puis d’envoyer la pulse, puis de reconfigurer le bus SPI.

Vous voyez le genre de techniques tordues qu’il faut appliquer… Et qui ne sont pas documentées clairement, malgré leur bizarrerie. Et on n’en est encore qu’à la couche transport, je n’imagine même pas encore tous les bugs fonctionnels que je vais trouver! Je trouve ça assez peu sérieux de la part d’un grand fabricant de circuits intégrés, surtout quand on essaye de concurrencer NXP et Broadcom sur le marché du front end NFC.

Exemple de documentation: dans une version précédente, les données SPI envoyées au chip étaient valides sur le front descendant de SCLK, et les données retournées juste après étaient disponibles sur le front montant de l’horloge… Pas très pratique. Mais bon. Dans la dernière révision du chip, ceci a été corrigé. Toutes les données (MOSI et MISO) sont valides au front descendant de SCLK. Mais la datasheet n’a pas été mise à jour, jusqu’à ce que quelqu’un se plaigne sur le forum!

J’avoue que tous ces problèmes m’ont été signalés par un ami qui avait déja travaillé avec ce circuit, sinon j’en serais encore à savoir pourquoi ça ne marche pas. D’un autre coté, pour DIY qui se voulait électroniquement simple, ces bugs m’agacent, car ils vont complexifier le projet. Je n’attendais pas de me heurter à des problèmes techniques aussi basiques à un stade aussi peu avancé.

Donc pour le moment, je mets ce projet de côté et je repars sur mon autre projet: la fraiseuse.

En attendant, j’ai mis à disposition de tous le code de démarrage que j’utilise pour faire fonctionner le cpu ARM Tiva. J’ai fait un projet github avec tous les codes communs qui évitent de ‘réinventer la roue’. J’ai choisi la licence WTFPL pour son coté humoristique et très proche du domaine public. En effet, je trouve indécent de vouloir mettre des licences restrictives (dites libres ou non) sur un code aussi basique et aussi nécessaire. Ca se passe sur github:

http://www.github.com/f4grx/freestella

 

Colis reçus !

Et voila, c’est fait. J’ai reçu ce matin le colis contenant mon eShapeOko, et la seule chose qui m’empêche maintenant de la monter, c’est le taraudage des makerslides, qui sera fait demain soir par mon ami radio-amateur Yves, F1BHY, que je remercie chaudement pour sa disponibilité et sa gentillesse. C’est un bricoleur extra, il manie parfaitement les machines outils et les outils classiques, et nous fait profiter de ses capacités!

Pièces eShapeOko
Pièces eShapeOko

J’ai aussi reçu les nouveaux échantillons de TRF7970 pour mon projet NFC, ce sont des composants en boitier QFN, dont la soudure s’est plutôt mal passée la dernière fois, qui était aussi la première. J’ai mis trop de pâte à souder, ce qui s’est traduit par un composant qui flottait dans l’étain liquide, et en voyant es billes d’étain qui se sont formées de chaque coté après refroidissement, je soupçonne fortement que les contacts soient en court circuit en dessous des boitiers. Seule une inspection par rayons X pourrait m’en informer, mais je n’ai pas ce moyen de mesure en stock :p En plus, si il n’y a pas de court circuit, je crains d’avoir fait un peu trop “bronzer” ces circuits à la station à air chaud.

D’autre part, j’ai fait une erreur de conception sur ces cartes, heureusement rattrapable: j’ai connecté les lignes VCORE au +3V3, ce qui est une erreur : VCore est une sortie, connectée au régulateur interne, et elle ne sert qu’à la connexion de capas de découplage! Du coup, la ligne 1,2 volts s’est retrouvée alimentée en 3V3! Une hérésie! La bonne nouvelle numéro 1, c’est que j’ai réussi à soulever les pattes du TQFP et à y souder des capas CMS “en volant”. La deuxième bonne nouvelle, c’est que le circuit marche encore, ce que je trouve assez extraordinaire sachant que j’ai injecté une “haute tension” sur la sortie d’un LDO interne… Enfin, je vais quand même utiliser un nouveau circuit “propre” sur la carte de test 😀

Les composants sont faits pour être soudés sur une carte SeeedStudio, qui est déja étamée. Je pense qu’avec le flux que j’ai récupéré entre temps, cet étain déja déposé est largement suffisant pour souder les composants. Je vais donc essayer de souder ces QFN avec une bonne quantité de flux, mais sans étain supplémentaire, et on va voir.

A coté des QFN, la soudure des ARM en TQFP est une partie de plaisir 😀

Je vous tiendrai au courant bien plus souvent, maintenant que la machine est arrivée! Pour info, j’ai également démarré un sujet “build log” (en anglais) sur le forum officiel de la ShapeOko, qui contient un max d’informations sur ces machines, avec les modifications que les gens ont réalisées, et les erreurs à ne pas commettre. Une des améliorations décrites là bas que je trouve le plus intéressante est la modification de l’axe Z pour utiliser une “ACME screw”, autrement dit une vis à pas trapézoïdal. Le but est d’accélérer les mouvements sur l’axe Z (le pas de la vis est plus important), ce qui accélère globalement toute la machine. Nous aurons donc bientôt une amélioration à ce niveau dès que j’aurai trouvé un bon fournisseur pour ce matériel, et surtout quand la machine actuelle fonctionnera 😀 En réalité, je peux déja jouer sur le mode de déplacement micro-pas de l’axe Z pour accélérer la cadence. A voir!

[eShapeOko] Premier tour de moteur!

Ces jours ci j’ai dédié tout mon temps libre à ce projet de fraiseuse numérique qui évoluera, ou me permettra d’évoluer, en imprimante 3D. Je me suis rendu compte qu’en effet, une fraiseuse n’aura pas assez de débattement vertical pour faire des objets volumineux. Pas de souci, ce projet me permettra toutefois de faire une “repstrap” (imprimante initiale) afin de construire une véritable reprap dans la foulée. Voici ce qui a avancé depuis la dernière fois. Je continue à mettre à jour mon planning, et tout se déroule comme prévu. C’est bien pratique pour planifier les étapes.

Voici le planning au 25 Aout

  • J’ai reçu les moteurs
  • J’ai commandé et reçu les drivers de moteurs (chez Pololu, modèle DRV8825 en promo)
  • J’ai récupéré l’arduino Nano que j’avais prêté à @hugokernel
  • J’ai réussi à compiler le firmware grbl pour ce matériel et à l’uploader dans l’arduino (merci à @Skywodd et les autres pour leurs conseils sur twitter)
  • J’ai câblé en entier la carte de contrôle

Et pour finir, cet après midi j’ai pu tester cette carte. Résultat elle fonctionne, je n’ai pas fait d’erreur de câblage ce qui m’a fait gagner du temps, et… les moteurs tournent quand j’envoie des lignes de g-code! Voici d’abord une petite vidéo qui montre le résultat:

Pas très sexy comme vidéo, on remarquera aussi un subtil changement de balance des blancs parfaitement inattendu ;), mais au moins ça accélère, ça tourne, et ça ralentit, tous les axes en même temps, et sans faire fondre les fusibles! Comme d’habitude j’ai fait mon montage sur une plaque à trous, ce qui rend le prototypage très facile. Il me reste encore de la place pour ajouter le contrôleur de l’extrudeur et/ou de la broche. Mais je me rends compte que pour piloter une imprimante 3D, l’arduino nano ne sera pas suffisant : il faut plus de lignes pour piloter l’extrudeur, le chauffage de la buse, et celui de la surface. En attendant, je suis équipé pour une fraiseuse. Je suis vraiment impatient de recevoir le kit, qui, d’après le site makerslide, devrait être expédié dans le courant de la semaine prochaine. Voici une image de la carte contrôleur câblée. J’ai prévu un module réseau/série de récupération pour accéder à la carte par ethernet:

eshapeoko controller recto
Côté composants
eshapeoko controller wiring side
Côté cuivre. J’ai utilisé du fil à wrapper et du scotch cuivré.

Ah, une chose importante: les modules Pololu arrivent avec un potentiomètre de courant maxi NON RÉGLÉ, c’est  à dire positionné dans sa valeur par défaut à “50%”. Or d’après le datasheet du DRV8825, cette position (VRef/2=1,7V) correspond à un courant de 3,5 ampères environ, ce qui est bien trop élevé pour mes moteurs. Après avoir grillé un fusible (j’ai bien fait d’en mettre!) j’ai repris le réglage pour limiter le courant à 1,6A. Donc attention, ces modules sont à ajuster pour vos moteurs!

[eShapeOko] Tentative de planification

Mon projet d’impression 3D se met en place. Les moteurs ont été expédiés et la machine commandée. D’après le responsable de MakerSlide, toutes les machines seront expédiées après le 26 Aout.

D’ici là, il y a des choses à faire pour ce projet, et la todolist commence à se remplir. J’ai donc décidé de faire un véritable planning pour clarifier l’ordre des choses à faire et définir des priorités.

J’ai commencé à faire une liste dans excel, mais la complexité est telle que j’ai dû me mettre à la recherche d’une alternative à MS Project. Je connaissais le projet GanttProject, mais ses options de planifications sont trop simples, je n’ai pas réussi à trouver facilement comment planifier une tâche au plus tard, ce qui révèle un logiciel soit mal fait, soit incomplet. Il y a aussi pas mal de problèmes d’ergonomie (quelle galère pour gérer les dépendances, il faut cliquer dans la case de gauche sur chaque ligne, sinon l’action n’est pas prise en compte!) Dans tous les cas, ce logiciel allait me faire perdre du temps. Un rapide tour sur Wikipédia m’a rapidement orienté vers ProjectLibre, qui se veut un clone libre de MS Project. Je dois avouer que ce programme est assez moche, mais il fait son boulot correctement et permet une planification “évoluée” des tâches.

Voici donc le document auquel je suis arrivé : Voir le PDF

Bien évidemment à part pour les choses déja faites, les durées sont fantaisistes 😀

Comme on peut le voir, j’ai pu découper le projet en grandes tranches. Je commencerai par valider le fonctionnement mécanique de la plate forme XYZ sans outil, puis à partir de là, on pourra faire quelque chose de plus évolué. Le mode tour a été pensé à la base pour fabriquer les pièces de l’extrudeur, mais après quelques recherches, la fabrication d’un mandrin n’est pas du tout facile,son achat serait cher, et puis il faut une autre broche à vitesse précisément contrôlée (et un index), donc je pense que cette partie sera très complexe, je l’ai repoussée à plus tard, et je me servirai d’un tour déja fonctionnel (soit via l’Electrolab, soit chez mes amis radio-amateurs mécaniciens) pour réaliser l’extrudeur. Par contre la réalisation d’un mandrin fraisé ou imprimé sera un truc à prévoir, même si c’est juste pour le fun.

Donc voici les étapes principales:

  • Base mécanique fonctionnelle
  • Fraiseuse numérique (ne devrait pas demander beaucoup plus de travail)
  • Imprimante 3D (demande la réalisation d’un extrudeur)

La première action de la première étape est donc la réalisation des drivers de moteurs pas à pas. Initialement, je devais me faire offrir des modules Pololu, mais je n’ai aucune nouvelle de ce coté, donc je vais commencer avec des L298. Comme grbl pilote les moteurs grâce à des impulsions (dir/step) il me faut aussi réaliser un indexeur, ce qui devrait être très simple avec un PIC. La seule différence avec les modules Pololu, c’est que je ne gèrerai pas le microstep, mais ce n’est pas très grave pour le début (mes moteurs seront des 400 pas par tour).

Les autres modes (commande manuelle avec volants et tournage) sont ou deviennent optionnels et seront réalisées plus tard.

Voici ce qui est déja réalisé:

  • Compilation de grbl : j’ai testé, cela fonctionne sans problème. Par contre je réalise que grbl ne sait pas piloter les températures d’un extrudeur, ce qui demandera la recherche d’un autre firmware. En attendant, grbl sera suffisant pour le mode fraiseuse.
  • Achat d’une plaque de verre pour le support de l’impression 3D (5 euros)
  • Achat de vis en laiton pour fabriquer des buses (1 euro)
  • Récupération de prises DB25 pour le câblage des moteurs. Je ne veux pas voir de fils trainer partout 🙂 Quand l’impression 3D sera fonctionnelle, j’imprimerai des maillons de chaine passe-câble pour que ce soit encore plus propre.
  • Récupération d’une broche, qui est en fait le premier outil que j’ai acheté. C’est une mini perceuse Maxicraft, qui m’a servi à percer mes premiers circuits imprimés réalisés au feutre noir et perchlo 😀 Cette perceuse fait 42 watts, ce qui est peu, mais sera utile pour commencer des essais de fraisage, probablement au début dans de la cire de bougie, puis dans du MDF.
  • Recherche d’infos sur les fraises. Des fraises cylindriques dremel se trouvent facilement à 10 euros les deux.
  • Mise en route de la récupération de mon arduino nano prêté à @hugokernel 🙂
  • Réflexion sur l’extrudeur: je me suis renseigné sur les types de filaments disponibles, il y en a deux selon les machines (1.75mm pour les buses fines <0.4mm et 3mm pour les buses plus grosses) Je commencerai par un extrudeur pour du fil fin, puis on verra ensuite pour un extrudeur 3mm.
  • Réflexions sur le banc chauffant: je pensais utiliser du scotch de cuivre, mais c’est pénible, alors que le mode fraiseuse me permettra de graver facilement un circuit imprimé.
  • Il faut que je sois capable de programmer un avr. Pour ça, je crois que mon raspberry pi pourra m’aider, il me semble avoir lu qu’on pouvait utiliser les gpios du rpi pour programmer l’avr, c’est à confirmer, et pas tout de suite, ce n’est pas urgent!

Idées supplémentaires: j’adorerais réaliser une extrudeuse de filaments pour récupérer le PEHD des boutons de bouteille 🙂 Je ne vais pas me priver de la concevoir, et je pense qu’elle sera très facile à réaliser, avec des éléments de plomberie! Je commence à collectionner les bouchons!

[eshapeoko] Moteurs commandés

(Pour commencer, voir ici l’annonce du projet)

J’ai commandé ce matin les 4 moteurs pas à pas nécessaires à ma CNC. Et des micro-switches fin de course.

Ce sont des modèles au format NEMA23, plus gros que les moteurs de reprap au format NEMA17. Cette image montre la différence:

Moteurs Nema17 / Nema23
Moteurs Nema17 / Nema23

L’intérêt supplémentaire, c’est que les moteurs de Makerslide sont des modèles 400 pas par tour, ce qui est une très bonne chose pour la résolution de la machine. En général, on ne trouve que des 200 pas par tour.

J’ai aussi choisi les drivers que j’utiliserai pour les piloter. Ce sera les modules Pololu DRV8825, capables de fournir 2 ampères (la datasheet parle même de 2.5A, pas mal!). Ils peuvent aussi fonctionner en micro-step 1/32, ce qui fait 12800 pseudo-pas par tour! Je ne pense pas que le système mécanique qui y sera attaché soit aussi précis!

Je commence aussi à réfléchir au design électronique. Je me doute que ces bestiaux vont chauffer (c’est d’ailleurs incroyable qu’on arrive à faire passer autant de courant dans un aussi petit composant !), donc j’ai déja prévu de les plaquer coté composants sur une plaque de cuivre ou un bon radiateur en alu (avec de la graisse thermique), qui servira de fond de boitier pour la carte électronique. En ajoutant des parois sur le bord du radiateur, j’aurai ainsi une boite fermée.

J’ai dépensé, tout compris, et après conversion, un total de 150,68 euros. Je suivrai le budget de près!

Voir l’annonce du projet

 

 

[Projet] Ma future CNC / imprimante 3D

Bon, les circuits pour le module NFC sont partis chez SeeedStudio, merci à eux pour leur efficacité et leur bon service: ils se rappellent encore qu’ils ont oublié de me livrer un truc il y a un an, et vont me l’ajouter gratos à ma commande!

En attendant, j’ai un peu de temps libre. Dans les transports, au lieu de jouer à Kicad, je vous pouvoir avancer la rédaction de mon guide pour débuter en électronique, et je vais aussi démarrer mon grand projet de fond, celui qui donnera le sens à la vie, à l’univers, et au reste.

Je vais me monter une imprimante 3D.

Non, une CNC.

Non, en fait, j’arrive pas à choisir.

Donc ce sera les deux.

Je vais prendre une eShapeoko. C’est une plate forme peu chère, très robuste, et assez universelle. Vu sa construction, je n’aurai pas de difficulté à la reconvertir à l’envie, en CNC ou en imprimante 3D, je n’aurai qu’à remplacer la “broche” par un extrudeur, et ajouter un hot plate.

Je me fais pas d’illusions, j’ai vu plein de gens à l’Electrolab passer leur soirées sur les réglages, je sais qu’il y aura beaucoup de travail.

Mais bon, je me dis qu’avec mes ambitions de bricolage, avoir un moyen de production rapide à la maison n’est pas un luxe. Je vais choisir toutes les options de la eShapeoko qui garantissent le maximum de robustesse, avec l’objectif d’usiner du bois (medium) et peut être de l’aluminium (même si c’est lent).

Je compte aussi la mettre à disposition de mes amis makers qui auraient des besoin d’impression 3D. On verra quand ce sera en “production”, mais ça me plairait de filer un coup de main aux potes.

Voici ce que je vais prendre dès que j’aurai reçu mon sponsoring d’anniversaire (:D) :

  • kit eshapeoko avec options: double axe x, double drive y, longueur étendue, perçages nema23
  • 4 moteurs nema23
  • driver moteurs, 1 arduino pour grbl
  • Peut être que j’utiliserai un raspberry pi pour le pilotage.
  • pour la broche, je sais pas encore. J’ai une petite perçeuse qui doit aller pour le bois avec une alim suffisante.
  • une table de travail de 50×60 en bois épais, avec 4 pieds en cornières acier, et des étagères intermédiaires pour ranger les accessoires
  • un capot en plexi pour éviter de mettre de la poussière partout. Et un adaptateur pour l’aspirateur…

Ca me permettra de découper et percer des plaques de MDF, c’est l’objectif numéro 1.

Ensuite on passera à l’objectif numéro 2, l’impression 3D, ça me demandera d’investir dans différents accessoires:

  • hotplate
  • extrudeur adaptable à l’emplacement de la broche. Là, je sais que je pourrai compter sur les copains de l’Electrolab.

Bref, tout un programme!
J’ai déja des tonnes d’idées supplémentaires: broche plus puissante pour travailler l’alu, bloc de démultiplication pour améliorer la résolution des déplacements. Il m’en viendra d’autres!

Bien entendu, je décrirai ici l’avancement de mon projet. Au boulot!

[Projet] Module NFC

Le NFC, c’est une technique de communication sans contact, qui est utilisée pour les cartes de transport et autres cartes CB sans contact. Le signal est modulé à une fréquence de 13,56 MHz, ce qui est une bande “ISM” comme le 2.4 GHz ou le 433.92 MHz. En dehors du NFC, cette bande sert aux machines à plasma en physique, semiconducteurs, etc.

J’ai remarqué qu’il existait peu de lecteurs NFC hackables et abordables.

Le seul que je connaisse est le OpenPCD, basé sur un chip lecteur NFC de NXP. Ce projet implémente un lecteur de cartes sans contact dont le micrologiciel est fait pour expérimenter.

Je suis récemment tombé sur le circuit de Texas Instruments TRF7970A, qui, non seulement, est capable de fonctionner comme le circuit de NXP (lecteur de carte, ou “initiator” en langage NFC), mais également en mode “peer to peer” et “target” (émulation de carte). C’est un composant ridiculement petit (QFN) mais facilement disponible. Malgré sa petite taille pénible à souder, il mérite qu’on s’y intéresse. Un kit d’évaluation est disponible auprès de TI, mais 1) j’aime pas les kits d’évaluation et 2) c’est cher (49 ou 99 dollars). Donc je vais faire ma propre carte.

En suivant toutes les docs de référence fournies par TI, j’ai été capable de développer ma propre carte d’évaluation, au format 5×5 cm.

La première carte est une antenne adaptée munie de son circuit d’adaptation d’impédance: Les valeurs des composants seront à calculer selon des formules (magiques pour les débutants) après avoir caractérisé l’inductance de l’antenne. Je reviendrai sur ces calculs plus tard.

Schéma antenne
Schéma antenne

Le dessin de l’antenne est basé sur un design NXP à plusieurs tours qui permet d’avoir les deux fils de sortie de l’antenne du même côté.

Circuit de l'antenne
Circuit de l’antenne

La deuxième carte est le “lecteur” proprement dit, qui porte un autre circuit d’adaptation d’impédance, le circuit TRF, et une connexion SPI vers un microcontroleur Tiva C, le successeur du Stellaris qui se trouve sur la carte Stellaris Launchpad. Voici quelques caractéristiques techniques:

  • Front-end NFC Texas Instruments TRF7970A
  • Connecteur coaxial UFL pour l’antenne
  • Microcontroleur ARM Cortex M4 Tiva C Series TM4F123
  • 256k de flash
  • 32k de RAM
  • Port USB (OTG non câblé, donc seulement device)
  • Port I2C
  • UART
  • Port JTAG sur header 10 points (pinout ARM standard)
  • 20 GPIO disponibles sur header au pas de 2.54mm
  • Alimentation 5V, par USB ou externe
Schéma frontend NFC
Schéma frontend NFC

Et le circuit:

PCB Frontend NFC
PCB Frontend NFC

J’ai réussi à me débrouiller pour avoir très peu de pistes coté cuivre, du coup le plan recouvre tout le dessous du circuit. La majorité des pistes vertes que vous voyez relient tous les points de masse, pour m’assurer que je n’en oublie aucun. En réalité, toutes ces pistes seront noyées dans le plan de masse. J’utilise cette technique pour m’assurer que mon plan de masse est en un seul morceau.

Dans la semaine qui vient, je vais envoyer ces deux circuits chez SeeedStudio, je pense en faire au moins dix, peut être plus. Si avoir ces circuits vous intéresse, signalez vous, je n’utiliserai pas les 10 donc contre une petite obole, je pourrai vous envoyer un jeu de circuits. Mais je ne les donnerai pas, je connais trop de projets qui finissent par prendre la poussière sur l’étagère…

Niveau réalisation, il y a un TQFP (pas trop dur) et un QFN. Il vaut mieux souder ça à l’air chaud, mais ça doit aussi être possible au fer très fin.

Niveau logiciel, c’est complexe. Avant d’avoir un lecteur de cartes fonctionnel, il faudra du temps. Mais c’est possible, je n’ai aucun doute, surtout si je suis pas tout seul. On peut imaginer de la communication avec les téléphones NFC du moment. Les possibilités sont infinies, Internet est vaste, et plein de docs.

Pour les libs bas niveau, je pense partir de ce que j’ai déja développé pour la carte Stellaris Launchpad, ma librairie FreeStella, qui permet d’initialiser le CPU et de faire fonctionner l’uart. Cette lib n’a aucune dépendance, elle permet le développement “bare metal” à partir du vecteur de boot de l’ARM. Elle ne se base pas sur le TivaWare / StellarisWare, et elle est publiée avec une licence très permissive.

Je vous tiens au courant, et en attendant, parlez moi de vos idées. Qu’est ce qu’on va bien pouvoir faire de cool avec ce projet?

Les GPIO de la Stellaris Launchpad

J’ai enfin réussi à faire tourner et à débugger mon premier programme pour la Stellaris Launchpad. Oh, ce n’est pas grand chose, j’ai fait clignoter une LED. Mais qu’est ce que j’ai appris de choses!

En particulier, j’ai découvert pas mal de choses sur les fonctions GPIO (general purpose input/output) de ce microcontrôleur.

Accès GPIO par les bus APB et AHB

Le CPU ARM Cortex contient plusieurs bus de donnée à l’extérieur du coeur du processeur.

  • le bus APB, Advanced Peripheral Bus
  • le bus AHB, Advanced High-Performance Bus

Les périphériques internes du Stellaris sont connectés à l’un ou à l’autre de ces bus:

Archi interne Stellaris
Archi interne Stellaris

Pour les périphériques GPIO (= lignes de sorties qu’on peut piloter et lire), on a le choix du bus utilisé. Prenons l’exemple du port F, utilisé pour piloter les LEDs de la carte Stellaris Launchpad. Ce port est accessible depuis deux adresses:

  • Pour sa connexion à l’APB, les registres sont disponibles à partir de l’adresse 0x40025000
  • Pour sa connexion à l’AHB, les registres sont disponibles à partir de l’adresse 0x4005D000

Les registres accessibles sont les mêmes, mais le bus AHB possède une plus faible latence, et ses adresses sont plus pratiques à utiliser dans des calculs.

Mais attention : Au reset, seul l’accès par le bus APB est possible. Toute tentative d’accès aux ports AHB provoquera une exception de type “Bus Fault”, et comme dans un code basique, cette exception n’est pas activée, on obtiendra une “Hard Fault”.

Après quelques heures passées sur le sujet, j’ai bien relu la datasheet, et j’ai compris que les bons bits devaient être définis dans le registre GPIOHBCTL, documenté au paragraphe 5.5, page 247.

Recette 1: Accès GPIO qui produit une hardfault (ou une busfault) -> Vérifier GPIOHBCTL

 

Ecriture de données sur les ports GPIO

Après cette découverte, je n’ai plus eu de Hard Fault. En revanche, toute écriture dans le registre GPIODATA n’avait aucun effet.

De la même manière, seule une lecture attentive de la datasheet m’a donné l’explication. GPIODATA n’est pas un registre, mais une PLAGE de 256 registres.

En effet, tout accès à la zone [GPIODATA..GPIODATA+256*4] s’accompagne d’une écriture sur le port, mais les bits de poids faible de l’adresse sont utilisés comme un masque définissant quels bits seront écrits. Le but de cette fonctionnalité, documentée page 608, est de permettre les modifications de bits individuels du port sans utiliser la technique du read-modify-write:

WRITE(address, READ(address) OP mask)

En effet, les seuls bits modifiés du port sont ceux dont les bits d’adresse 9..2 sont à 1.

Supposons que j’écrive 0xEB à l’adresse GPIODATA+0x98, voici ce qui se passe:

gpiodata access

u signifie que le bit n’est pas modifié, 0 ou 1 montre la valeur réellement écrite.

Donc en général, pour la modification du bit N, vous devez écrire 1<<bit à l’adresse GPIODATA+(1<<bit)

Eh non! Vous avez encore mal lu! Les bits significatifs sont 9..2 et non 7..0 !

Pour la modification du bit N, vous devez écrire 1<<(bit+2) à l’adresse GPIODATA+(1<<(bit+2))

Recette 2: Si les GPIO ne changent pas, vérifiez votre adresse GPIODATA

 

Tout ceci m’inspire une 3e recette, car ce circuit est manifestement plus complexe et moins évident qu’un PIC:

Recette 3: Pour le Stellaris LM4F, le RTFM est vraiment important!

 

Micro Turbines et Turboréacteurs

Le modélisme a ses fans, et parmi eux ceux qui s’intéressent aux avions en modèle réduit. Les techniques de motorisation des avions miniatures sont très diverses, les plus communes étant le moteur électrique, et le moteur thermique à 1 cylindre. Ce sont, dirons nous, les techniques “normales”.

Mais certains passionnés ne s’en tiennent pas là. Ce qui les intéresse réellement, au delà du modèle réduit volant, est la réalisation du moteur lui même. Plutôt que d’utiliser des appareils commerciaux, ils cherchent à pousser le réalisme le plus loin possible, en réalisant un moteur lui même aussi réaliste que le reste de la maquette.

Cela donne lieu à de superbes réalisations, comme des moteurs thermiques miniatures. On en trouve plein de descriptions sur youtube.

La dernière catégorie de réalisations, que je mets à part, concerne les moteurs à réaction.

Le turboréacteur est une machine très complexe, qui a demandé des années de mise au point, et qui semble difficile d’accès aux bricoleurs. Elle fait inévitablement penser aux avions de ligne, et donc un truc avec lequel “on ne rigole pas”.

Pour faire simple, un turboréacteur est constitué de 3 éléments :

  • Un compresseur, consitué d’une série de roues à aubes (ce n’est pas celle qu’on voit sur un avion de ligne). Le compresseur a pour objectif de comprimer l’air entrant dans la partie suivante.
  • Une chambre de combustion, dans laquelle est injectée le carburant.
  • Une turbine, dans laquelle les gaz brûlés dans la chambre font tourner d’autres roues à aubes entrainant elle même le compresseur grâce à un arbre.
Coupe d'un réacteur (Wikipédia)
Coupe d’un réacteur (Wikipédia)

On a donc un système en circuit fermé: la combustion fait tourner la turbine, qui entraine le compresseur, qui entretient la combustion. Le tout est régulé par le contrôle du débit de carburant et de la pression d’air.

La poussée est produite par la grande vitesse des gaz brulés éjectés. Sur un avion de chasse, c’est le seul moyen de production. Sur un avion de ligne, on ajoute un ventilateur supplémentaire, ce qui en fait un turbofan, ou moteur double flux (une partie de l’air entre dans le moteur, une partie l’entoure, il y a 2 sources de poussée).

Bref, à première vue, c’est pas ce qu’on choisira pour propulser un modèle réduit!

Pourtant, la créativité des internautes est sans limite. Depuis quelques années, on trouve des mini turboréacteurs tout à fait fonctionnels (de 10cm de diamètre environ) pour équiper des modèles réduits, à des prix assez élevés.

La course à la miniaturisation était lancée! Les modélistes étant aussi des Makers, ils ont voulu se lancer dans l’aventure.

La plupart des turbopropulseurs DIY ne propulseront jamais un avion, mais ils ont l’avantage de permettre facilement l’étude de ces machines. Ils sont basés sur des turbo de voiture, qui ont exactement la même structure qu’un réacteur. Dans une voiture, l’échappement fait tourner la turbine, ce qui compresse l’air à l’admission; dans une utilisation “réacteur”, le moteur de la voiture est remplacé par une chambre de combustion maison raccordée au turbo. Cela donne par exemple ceci:

L’appareil marche; une fois démarrée, la réaction est auto entretenue, et régulée par le carburant. Utiliser un turbo de voiture a un grand avantage: c’est un appareil étudié, il fonctionne, il possède des paliers et des roues de turbine équilibrées.

Une autre catégorie d’appareils “home made” est plus hasardeuse, il s’agit des “tin can turbines”, autrement dit des “turbines boites de conserve”. On trouve pas mal de réalisations sur youtube, plus ou moins réussies, solides, abouties, fonctionnelles ou dangereuses, à base de boites de conserve ou de canettes de coca. Il y a plusieurs défis dans ces réalisations, qui n’ont pas tous été relevés par les concepteurs:

  • Solidité mécanique: l’aluminium est à bannir, il vaut mieux utiliser de l’acier
  • Solidité thermique: idem, l’aluminium ne résiste pas assez à la chaleur, qui peut atteindre plusieurs centaines de degrés
  • Réalisation des turbines: il faut les équilibrer, les rendre le plus régulières possibles, sinon les vibrations deviendront très intenses quand elles tourneront vite
  • Paliers: il faut utiliser un palier sérieux, au moins basé sur les roulements à billes. J’ai vu des essais avec des moyeux de roues de vélo. Ensuite il faut attacher correctement ce palier à l’ “emballage” avec des supports qui 1) ne gênent pas le passage de l’air, et 2) supportent la chaleur coté turbine
  • Carburant: un liquide tel que le kérosène serait pénible. Les meilleures constructions utilisent le butane.
  • Conception de l’ensemble: une des difficultés à surmonter est la théorisation, qui permet de savoir si on a conçu des roues de turbines qui compresseront l’air correctement. Je n’ai pas trouvé de théorie “simple”, mais on peut sans doute se baser sur les calculs disponibles sur le web en ce qui concerne les éoliennes ou les turbines à vapeur.
  • Compréhension du fonctionnement du compresseur: un grand nombre de vidéos montrent des moteurs non fonctionnels, ou qui ne tournent que quand on leur injecte de l’air comprimé: la raison est simple: les compresseurs de ces machines n’ont pas de stator, qui est indispensable à la compression: il s’agit d’ailettes fixes en regard des ailettes tournantes, et qui réalisent la compression. Sans stator, une turbine est un simple ventilateur. L’air n’y sera pas comprimé. La turbine en sortie a également besoin d’ailettes statiques, afin de diriger correctement le flux de gaz brulés sur les ailettes.

Voici une turbine qui n’utilise pas de stator, comme on le voit dans les images de la construction. Elle s’arrête dès que l’alimentation en air comprimé est arrêté:

A l’opposé voici une turbine avec stator:

Note: c’est le même internaute, il semble donc avoir compris ce qui manquait à son premier montage 🙂

Bien… Comment peut on encore miniaturiser cette affaire? Il suffit de prendre des éléments encore plus petits. C’est possible, comme nous le montre cet utilisateur Youtube. Il a non seulement construit une turbine à air comprimé, mais il a aussi fait des essais de turbine à gaz, certes non fonctionnel, mais la vidéo de description de assemblage montre que tous les éléments nécessaires sont présents, y compris le stator. Vous apprécierez la précision du montage:

J’ai donc voulu faire le test, en construisant d’abord une petite roue à aubes, puis en tentant une aventure un peu plus grande.

Voici donc le processus de fabrication ma première turbine, selon les instructions de “johnnyq90” :

 

Découpe du disque de la turbine
Découpe du disque de la turbine avec une cisaille à tôle.

 

Le disque découpé. On améliorera les bords plus tard.
Le disque découpé. On améliorera les bords plus tard.
Collage sur le gabarit
Collage sur le gabarit
Le centrage doit être parfait.
Le centrage doit être parfait. On vérifie par transparence.
Fixation entre deux entretoises.
Fixation entre deux entretoises.
La turbine brute de découpage!
La turbine brute de découpage!
Mise en place des pales
Mise en place des pales

Le résultat n’est pas mal, mais pas encore parfait. La fixation de l’entretoise dans le mandrin d’une perceuse permet de vérifier le centrage, et de rectifier le tout grâce à un disque abrasif de dremel:

Rectification de la turbine.
Rectification de la turbine.

Ensuite, il faut fixer cette turbine sur un arbre. Donc il faut trouver un arbre et un palier. Après quelques recherches, les axes métalliques qui se trouvent sur les chariots de têtes de lecture de CD/DVD sont parfaits, ils sont en inox, bien rectilignes, et ont un diamètre de 3mm. On peut les utiliser facilement avec des mini-roulements tels que ceux disponibles dans certains ventilateurs d’informatique (il n’y en a pas dans tous les modèles!) Ces roulements ont un diamètre extérieur de 8mm, ce qui rentre presque parfaitement dans un tube en cuivre de 8/10mm. La turbine fait 20mm de diamètre, ce qui rentre aussi bien dans un manchon en cuivre de 22/24 mm. Au final on obtient ça:

Turbine sur palier
Turbine sur palier

La turbine a volontairement été écartée de son palier pour laisser voir le montage. Le roulement a reculé après quelques manipulations, et la turbine est entrée en force sur l’axe. Un petit coup d’air comprimé en bouteille et voici ce que cela donne:

Il y a encore beaucoup d’autres améliorations à faire, mais je n’ai pas trop de temps pour cela!

  • Il faut fignoler l’équilibrage de la turbine, pour cela on pourrait la monter sur un support mobile avec un accéléromètre qui indiquerait quels points de la turbine ne sont pas bien symétriques
  • Il faut trouver un moyen pour attacher correctement la turbine sur l’arbre, la tôle galvanisée n’est pas soudable! Peut être en la nettoyant au papier de verre? En tout cas la soudure sera difficile, l’étain n’est pas envisageable à cause de sa faible température de fusion. J’ai bien une idée avec du tube laiton de 3mm intérieur, mais il faut améliorer ça
  • Il faut trouver un moyen facile pour réaliser le stator. En gros, c’est une turbine identique, mais dans laquelle il faut percer un trou de 10mm de diamètre. En écrivant cette phrase, je me rends compte que ce n’est pas vraiment nécessaire, donc ce n’est plus vraiment un problème
  • Il faut enfin faire une chambre de combustion correcte avec injecteurs de gaz, etc.

C’est un gros travail, que je ne classe pas dans les choses prioritaires.

Pendant cette réalisation, j’ai eu besoin de réaliser des gabarits de coupe, qui permettent de diviser un cercle en N parties. Ce genre de chose n’existe pas sur le web, j’ai donc créé mon outil en me basant sur la librairie TCPDF. Vous trouverez donc ici mon outil “Turbine Template Generator” générant des gabarits de coupe pour des micro turbines.

Dans tous les cas je me suis bien amusé à réaliser cette mini turbine, et je pense qu’il y a du potentiel pour faire des choses très amusantes, et fonctionnelles.

A bientot!

 

Page wikipédia sur les turboréateurs

Des Vidéos de démontage d’un gros réacteur, qui montrent plein de détails.

 

CNC DVD : Avancement du 18 Février 2013

Autres articles de la série:

 

Résumé

Voici le résumé des choses faites cette semaine:

  • Câblage du moteur numéro 2
  • Câblage des drivers L293
  • Suppression des vibrations
  • Programmation!

C’est la troisième semaine du projet, il commence à devenir assez long et maintenant que l’enthousiasme initial s’est calmé, il me demande de la concentration pour ne pas dévier sur un nouveau projet secondaire (les occasions de distraction ne manquent pas!). J’ai vraiment l’intention de pousser ce projet au maximum malgré les limitations du matériel. L’objectif à atteindre est la gravure d’un objet (papier, bois) avec un laser fixé sur le chariot.

Pour continuer la lecture, c’est ici.