Jeudi, juillet 2 2015

ArcadePi Project [2]

« Précédent | Suivant »

Bonjour à tous !
Il est l'heure de faire un vrai boîtier pour ce projet. Bon, le carton c'est cool mais un vrai boîtier en bois serait quand même mieux. Comme je l'ai dit dans l'article précédent (clic en haut pour le trouver), je me suis basé sur le design de MaKoTo. Et ça donne un truc dans le genre :).

Il a fallu que je trouve du bois pour la bordure extérieure. J'ai acheté un tasseau pas trop épais et haut à cause des boutons très très hauts que j'ai achetés sans faire attention... Et me basant sur la future disposition des boutons (comme pour ma version carton), j'ai déterminé un contour intérieur d'environ 26x16 cm. A vue de nez, j'ai la place de tout mettre dedans. J'ai donc découpé 4 morceaux de tasseau. J'ai fixé le tout avec des tourillons et de la colle à bois (ok les tourillons ne servent à rien mais j'en ai qui restent d'un autre projet et j'aime bien me compliquer la vie).

stick bout stick colle stick poncage

Bon, j'ai oublié d'envisager que les trous des tourillons allaient apparaître au ponçage. Et aussi accessoirement j'ai fait un des trous traversant. OUPS! Re-bouchage à la pâte à bois et aux bouts de tourillon. Vu que je suis allé trop vite, je n'ai pas fait attention à ce qu'il soit bien à plat pour le séchage. Il est donc très légèrement voilé. RE OUPS! Mais je peux vivre avec. Ça va aller !

stick loupé stick hole

Ensuite, montage des cales pour soutenir les plaques avant et arrière.

stick cale

Pour les boutons "start" et "coins", deux trous en façade.

stick hole stick hole2 stick hole3

Histoire de connecter HDMI et alimentation, j'ai décidé de faire de la place pour deux petites rallonges : une HDMI et une USB.

stick connection stick connection2

J'ai utilisé une découpeuse laser pour le panel. Deux couches de MDF 3mm + une couche d'acrylique transparent de 2,5mm pour un total, avec la déco, de 9 mm. J'ai eu la mauvaise surprise de voir que la qualité de l'acrylique change tout lorsque l'on fait de la découpe laser. Ma plaque est de mauvaise qualité et se recolle après le passage du laser. Il semblerait que ça vienne du type de plastique. Apparemment, il vaut mieux prendre de l'acrylique PMMA. Après quelques essais et de l'aide, un panel en est sorti mais il y a des traces de chauffe qui opacifient la plaque. Le résultat n'est pas pro mais il est largement satisfaisant.

stick stick

Le montage du panel est réalisé avec une vis à bois dans la cale. Je me suis dit que je n'allais pas le démonter tous les jours. Pour l'arrière en revanche, j'ai utilisé des inserts filtés pour permettre un montage/démontage fréquent (et heureusement!). Vu que je fais un stick "1 player", j'ai prévu de mettre une connection NEO GEO pour brancher le "player 2".

stick player2

Je suis fier de vous présenter ma V0 de ce splendide SuperGun. Il reste de la "cosmetic" et le deuxième player à faire mais le tout est fonctionnel et a déjà quelques heures de vols :).

stick allinside stick up stick down stick connected

A plus pour la suite du projet :) !!!

Mercredi, juin 24 2015

ArcadePi Project [1]

Suivant »

Bonjour à tous !
Après le SNES project and GameBoy/Gear, il ne me manque plus qu'une borne d'arcade pour compléter ma collection :). Vivant en petit appartement, je suis parti dans l'idée d'un modèle BarTop. Cependant, en étudiant plus précisément la taille de l'engin, je suis vite revenu sur ma décision et j'ai opté pour un SuperGun à base de Raspberry Pi.

Le concept à réaliser est assez simple, je fabrique un stick d'arcade à partir de zéro et je cache un Raspberry Pi à l'intérieur. Du coup, il faudra y connecter un USB pour l'alimentation et un câble HDMI pour l'audio/vidéo. Je pense séparer le SuperGun en deux sticks, il faudra donc penser à une liaison entre les deux.

Afin de ne pas partir complètement de zéro pour la partie matériel, je me suis basé sur le design du stick d'arcade de l'ami MaKoTo. Il propose ici une belle réalisation sur un design simple qui me convient bien :).

