Projet

Général

Profil

Hardware » Historique » Révision 31

Révision 30 (Baptiste Pelouas, 04/01/2015 16:19) → Révision 31/40 (Baptiste Pelouas, 04/01/2015 16:21)

Hardware
========

La Platine3D avec tout ses composants matériels.
La mécanique, l'électronique mais aussi le code de l'arduino.

Le plateau
----------

<img src="http://redmine.acolab.fr/attachments/download/56/iso_schema_plateau.png" height="154" width="319" title="schema rapide plateau" alt="schema rapide plateau">

Diamètre du plateau= 30cm

Son entrainement est réalisé par un moteur pas-a-pas (*récupérer dans une imprimante*) via une courroie (démultiplication ~ 1:2).
Le pilotage est réalisé par un double pont en H (*récupérer dans une imprimante*): <a href="http://redmine.acolab.fr/attachments/download/54/DSA-249779.pdf">ha13421 a</a>. Le circuit ne pourra pas faire micro-steping... Il faudra 2 connection sur l'arduino pour le piloter.

La solution simple pour savoir l'angle de rotation effectif est de "faire confiance" au nombre de pas que l'on demande au moteur puis de le multiplier par la démultlipication de la courroie. Malheureusement, après quelque test, il s'est avéré que mon moteur saute parfois des pas (charge trop lourde ou vitesse trop élevée...

J'ai donc choisi de mettre en place un système de mesure d'angle directement sur l'arbre du plateau. Mon choix s'est porté sur un codeur incrémental.

### Le codeur incrémental

* Il faut un disque codé (*récupérer dans une imprimante sur l'arbre d'entrainement du papier*): il s'agit d'un disque en plastique transparent sur lequel est imprimé a intervalle régulier des traits radiaux (sur le mien 100 marque).
* Puis le capteur proprement dit (*tant qu'a faire celui qui été avec le disque sur l'imprimante*): c'est généralement un assemblage d'une LED infrarouge et, en face, de 2 photo-diodes (même principe que des diodes schottky, donc a branché a l'envers par rapport a une LED).

Le laser
--------

<img src="http://redmine.acolab.fr/attachments/download/55/iso_schema_laser.png" height="154" width="319" title="schema rapide laser" alt="schema rapide laser">

### Du laser au laser plan

Pour avoir un faisceau laser plan, il un laser (ex: un pointeur laser) puis intercalé une lentille plan (ex: un cilyndre de verre de largeur du faisceau). Ou plus simplement l'acheter tout fait, dans un magasin de bricolage, un niveau de chantier bas de gamme (c.a.d: un laser + une lentille plan + une ou deux bulles) pour a peux près 10 a 15 euros... *(je n'en ai pas trouver dans les rebus électroniques)*

### Positionner le faisceau plan

BUT: Pouvoir diriger le faisceau laser précisément en angle:

<blockquote>
***précision
<blockquote>***précision requise*** Horyzontal: ±1mm pour le point scanné. Donc sur le point C.

Or <notextile>10cm < b < 40cm , bmax=40cm.</notextile>

aTan( 0.001/0.40 ) = ±0.1432°

Donc, si on prend une marge, disont facteur 2 soit ±0.5mm pour le point scanné,

la précision angulaire sera aTan( 0.0005/0.40 )= ±0.0716°.

Pour arrondir on prendra <b> ±0.05° </b>
</blockquote>

Solutions possibles:

