Dimanche 22 février au VoLAB

Img_3802_reduced Img_3797_reduced Img_3801_reduced

 

Après la phase beadboard, câble de la carte fin de course version prototype veroboard pour la nouvelle version de l’autolevelling pour Prusa I3 à base de capteur à effet Hall Allegro A1302

 

 

 

 

Collage du capteur sur le boîtier qui comporte les aimants.

 

 

 

 

 

Un tout autre sujet: impression d’un équerre de fixation pour les motoréducteur que nous venons de recevoir de chez Bang Good à 6€80. Pas cher, tourne à 280tr/min. Inconvénient, on en connais pas le couple mais nous allons prochainement le mesurer.

 

 

 

Et pendant ce temps Pierre continue de préparer l’Atelier : Initiation à la modélisation et à l’impreesion 3D basé sur Freecad et Witbox…

boulonFC

Dans le cadre d’un article, sur le filetage, en préparation (et donc à venir prochainement sur le WIKI) et en vue de dispenser prochainement (on espère pour le moi d’avril) une initiation à la conception 3D orientée impression 3D. Nous nous sommes penchés sur Freecad avec lequel nous avons réalisé un boulon.

Sources complètes de l’article disponibles ici (fichier 7zip contenant les sources Freecad) et le pdf .

Un échec de plus sur la route de l’autolevelling

Après l’essai avec système escamotable par servo moteur qui s’est révélé trop imprécis dans la répétabilité des mesures, c’est la version ascenseur à base de chariot de lecteur CD qui souffre d’un moteur vraiment trop faible. C’est bien dommage pour le petit côté hacking, récup que cela avait.

Img_3686_versionA_servo

 

 

 

 

 

 

Img_3779_manipStepperCD

 

 

 

 

 

 

 

 

 

 

Prochaine étape: version avec capteur à effet hall…

Aujourd’hui au VoLAB séance d’affichage

afficheDoc407 Après la lecture d’un article sur Makery.info, 3 nouvelles affiches ont fait leur apparition au VoLAB cet après-midi.

Comment documenter de la PiNG, les différents type de licences libre issus d’un meet-up fablabo.net et enfin le documetn sur la réglementation concernant les drônes civils de la DGAC.

afficheDouble_407Gilles continue ces travaux sur l’ascenseur pédagogique et le projet autolevelling de notre Prusa i3 se poursuit. Après l’échec du mode avec servo moteur, nous explorons une version avec moteur de CD.

projetGilles_4

A gauche, le projet ascenseur avec Ardublock et à droite Prusa qui ré-imprimera peut-être un jour…

Et pendant ce temps Pierre prodigue un Flashlearning Impression 3D sur la Witbox à Daniel… Une journée bien remplie au VoLAB mais la soirée continue.

Vor 9 avance

PhotoDurant les derniers jours, j’ai remplacé les capteurs TCRT 5000 placés à l’avant, par une rampe de capteurs infrarouge assemblée. J’ai aussi changé la plaque en acrylique inférieur qui se dégradait de plus en plus.

J’ai de plus implémenté une sucette Bluetooth pour bénéficier d’une liaison série de debug. Ce qui m’a permis de corriger les tests de laPhoto

machine d’état.

Coté odométrie, avec Joël nous avons tourné cette petite pièce (l’axe à un diamétre de 1.8mm) pour fixer le disque indenté.

Cette pièce n’est qu’un essais. Il reste à affiner certain détails, comme la longueur de l’axe.

La machine d’état étant Photocorrigée, certains problèmes sont mis en éxerguent comme le fait que le moteur droit est beaucoup plus lent que le moteur gauche.

 

Vor 9 – Détection du sol

Pour la détection du sol j’ai installé 5 capteurs infrarouges, 3 à l’avant du robot et 2 derrière.

Mon objectif est de construire une variable en binaire contenant le résultat des tests des 5 capteurs. Ainsi il sera facile de connaitre ou le sol n’est pas détecté pour que le robot ne s’y dirige pas.

Le travail préparatoire réalisé avec l’aide de Joël. Au propre ça donne quelque chose comme ça :

Ci-dessus un schéma de Vor9 et ses capteurs numérotés de 1 à 5 de manière formelle, dans le code de 0 à 4.

Si le capteur n° 1 est déclenché, il met le premier byte à 1, si le capteur n°2 l’est, il passe le second byte à 1 et ainsi de suite. Ce qui permet d’obtenir les tableaux suivant :

 

Capteur N°

