Changement de vie…

Le projet courait de longue date, mais aura mis du temps à aboutir…
Je pars donc m’installer à la campagne (profonde), dans une grande maison propice à mes projets. L’idée de base derrière ce projet est d’essayer de vivre un maximum en autarcie. On a donc devant nous un certain nombre de problématiques à résoudre :
– Autonomie (au moins partielle) en électricité
– Autonomie en nourriture

La bonne nouvelle, également, j’ai récupéré énormément de bon matériel juste avant mon départ. Une fois les travaux de la maison bien avancés, je pourrais me réaliser un atelier d’enfer, et vous proposer plein de projets intéressants.
En attendant, les prochains posts seront très orientés énergies nouvelles, avec notamment la réalisation de panneaux solaires thermiques et photovoltaïques.

DIY – Broyeuse à plastique, proto 1

Oui, je sais, en ce moment, je ne poste pas beaucoup. Pas que je ne fasse rien, bien au contraire, mais les projets en cours sont un peu plus long à finaliser, donc nécessairement le rythme de publication s’en ressent.
Il y a quelques temps, je me suis monté une imprimante 3D, que j’utilise beaucoup pour du prototypage. Mais qui dit prototype, dit aussi ratés, et ça m’embêtait « un poil » de penser à tout ce plastique jeté après usage. J’ai donc commencé à réfléchir sur une solution de recyclage. Certes, il y a déjà beaucoup de choses sur le net à ce sujet, mais je n’ai pas trouvé beaucoup de choses concluantes en open-source, ou alors des kits à acheter, mais sans réussir à trouver les plans.
Pour recycler le plastique, il faut deux étapes : un broyeur, permettant de réduire la taille des morceaux de plastique, et un extrudeur, qui transformera ces petits morceaux en un nouveau filament.
La première étape étant de broyer les déchets, c’est donc sur cette partie que je me suis penché en premier. L’avantage, c’est que ça permet au passage de réduire le volume des déchets, pour le stockage « en attendant ».
Broyeuse à plastique

L’idée de cette broyeuse est d’avoir deux séries de dents tournant en sens inverse, et venant mordre le plastique. Petit à petit, elle va « grignoter » le plastique en copeaux plus ou moins fins.

Dent de la broyeuse

Les dents viennent s’emmancher sur un arbre hexagonal, de manière à ne pas glisser même avec des efforts très importants dessus. L’arbre est ensuite passé au tour, pour le réduire au diamètre de 8mm (rond maintenant), et sera inséré dans des roulements à billes de chaque côté.

Deux pignons ont été dessinés, de manière à ce que le premier arbre entraîne la rotation du second, sans facteur de réduction. Les deux arbres tournent donc à la même vitesse, et en sens inverse. Pour le moment, j’utilise une perceuse pour l’entraînement, mais à terme la broyeuse aura son moteur autonome.

Les dents on été réalisées en plexiglass. L’idée était de valider que tout s’emboîtait bien avant de passer à une version métal (il y en a quand même pour une grosse soixantaine d’euros de découpe pour le métal), d’autant que j’avais une découpeuse laser sous la main, et des chutes de plexi (d’où l’aspect sur certaines pièces).
La bonne surprise, c’est que le plexi semble assez résistant pour broyer du PLA (pas trop épais). Pour combien de temp ? Aucune idée, mais en attendant, ça me permet de valider bien des choses.

J’ai maintenant quelques petits points à finir/revoir sur le châssis, en particulier la fixation du moteur, et je pourrais passer à un second prototype, qui sera vraisemblablement fonctionnel. Ensuite, je pourrais passer à la partie extrudeur :)

Moteur à électroaimant 100% récup

Il pleut aujourd’hui ? Vous savez pas quoi faire pour passer le temps ? Vous avez une montagne de vieux disques durs en attente de recyclage ?
Si vous avez répondu oui à au moins une de ces questions, ce projet est fait pour vous !
L’idée est simple : utiliser l’électroaimant d’un disque dur pour produire une rotation du disque, comme le ferait le piston d’un moteur thermique ou vapeur. Ne cherchez pas une quelconque justification technique à ce projet, il n’y en a aucune, mais ça fait un petit moteur rigolo, avec un joli bruit, et c’est amusant :)

Continue reading

Régulation PID, faire de jolis graphiques 2/2

La dernière fois, je vous ai présenté une méthode essentiellement graphique, permettant une bonne approximation des paramètres PID de votre régulateur. Encore faut-il savoir comment tracer les graphiques, c’est ce que je me propose de vous expliquer dans cet article. Il est bien sûr évident que cette méthode peut être utilisée pour tracer des graphiques à partir de tout type de données, du moment que les données arrivent via un port série.
La première étape va consister à récupérer les données du port série sur un PC. Comme souvent, il existe plusieurs façon de faire, je vous présenterais celle que j’ai utilisé ici : un petit script python.