* fixer le laser sur l'axe d'un **moteur pas-a-pas**) puis piloter ce dernier. >> simple, mais poids+alimentation+centrage du laser; et précision limité par le moteur>> Non essayé.
* laser fixe + miroir en rotation constante et régulière (fixé sur un **spindle motor**). Solution que l'on trouve dans les imprimantes laser avec un miroir polygonal. Le laser fonctionne par impulsion a la fréquence de rotation du **spindle motor** (pour que laser pointe dans une direction fixe). >> compliqué ?; faisceau laser != faisceau laser plan, donc besoin d'une surface de miroir large et haute >> Non essayé.
* laser fixe + miroir fixé sur un **<a href="http://en.wikipedia.org/wiki/Voice_coil">VC</a>M** (***Voice Coil Motor***). Les VCM ont beaucoup d'application, la plus basique est le haut-parleur. Mais il y en aussi un dans chaque disque-dur pour positionner la tête de lecture sur le disque ( <ins>en angle</ins> ). Pour ce faire une idée, ce projet: <a href="http://ele-tech.com/html/diy-swing-led-clock-of-creative-design.html">DIY swing LED clock of creative design</a>. Ce n'est pas exactement ce que je cherche puisque le VCM est piloté en tout ou rien. Pour reproduire le système en place dans les disques-durs, il faut asservir le courant dans la bobine (*Coil*) avec une "closed-loop". Ainsi cette dernière peut garder une position fixe selon la **consigne** que l'on injecte dans la "closed-loop".

<img src="http://redmine.acolab.fr/attachments/download/58/vcm_ouvert.jpg" title="vcm_ouvert" alt="vcm_ouvert">

L'arduino
---------

La webcam
---------

<img src="http://redmine.acolab.fr/attachments/download/57/iso_schema_webcam.png" height="154" width="319" title="schema rapide webcam" alt="schema rapide webcam">

Dans l'enthousiasme de la découverte du projet GGG, je suis allé acheté la webcam utilisé dans un magasin de jeu vidéo. Il m'en a couté 5 euros pour une PlayStation Eye d'occasion.
Ci-dessous la description wikipedia:

<div>
<div class="images"><a href="//commons.wikimedia.org/wiki/File:PlayStation-Eye.png?uselang=fr" class="image"><img alt="alt=Description de cette image, également commentée ci-après" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/80/PlayStation-Eye.png/220px-PlayStation-Eye.png" width="110" height="114" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/80/PlayStation-Eye.png/330px-PlayStation-Eye.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/80/PlayStation-Eye.png/440px-PlayStation-Eye.png 2x" data-file-width="2320" data-file-height="2400"></a></div>
<p class="legend">PlayStation Eye</p>
<table>
<caption class="hidden">Données clés</caption>
<tbody><tr>
<th scope="row">Fabricant</th>
<td><a href="http://fr.wikipedia.org/wiki/Sony_Computer_Entertainment" title="Sony Computer Entertainment">Sony Computer Entertainment</a></td>
</tr>
<tr>
<th scope="row">Interface</th>
<td><a href="http://fr.wikipedia.org/wiki/Universal_Serial_Bus" title="Universal Serial Bus">USB</a> 2.0<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite_crochet">[</span>1<span class="cite_crochet">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite_crochet">[</span>2<span class="cite_crochet">]</span></a></sup></td>
</tr>
<tr>
<th scope="row">Connecteur</th>
<td><a href="http://fr.wikipedia.org/wiki/Universal_Serial_Bus" title="Universal Serial Bus">USB-A</a></td>
</tr>
<tr>
<th scope="row">Dimensions (<a href="http://fr.wikipedia.org/wiki/Millim%C3%A8tre" title="Millimètre">mm</a>)</th>
<td>84 × 57 × 67</td>
</tr>
<tr>
<th scope="row">Poids</th>
<td>173 <a href="http://fr.wikipedia.org/wiki/Gramme" title="Gramme">g</a></td>
</tr>
<tr>
<th scope="row">Résolutions</th>
<td>640×480 <a href="http://fr.wikipedia.org/wiki/Pixel" title="Pixel">pixels</a> en 60 Hz<br>
320x240 <a href="http://fr.wikipedia.org/wiki/Pixel" title="Pixel">pixels</a> en 120 Hz</td>
</tr>
</tbody></table>
</div>

<blockquote>The camera features a two-setting adjustable fixed focus zoom lens. Selected manually by rotating the lens barrel, the PlayStation Eye can be set to a 56° field of view (red dot) similar to that of the EyeToy,[10] for close-up framing in chat applications, or a 75° field of view (blue dot) for long shot framing in interactive physical gaming applications.[1]</blockquote>