Déclenché seul

En décimal

Direction du robot

1

0000 0001

1

Avant

2

0000 0010

2

Avant

3

0000 0100

4

Avant

4

0000 1000

8

Arrière

5

0001 0000

16

Arrière

       
       

N° capteur Déclenché simultanément

En Binaire

En décimal

Direction du robot

1 + 2

0000 0011

3

Avant

2 + 3

0000 0110

6

Avant

1 + 2 + 3

0000 0111

7

Avant

4 + 5

0001 1000

24

Arrière

3 + 4

0000 1100

12

Flanc Droit

1 + 5

0001 0001

17

Flanc Gauche

 

Si plusieurs capteurs sont déclenchés simultanément, on obtient les valeurs du tableau ci-dessus.

 

Ce qui donne en langage Arduino  une fonction retournant la valeur détecté. La machine d’état n’a plus qu’a testé la valeur de cette fonction pour connaitre les zones ou le robot ne peut pas se déplacer.

Une rapide explication de la fonction :

  • J’initialise ma variable en binaire à 0.
  • Avec une boucle for, je lis l’état des 5 capteurs.
  • Si la lecture du capteur est supérieure au seuil paramétré, je décale de 1.
  • Si ma variable en binaire est égale à 0, le sol est détecté par tous les capteurs donc je garde la led d’état éteinte, sinon je l’allume.
  • Et enfin, la fonctionne retourne la valeur de la variable.

 

 

int groundTest()

{

byte statusCapteur = B00000000 ;

for (int cellCapteur = 0; cellCapteur <= 4; cellCapteur++)

// pour tous les capteurs numérotés de 0 à 4

{

if(analogRead(tableauCapteurs[cellCapteur]) > irThreshold)

// si la lecture du capteur est supérieur au seuil, alors incrémenter 1 au binaire si non 0

statusCapteur |= ( 1 << cellCapteur);

}

 

if( statusCapteur == 0 )

// Si tous les capteurs détectent le sol, alors on garde la led éteinte, si non on l’allume

digitalWrite(GroundDetLED, LOW);

else

digitalWrite(GroundDetLED, HIGH);

 

// retourner le statut des capteurs

return statusCapteur;

 

//Serial.println(statusCapteur); // DEBUG

}

 

Le prochain chantier est l’odométrie. Pierre a modélisé les plaques de Vor9 et me les a imprimé. Il m’a aussi fait une roue codeuse ayant le bon diamètre pour être emmanché sur l’axe du moteur.

Disposant d’une deuxième plateforme j’ai commencé à travailler sur le calcul de la vitesse des moteurs. Le but est de synchroniser la vitesse des moteurs pour aller en ligne droite, puis dans un second temps se diriger de manière plus précise à droite ou à gauche.

Si dessous le travail à l’oscilloscope, avec les deux capteurs allant un presque à la même vitesse. Ici j’ai synchronisé la vitesse des moteurs à la main à l’aide de potentiomètre.

La prochaine étape est d’utiliser des interruptions pour compter les fentes des roues codeuses et d’utiliser un timer interne au 2560 pour mesurer le temps et ainsi obtenir une vitesse.

 

Prusa i3 passe à Marlin 1.0.1

Aujourd’hui au VoLAB nous avons passé notre Prusa i3/EiNSTeiN/Reworks à Marlin 1.0.1 en vue d’implémenter l’auto bed Leveling. Il reste à designer les pièces mécaniques.

Pour cela modélisation sous SolidWorks de toutes l’imprimante.

Vue3D150103_2330

 

 

 

 

 

 

 

 

 

 

 

 

Au passage on en profite pour lui ajouter un afficheur LCD et une carte SD. Opération relativement facile si on exclu les erreur Arduino 1.5 comme:

SdFatUtil.cpp.o: In function `SdFatUtil::FreeRam()’:
SdFatUtil.cpp:33: undefined reference to `SdFatUtil::__brkval’
SdFatUtil.cpp:33: undefined reference to `SdFatUtil::__brkval’
SdFatUtil.cpp:36: undefined reference to `SdFatUtil::__bss_end’
SdFatUtil.cpp:36: undefined reference to `SdFatUtil::__bss_end’
collect2: error: ld returned 1 exit status

Traité dans le billet :

https://github.com/ErikZalm/Marlin/pull/1228/files

20150102_185252Reduced

 

 

 

 

 

 

En parallèle, on bosse sur la mise en place d’un wiki pour stoker et diffuser nos articles…