# Casagrande - Boite de cisaillement #### Informations : - Tenue du wiki : Pierre Thery & Johane Dufour - Contact : - Etudes : Licence 3 - Sciences de la Terre - Date du projet : Juin 2024 - Encadrant : Pierre Thery #### 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. Elle permet de mesurer la résistance au cisaillement (cohésion C et angle de frottement interne Ф) et notamment pour un sable humide. On reprend le projet précédent : [wiki:projet:casagrande \[FablabSU\]](https://wiki.fablab.sorbonne-universite.fr/wiki/doku.php?id=wiki:projet:casagrande) [![Casa.nice.PNG](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/scaled-1680-/casa-nice.PNG)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/casa-nice.PNG) [![Casagrandegif.gif](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/casagrandegif.gif)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/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/](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](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/kSLimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/kSLimage.png) [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/Xmlimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/Xmlimage.png) [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/FZzimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/FZzimage.png) [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/2lximage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/2lximage.png) fablab [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/DkEimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/DkEimage.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](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/221)
[*![Partie basse.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/partie-basse.jpg)*](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/253)
Partie Haute Boîte Fichier STL : [AssemblageHaut2 - Casagrandeboitehaute-1.STL](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/253)
*![Partie haute.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/partie-haute.jpg)*
Bouchon Boîte Fichier STL : [AssemblageCasagrande - Casagrandeboitebouchon-1-1.STL](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/223)
*![Bouchon.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/bouchon.jpg)*
Porte Poulie et Poulie Fichier STL : [Portepoulie.STL](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/312) [Poulie.STL](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/266)
*[![IMG_3862 (002).jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/scaled-1680-/img-3862-002.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-05/img-3862-002.jpg)*
*Porte poulie et potentiomètre*
Attaches Levier (x2)
Fichier STL : [Attachelevierx2.STL](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/313)
![](https://lh7-us.googleusercontent.com/docsz/AD_4nXdau5oer6_KudURgDnF8-jm-_n2JL8cKMLpMUy4YdTCrEXRdWXjHBkkWZNL10mkTpvX-M_hXpSHDnRAWHFMVAN1dNksIVOANXDV7lF9wu_O7C4O1gaahQCwpcD_yH7vzD0jUSWT2wvA2o9eG72OxKjbcCU?key=0g7lt5RieRjxLh_H5USP_g)
Photo de l'assemblage général de la boîte : *![EnsembleBoite.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-04/scaled-1680-/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/](https://www.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](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2023-09/scaled-1680-/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.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/LbEimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/LbEimage.png)[![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/tYhimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/tYhimage.png) Source : LEXTRONIC, 2022 ([https://www.lextronic.fr/module-encodeur-rotatif-51706.html)](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](https://wiki.fablab.sorbonne-universite.fr/BookStack/null)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/decoupe-cadre-bras-casagrande.svg) [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/Hoiimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/Hoiimage.png)
Découpe des bras de levier ![]()Fichier svg : [![Découpe_Cadre_Bras_Casagrande.svg](https://wiki.fablab.sorbonne-universite.fr/BookStack/null)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/decoupe-cadre-bras-casagrande.svg) [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/i9Ximage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/i9Ximage.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](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/tDwimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/tDwimage.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](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/7tGimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/7tGimage.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](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/QtUimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/QtUimage.png) > Impression du Socle du testeur On crée le socle à l’aide de l’imprimante 3D : [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/41Himage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/41Himage.png) 7/06 : **> Impression de la Partie Supérieur du test** [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/pZIimage.png) ](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/pZIimage.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](https://www.lextronic.fr/module-encodeur-rotatif-51706.html) [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/tYhimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/tYhimage.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](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/VToimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/VToimage.png) ## 14/06 : > Arrangement du cadre sur Inkscape Pour que ce soit plus stable lors de l'utilisation. [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/3C5image.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/3C5image.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](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/bXIimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/bXIimage.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 ![](https://lh7-us.googleusercontent.com/docsz/AD_4nXfYBNDskNOxeqh1-CrBfAgikrEr6nC6acGbXea7k_8KcBWJ6dzI3XTnvTgwU2eY9lw-vZiSzgq1gil0V8ZsWtbF9Z9A9oASxuIOfsH5PrUxBG4UI0kom9dwGYgUTONusY9d1tw9FOBB0An72SxInM6jOj8?key=0g7lt5RieRjxLh_H5USP_g) > Visser socle boîte cisaillement et faire un trou pour vider la boîte du sable après utilisation : [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/7ZRimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/7ZRimage.png) > Découpe laser bras de levier : [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/bw1image.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/bw1image.png) > Découpe cadre : [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/7oBimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/7oBimage.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 = méléments: 530.2 g > Piston : 48.6 g > Bouteille qu’on utilise pour la force normale meau : 857.8 g Sans ajouter la bouteille, le capteur affiche : 9.59 N et 0.89kg - Calcul du facteur d'augmentation de la masse : f = L/ L : longueur entre l'articulation du bras de levier et l'encoche sur laquelle est posée la masse/la bouteille l : longueur entre l'articulation du bras de levier et l'encoche sous laquelle est glissée le cadre (fixe, 13 cm pour notre machine) -
Calcul de la pression : P = m*g
m : masse en kg donc m = meau\*f + melements g : accélération : 9.81 m.s-2 Ici, melements = 530.2 g = 0.5302 kg et meau = 857.8 g = 0.8578 kg 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. ## 26/06 : On refait les tests avec un piston différent qui permet au capteur de mieux fonctionner : [![image.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scaled-1680-/scPimage.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2024-06/scPimage.png)
Numéro de graduation où est placée la bouteille Pas de bouteille 26e 28e 35e 40e
Poids réel (N) 5.19 22.02 23.32 27.86 31.09
Poids par capteur (N) 5.37 10.36 17.07 32.03 45
Encore des incohérences dans le poids donné, on ne trouve pas relation de proportionnalité entre la réalité et les valeurs affichées par les capteur de force. On pense alors utiliser différents capteurs pour capter le poids de la force normale: un capteur Arceli HX711 ADC ## 28/06 : Branchement du nouveau capteur pour la force normale : le capteur Arceli HX711 ADC