Pour la partie logiciel, j'ai décidé de prendre la distribution RaspiCade car elle propose un support complet des contrôleurs Xin-Mo.

Allez, c'est parti pour les achats ! Vu que je ne suis pas un gros gamer (je préfère fabriquer les consoles que d'y jouer pendant des heures), j'ai choisi des boutons de qualité moyenne sur SmallCab avec l'adaptateur Xin-Mo.

Etant donné que la patience est ma première qualité, j'ai immédiatement vidé et retourné le carton d'envoi, placé un masque pour le placement des boutons (trouvé ici) et tout mis en place.

protopanel protoconnect protoxin

L'avantage de mon impatience est que j'ai pu tester la distribution sur mon raspberry Pi B+ qui traînait par là. La préparation du Raspberry Pi s'est limitée à copier l'image sur la SD. Après quelques configurations, tout fonctionne mais je pense passer sur un Raspberry Pi 2 histoire d'être plus à l'aise sur les perfs :).

C'est tout pour ce post. La prochaine fois, ça sera la fabrication du stick en lui même. :)
En attendant bon Hack à tous.

Lundi, juin 22 2015

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 :)

Mardi, juin 16 2015

Mise à jour de RaspiO'Mix : RaspiO'Mix+

RaspiO'Mix est, comme son nom l'indique, l'évolution logique de RaspiO'Mix pour les RaspberryPi dit « Plus » et Raspberry 2.

RaspiO'Mix est une carte fille (également appelé hats) pour RaspberryPi qui vous permet de connecter vos capteurs / actionneurs Grove (le système Grove chez Lextronic) au Raspberry simplement, sans connaissance en électronique.
RaspiO'Mix est un projet libre et ouvert, tous les plans sont disponibles en ligne.

product-plus.png

Caractéristiques

  • Compatible Raspberry A+, Raspberry B+, Raspberry 2
  • 8 entrées / sorties tolérantes 5V
  • 8 entrées analogiques, 0-5V, 18 bits de résolution
  • 2 entrées numériques via DIP switch
  • Horloge temps réel avec batterie de sauvegarde
  • 3 connecteurs pour I2C
  • 1 connecteur pour communication série
  • Alimentation 5V via jack ou bornier à vis

Utilisation en Python

Des exemples en Python sont présents sur GitHub et vous montreront à quel point il est simple de dialoguer avec les capteurs / actionneurs Grove.

Par exemple, pour faire clignoter une LED présente sur le port IO0 et afficher la valeur analogiques lue sur le port AN0.

# On importe les librairies qui nous seront utiles
from raspiomix import Raspiomix import RPi.GPIO as GPIO import time
r = Raspiomix()
GPIO.setmode(GPIO.BOARD)
# On configure le port IO0 de RaspiO'Mix en sortie GPIO.setup(r.IO0, GPIO.OUT)
# Et on boucle ! while True: GPIO.output(r.IO0, not GPIO.input(r.IO0))
print("%f Volt !" % r.readAdc(0))
time.sleep(1)

Difficile de faire plus simple ! Non ?

Plus d'informations

Tout ce dont vous avez besoin pour avancer avec RaspiO'Mix+ est disponible sur le site www.raspiomix.org :

Et bien entendu, pour commander votre RaspiO'Mix+, cela se passe sur www.raspiomix.org !

Lundi, juin 15 2015

Présentation des OpenAlarm Node

Voilà enfin des nouvelles de OpenAlarm, mais le projet n'est pas mort, loin de là mais ce n'est pas mon seul projet et ça ne permet pas vraiment de payer mes factures, soyez donc patient, ou mieux, participez !

Funky v3

Pour le développement des modules capteurs que j’appellerai maintenant OpenAlarm Node ou pour faire plus court, « Node », je me suis basé sur l'excellent travail de Martin au sujet de module autonome basé sur des RFM12 : les Funky (en version 3), ces derniers sont très petits (un des premiers critères de choix) et consomme très peu (autre critère important) et pour finir, ils sont architecturés autour de microcontrôleurs ATMega, on peut donc bénéficier de la simplicité de développement de l'environnement Arduino...

funky_v3.jpg
Source de la photo