import serial
import sys

serialport = serial.Serial("/dev/ttyACM0", 9600, timeout=1)
line = []

while True:
    for c in serialport.read():
        line.append(c)
        if c == '\n':
            for s in line:
                f=open('myfile','a')
                sys.stdout.write(s)
                f.write(s)
                f.close
            line = []
            break

serialport.close()

Ce petit script prend les caractères arrivant sur le port série, jusqu’au caractère marquant la fin de ligne, puis écrit la ligne dans un fichier. Ca peut éventuellement suffire pour tracer un graphique… Mais dans ce cas précis, on veut pouvoir également envoyer une consigne au régulateur, la modifier afin de suivre la réaction de ce dernier. Problème : comment envoyer des données sans perturber la lecture des données et ne pas sauter de mesure ?
Là encore, il y a plusieurs méthodes possibles, certaines plus complexes que d’autres. Celle que j’ai choisi permet de garder un programme simple, mais ne fonctionnera que sous linux. Ceux sous un autre système chercheront du côté du multithreading…

import serial
import sys
import select

serialport = serial.Serial("/dev/ttyACM0", 9600, timeout=1)
line = []

while True:
        while sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
          ligne = sys.stdin.readline()
          if ligne:
            print(ligne)
            serialport.write(ligne+'\r\n')
          else: # an empty line means stdin has been closed
            print('eof')
            exit(0)
        else:
            for c in serialport.read():
                    line.append(c)
                    if c == '\n':
                        for s in line:
                                f=open('myfile','a')
                                sys.stdout.write(s)
                                f.write(s)
                                f.close
                                line = []
                    break

serialport.close()

Ah oui, j’ouvre et ferme le fichier a chaque écriture, de manière à pouvoir accéder aux données pendant l’exécution du programme. Ca permet de visualiser l’évolution du graphique en temps réel.
Les données sont envoyées par le microcontrolleur sous la forme . Je n’ai pas de mesure de temps, chaque échantillon étant pris à un intervalle d’une seconde, il suffit de compter les échantillons pour connaître le temps écoulé.

Passons maintenant au graphique lui-même. Pour cela, j’utilise le logiciel Gnuplot, outil très puissant de tracé de courbes dont nous n’utiliseront ici qu’une infime quantité de ses possibilités. Lorsque vous lancez gnuplot en ligne de commande, vous vous retrouvez avec un shell dans lequel vous pourrez lancer vos commandes gnuplot.

plot 'myfile' using 1 smooth bezier title 'temperature', 
'myfile' using 2  with line title 'CO', 
'myfile' using 3 with line title 'Setpoint'
 plot 'myfile' using 1 

Indique que l’on va tracer une courbe correspondant aux données de la première colonne du fichier

smooth bezier

Indique que l’on veut lisser les données. Il n’est pas toujours intéressant de lisser les données, par exemple, ici la colonne 3 correspondant à la consigne n’est pas lissée, ce qui permet de visualiser le moment exact du changement de consigne. Par contre, dans le cas des valeurs mesurées, cela permet de s’affranchir du bruit sur les mesures.

title 'temperature'

Légende de la courbe. Pratique dès qu’il y a plus d’une courbe.

Par défaut, gnuplot va afficher le résultat à l’écran. Pour pouvoir enregistrer le résultat dans un fichier il faut taper les instructions suivantes :

set terminal "png"
set output "monfichier.png"
replot

Nota : avec la commande replot (ou avec le bouton replot de la gui), vous pouvez rafraîchir les données affichées, de manière à visualiser en continu vos données…
Il y a certainement plein d’amélioration possibles à ma méthode, mais je vous la présente car elle a le mérite d’être simple et rapide à mettre en oeuvre, tout en fournissant de bons résultats :)

Régulation PID, comment la régler 1/2

Étant donné que je n’ai pas encore tout le matériel nécessaire pour avancer mes autres projets, j’en profite pour approfondir un peu mes connaissances théoriques et vous en fait donc profiter. Mon projet ici est simple : Réguler une température à l’aide d’un microcontrolleur, mais surtout bien comprendre les tenants et aboutissements des différents réglages et algorithmes. L’objectif ici n’est pas tant d’expliquer ce qu’est un PID, ni comment il fonctionne dans le detail, mais plutôt de donner une méthode permettant d’approximer les coefficients du régulateur.

Je profiterais de cette expérience pour faire 2 articles :
– celui-ci concernant le PID a proprement parler
– Un second article concernant ma méthode pour obtenir des courbes « lives » a partir d’un arduino et d’un PC.

Continue reading