<table frame="VOID" cellspacing="0" cols="8" rules="NONE" border="0">
<colgroup><col width="104"><col width="57"><col width="56"><col width="56"><col width="98"><col width="98"><col width="98"><col width="98"></colgroup>
<tbody>
<tr>
<td colspan="8" width="662" height="17" align="LEFT"><b>Approximative pixel dimension</b></td>
</tr>
<tr>
<td height="18" align="LEFT"><br></td>
<td align="LEFT"><br></td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 3px solid #000000; border-right: 3px solid #000000" colspan="2" align="LEFT"> field of view ( ° )</td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 3px solid #000000; border-right: 3px solid #000000" colspan="2" align="CENTER" sdval="75" sdnum="1036;"><font face="Times New Roman">75</font></td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 3px solid #000000; border-right: 3px solid #000000" colspan="2" align="CENTER" sdval="56" sdnum="1036;"><font face="Times New Roman">56</font></td>
</tr>
<tr>
<td height="18" align="LEFT"><br></td>
<td align="LEFT"><br></td>
<td align="LEFT"><br></td>
<td align="LEFT"><br></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="LEFT">width_dim (m)</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="LEFT">height_dim (m)</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="LEFT">width_dim (m)</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="LEFT">height_dim (m)</td>
</tr>
<tr>
<td height="18" align="LEFT"><br></td>
<td align="LEFT"><br></td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" colspan="2" align="LEFT">Object at 40cm</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,613861590383168" sdnum="1036;0;0,0000">0,6139</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="RIGHT" sdval="0,460396192787376" sdnum="1036;0;0,0000">0,4604</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,425367545329183" sdnum="1036;0;0,0000">0,4254</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="RIGHT" sdval="0,319025658996887" sdnum="1036;0;0,0000">0,3190</td>
</tr>
<tr>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" height="18" align="LEFT">résolution</td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT">refresh</td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT">width</td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT">height</td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="LEFT">width_pxl (m)</td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="LEFT">height_pxl (m)</td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="LEFT">width_pxl (m)</td>
<td style="border-top: 3px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="LEFT">height_pxl (m)</td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT">320*240</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT">120Hz</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="320" sdnum="1036;">320</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="240" sdnum="1036;">240</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#FFCC99" sdval="0,0019183174699474" sdnum="1036;0;0,00000">0,00192</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="RIGHT" bgcolor="#FFCC99" sdval="0,0019183174699474" sdnum="1036;0;0,00000">0,00192</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,0013292735791537" sdnum="1036;0;0,00000">0,00133</td>
<td style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="RIGHT" sdval="0,0013292735791537" sdnum="1036;0;0,00000">0,00133</td>
</tr>
<tr>
<td style="border-top: 1px solid #000000; border-bottom: 3px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" height="17" align="LEFT">VGA 640*480</td>
<td style="border-top: 1px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="LEFT">60Hz</td>
<td style="border-top: 1px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="640" sdnum="1036;">640</td>
<td style="border-top: 1px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="480" sdnum="1036;">480</td>
<td style="border-top: 1px solid #000000; border-bottom: 3px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="RIGHT" sdval="0,0009591587349737" sdnum="1036;0;0,00000">0,00096</td>
<td style="border-top: 1px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="RIGHT" sdval="0,0009591587349737" sdnum="1036;0;0,00000">0,00096</td>
<td style="border-top: 1px solid #000000; border-bottom: 3px solid #000000; border-left: 3px solid #000000; border-right: 1px solid #000000" align="RIGHT" bgcolor="#CCFF99" sdval="0,000664636789576849" sdnum="1036;0;0,00000">0,00066</td>
<td style="border-top: 1px solid #000000; border-bottom: 3px solid #000000; border-left: 1px solid #000000; border-right: 3px solid #000000" align="RIGHT" bgcolor="#CCFF99" sdval="0,000664636789576849" sdnum="1036;0;0,00000">0,00066</td>
</tr>
</tbody>
</table>