Caractéristiques (source) :

  • Poids de 3gr
  • Compatible avec Arduino
  • Microcontrôleur ATMega32U4, le même que celui utilisé sur l'Arduino Leonardo
  • Pas besoin de programmateur externe, programmation directe via USB
  • Utilisation des modules radios 433/868Mhz RFM12B
  • Peu être utilisé avec le nouveau module RFM69CW
  • Fonctionne à 8Mhz, et peut être alimenté via 2.7V - 3.3V, dont les piles boutons
  • Mode faible consommation
  • La version "step-up" inclu la version 3.3V du LTC3525 boost regulator.

Les Funky v3 étant libre, j'ai donc fabriqué mes propres modules afin de les tester et faire quelques mesures avec.

2015-06-15_10.53.06.jpg
Un de mes modules Funky v3 fait maison

J'ai effectué de multiples tests logiciel, notamment, afin d'obtenir au moins les même résultats annoncé de Martin concernant la faible consommation de ces modules.

La course à la consommation moindre

À quoi bon avoir un module autonome capable de détecter l'ouverture d'une porte si ce dernier demande à être rechargé toutes les semaines et donc retiré momentanément de son service ?

Il est donc essentiel que les modules capteurs de OpenAlarm soit très peu gourmand en énergie.

Le microcontrôleur central des OpenAlarm Node dispose d'un BOD (Brown-out Detection permettant de détecter une tension d'alimentation faible, très utile pour éviter les erreurs d'exécution du micrologiciel embarqué), sans BOD activé, il est possible de descendre la consommation à 5µA, en l'activant, on perd 20 µA mais avec une sécurité supplémentaire, si la tension descend en dessous du seuil configuré, l'AVR entre en veille, garantissant le bon fonctionnement général du programme.

Une solution intéressante aurait été de pouvoir désactiver le BOD durant les périodes de veille via un appel de fonction (sleep_bod_disable()), malheureusement, c'est uniquement possible sur les AVR suffixés d'un P comme Picopower et aucun AVR Mega intégrant un contrôleur USB ne fait parti de cette famille...

Une vue de la consommation pendant une phase d'émission, on remarque un pic de consommation à gauche au moment de la sortie de veille et les pics de conso lors de l'émission du module radio à droite :
TEK00000.PNG

LDO

Un régulateur LDO (Low DropOut) permet de travailler avec une tension d'entrée proche de celle en sortie, il permet dans la node OpenAlarm l'alimentation du montage en convertissant le 5V du port USB en 3.3V.

Dans le design de Martin, au choix, il est possible d'intégrer un MCP170X ou un XC2606 (même brochage) mais dans les 2 cas, j'ai eu quelques soucis...

Le MCP1700 / MCP1703 induit un courant de fuite et la consommation monte en flèche (voir les articles de Martin à ce sujet : High sleep current issue with Funky v2 sorted out, Funky v2’s LDO to blame for high sleep current. Now fixed et Every μA counts).

Le XC6206 est le plus intéressant car il induit une perte de seulement 10µA, ainsi, à 4V, sans LDO, l'AVR en veille, la carte ne consomme que 5.5µA, avec le LDO, on passe à 15µA...

Afin d'éviter un courant de fuite s'échappant via le LDO lors de l'utilisation sur batterie, une idée serait de mettre une diode Schottky (diode à faible chute de tension) en sortie du régulateur, mais il faut qu'elle est des caractéristiques qui nous conviennent bien, c'est à dire une tension directe la plus faible possible et un courant de fuite le plus faible possible (un article à ce sujet Reverse diode current), une diode ayant des caractéristiques intéressantes est la RB751S40 avec vf ~ 300mV et un courant de fuite de 300nA.

Les tests avec cette diode se sont montrés concluants, elle est donc embauchée pour cette tâche !

Mosfet

Le Mosfet est uniquement utilisé pour réduire le courant au démarrage en désactivant le RFM, il est activé une fois l'AVR démarré via logiciel.

Article de Martin à ce sujet : Funky v2 rev 1

Ma version

