tag:blogger.com,1999:blog-29637451908337934432024-02-08T12:28:22.656-08:00DIY AutoLabRéalisation d'un système automatique de développement de films photo.Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.comBlogger21125tag:blogger.com,1999:blog-2963745190833793443.post-29587678960294002792014-07-07T12:55:00.000-07:002014-07-07T14:33:40.213-07:00Le retour du projet.Après un long moment d'absence sur le blog, je reviens vers ce projet.<br />
<br />
Le bricolage autour d'un bac trouvé à Ikea et d'un morceau d'imprimante ne convenait pas à une diffusion possible de ce modèle de machine. J'ai donc décidé de reprendre le design des différentes fonctions pour les adapter à un mode de production, plus simple et plus accessible.<br />
<br />
Voici les premières pistes que j'envisage.<br />
<br />
<a href="https://www.flickr.com/photos/diy-effixe/14412299587/" title="AutoLab V3 printable + lasercut de DIY Effixe, sur Flickr"><img alt="AutoLab V3 printable + lasercut" height="393" src="https://farm4.staticflickr.com/3921/14412299587_6bd0016347_c.jpg" width="640" /></a><br />
<br />
<a href="https://www.flickr.com/photos/diy-effixe/14412123168/" title="AutoLab V3 printable + lasercut 01 de DIY Effixe, sur Flickr"><img alt="AutoLab V3 printable + lasercut 01" height="394" src="https://farm3.staticflickr.com/2902/14412123168_06c8920a0f_c.jpg" width="640" /></a><br />
<br />
<a href="https://www.flickr.com/photos/diy-effixe/14598097212/" title="AutoLab V3 printable + lasercut 06 de DIY Effixe, sur Flickr"><img alt="AutoLab V3 printable + lasercut 06" height="394" src="https://farm3.staticflickr.com/2895/14598097212_e2a98e5426_c.jpg" width="640" /></a><br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com2tag:blogger.com,1999:blog-2963745190833793443.post-19116232642619452842012-03-11T07:02:00.000-07:002012-03-11T07:10:20.769-07:00Mélangeur magnétiqueJe vais avoir besoin d'un mélangeur pour l'eau du bain marie. Histoire d'uniformiser la chaleur dans le volume total. Il existe des systèmes dans le commerce qui sont principalement utilisés dans les laboratoires, Ils se composent de deux parties, un moteur qui entraine un aimant et d'un barreau magnétique.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.lachimie.fr/materiel/images/agitateur-magnetique.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="173" src="http://www.lachimie.fr/materiel/images/agitateur-magnetique.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://clg-la-ferte-st-aubin.tice.ac-orleans-tours.fr/php5/labo/perso/pageau_boisson/IMMAGES/experiences/agitateur_magnetique.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="316" src="http://clg-la-ferte-st-aubin.tice.ac-orleans-tours.fr/php5/labo/perso/pageau_boisson/IMMAGES/experiences/agitateur_magnetique.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
Pour mon système d'entrainement, j'ai simplement collé sur un ventilateur de PC un aimant récupéré dans un vieux disque dur et j'utilise 5 billes aimantées comme barreau magnétique pour l'instant. Le montage électronique qui pilote le tout est similaire à celui que j'utiliserai dans l'Autolab, il se compose d'un transistor NPN (2N2222) d'une résistance (la valeur reste à déterminer), d'une alimentation 12V, d'un ventilateur et de 5 billes magnétiques. Le bouton poussoir n'étant là que pour simuler le signal qui sera envoyé par l'Arduino au travers du transistor qui agira comme un interrupteur.<br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6972487563/" title="DIY Stirring System test de DIY Effixe, sur Flickr"><img alt="DIY Stirring System test" height="478" src="http://farm8.staticflickr.com/7049/6972487563_8aa235c904_z.jpg" width="640" /></a><br />
<br />
<br />
On peut voir dans la vidéo ci dessous que le système fonctionne bien, j'ai plus qu'à prévoir le système de fixation du ventilateur sous ma cuve à bain marie.<br />
<br />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" data="http://www.flickr.com/apps/video/stewart.swf?v=109786" height="480" type="application/x-shockwave-flash" width="640"> <param name="flashvars" value="intl_lang=fr-fr&photo_secret=9fc8d41809&photo_id=6826364586">
</param>
<param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=109786">
</param>
<param name="bgcolor" value="#000000">
</param>
<param name="allowFullScreen" value="true">
</param>
<embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=109786" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=fr-fr&photo_secret=9fc8d41809&photo_id=6826364586" height="480" width="640"></embed></object><br />
<div>
<br /></div>
<br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com2tag:blogger.com,1999:blog-2963745190833793443.post-83168719986668046832012-02-23T03:39:00.000-08:002014-07-07T12:59:52.373-07:00Sonde thermique numérique avec l'ArduinoJ'ai enfin reçu mes sondes thermiques numériques! je les avais commandé début octobre 2011... mais le colis s'est visiblement perdu, ou a été fouillé par les mains des différents transporteurs... L'enveloppe des deux sondes qui est arrivée hier était ouverte, clairement quelqu'un a regardé ce que contenait le paquet.<br />
<br />
Après avoir passé pas mal de temps à vouloir faire fonctionner des sondes analogiques type PT100 ou autre thermistances qui ont une résistance variable en fonction de la température. Souvent ces thermistances ont une courbe de réponse non linéaire. La PT100 <span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px;">(100 <a href="http://fr.wikipedia.org/wiki/Ohm_(unit%C3%A9)" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Ohm (unité)">Ω</a> à <span title="32 °F ou 273,2 K">0 </span><abbr class="abbr" style="border-bottom-color: initial; border-bottom-style: initial; border-bottom-width: 0px; color: inherit; cursor: help;" title="degré Celsius">°C</abbr>)</span> couramment utilisée me paraissait un bon choix. Or je n'ai jamais réussit à avoir une lecture correcte de la température, j'avais souvent une lecture erronée de plusieurs degrés. Je me suis donc ensuite orienté vers des capteurs numériques. Une solution était d'utiliser un capteur LM35, le composant coûte aux alentours des 2 euros/pièce.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.modtronix.com/images/to92.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.modtronix.com/images/to92.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Les codes arduino pour interpréter les résultats de la sondes étant facilement trouvable sur le net. Il me restait un petit problème à résoudre, l'étanchéité de ladite sonde. Il existe un tuto sur <a href="http://www.instructables.com/id/Waterproof-a-LM35-Temperature-Sensor/" target="_blank">Instructable</a> qui nous montre comment procéder. <a href="http://www.blogger.com/"></a></div>
<div class="separator" style="clear: both; text-align: left;">
Mais ce n'est toujours pas cette sonde que j'ai reçu. J'ai en effet trouvé dans une boutique chinoise ebay, une sonde elle aussi numérique mais étanche. Cette sonde est la DS18B20, elle existe en format T0-92 (comme la photo précédente) mais aussi en version encapsulée.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://i.ebayimg.com/t/Waterproof-Digital-Thermal-Probe-Sensor-DS18B20-New-/00/s/NTAxWDcwMA==/$(KGrHqR,!nYE8Y81JqFGBPJfICo)m!~~60_12.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://i.ebayimg.com/t/Waterproof-Digital-Thermal-Probe-Sensor-DS18B20-New-/00/s/NTAxWDcwMA==/$(KGrHqR,!nYE8Y81JqFGBPJfICo)m!~~60_12.JPG" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
En dehors du fait qu'il m'a fallut batailler avec le vendeur pendant 4 mois pour les recevoir, ça valait le coup.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Une petite recherche sur google avec pour mots clés DS18B20 + arduino, je suis tombé là dessus : </div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoExpertCapteursComplexesDS18B20Test" target="_blank">mon-club-elec.fr</a> </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Le montage à effectuer est très simple, il suffit de rajouter une résistance de 1K à la sonde.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.mon-club-elec.fr/mes_images/schemas/capteurs_complexes/one_wire/arduino_ds18b20x3_one_wirex1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.mon-club-elec.fr/mes_images/schemas/capteurs_complexes/one_wire/arduino_ds18b20x3_one_wirex1.gif" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.mon-club-elec.fr/mes_images/montages/capteurs_complexes/one_wire/arduino_ds18b20x1_one_wire.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.mon-club-elec.fr/mes_images/montages/capteurs_complexes/one_wire/arduino_ds18b20x1_one_wire.gif" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"></span></div>
<pre class="csharpcode" style="background-color: white; color: black; font-family: Consolas, 'Courier New', Courier, monospace; font-size: small;"><span class="rem" style="color: green;">// --- Programme Arduino ---</span>
<span class="rem" style="color: green;">// Copyright X. HINAULT - Créé le 10/04/2010</span>
<span class="rem" style="color: green;">// www.mon-club-elec.fr </span>
<span class="rem" style="color: green;">// Code sous licence GNU GPL : </span>
<span class="rem" style="color: green;">// This program is free software: you can redistribute it and/or modify</span>
<span class="rem" style="color: green;">// it under the terms of the GNU General Public License as published by</span>
<span class="rem" style="color: green;">// the Free Software Foundation, either version 3 of the License,</span>
<span class="rem" style="color: green;">// or any later version.</span>
<span class="rem" style="color: green;">// This program is distributed in the hope that it will be useful,</span>
<span class="rem" style="color: green;">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span class="rem" style="color: green;">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<span class="rem" style="color: green;">// GNU General Public License for more details.</span>
<span class="rem" style="color: green;">// You should have received a copy of the GNU General Public License</span>
<span class="rem" style="color: green;">// along with this program. If not, see .</span>
<span class="rem" style="color: green;">// </span>
<span class="rem" style="color: green;">// --- Que fait ce programme ? ---</span>
<span class="rem" style="color: green;">/* test simple de la mesure de la température à l'aide d'un capteur</span>
<span class="rem" style="color: green;">de température One-wire de type DS18B20 et affichage du résultat</span>
<span class="rem" style="color: green;">dans la fenêtre Terminal série. */</span>
<span class="rem" style="color: green;">// --- Fonctionnalités utilisées ---</span>
<span class="rem" style="color: green;">// Utilise la connexion série vers le PC </span>
<span class="rem" style="color: green;">// Utilise un ou plusieurs capteurs One Wire </span>
<span class="rem" style="color: green;">// --- Circuit à réaliser ---</span>
<span class="rem" style="color: green;">// Connexion série entre la carte Arduino et le PC (utilise les broches 0 et 1) </span>
<span class="rem" style="color: green;">// Connecter sur la broche 2 la broche de données du capteur One Wire</span>
<span class="rem" style="color: green;">//**************** Entête déclarative *******</span>
<span class="rem" style="color: green;">// A ce niveau sont déclarées les librairies, les constantes, les variables...</span>
<span class="rem" style="color: green;">// --- Inclusion des librairies utilisées ---</span>
#include <span class="rem" style="color: green;">// librairie pour capteur OneWire</span>
<span class="rem" style="color: green;">// --- Déclaration des constantes ---</span>
<span class="rem" style="color: green;">// --- constantes des broches ---</span>
<span class="kwrd" style="color: blue;">const</span> <span class="kwrd" style="color: blue;">int</span> broche_OneWire=2; <span class="rem" style="color: green;">//declaration constante de broche </span>
<span class="rem" style="color: green;">//---- code d'instruction du capteur</span>
<span class="kwrd" style="color: blue;">const</span> <span class="kwrd" style="color: blue;">int</span> modeLecture=0xBE;
<span class="kwrd" style="color: blue;">const</span> <span class="kwrd" style="color: blue;">int</span> lancerMesure=0x44;
<span class="rem" style="color: green;">// --- Déclaration des variables globales ---</span>
<span class="kwrd" style="color: blue;">byte</span> data[12]; <span class="rem" style="color: green;">// Tableau de 12 octets pour lecture des 9 registres de RAM et des 3 registres d'EEPROM du capteur One Wire</span>
<span class="kwrd" style="color: blue;">byte</span> adresse[8]; <span class="rem" style="color: green;">// Tableau de 8 octets pour stockage du code d'adresse 64 bits du composant One Wire</span>
<span class="kwrd" style="color: blue;">int</span> tempet=0; <span class="rem" style="color: green;">// variable pour resultat de la mesure</span>
<span class="kwrd" style="color: blue;">float</span> tempetf=0.0; <span class="rem" style="color: green;">// variable pour resultat de la mesure</span>
<span class="rem" style="color: green;">// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---</span>
OneWire capteur(broche_OneWire); <span class="rem" style="color: green;">// crée un objet One Wire sur la broche voulue</span>
<span class="rem" style="color: green;">//**************** FONCTION SETUP = Code d'initialisation *****</span>
<span class="rem" style="color: green;">// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme</span>
<span class="kwrd" style="color: blue;">void</span> setup() { <span class="rem" style="color: green;">// debut de la fonction setup()</span>
<span class="rem" style="color: green;">// --- ici instructions à exécuter au démarrage --- </span>
Serial.begin(115200); <span class="rem" style="color: green;">// initialise connexion série à 115200 bauds</span>
<span class="rem" style="color: green;">// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission </span>
<span class="rem" style="color: green;">// XXXXXXXXXXXXXXXXXXXXXX Détection du capteur présent sur la broche XXXXXXXXXXXXXXXXXXXXXXX </span>
Serial.println(<span class="str" style="color: #a31515;">"**** Detection du capteur **** "</span>);
while (capteur.search(adresse)== <span class="kwrd" style="color: blue;">false</span>) <span class="rem" style="color: green;">// tant qu'aucun nouveau capteur est détecté</span>
{
<span class="rem" style="color: green;">// la fonction search renvoie la valeur FAUX si aucun élément 1-wire est trouvé. </span>
Serial.println(<span class="str" style="color: #a31515;">"Aucun capteur 1-wire present sur la broche ! "</span>); <span class="rem" style="color: green;">// affiche message + saut de ligne</span>
delay (1000); <span class="rem" style="color: green;">// pause 1 seconde</span>
}
<span class="rem" style="color: green;">//la suite est exécutée seulement si un capteur est détecté</span>
<span class="rem" style="color: green;">// la fonction search renvoie la valeur VRAI si un élément 1-wire est trouvé. </span>
<span class="rem" style="color: green;">// Stocke son code d'adresse 16 bits dans le tableau adresse[8]</span>
<span class="rem" style="color: green;">// adresse envoyé à la fonction correspond à l'adresse de début du tableau adresse[8] déclaré ... </span>
Serial.print (<span class="str" style="color: #a31515;">"1 capteur 1-wire present avec code adresse 64 bits : "</span>);
<span class="rem" style="color: green;">//--- affichage des 64 bits d'adresse au format hexadécimal</span>
<span class="kwrd" style="color: blue;">for</span>(<span class="kwrd" style="color: blue;">int</span> i = 0; i < 8; i++) { <span class="rem" style="color: green;">// l'adresse renvoyée par la fonction search est stockée sur 8 octets</span>
<span class="kwrd" style="color: blue;">if</span> (adresse[i]<16) Serial.print(<span class="str" style="color: #a31515;">'0'</span>); <span class="rem" style="color: green;">// pour affichage des O poids fort au format hexadécimal</span>
Serial.print(adresse[i], HEX); <span class="rem" style="color: green;">// affiche 1 à 1 les 8 octets du tableau adresse au format hexadécimal</span>
Serial.print(<span class="str" style="color: #a31515;">" "</span>);
}
Serial.println();
<span class="rem" style="color: green;">//---- test du type de capteur ---- </span>
<span class="rem" style="color: green;">// le type du capteur est donné par le 1er octet du code adresse 64 bits</span>
<span class="rem" style="color: green;">// Valeur 0x28 pour capteur type DS18B20, 0x10 pour type DS18S20, 0x22 pour type DS1820</span>
<span class="kwrd" style="color: blue;">if</span> (adresse[0]==0x28)
{
Serial.println (<span class="str" style="color: #a31515;">"Type du capteur present : Capteur temperature DS18B20."</span>);
}
<span class="kwrd" style="color: blue;">else</span>
{
Serial.println (<span class="str" style="color: #a31515;">"Le capteur present n'est pas un capteur de temperature DS18B20."</span>);
}
<span class="rem" style="color: green;">//----- contrôle du code CRC ----</span>
<span class="rem" style="color: green;">// le dernier octet de l'adresse 64bits est un code de contrôle CRC </span>
<span class="rem" style="color: green;">// à l'aide de la fonction crc8 on peut vérifier si ce code est valide</span>
<span class="kwrd" style="color: blue;">if</span> (capteur.crc8( adresse, 7) == adresse[7]) <span class="rem" style="color: green;">// vérification validité code CRC de l'adresse 64 bits</span>
<span class="rem" style="color: green;">// le code CRC de l'adresse 64 bits est le 8ème octet de l'adresse (index 7 du tableau)</span>
{
Serial.println (<span class="str" style="color: #a31515;">"Verification du code CRC de l'adresse 64 bits de ce capteur : VALIDE !"</span>);
}
<span class="kwrd" style="color: blue;">else</span>
{
Serial.println (<span class="str" style="color: #a31515;">"Verification du code CRC de l'adresse 64 bits de ce capteur : NON VALIDE !"</span>);
}
<span class="rem" style="color: green;">//------- message final détection ---- </span>
Serial.println(<span class="str" style="color: #a31515;">"----- fin de la recherche du capteur ----"</span>);
Serial.println(<span class="str" style="color: #a31515;">""</span>);
<span class="rem" style="color: green;">//--- la phase de détection n'est pas obligatoire avec un seul capteur ---</span>
<span class="rem" style="color: green;">//---- il est possible d'utiliser uniquement la fonction skip --- </span>
<span class="rem" style="color: green;">//---- le résultat semble plus hasardeux cependant... </span>
<span class="rem" style="color: green;">// capteur.skip(); </span>
<span class="rem" style="color: green;">// une fois le capteur détecté, son code adresse 64 bits est stocké dans le tableau adresse[8]</span>
<span class="rem" style="color: green;">// on va à présent adresser des instructions au capteur et lire le résultat obtenu</span>
<span class="rem" style="color: green;">// successivement il faudra : </span>
<span class="rem" style="color: green;">// * envoyer l'instruction de lancement de la mesure</span>
<span class="rem" style="color: green;">// * attendre 1 seconde </span>
<span class="rem" style="color: green;">// * envoyer l'instruction de lecture du résultat</span>
<span class="rem" style="color: green;">// * envoyer les instructions de lecture</span>
} <span class="rem" style="color: green;">// fin de la fonction setup()</span>
<span class="rem" style="color: green;">// ********************************************************************************</span>
<span class="rem" style="color: green;">//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************</span>
<span class="rem" style="color: green;">// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension</span>
<span class="kwrd" style="color: blue;">void</span> loop(){ <span class="rem" style="color: green;">// debut de la fonction loop()</span>
<span class="rem" style="color: green;">// XXXXXXXXXXXXXXXXXXXXXX Lancement d'une mesure et lecture du résultat XXXXXXXXXXXXXXXXXXXXXXX </span>
Serial.println(<span class="str" style="color: #a31515;">"**** Acquisition d'une mesure de la temperature **** "</span>);
<span class="rem" style="color: green;">// avant chaque nouvelle instruction, il faut : </span>
<span class="rem" style="color: green;">// * initialiser le bus 1-wire</span>
<span class="rem" style="color: green;">// * sélectionner le capteur détecté</span>
<span class="rem" style="color: green;">// * envoyer l'instruction </span>
<span class="rem" style="color: green;">//--------- lancer une mesure --------</span>
capteur.reset(); <span class="rem" style="color: green;">// initialise le bus 1-wire avant la communication avec un capteur donné</span>
capteur.select(adresse); <span class="rem" style="color: green;">// sélectionne le capteur ayant l'adresse 64 bits contenue dans le tableau envoyé à la fonction</span>
capteur.write(lancerMesure,1); <span class="rem" style="color: green;">// lance la mesure et alimente le capteur par la broche de donnée</span>
<span class="rem" style="color: green;">//-------- pause d'une seconde ----- </span>
delay(1000); <span class="rem" style="color: green;">// au moins 750 ms</span>
<span class="rem" style="color: green;">// il faudrait mettre une instruction capteur.depower ici, mais le reset va le faire</span>
<span class="rem" style="color: green;">//---------- passer en mode LECTURE ------------- </span>
capteur.reset(); <span class="rem" style="color: green;">// initialise le bus 1-wire avant la communication avec un capteur donné</span>
capteur.select(adresse); <span class="rem" style="color: green;">// sélectionne le capteur ayant l'adresse 64 bits contenue dans le tableau envoyé à la fonction</span>
capteur.write(modeLecture,1); <span class="rem" style="color: green;">// passe en mode lecture de la RAM du capteur</span>
<span class="rem" style="color: green;">// ----------- lire les 9 octets de la RAM (appelé Scratchpad) ----</span>
<span class="kwrd" style="color: blue;">for</span> ( <span class="kwrd" style="color: blue;">int</span> i = 0; i < 9; i++) { <span class="rem" style="color: green;">// 9 octets de RAM stockés dans 9 octets</span>
data[i] = capteur.read(); <span class="rem" style="color: green;">// lecture de l'octet de rang i stocké dans tableau data</span>
}
<span class="rem" style="color: green;">// ----- affichage du contenu des différents octets ----------- </span>
Serial.println(<span class="str" style="color: #a31515;">""</span>);
Serial.println(<span class="str" style="color: #a31515;">"---- lecture de la RAM du capteur ---- "</span>);
Serial.print(<span class="str" style="color: #a31515;">"Octet 0 (Resultat poids faible)="</span>), Serial.println(data[0],BIN);
Serial.print(<span class="str" style="color: #a31515;">"Octet 1 (Resultat poids fort)="</span>), Serial.println(data[1],BIN);
Serial.print(<span class="str" style="color: #a31515;">"Octet 2 (Alarme haute)="</span>), Serial.println(data[2],BIN);
Serial.print(<span class="str" style="color: #a31515;">"Octet 3 (Alarme basse)="</span>), Serial.println(data[3],BIN);
Serial.print(<span class="str" style="color: #a31515;">"Octet 4 (Registre de configuration)="</span>), Serial.println(data[4],BIN);
Serial.print(<span class="str" style="color: #a31515;">"Octet 5 (Reserve)="</span>), Serial.println(data[5],BIN);
Serial.print(<span class="str" style="color: #a31515;">"Octet 6 (Reserve)="</span>), Serial.println(data[6],BIN);
Serial.print(<span class="str" style="color: #a31515;">"Octet 7 (Reserve)="</span>), Serial.println(data[7],BIN);
Serial.print(<span class="str" style="color: #a31515;">"Octet 8 (code CRC mesure)="</span>), Serial.println(data[8],BIN);
<span class="rem" style="color: green;">//----- test de validité des valeurs reçues par contrôle du code CRC ----</span>
Serial.println(<span class="str" style="color: #a31515;">""</span>);
Serial.println(<span class="str" style="color: #a31515;">"---- test de controle de validite des donnees recues ---- "</span>);
<span class="rem" style="color: green;">// le dernier (9ème) octet de la RAM est un code de contrôle CRC </span>
<span class="rem" style="color: green;">// à l'aide de la fonction crc8 on peut vérifier si ce code est valide</span>
<span class="kwrd" style="color: blue;">if</span> (capteur.crc8( data, 8) == data[8]) <span class="rem" style="color: green;">// vérification validité code CRC des valeurs reçues</span>
{
Serial.println (<span class="str" style="color: #a31515;">"Verification du code CRC de ce resultat : VALIDE !"</span>);
}
<span class="kwrd" style="color: blue;">else</span>
{
Serial.println (<span class="str" style="color: #a31515;">"Verification du code CRC de ce resultat : NON VALIDE !"</span>);
}
<span class="rem" style="color: green;">//----- caclul de la température mesurée (enfin!) ---------</span>
Serial.println(<span class="str" style="color: #a31515;">""</span>);
Serial.println(<span class="str" style="color: #a31515;">"---- calcul de la temperature ---- "</span>);
<span class="rem" style="color: green;">//---- extraction du résultat de la mesure à partir des registres de la RAM ---</span>
data[1]=data[1] & B10000111; <span class="rem" style="color: green;">// met à 0 les bits de signes inutiles</span>
tempet=data[1]; <span class="rem" style="color: green;">// bits de poids fort</span>
tempet=tempet<<8;
tempet=tempet+data[0]; <span class="rem" style="color: green;">// bits de poids faible</span>
Serial.print (<span class="str" style="color: #a31515;">"Mesure brute ="</span>);
Serial.println (tempet);
<span class="rem" style="color: green;">// --- en mode 12 bits, la résolution est de 0.0625°C - cf datasheet DS18B20</span>
tempetf=<span class="kwrd" style="color: blue;">float</span>(tempet)*6.25;
tempetf=tempetf/100.0;
Serial.print (<span class="str" style="color: #a31515;">"Mesure Finale ="</span>);
Serial.print (tempetf,2);
Serial.println (<span class="str" style="color: #a31515;">" Degres Celsius. "</span>);
while(1); <span class="rem" style="color: green;">// stoppe loop</span>
} <span class="rem" style="color: green;">// fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin</span>
<span class="rem" style="color: green;">// ********************************************************************************</span>
<span class="rem" style="color: green;">//*************** Autres Fonctions du programme *************</span>
<span class="rem" style="color: green;">// --- Fin programme ---</span></pre>
<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="color: #666666; font-family: monospace;"><span class="Apple-style-span" style="font-size: 12px; line-height: 18px;"><i><br /></i></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
Le programme ci dessus est beaucoup trop complexe pour mes besoins, je le synthétiserai lors de la rédaction de mon programme global. Il est parfaitement fonctionnel et précis. L'eau bouillante est bien à 100°C (100,20°C donné par la sonde) et la glace à 0,20°C. Je vais continuer à faire des tests pour voir si la température qu'elle me retourne correspond bien à celle que je pourrais mesurer avec les thermomètres que j'ai chez moi.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-19878097117606266502012-02-02T08:23:00.000-08:002012-02-13T08:14:43.462-08:00Sketchup SpireJe continue à dessiner des pièces qui seront imprimable, la <a href="http://reprap.org/wiki/Huxley">Huxley</a> se monte tranquillement!!<br />
<br />
Voici donc le support de l'axe de rotation de la spire dans la cuve paterson, il se compose de 6 pièces identiques qui s'emboitent les unes dans les autres. Il faut encore que je travaille sur le système d'engrenages, que je les élargisse pour avoir la capacité de les imprimer correctement et qu'ils soient fonctionnels.<br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6801111811/" title="Printable parts de DIY Effixe, sur Flickr"><img alt="Printable parts" height="398" src="http://farm8.staticflickr.com/7022/6801111811_8b0d55be58_z.jpg" width="640" /></a><br />
<br />
Là, une vue de deux pièces<br />
<a href="http://www.flickr.com/photos/diy-effixe/6801110161/" title="Printable part X2 de DIY Effixe, sur Flickr"><img alt="Printable part X2" height="398" src="http://farm8.staticflickr.com/7147/6801110161_a4e4e32601_z.jpg" width="640" /></a><br />
<br />
Et là les mêmes deux pièces vues de côté.<br />
<a href="http://www.flickr.com/photos/diy-effixe/6801108845/" title="Printable part X2 de DIY Effixe, sur Flickr"><img alt="Printable part X2" height="398" src="http://farm8.staticflickr.com/7001/6801108845_3014ffdba3_z.jpg" width="640" /></a>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com7tag:blogger.com,1999:blog-2963745190833793443.post-76578053000247479102012-01-24T02:34:00.000-08:002012-01-24T02:34:11.907-08:00Sketchup : Support de remplissageJe rêve devant les imprimantes 3D qui deviennent de plus en plus accessible, normalement il devrait y en avoir deux opérationnelles sur Marseille dans l'année. Au rythme où avance la conception de la machine, j'espère bien pouvoir avoir accès à cette technologie.<br />
<br />
Je commence donc à penser à des pièces un peu techniques qui seraient donc imprimées.<br />
<br />
Ci dessous deux vues du système de remplissage de mes bidons qui contiendront mes chimies. La buse, en gris dans l'image, est là pour éviter les projections de liquide à la sortie du tuyau. Ne connaissant pas encore la position exacte de mes bidons, j'ai dessiné les pièces de manière à pouvoir ajuster l'orientation et la position de cette "tête".<br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6750283421/" title="refill head system2 de DIY Effixe, sur Flickr"><img alt="refill head system2" height="398" src="http://farm8.staticflickr.com/7004/6750283421_eaacfa214a_z.jpg" width="640" /></a><br />
<br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6750281187/" title="refill head system de DIY Effixe, sur Flickr"><img alt="refill head system" height="398" src="http://farm8.staticflickr.com/7011/6750281187_fe4cdff310_z.jpg" width="640" /></a><br />
<br />Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-17432577261281891472012-01-21T13:03:00.000-08:002012-01-21T13:30:46.108-08:00Les pompes.Ça fait un bon moment que le problème des pompes me tracasse. L'idée de départ étant d'avoir les contenants à chimies amovibles pour améliorer la manutention lors de la mise en place ainsi que lors du nettoyage / rangement. Pour pouvoir faire cela, il faut que mes pompes soient capables d'aspirer un contenu d'une hauteur de 50cm maximum. Il m'aurait fallut des pompes auto amorçantes ou péristaltiques mais vu le nombre nécessaire au fonctionnement de la machine, cela aurait fait un sacré budget. Du coup, en choisissant la forme visible <a href="http://diyautolab.blogspot.com/2012/01/stepper.html">ici</a> (c'est à dire des cuves à produits avec le bouchon vers le bas et ouvertes dans le fond), j'exploite la gravité du liquide pour amorcer mes pompes. Il m'est maintenant possible d'utiliser des pompes centrifuges telles que les pompes de liquide lave glace de voiture.<br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6731175389/" title="Sans titre de DIY Effixe, sur Flickr"><img alt="" height="427" src="http://farm8.staticflickr.com/7026/6731175389_8aaf3b1f5a_z.jpg" width="640" /></a><br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6731186865/" title="Sans titre de DIY Effixe, sur Flickr"><img alt="" height="640" src="http://farm8.staticflickr.com/7031/6731186865_697a764dd2_z.jpg" width="427" /></a><br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6731170427/" title="Sans titre de DIY Effixe, sur Flickr"><img alt="" height="427" src="http://farm8.staticflickr.com/7158/6731170427_1c3bf9ca09_z.jpg" width="640" /></a><br />
<br />
Une de mes contraintes était aussi de pouvoir transférer le volume utile (un peu plus que 500mL) dans un minimum de temps. Lors d'un développement qui doit durer 6 minutes, il m'est impossible d'avoir un transfert du révélateur qui dure 1 minute.<br />
<br />
J'ai donc fait le test suivant avec une bouteille de 750 mL presque pleine.<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="420" src="http://www.youtube.com/embed/u14EPqWDNbE?fs=1" width="640"></iframe><br />
<br />
<br />
<div>
moins de 12s pour vider la bouteille est à mon avis acceptable. je n'ai plus qu'à aller écumer les casses auto de marseille et attendre mes colis en provenance de HK...</div>
<div>
Affaire à suivre.</div>
<div>
<br /></div>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-41844799293480219172012-01-20T08:02:00.000-08:002012-01-20T08:02:49.937-08:00Adaptation de la cuve PatersonVoici comment je vais adapter la cuve paterson à ma machine.<br />
<br />
Il va me falloir percer la cuve le plus près possible du fond pour réduire le volume de produit restant après drainage.<br />
<a href="http://www.flickr.com/photos/diy-effixe/6731164067/" title="IMG_7870 de DIY Effixe, sur Flickr"><img alt="IMG_7870" height="427" src="http://farm8.staticflickr.com/7027/6731164067_29a68e5331_z.jpg" width="640" /></a><br />
<br />
en sortie ça ressemblera à ça :<br />
<a href="http://www.flickr.com/photos/diy-effixe/6731133413/" title="IMG_7875 de DIY Effixe, sur Flickr"><img alt="IMG_7875" height="640" src="http://farm8.staticflickr.com/7155/6731133413_f27fd55a26_z.jpg" width="640" /></a><br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6731131005/" title="IMG_7877 de DIY Effixe, sur Flickr"><img alt="IMG_7877" height="427" src="http://farm8.staticflickr.com/7028/6731131005_040058224f_z.jpg" width="640" /></a><br />
<br />
La vanne est là pour empêcher toute entrée de lumière dans la cuve une fois chargée.<br />
Il faudra ensuite raccorder le système à la machine en le vissant au flexible ci dessous, lui même raccordé à la pompe.<br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6731126313/" title="Fond de cuve paterson de DIY Effixe, sur Flickr"><img alt="Fond de cuve paterson" height="378" src="http://farm8.staticflickr.com/7158/6731126313_1cd4e85fe0_z.jpg" width="640" /></a><br />
<br />Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-64040008772254872482012-01-17T08:54:00.000-08:002012-01-19T05:04:11.820-08:00Un apperçu de ce que sera la machineLa structure est construite autour d'un bac en plastique trouvé chez Ikea. Pour l'instant je vais construire autour de ce volume. Idéalement il faudrait optimiser ce bac.<br />
Sur les modeles ci dessous, sont visibles les 5 bacs qui contiendront les chimies. Il faut qu'ils aient une capacité supérieure à 500mL qui est le volume utile pour un traitement 120/220 et qu'ils puissent rentrer dans la largeur du bac. J'ai trouvé que les réservoirs des produits pour nettoyer les vitres correspondaient assez bien à ma contrainte. <a href="http://www.hellopro.fr/images/produit-2/2/8/9/recharge-nettoyant-ajax-vitres-750ml-1353982.jpg">recharge-nettoyant.jpg</a><br />
Au dessus de ces bouteilles, se trouve le système de déplacement de la tête de remplissage. Cette partie est détaillé dans ce précédent <a href="http://diyautolab.blogspot.com/2011/06/moteur-pas-pas.html">post</a>.<br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6715117753/" title="Bac AutoLab + Stepper de DIY Effixe, sur Flickr"><img alt="Bac AutoLab + Stepper" height="428" src="http://farm8.staticflickr.com/7163/6715117753_d45b445f3e_z.jpg" width="640" /></a><br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6715116715/" title="Bac AutoLab + Stepper2 de DIY Effixe, sur Flickr"><img alt="Bac AutoLab + Stepper2" height="398" src="http://farm8.staticflickr.com/7010/6715116715_acb59aa472_z.jpg" width="640" /></a>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-56448569389349237752011-09-20T05:10:00.000-07:002012-03-17T06:35:44.277-07:00Fritzing ProjectJe viens de mettre en ligne le projet sur le site de <a href="http://fritzing.org/projects/arduino-mega-lcd-buttons-shield/">fritzing</a>.<br />
<a href="http://www.flickr.com/photos/diy-effixe/6166078538/" title="Fritzing project de DIY Effixe, sur Flickr"><img alt="Fritzing project" height="451" src="http://farm7.static.flickr.com/6156/6166078538_0a45473fca_z.jpg" width="640" /></a><br />
<br />
<br />
Il vous est possible de télécharger le projet .fzz ainsi que le code en .pde<br />
voici à quoi ressemble ce dernier :<br />
<br />
<br />
<blockquote style="text-align: left;">
<pre style="border-bottom-color: rgb(221, 221, 221); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(221, 221, 221); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(221, 221, 221); border-top-style: solid; border-top-width: 1px; font-family: 'Courier New', Courier, Monaco, 'Lucida Console', monospace; font-size: 14px; margin-bottom: 1.5em; margin-left: 0px; margin-right: 0px; margin-top: 1.5em; outline-width: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 1em; padding-left: 1em; padding-right: 1em; padding-top: 1em;"><span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; white-space: normal;"><pre class="csharpcode" style="background-color: white; color: black; font-family: Consolas, 'Courier New', Courier, monospace; font-size: small;"><span class="rem" style="color: green;">/*</span>
<span class="rem" style="color: green;"> Aruino Mega LCD Shield by Effixe</span>
<span class="rem" style="color: green;"> ommentaires, demande d'infos ou envie de participer à mon projet http://diyautolab.blogspot.com/</span>
<span class="rem" style="color: green;"> effixe@gmail.com</span>
<span class="rem" style="color: green;"> Le projet Fritizing lié à ce shield peut etre téléchargé sur le site de fritzing dans la section projets. (http://fritzing.org/projects/)</span>
<span class="rem" style="color: green;"> </span>
<span class="rem" style="color: green;">Le circuit:</span>
<span class="rem" style="color: green;"> LCD : </span>
<span class="rem" style="color: green;"> * LCD RS pin to digital pin 48</span>
<span class="rem" style="color: green;"> * LCD Enable pin to digital pin 46</span>
<span class="rem" style="color: green;"> * LCD D4 pin to digital pin 44</span>
<span class="rem" style="color: green;"> * LCD D5 pin to digital pin 42</span>
<span class="rem" style="color: green;"> * LCD D6 pin to digital pin 40</span>
<span class="rem" style="color: green;"> * LCD D7 pin to digital pin 38</span>
<span class="rem" style="color: green;"> * LCD R/W pin to ground</span>
<span class="rem" style="color: green;"></span>
<span class="rem" style="color: green;"> 4 push buttons</span>
<span class="rem" style="color: green;"> Button 01 (prev) to digital pin 41</span>
<span class="rem" style="color: green;"> Button 02 (next) to digital pin 39</span>
<span class="rem" style="color: green;"> Button 02 (exe) to digital pin 43</span>
<span class="rem" style="color: green;"> Button 02 (cancel) to digital pin 37</span>
<span class="rem" style="color: green;"> */</span>
#include <span class="rem" style="color: green;">// librairie Ecran LCD</span>
<span class="rem" style="color: green;">// Identification des boutons du shield</span>
<span class="kwrd" style="color: blue;">const</span> <span class="kwrd" style="color: blue;">int</span> B_Prev = 41;
<span class="kwrd" style="color: blue;">const</span> <span class="kwrd" style="color: blue;">int</span> B_Next = 39;
<span class="kwrd" style="color: blue;">const</span> <span class="kwrd" style="color: blue;">int</span> B_Exe = 43;
<span class="kwrd" style="color: blue;">const</span> <span class="kwrd" style="color: blue;">int</span> B_Cancel = 37;
<span class="rem" style="color: green;">// Initialisation du LCD</span>
LiquidCrystal lcd(48, 46, 44, 42, 40, 38); <span class="rem" style="color: green;">//Arduino Mega Shield </span>
<span class="kwrd" style="color: blue;">void</span> setup () {
lcd.begin(16,2); <span class="rem" style="color: green;">//initialisation affichage LCD 16x2 lignes</span>
<span class="rem" style="color: green;">// Parametres des boutons</span>
pinMode(B_Prev, INPUT);
pinMode(B_Next, INPUT);
pinMode(B_Exe, INPUT);
pinMode(B_Cancel, INPUT);
}
<span class="kwrd" style="color: blue;">void</span> loop() {
<span class="kwrd" style="color: blue;">if</span> (digitalRead(B_Prev)==HIGH) { <span class="rem" style="color: green;">// bouton de gauche</span>
lcd.clear();
lcd.print(<span class="str" style="color: #a31515;">" Hello World "</span>);
}
<span class="kwrd" style="color: blue;">if</span> (digitalRead(B_Next)==HIGH) { <span class="rem" style="color: green;">// bouton de droite</span>
lcd.clear();
lcd.print(<span class="str" style="color: #a31515;">" Bonjour Monde "</span>);
}
<span class="kwrd" style="color: blue;">if</span> (digitalRead(B_Exe)==HIGH) { <span class="rem" style="color: green;">// bouton du bas</span>
lcd.clear();
lcd.print(<span class="str" style="color: #a31515;">"Buenos dias mundo"</span>);
}
<span class="kwrd" style="color: blue;">if</span> (digitalRead(B_Cancel)==HIGH) { <span class="rem" style="color: green;">// bouton du haut</span>
lcd.clear();
lcd.print(<span class="str" style="color: #a31515;">"Buongiorno Monda"</span>);
}
}</pre>
</span></pre>
</blockquote>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-6519999109649568072011-09-19T13:54:00.000-07:002012-01-24T02:45:31.444-08:00Arduino Mega LCD Shield fonctionnel!j'ai enfin récupéré les connections pour rendre le shield empilable avec l'arduino méga.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.lextronic.fr/doc/produit/img1_19175_1300480416.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="106" src="http://www.lextronic.fr/doc/produit/img1_19175_1300480416.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Je n'ai pas trouvé la même chose compatible avec le bloc de 36 broches de l'arduino mega, j'ai donc utilisé 8 <a href="http://www.lextronic.fr/P19176-connecteur-malelongfemelle-8-points-pour-arduino.html">Connecteurs mâle(long)/femelle 8 points pour Arduino</a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Voici donc le shield en action! </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<a href="http://www.flickr.com/photos/diy-effixe/6164067346/" title="Arduino Mega LCD Shield_bb de DIY Effixe, sur Flickr"><img alt="Arduino Mega LCD Shield_bb" height="427" src="http://farm7.static.flickr.com/6177/6164067346_8cf22e11e9_z.jpg" width="640" /></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Je vais préparer les fichiers pour importer sur le site de <a href="http://fritzing.org/projects/">fritzing</a> le design et une base de code nécessaire pour afficher un classique Hello World en 4 langues histoire de montrer comment utiliser les 4 boutons. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-55438974586367156772011-09-08T02:49:00.000-07:002012-09-07T14:24:28.676-07:00Gravure de la platine du LCD ShieldVoici donc la platine issue du <a href="http://diyautolab.blogspot.com/2011/09/arduino-mega-lcd-shield.html">précédent post</a>, la gravure a été faite avec la même technique que le <a href="http://diyautolab.blogspot.com/2011/06/arduino-lcd-4-push-buttons-shield.html">précédent shield</a>, impression laser transférée sur le cuivre puis oxydée avec du perchlorure de fer.<br />
Cette fois ci le transfert s'est bien passé seule une petite zone de la face du dessus a eut un problème (mais sans influence sur le fonctionnement de la platine par chance).<br />
Face du dessus :<br />
<a href="http://www.flickr.com/photos/diy-effixe/6125181745/" title="Arduino Mega LCD Shield Top view de DIY Effixe, sur Flickr"><img alt="Arduino Mega LCD Shield Top view" height="427" src="http://farm7.static.flickr.com/6185/6125181745_454b2ef202_z.jpg" width="640" /></a><br />
<br />
Face du dessous :<br />
<a href="http://www.flickr.com/photos/diy-effixe/6125184123/" title="Arduino Mega LCD Shield Bottom View de DIY Effixe, sur Flickr"><img alt="Arduino Mega LCD Shield Bottom View" height="427" src="http://farm7.static.flickr.com/6208/6125184123_e4bf9d228a_z.jpg" width="640" /></a>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-45846953569314388422011-09-05T15:13:00.000-07:002012-01-24T02:43:36.314-08:00Arduino Mega LCD ShieldUn petit design d'une carte fille pour l'Arduino Mega.<br />
Un afficheur LCD 16x2, 4 boutons poussoir et un potentiomètre pour faire varier le contraste de l'écran.<br />
Cette semaine je passe à la réalisation<br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6125195475/" title="Artduino Mega LCD Shield_bb de DIY Effixe, sur Flickr"><img alt="Artduino Mega LCD Shield_bb" height="297" src="http://farm7.static.flickr.com/6068/6125195475_31c40a8cf4_z.jpg" width="640" /></a><br />
<br />
<br />
cette fois-ci, je vais mieux exploiter la fonction double face des pcb, ce que je n'avais pas fait lors du précédent shield. En jaune le tracé de la vue de dessus et en orange la face d'en dessous. Globalement l'alimentation est sur la face du dessous et toutes les connections avec l'arduino sur la face du dessus.<br />
<br />
<a href="http://www.flickr.com/photos/diy-effixe/6125195335/" title="Artduino Mega LCD Shield_pcb de DIY Effixe, sur Flickr"><img alt="Artduino Mega LCD Shield_pcb" height="351" src="http://farm7.static.flickr.com/6197/6125195335_4e0262bf9b_z.jpg" width="640" /></a>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com2tag:blogger.com,1999:blog-2963745190833793443.post-38346511858254113152011-08-21T04:18:00.000-07:002011-09-24T08:58:20.693-07:00Arduino Mega designJe reprend le projet petit à petit après l'avoir délaissé un temp.<br />
J'ai donc décidé de refaire un shield pour l'arduino mega qui comprendrait les différents éléments que j'ai testé plus bas, comme la puce L293 qui me sert à contrôler un moteur pas à pas. Pour l'instant dans la conception de la machine, je pense n'en avoir besoin que d'un seul mais je m'en suis rajouté une puce de plus au cas où...<br />
<a href="http://www.flickr.com/photos/diy-effixe/6064592479/" title="AutoLab Bread Board View de DIY Effixe, sur Flickr"><img alt="AutoLab Bread Board View" height="442" src="http://farm7.static.flickr.com/6069/6064592479_142c505816_z.jpg" width="640" /></a><br />
<br />
la vue de developpement ci dessus est un peu difficile à comprendre mais à priori tout est bien connecté.<br />
Voici la vue de la platine :<br />
<a href="http://www.flickr.com/photos/diy-effixe/6065140868/" title="AutoLab PCB View de DIY Effixe, sur Flickr"><img alt="AutoLab PCB View" height="441" src="http://farm7.static.flickr.com/6197/6065140868_3129bd71b8_z.jpg" width="640" /></a><br />
Avec en jaune les circuits de la face de dessus et en orange les circuits de la face de dessous.<br />
Il me reste encore un peu de place pour pouvoir ajouter des éléments si j'en ai besoin.<br />
<br />
Avec la nouvelle version de Fritzing, il y a une fonction commander son circuit imprimé (Order PCB) qui pointe vers cette adresse : <a href="http://fab.fritzing.org/fritzing-fab">fritzing-fab</a><br />
Le site nous propose d'envoyer notre design et de le réaliser, franchement au vue des finitions et du temps que je pourrais passer dessus à le faire, je pense que je vais tenter de la faire réaliser.<br />
ci dessous un exemple de la finition qu'ils proposent.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://fab.fritzing.org/++resource++fritzing.fab/threePCBs1200.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="328" src="http://fab.fritzing.org/++resource++fritzing.fab/threePCBs1200.jpg" width="640" /></a></div>
<br />
<br />Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-63508252929947009132011-06-14T06:05:00.000-07:002012-03-17T06:36:58.131-07:00Moteur pas à pas.Bon, globalement les articles précédents étaient des mises à jour sur ce que j'avais déjà produit pendant l'année. Un des points qui me posait quelques problèmes était le système qui devait répartir le contenu de ma cuve de développement dans les différents bouteilles qui contenaient les produits (ce ne sont pas des produits à usage unique).<br />
J'avais construit un système basé sur le contrôle d'un <a href="http://diyautolab.blogspot.com/2011/06/h-bridge-21112010.html">moteur DC</a> piloté à l'aide d'un HBridge. Mais le système manquait cruellement de précision. Je suis donc passé au contrôle de <a href="http://fr.wikipedia.org/wiki/Moteur_pas_%C3%A0_pas">Moteur pas à pas (wiki)</a> récupéré sur une imprimante Epson C62 HS (5 euros dans une brocante) qui contenait deux moteurs pas à pas.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm6.static.flickr.com/5077/5832538660_b8c3b26668_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="298" src="http://farm6.static.flickr.com/5077/5832538660_b8c3b26668_z.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.instructables.com/files/deriv/FEB/2V0A/GYGENQJU/FEB2V0AGYGENQJU.MEDIUM.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.instructables.com/files/deriv/FEB/2V0A/GYGENQJU/FEB2V0AGYGENQJU.MEDIUM.gif" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
Le branchement et la programation de ce type de moteur est bien plus compliquée qu'un simple switch ON/OFF, il faut envoyer une séquence de signal alternativement sur les deux bobines qui compose ce type de moteur. Pour pouvoir gérer ces moteurs de manière plus simple qu'avec mon HBridge fait avec 4 NPN, je me suis commandé une puce (qui contient 2 Hbridge nécéssaire au fonctionnement d'un moteur pas à pas.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.elektroda.pl/rtvforum/files-rtvforum/ckt_mtr_1826.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.elektroda.pl/rtvforum/files-rtvforum/ckt_mtr_1826.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Pour le branchement, après avoir identifié le circuit du moteur, j'ai suivi ce tuto : <a href="http://tmmbach.net/2010/08/05/driving-a-bipolar-stepper-motor-forward-and-backward-with-l293d-or-sn754410/">driving-a-bipolar-stepper-motor-forward-and-backward-with-l293d</a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/_7GPjaQGbzbM/TFohE0GIU1I/AAAAAAAAAC8/zCXT1frAr6c/L293D_steppermotor_Steckplatine.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="425" src="http://1.bp.blogspot.com/_7GPjaQGbzbM/TFohE0GIU1I/AAAAAAAAAC8/zCXT1frAr6c/L293D_steppermotor_Steckplatine.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<blockquote style="text-align: left;">
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, Monaco, 'Lucida Console', monospace; font-size: 14px; line-height: 20px; white-space: pre;"></span><br />
<pre style="border: 1px solid rgb(221, 221, 221); font-family: 'Courier New',Courier,Monaco,'Lucida Console',monospace; font-size: 14px; line-height: 1.5em; margin: 1.5em 0px; outline-width: 0px; overflow: auto; padding: 1em;"><span class="Apple-style-span" style="font-family: 'Courier New', Courier, Monaco, 'Lucida Console', monospace; font-size: 14px; line-height: 20px; white-space: pre;"><span class="Apple-style-span" style="color: white;"><span class="Apple-style-span" style="background-color: black;"><steps;i++){><steps;i++){>
</steps;i++){></steps;i++){></span></span></span><span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; line-height: normal; white-space: normal;"><pre class="csharpcode" style="background-color: white; color: black; font-family: Consolas, 'Courier New', Courier, monospace; font-size: small;"><span class="rem" style="color: green;">// Arduino Code:</span>
<span class="rem" style="color: green;">//declaration of PINS that connected the wire to motor</span>
<span class="kwrd" style="color: blue;">int</span> blanc4 = 2;
<span class="kwrd" style="color: blue;">int</span> jaune3 = 3;
<span class="kwrd" style="color: blue;">int</span> blanc2 = 4;
<span class="kwrd" style="color: blue;">int</span> jaune1 = 5;
<span class="kwrd" style="color: blue;">int</span> B_init0 = 50; <span class="rem" style="color: green;">//push button to stop init position</span>
<span class="kwrd" style="color: blue;">int</span> prod = 0; <span class="rem" style="color: green;">//what king of chemical is in use (0 for junk)</span>
<span class="kwrd" style="color: blue;">int</span> distance = 0;
<span class="rem" style="color: green;">//debug Leds //</span>
<span class="kwrd" style="color: blue;">int</span> LedRefill = 41;
<span class="kwrd" style="color: blue;">int</span> LedInit = 32;
<span class="rem" style="color: green;">//this is the time to wait in every single step</span>
<span class="kwrd" style="color: blue;">int</span> delayTime = 3;
<span class="rem" style="color: green;">//set the pin for OUTPUT</span>
<span class="kwrd" style="color: blue;">void</span> setup() {
pinMode(blanc4, OUTPUT);
pinMode(jaune3, OUTPUT);
pinMode(jaune1, OUTPUT);
pinMode(blanc2, OUTPUT);
pinMode(B_init0, INPUT);
pinMode(LedRefill, OUTPUT);
pinMode(LedInit, OUTPUT);
<span class="rem" style="color: green;">// Init position //</span>
while (digitalRead(B_init0) == LOW) {
initialisationPosition();
digitalWrite(LedInit, LOW);
}
}
<span class="kwrd" style="color: blue;">void</span> loop() {
<span class="kwrd" style="color: blue;">for</span> (<span class="kwrd" style="color: blue;">int</span> i=0;i<6;i++){
prod = i;
delay(500);
Refill(distance);
delay(500);
}
}
<span class="rem" style="color: green;">// Functions //</span>
<span class="kwrd" style="color: blue;">void</span> initialisationPosition(){
digitalWrite(LedInit, HIGH);
backward(10);
}
<span class="kwrd" style="color: blue;">void</span> Refill(<span class="kwrd" style="color: blue;">int</span> distance){
distance = prod*(380/5-2);
forward(distance);
digitalWrite(LedRefill, HIGH);
delay(1000);
digitalWrite(LedRefill, LOW);
backward(distance);
}
<span class="kwrd" style="color: blue;">void</span> forward(<span class="kwrd" style="color: blue;">int</span> steps){
<span class="kwrd" style="color: blue;">for</span>(<span class="kwrd" style="color: blue;">int</span> i=0;i
<span class="rem" style="color: green;">// in every phase 2 wires is up and 2 is down</span>
digitalWrite(blanc4, LOW);
digitalWrite(jaune3, HIGH);
digitalWrite(blanc2, HIGH);
digitalWrite(jaune1, LOW);
delay(delayTime);
digitalWrite(blanc4, LOW);
digitalWrite(jaune3, HIGH);
digitalWrite(blanc2, LOW);
digitalWrite(jaune1, HIGH);
delay(delayTime);
digitalWrite(blanc4, HIGH);
digitalWrite(jaune3, LOW);
digitalWrite(blanc2, LOW);
digitalWrite(jaune1, HIGH);
delay(delayTime);
digitalWrite(blanc4, HIGH);
digitalWrite(jaune3, LOW);
digitalWrite(blanc2, HIGH);
digitalWrite(jaune1, LOW);
delay(delayTime);}
}
<span class="kwrd" style="color: blue;">void</span> backward (<span class="kwrd" style="color: blue;">int</span> steps){
<span class="kwrd" style="color: blue;">for</span>(<span class="kwrd" style="color: blue;">int</span> i=0;i
digitalWrite(blanc4, HIGH);
digitalWrite(jaune3, LOW);
digitalWrite(blanc2, HIGH);
digitalWrite(jaune1, LOW);
delay(delayTime);
digitalWrite(blanc4, HIGH);
digitalWrite(jaune3, LOW);
digitalWrite(blanc2, LOW);
digitalWrite(jaune1, HIGH);
delay(delayTime);
digitalWrite(blanc4, LOW);
digitalWrite(jaune3, HIGH);
digitalWrite(blanc2, LOW);
digitalWrite(jaune1, HIGH);
delay(delayTime);
digitalWrite(blanc4, LOW);
digitalWrite(jaune3, HIGH);
digitalWrite(blanc2, HIGH);
digitalWrite(jaune1, LOW);
delay(delayTime);
}
}</pre>
</span></pre>
</blockquote>
<div class="separator" style="clear: both; text-align: left;">
On peut voir dans le code la séquence des pins à activer pour avoir un mouvement dans un sens forward() et dans l'autre backward().</div>
<div class="separator" style="clear: both; text-align: left;">
J'ai vu qu'il y avait d'autres solutions pour avoir le meme résultat. Pour l'instant avec ce code adapté à mes besoins, ça fonctionne. J'irai voir un peu plus tard si j'ai moyen d'optimiser tout ça.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
J'ai donc programmé une boucle qui dit de déplacer la tête de 6 étapes en s'arretant à chaque étape et en activant une LED rouge pendant 1 seconde puis retour à la position 0 pour toujours savoir où se trouve la tête (la position 0 sera l'endroit où se trouvera le collecteur vers l'évier pour éviter toute fuite au dessus d'un de mes bacs). Le contrôle de cette LED étant exactement le même signal que pour l'activation d'un transistor NPN, donc si la LED s'allume, la pompe s'activera.</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/0OUoyO8oKJs" width="560"></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Je vais maintenant reporter le circuit de la platine de développement sur fritzing pour commencer à designer la carte fille de l'Arduino Mega.</div>
<div style="text-align: center;">
<br /></div>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-28490310913702065432011-06-10T11:01:00.000-07:002011-09-24T08:59:58.761-07:00Arduino LCD + 4 push Buttons SHIELDAprès avoir dessiné le circuit imprimé à l'aide de Fritzing,<br />
N'ayant pas d'insoleuse pour PCB, j'ai employé une autre technique. Je me suis imprimé les deux faces du circuit sur du papier photo (en miroir).<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/QQupRXEqOz4?feature=player_embedded' frameborder='0'></iframe></div>
<br />
J'ai utilisé à peu près la meme technique ce dans cette vidéo.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm6.static.flickr.com/5082/5264242632_63a651fa21.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://farm6.static.flickr.com/5082/5264242632_63a651fa21.jpg" /> </a><a href="http://www.flickr.com/photos/effixe/5263635935/" title="07 dev board for a DIY Autolab (V0.5) de effixe, sur Flickr"><img alt="07 dev board for a DIY Autolab (V0.5)" height="333" src="http://farm6.static.flickr.com/5207/5263635935_0b3c7ece86.jpg" width="500" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.flickr.com/photos/effixe/5264245520/" title="LCD + 4 push buttons Aduino Shield de effixe, sur Flickr"><img alt="LCD + 4 push buttons Aduino Shield" height="333" src="http://farm6.static.flickr.com/5246/5264245520_650467c60a.jpg" width="500" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.flickr.com/photos/effixe/5263633187/" title="LCD + homemade LCD shield + 4 push buttons de effixe, sur Flickr"><img alt="LCD + homemade LCD shield + 4 push buttons" height="333" src="http://farm6.static.flickr.com/5007/5263633187_777f364b24.jpg" width="500" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.flickr.com/photos/effixe/5264244638/" title="My first Arduino Shield de effixe, sur Flickr"><img alt="My first Arduino Shield" height="333" src="http://farm6.static.flickr.com/5121/5264244638_8b31593ff6.jpg" width="500" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Le transfert de l'encre cuite n'a pas bien fonctionné sur la face du dessus (au niveau des résistances) mais par chance, cette zone n'était pas nécessaire, les connections se font majoritairement sur la face du dessous.</div>
<div class="separator" style="clear: both; text-align: left;">
Cette platine est destinée uniquement au développement du système de menu. Comme un ami me donne un coup de main dans la programmation de cette partie, je lui ai fait cette platine pour qu'il puisse utiliser le système sans avoir à se prendre la tête sur les connections.</div>
<div class="separator" style="clear: both; text-align: left;">
Il est donc possible de réaliser des circuits imprimés sans avoir de matos en particulier (mis à part l'imprimante laser et du perchlorure de fer pour l'oxydation du cuivre)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-7861261035293869032011-06-09T10:44:00.000-07:002011-09-24T09:01:59.877-07:00Arduino MegaApres avoir testé le LCD et les boutons, j'ai vite fait un calcul et me suis rendu compte qu'il allait me falloir bien plus de pin digital que ce que me permet l'arduino duemillanove. Avec le LCD et les 4 boutons, il ne me reste plus que 4 pins digital or il m'en faut pour l'instant en plus : au moins 4 pour un H-bridge, 7 pour les pompes, 1 pour le système de chauffage, 1 pour la rotation de la spire, 1 pour le mélangeur du bain marie... bref, il me faut donc une version plus large de l'Arduino : l'Arduino Méga !<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://arduino.cc/en/uploads/Main/ArduinoMega.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="332" src="http://arduino.cc/en/uploads/Main/ArduinoMega.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
avec ses 54 pins digital, ça devrait faire l'affaire... je l'ai trouvé pour moins de 30 euros fdp in.</div>
Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com2tag:blogger.com,1999:blog-2963745190833793443.post-57429409404298112282011-06-09T10:35:00.000-07:002011-09-24T09:01:33.746-07:00Frtitzing<div class="separator" style="clear: both; text-align: center;">
<a href="http://fritzing.org/media/uploads/headers/home.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="http://fritzing.org/media/uploads/headers/home.jpg" width="640" /></a></div>
<br />
<a href="http://fritzing.org/">Fritzing</a> est un shareware génial!<br />
Il permet de reproduire le montage que l'on a développé sur notre breadboard et à partir de là, produire le schéma technique ainsi que le circuit imprimé qui sera gravé et recevra les composants.<br />
<br />
<br />
<br />
<br />
Du coup je me suis fait mon propre LCD Shield et ses 4 boutons.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm6.static.flickr.com/5090/5263627269_3b432aa695_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="450" src="http://farm6.static.flickr.com/5090/5263627269_3b432aa695_z.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Et là la vue du circuit imprimé après avoir dessiné tout le routage des différents composants. </div>
<div class="separator" style="clear: both; text-align: left;">
Petit problème idiot mais il faut y penser, pour faire un shield (ou platine mâle qui vient s'emboiter dans les ports de l'Arduino), il faut que le PCB soit double face... </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm6.static.flickr.com/5081/5264239214_2f780bd121_b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="450" src="http://farm6.static.flickr.com/5081/5264239214_2f780bd121_b.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
vous pouvez retrouver les fichiers sources sur le site de Fitzing.org/projects, je l'ai uploadé pour la communauté. <a href="http://fritzing.org/projects/arduino-lcd-4-push-buttons/">projects/arduino-lcd-4-push-buttons/</a>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-34133496452428062692011-06-09T10:14:00.000-07:002011-09-24T09:00:49.837-07:00H-Bridge (21/11/2010)<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm5.static.flickr.com/4131/5194395629_ffcece43b0_b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="425" src="http://farm5.static.flickr.com/4131/5194395629_ffcece43b0_b.jpg" width="640" /></a></div>
<br />
<br />
Mon premier H-Bridge fait à partir de 4 transistors NPN (2N2222)<br />
<br />
La machine doit être capable de déplacer la sortie du tube de drainage de la cuve principale au dessus des différents bidons ou collecteur des eaux usées. Il faut pour cela être capable de contrôler le sens de rotation d'un moteur DC, c'est là qu'intervient un pont en H<br />
Le montage suit ce schéma :<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.instructables.com/image/FCTCP0WFYYNDQD1/H-Bridge-Theory.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="205" src="http://www.instructables.com/image/FCTCP0WFYYNDQD1/H-Bridge-Theory.jpg" width="400" /></a></div>
<br />
<br />
En activant les switch S1 et S4 le courant passe dans le moteur et le fait tourner dans une sens et en activant S3 et S4 le sens de rotation s'inverse.Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-46820546439079650642011-06-09T10:05:00.000-07:002011-09-24T09:02:25.713-07:00Mon Arduino me parleEt oui, premiers pas avec l'affichage LCD (17/11/2010)<br />
<div style="text-align: center;">
<a href="http://www.flickr.com/photos/effixe/5194997926/" title="DIY Autolab LCD screen de effixe, sur Flickr"><img alt="DIY Autolab LCD screen" height="333" src="http://farm5.static.flickr.com/4088/5194997926_4676d77d58.jpg" width="500" /></a></div>
Et seulement deux push buttonsAnonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0tag:blogger.com,1999:blog-2963745190833793443.post-65236383087221552942011-06-09T09:36:00.000-07:002012-03-11T07:17:50.223-07:00je rattrape mon retard...... dans la rédaction de ce blog (une bonne année depuis les premiers tests avec l'Arduino)...<br />
<br />
je vais donc un peu synthétiser mes essais/erreurs que j'ai rencontré.<br />
Tout d'abord il fallait que je segmente mes chantiers en fonction des besoins de la machine.<br />
Globalement, pour développer un film (120 ou 135) il faut suivre plusieurs étapes :<br />
Le chargement du film dans la cuve ensuite viennent les bains de développement, d'arrêt, de fixation et enfin de rinçage. Dans certain cas comme avec des films couleur, le nombre de bains peut augmenter.<br />
J'ai détaillé le process pour un développement en C41 avec les chimies Rollei : <a href="http://h0lg4.org/viewtopic.php?t=25284">Forum h0lg4</a><br />
<br />
Le chargement du film se faisant au noir complet, cette manipulation ne sera pas mécanisée.<br />
La machine doit donc être capable de :<br />
<br />
<ol>
<li>Interagir avec l'utilisateur pour les choix de développement</li>
<li>Chauffer un bain marie</li>
<li><a href="http://diyautolab.blogspot.com/2012/01/les-pompes.html">Drainer les différents produits</a></li>
<li>Faire tourner la spire (<a href="http://diyautolab.blogspot.com/2012/02/sketchup-spire.html">ébauche de système</a>)</li>
</ol>
1. Interagir avec l'utilisateur pour les choix de développement :<br />
<div>
<div>
<div>
<ul>
<li>Affichage d'un menu sur un LCD</li>
<li>Sélection par bouton poussoir</li>
<li>Affichage de différentes infos pendant le développement comme la température des bains, le type de produit en cours de traitement...</li>
</ul>
<blockquote>
<a href="http://diyautolab.blogspot.com/2011/06/frtitzing.html">design d'un circuit test LCD + boutons</a></blockquote>
<blockquote>
<a href="http://diyautolab.blogspot.com/2011/06/arduino-lcd-4-push-buttons-shield.html">réalisation de la platine fille LCD + boutons pour l'Arduino</a> </blockquote>
<ul></ul>
<blockquote>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<a href="http://diyautolab.blogspot.com/2011/09/arduino-mega-lcd-shield.html">LCD Shield pour l'Arduino Mega</a></div>
</blockquote>
<blockquote>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<a href="http://diyautolab.blogspot.com/2011/09/gravure-de-la-platine-du-lcd-shield.html">Gravure du shield LCD Mega</a></div>
</blockquote>
<br />
2. Chauffer un bain marie </div>
</div>
</div>
<div>
<ul>
<li>Contrôle de la température</li>
<li>Activation d'un système de chauffage </li>
<li>Mélangeur magnétique</li>
</ul>
<blockquote>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<a href="http://diyautolab.blogspot.com/2012/02/sonde-thermique-avec-larduino.html">Sonde thermique numérique</a> </div>
</div>
</blockquote>
<blockquote>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<a href="http://diyautolab.blogspot.com/2012/03/melangeur-magnetique.html">Mélangeur magnétique</a> </div>
</div>
</div>
</blockquote>
3. Drainer les différents produits</div>
<div>
<ul>
<li>Contrôle de <a href="http://diyautolab.blogspot.com/2012/01/les-pompes.html">pompes</a></li>
<li>Contrôle d'un <a href="http://diyautolab.blogspot.com/2012/01/sketchup-support-de-remplissage.html">dispacheur</a> pour renvoyer les produits dans leurs bidons</li>
</ul>
<blockquote>
<a href="http://diyautolab.blogspot.com/2011/06/h-bridge-21112010.html">Premier essai d'un moteur DC + HBridge</a></blockquote>
<blockquote>
<a href="http://diyautolab.blogspot.com/2011/06/moteur-pas-pas.html">La mécanique finale avec un moteur pas à pas.</a> </blockquote>
<blockquote>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<a href="http://diyautolab.blogspot.com/2012/01/sketchup-support-de-remplissage.html">Support de remplissage</a></div>
<div>
</div>
</blockquote>
<br />
<ul></ul>
</div>
<div>
4. Faire tourner une spire</div>
<div>
<ul>
<li>activation d'un moteur (après avoir fait le reste, c'est de la rigolade! ^^)</li>
</ul>
</div>
<div>
Pour l'instant l'ensemble de ces fonctions devraient répondre à mes besoins.</div>
<div>
je détaillerai les différents points dans d'autres posts.</div>Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0Roucas-Blanc, Marseille, France43.2885617541563 5.371139270576463843.2800852541563 5.3634982705764642 43.2970382541563 5.3787802705764634tag:blogger.com,1999:blog-2963745190833793443.post-88683415689168094132011-06-09T09:08:00.000-07:002011-11-08T05:39:49.151-08:00Bienvenue!Premier post sur le blog qui sera consacré à mon projet de machine contrôlée par un Arduino <a href="http://www.arduino.cc/">http://www.arduino.cc/</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://numuscus.pascsaq.org/wp-content/uploads/2010/01/ArduinoDiecimilaComponents.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="364" src="http://numuscus.pascsaq.org/wp-content/uploads/2010/01/ArduinoDiecimilaComponents.jpg" width="640" /></a></div>
<br />
Ce micro contrôleur m'attire depuis un bon moment et je me suis décidé à enfin faire autre chose que faire clignoter une led...<br />
<br />
<br />
Cette machine réalisera le processus de développement de films photo.<br />
<br />
L'utilisateur aura le choix des différents développements possibles : C41 - E6 -N/B. Avec à chaque fois un choix de différentes températures de traitement possible. Pour l'instant je reste sur un choix assez basique bien que suffisant dans la plus grande partie de mes développements.<br />
<br />
Globalement, la machine devra donc gérer la mise en chauffe des bains, le transfert des différents fluides nécessaire au processus, la rotation de la spire etc...<br />
<br />
<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/10451159420545629121noreply@blogger.com0