Skip to main content

Casagrande - Boite de cisaillement

Informations :

Sommaire : 

  1.  Introduction et objectif du projet
  2.  Matériel, machines et logiciels utilisés
  3.  Conception de la boîte de Casagrande + Codes OpenSCAD
  4.  Journal de Bord

1. Introduction et objectif du projet

L'objectif du projet est de reprendre la boîte de Casagrande utilisée les travaux pratiques de géotechnique/géophysique niveau L3

Casa.nice.PNG

Casagrandegif.gif

Suite aux multiples travaux pratiqués avec la précédente version, des points d'améliorations sont à prévoir:

  • Création de goupilles pour le remplissage de la boite, en effet le bras de levier entrainait le cisaillement avant même la manipulation
  • Prévoir l’installation sur pied car il est plus pratique de maniper à hauteur
  • Prévoir un butoir car une fois la rupture atteinte, le bras de levier de la force tangentielle descend jusqu'au sol
  • Solidifier la structure car elle n'était pas prévue pour une utilisation intense par des étudiants (plusieurs pièces cassés)
  • A voir: inclure un dynamomètre pour le calcul de la force tangentielle ou d'un montage Arduino + écran + capteurs FSR400 + R=10kOhm

    -->https://www.instructables.com/Arduino-pressure-sensor-FSR-with-LCD-display/

2. Matériel, machines et logiciels utilisés

> Matériel nécessaire : 

Capteurs FSR400
Carte Arduino Uno
Câbles Arduino
Module encodeur rotatif GT055
Planche de plexiglas de 6mm d'épaisseur
Écran LED

image.png

image.png

image.png

image.png

fablab

image.png

> Machines : Trotec Speedy 360 (découpeuse laser), Imprimante 3D, Perceuse

> Logiciels : OpenSCAD, Inkscape, Arduino IDE


3. Conception de la boîte de Casagrande + Codes OpenSCAD

> Impressions 3D : 
Partie Basse Boîte

Fichier STL : AssemblageCasagrande - Casagrandeboitebasse-1-1.STL

Partie basse.jpg
Partie Haute Boîte

Fichier STL : AssemblageHaut2 - Casagrandeboitehaute-1.STL

Partie haute.jpg
Bouchon Boîte

Fichier STL : AssemblageCasagrande - Casagrandeboitebouchon-1-1.STL

Bouchon.jpg
Porte Poulie et Poulie

Fichier STL : Portepoulie.STL

Poulie.STL

IMG_3862 (002).jpg
Porte poulie et potentiomètre
Attaches Levier (x2)
Fichier STL : Attachelevierx2.STL

Photo de l'assemblage général de la boîte : 

EnsembleBoite.jpg

Branchement du capteur FSR400 pour la force normale σN

On relie le capteur et l'écran à la carte Arduino en suivant le montage suivant : Instructables.com/Arduino-pressure-sensor-FSR-with-LCD-display/ et on choisit une résistance de 4K7 ohm lors du montage, pour avoir une valeur de poids affichée à l'écran la plus fiable au poids réel possible.

IMG_0005.jpeg

Branchement de l'encodeur rotatif GT055

Afin de déterminer précisément le point de rupture, on utilise un encodeur rotatif qui va donner la valeur de déplacement en degrés. On le branche à une carte Arduino en suivant le montage suivant : 

image.pngimage.png