Basé sur mes tests, j'ai décidé de faire une version légèrement différente pour les OpenAlarm Node :

  • Réduire au maximum la taille
  • Intégrer le port USB dans le PCB afin de gagner en taille / épaisseur / cout (on verra ce que ça donne au niveau solidité mais ayant déjà cassé un port physique sur un Funky, je doute que cela soit pire)
  • Dissocier la partie alimentation du Node en lui même, selon moi, le type d'alimentation dépend avant tout de l'utilisation finale qui va en être fait, exemple :
    • Un Node situé à proximité immédiate d'une source de courant n'a pas besoin d'emmener avec lui des régulateurs ("step-up" comme dans le Funky).
    • Je souhaite alimenter mon module avec une batterie au plomb de 12V, idem, pas besoin de composant en plus
    Au final, les OpenAlarm Node sont conçu afin de pouvoir supporter des cartes filles qui pourront intégrer une partie pour la gestion de l'alimentation.
  • Ajouter une LED afin d'en avoir 2 (rouge et verte), pratique pour indiquer des états sur nos capteurs
  • Des points d'accroches sécables
  • Les broches des ports accessibles facilement en périphérie de la carte au pas de 2.54mm

Voici le schéma de principe qui diffère assez peu de celui des Funky v3 (ajout d'une diode après le régulateur LDO et d'une LED) :
schema.png

Et le PCB, recto / verso :
pcb.png

Une vue 3D à l'échelle avec une pièce de 1 euro :
gerber.png

On remarque le port microUSB réalisé directement dans le PCB, ce dernier faisant 0.8mm d'épaisseur.

Le circuit est légèrement plus petit que le Funky v3 et il est simple d'accéder au broches des ports qui sont matérialisés par les 14 pads à droite et à gauche de la carte.

Le bouton de reset est placé sur la gauche, les leds sont à droite du connecteur USB.

Et la base ?

Oui, c'est bien beau d'avoir des modules autonomes de détection mais où est la base recevant les informations des Nodes ? Et bien, pour le moment, il n'y en a pas ! Il suffit d'utiliser un Node branché directement sur le port USB d'un PC (RaspberryPi par exemple) et voilà, nous avons notre base...

Cette solution à beaucoup d'avantages (cout, facilité, etc...) et n'empêche en rien de créer une base par la suite, elle permet surtout d'avoir quelque chose de fonctionnel malgré le temps dont je ne dispose pas toujours pour avancer sur le projet.

Où en est-on ?

Les PCB sont en cours de fabrication, puis, viendra la phase d'assemblage des cartes, de tests et enfin, un nouvel article...

En attendant, tout est disponible sur GitHub !

Compléments d'informations

Samedi, juin 6 2015

Fonderie 101

Bonjour tout le monde, c'est l'ours !
Voilà, je suis un nouveau contributeur, pour me présenter rapidement je suis un grand fan de bricolage et de DIY. Pour mon premier post, je voudrais vous présenter mon projet de fonderie d'aluminium. Cette fonderie est ma toute première et je l'ai construite pour faire du recyclage pour mes autres projets.

Voici l'engin, un seau métallique avec du béton réfractaire à l'intérieur et une arrivée d'air par le dessous (c'est simpliste, mais cela marche très bien). J’utilise pour la chauffe du charbon de bois pour BBQ, le tout monte à plus de 600 °C pour faire fondre l'alu (merci Wikipedia).

img01

J’utilise un ventilateur de pc pour attiser les braises avec un adaptateur pour le tuyau. Au début, j’utilisais un décapeur thermique, mais à cause de sa protection thermique, ce dernier s'arrêtait toutes les 10 min, maintenant c'est plus simple et ça suffit largement. :)

img02

La pièce la plus importante est le creuset, je peux vous dire tout de suite les boîtes de conserve ça ne fonctionne pas. Ça fond et ça se perce, bref c'est pas top. Le mieux (de ce que j'ai testé) ce sont les pots en inox pour la cuisine, avec ça il y a un bon transfert thermique et c'est du solide ma petite dame.

img03

Pour cette fonte, j'ai décidé de faire un lingot avec un vieux radiateur de pc.

img04 img04b

Après une trentaine de minutes et seulement 3 poignées de charbon on obtient de l'aluminium en phase liquide. Petit conseil de cuisinier: l'aluminium s'oxyde rapidement (lorsqu'il est chaud) il y a donc une pellicule d'oxyde au dessus du liquide. Cet oxyde n'est pas utilisable et il faut le retirer avant de couler! Evitez donc de trop le remuer, sous peine de former encore plus d'oxyde.

