Casagrande - Boite de cisaillement
Informations :
- Tenue du wiki : Pierre Thery & Johane Dufour
- Contact : johane.dufour@etu.sorbonne-universite.fr
- Etudes : Licence 3 - Sciences de la Terre
- Date du projet : Juin 2024
- Encadrant : Pierre Thery
Sommaire :
- Introduction et objectif du projet
- Matériel, machines et logiciels utilisés
- Conception de la boîte de Casagrande + Codes OpenSCAD
- Journal de Bord
1. Introduction et objectif du projet
Reprise des projets de l'UE pour les travaux pratiques de géotechnique/géophysique niveau L3
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 |
fablab |
> 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 :
Photo de l'assemblage général de la boîte :
> 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 3K3 ohm lors du montage, pour avoir une valeur de poids affichée à l'écran la plus fiable au poids réel possible.
> 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 :
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 des bras de levier
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);
}
}
> Assemblage
4. Journal de Bord