Source : LEXTRONIC, 2022 (https://www.lextronic.fr/module-encodeur-rotatif-51706.html) 

Encodeur rotatif - Code Arduino

```cpp
// Déclaration des variables
int CLK = 3;    // Broche CLK de l'encodeur sur la pin 3 de l'Arduino
int DT = 4;    // Broche DT de l'encodeur sur la pin 4 de l'Arduino
int encoderPosCount = 0; // valeur de départ de l'encodeur à zéro
int CLKLast;
int aVal;
boolean bCW;

void setup() { 
pinMode (CLK,INPUT);  //  Pin CLK déclarée en entrée
pinMode (DT,INPUT);  //  Pin DT déclarée en entrée

CLKLast = digitalRead(CLK);  // Renvoi la dernière valeur de l'encodeur
Serial.begin (9600);
}

void loop() {
aVal = digitalRead(CLK);

if (aVal != CLKLast) { // Indique que l'encodeur tourne
// Si le bouton tourne, on déterminera son sens
// avec la broche DT
if (digitalRead(DT) != aVal) {  // si CLK change en premier - rotation dans le sens des aiguilles d'une montre
encoderPosCount ++;
bCW = true;

else { // sinon c'est DT qui change en premier et la rotation va donc dans le sens inverse
bCW = false;
encoderPosCount--; 
}
Serial.print ("Sens de rotation: ");   // Affichera le sens de rotation
if (bCW)
{
Serial.println ("clockwise");   // sens des aiguilles d'une montre
}else
{
Serial.println("counterclockwise");   // sens inverse

Serial.print("Degré: ");   
Serial.println(encoderPosCount*9);   // Affiche la position de l'encodeur - comptage des impulsions

CLKLast = aVal ;
}
```

> Découpe laser
Découpe du Cadre

Fichier svg : Découpe_Cadre_Bras_Casagrande.svg

image.png

Découpe des bras de levier

Fichier svg : Découpe_Cadre_Bras_Casagrande.svg

image.png

Code OpenSCAD : 

//dimensions du bras de levier
largeur = 40; //mm
diametreTrou = 4; //mm
nbUnites = 48; //nombre d'encoches
longueur = 500; //mm longueur de la barre à partir du trou

//dimensions des encoches
profondeurEncoche = 2; //mm
var = 0;

difference(){
    square([longueur, largeur]);
    //trou
    translate([0, largeur/2, 0]){
        circle(diametreTrou/2, $fn = 360);
    }
    //encoches
    for (i=[1:nbUnites]){
        var = i*10;
        translate([var, 0, 0]){
            rotate([0, 0, 45]){
                square([profondeurEncoche, profondeurEncoche], center = true);
            }
        }
    }
}

//Pour la forme arrondie
translate([0, largeur/2, 0]){
    difference(){
        circle(largeur/2);
        //trou
        circle(diametreTrou/2, $fn = 360);
    }
}

image.png

> Assemblage

4. Journal de Bord

Journal de Bord

5/06 :

Branchement du capteur de pression Arduino 

Tests de différentes résistances pour avoir un poids affiché à l’écran (en newton et en kg) fiable.

6/06 :

> Création d’un socle permettant de tester le capteur de force (contrainte normale)

Afin de déterminer quelle résistance on utilise pour le capteur de force, on réalise en premier lieu un socle permettant de pouvoir tester différents poids sur le capteur. Le capteur étant très précis, il faut un système qui appuie parfaitement à l'endroit du capteur.

 

Code OpenSCAD pour le socle sous le capteur :

 

 

cotecube = 50 ; //mm

difference(){

 cube([cotecube,cotecube,10]);

 translate([0,20,0]){

     cube([25,10,3]);

 translate([25,5,0]){

     cylinder(r=6,h=3,$fn=100);

 }

 }

}


image.png


Code OpenSCAD pour la partie supérieure reposant sur le capteur : 

cotecube = 50 ; //mm

cube([cotecube,cotecube,5],true);

translate([0,0,2.5]){

 cylinder(r1=5,r2=4,h=5,$fn=100);

}

image.png

 


> Impression du Socle du testeur 


On crée le socle à l’aide de l’imprimante 3D : 

image.png

7/06 :

> Impression de la Partie Supérieur du test 

image.png Masse Partie Supérieur du test capteur : 7.0g

> Réalisation de différents tests avec différentes résistances électriques et différents poids

Poids réel (g)

Résistance 4K7 (g)

Résistance 10K (g)

Résistance 3K3 (g)

428

390

800 g

425

330



527

510



833

700

1800 (?)

600

Les tests ne sont pas très cohérents mais la résistance qui mène au poids le plus fiable est celle de 4K7 ohm.

10/06 :

> Dessin d’une pièce sur OpenSCAD pour mesurer la contrainte tangentielle mais abandon parce que ce système ne sera pas assez précis (effets de frottements qui vont fausser la valeur donnée par le capteur).

> Recherche d’un capteur de pression en S à utiliser à la place.

 

11/06 :

> Branchement de l'encodeur sur une carte Arduino, où on suit le montage suivant : https://www.lextronic.fr/module-encodeur-rotatif-51706.html

image.png

> Code Arduino :

// Déclaration des variables
int CLK = 3;    // Broche CLK de l'encodeur sur la pin 3 de l'Arduino
int DT = 4;    // Broche DT de l'encodeur sur la pin 4 de l'Arduino
int encoderPosCount = 0; // valeur de départ de l'encodeur à zéro
int CLKLast;
int aVal;
boolean bCW;


void setup() {
pinMode (CLK,INPUT);  //  Pin CLK déclarée en entrée
pinMode (DT,INPUT);  //  Pin DT déclarée en entrée


CLKLast = digitalRead(CLK);  // Renvoi la dernière valeur de l'encodeur
Serial.begin (9600);
}


void loop() {
aVal = digitalRead(CLK);


if (aVal != CLKLast) { // Indique que l'encodeur tourne
// Si le bouton tourne, on déterminera son sens
// avec la broche DT
if (digitalRead(DT) != aVal) {  // si CLK change en premier - rotation dans le sens des aiguilles d'une montre
encoderPosCount ++;
bCW = true;
}
else { // sinon c'est DT qui change en premier et la rotation va donc dans le sens inverse
bCW = false;
encoderPosCount--;
}
Serial.print ("Sens de rotation: ");   // Affichera le sens de rotation
if (bCW)
{
Serial.println ("clockwise");   // sens des aiguilles d'une montre
}else
{
Serial.println("counterclockwise");   // sens inverse
}
Serial.print("Degré: ");  
Serial.println(encoderPosCount*9);   // Affiche la position de l'encodeur - comptage des impulsions
}
CLKLast = aVal ;
}

 

 Pour chaque clic : indication d’une rotation de 18 degrés.

 

12/06 :

> Dessin du cadre sur Inkscape :

Le cadre présente une encoche pour faire passer le bras de levier et un petit rectangle qui permettra d'appuyer sur le capteur pour la force normale.

image.png

14/06 :

> Arrangement du cadre sur Inkscape

Pour que ce soit plus stable lors de l'utilisation.

image.png

> Second test du capteur - force normale

Lors des tests pour le capteur de la force normale, l'utilisation d'une résistance de 4K7 ohm menait à des poids proches de ceux réels. Bien que le capteur ne donne pas la valeur exacte, on réalise des tests avec différents poids pour voir si on peut trouver une relation de proportionnalité entre la valeur que le capteur nous donne et la valeur réelle : 

Poids réel (g)

Poids avec Résistance 4K7 ohm (g)

103.3

0

200.8

140

249.2

140

454.8

410

534.3

510

840.8

740

836.1

 

image.png

Il faut multiplier la valeur donnée par le capteur par environ 1.3 pour obtenir la valeur de poids réelle, mais le capteur reste plutôt imprécis.

20/06 :

> Visser pieds pour les bras de levier sous la table

> Visser socle boîte cisaillement et faire un trou pour vider la boîte du sable après utilisation :

image.png

> Découpe laser bras de levier :

image.png

> Découpe cadre :

image.png

24/06 :

On réalise des tests du capteur force normale avec le système entier :

 

Poids éléments (méléments) : 

> Bras : 134.2 g

> Cadre : 396.4 g

> Total poids bras + cadre : 530.2 g

> Piston : 48.6 g

> Bouteille qu’on utilise pour la force normale : 857.8 g

Sans ajouter la bouteille, le capteur affiche : 9.59 N et 0.89kg

 

Calcul en N :

σN placé à la 26ième graduation donc P = (0.5302 + 26/13 x 0.8578) * 9.81 = 22.02 N = 2.24 kg --> capteur affiche moins de 1 kg

σN placé à la 28ième graduation donc P = (0.5302 + 28/13 x 0.8578) * 9.81 = 23.32 N = 2.38 kg --> mais capteur affiche moins de 1 kg

On réalise d'autre tests mais le capteur reste à 0.60 ou 0.80 kg quelque soit la graduation où on pose la bouteille --> imprécision du capteur, il ne doit pas bien capter le cadre posé dessus.