img05

Pour finir, j'ai versé l'aluminium dans un récipient métallique rond pour faire mon lingot et voilà le résultat :

img06 img06b

Pour conclure, la fonte d'alu, c'est trop cool! On imagine mal la quantité d'aluminium que l'on peut recycler sur un simple radiateur. Je vais tenter de faire des moules pour créer des pièces un peu plus complexes (et utiles), je vous tiens au courant.
Mr l'ours

Vendredi, juin 5 2015

G2N, un pistolet pour jeux vidéos -3-

Suite de l'étude précédente :

La barre infrarouge :

  • Une barre infrarouge type Wii Sensor Bar fera très bien l'affaire, cependant, il faut pouvoir l'alimenter, idéalement en 5V depuis un port USB par exemple.

Il sera alors nécessaire de la modifier, il existe pleins de tuto pour le faire, démerdez-vous :)

  • Sinon on peut bien sûr en fabriquer une, en calculant le câblage à l'aide de cet outil en ligne très pratique.

C'est ce que j'ai fait ici :
dsc00435.jpg dsc00437.jpg
L'écartement entre les deux trains de LED importe peu.
Il est d'environ 18 cm pour une bar officielle Nintendo, et sur mon proto la largeur est réglable jusqu'à 25 cm.
Par contre, il est important d'avoir deux LED inclinées à 45° sur chaque train, afin d'augmenter l'angle d'émission du faisceau Infra Rouge.

Les réglages informatiques et G2N :

  • Sur l'ordinateur,

- Pour les jeux émulés à la souris, il faudra passer par un logiciel type Joystick-To-Mouse, qui doit nécessairement disposer d'un mode absolu, sinon, rien ne fonctionnera.

- Configurer le clic-droit de la souris dans Joystick-To-Mouse (puisque l'émulateur Sega utilise ce bouton pour le reload du pistolet) sur le bouton correspondant de la manette.
Pour ne pas avoir la fenêtre du jeu qui se réduit si elle reçoit trop de clics sur les bords de l'écran il faut s'assurer d'avoir le tir assigné sur UN SEUL bouton du joystick.

- Sur un ordi il n'y a qu'un seul curseur de souris…
Donc par exemple pour le cas émulation Sega Model2 (House of the Dead, VirtuaCop…), avec Joystick-To-Mouse c'est un seul joueur obligé !!
Sur Mame, en mode joystik analogique donc, deux joueurs ça fonctionne !

  • Sur le menu du G2N,

- Il faut y indiquer la taille de l'écran.

- Pour le paramètre de largeur de la barre, il faut indiquer la mesure de la distance entre le centre des deux trains de led IR.

En cas de problème avec la visée, il peut-être nécessaire de gruger un peu ces réglages, dans le cas où, depuis le centre de l'écran, le curseur se décale trop par rapport à la ligne de visée, de manière proportionnelle dans toutes les directions (le curseur est en avance et touche les bords de l'écran avant que la visée au pistolet n'atteigne le bord).
Donc soit en grugeant la valeur de la barre (diminuer dans mon cas), soit la taille de l'écran.

- Mettre le jumper du reload sur la « main board » pour activer la recharge du flingue lorsqu'on sort sa ligne de visée de l'écran.

Petite démo vidéo :


Conclusions des tests :

En dessous de 2m10 de distance entre le bout de flingue et l'écran, quoique je fasse, la visée est déviée.
Au dessus de 2m10, la ligne de visée est juste.
En fait, plus l'écran est grand plus il faut reculer, phénomène lié au fonctionnement intrinsèque de la wiiimote me dit-on.

Prochaines étapes :

- Confectionner un Addon à la « mainboard » pour intégrer un joystick analogique, et ne plus être obligé de bidouiller une manette.
- Tester la nouvelle version du G2N, Version 7, qui permet de bénéficier d'un recul par rapport à l'écran plus réduit, par l'inclinaison à 30° de la caméra dans le canon du pistolet.

 À suivre…

Mercredi, mai 27 2015

DummyLoad : une charge électronique variable

TL;DR

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

Le besoin

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

un rhéostat de puissance

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

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

Le circuit


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

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

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

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

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

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

La construction


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

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

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

Utilisation

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

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

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

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

Bibliographie

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

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


- page 1 de 49