Base roulante
DOCUMENTATION
Auteurs : Thindeka MOCUMBI TOMÀS, Alexandre GUILLET-RICONDA & Jihen DAGHARI
Mention : M1 parcours MeDH [Mechatronic design for health]
UE : UM4RBM21 - Mini Projet d'Ingénierie
Date : 1 Mai 2026
Lieu : Fablab Sorbonne Université
Objectif : Concevoir une table de chevet roulante autonome, commandée à distance. Ce dispositif médical à domicile est destinée à amener automatiquement la table avec le matériel de sondage à l'utilisateur grâce à un système de navigation intelligent.
Architecture Générale
Le système repose sur une chaîne de commande intégrée :
-
Interface : Communication à distance (cmd : "viens", "repart", "ouvre/ferme tiroir").
-
Cerveau : Microcontrôleur Arduino MEGA 2560
-
Motorisation : 4 moteurs à courant continu avec encodeurs, pilotés par deux drivers MDD3A (2x3 A).
Liste du Matériel (BOM)
| Composant | Modèle / Référence | Quantité |
|---|---|---|
| Contrôleur | Arduino Mega 2560 |
1 |
| Moteurs | Motoréducteurs + encodeurs FIT 0521 (6 Vcc) | 4 |
| Roues | Mecanum Ø65 mm (2 Droites / 2 Gauches) |
4 |
| Drivers | Commande moteur CC 2x3 A MDD3A | 2 |
| Distance | Capteurs Ultrasons HC-SR04 | 4 |
| Laser | Capteurs ToF VL53L3CX (Fermion) | 2 |
| Force | Jauge de contrainte + Module HX711 | 1 |
| Contact | Microrupteurs SPS75GL à roulette |
8 |
Guide de Montage
Modélisation
Pour rendre la base adaptable à n'importe quelle table de chevet, nous avons conçu un système de boîtes empilables via boxes.py découpées au laser au Fablab. Nous avons opter, après plusieurs recherches et benchmarking, pour du bois MDF de 6 mm pour la rigidité et le poids que la table devrait supporter.
Au départ l'idée était de partir sur un système de fixation par tenon mortaise avec verrouillage par clavette permettant d'ajuster la hauteur en empilant des modules de 10 à 50 cm.
De nombreuses propositions ont été faites avant, durant et après les découpes avant d'arriver au résultat le plus optimal.
Génération des structures (Boxes.py)
Nous avons segmenté la table en trois fichiers distincts, correspondant aux trois étages de la table (Box 1, 2 et 3). La Box 1 (Base technique - fichier universal box) reçoit l'électronique de puissance (drivers, Arduino MEGA) et les fixations moteurs et les Box 2 & 3 (Stockage - fichier sliding drawer) sont dédiées aux tiroirs, un conteneur poubelle et un pour le matériel de sondage.
Post-traitement (Inkscape)
Les fichiers SVG générés ont été importés dans Inkscape, logiciel de dessin, pour ajouter des fonctionnalités non présentes dans le générateur de boîtes qui nous permettra d'empiler chaque étages. Nous avons ajouté manuellement les emplacements des trous pour les supports moteurs et des trous pour la liaison base-boîte.
Ce logiciel est le meilleur éditeur de graphisme pour procéder à certains emboitement non proposé sur Boxes.py
Les cercles ont été dessinés avec un diamètre légèrement inférieur à 8 mm (pour des vis M8) afin de permettre un taraudage direct dans le plexiglass pour le premier etage. L'idée est d'avoir la boite avec 4 trou reparti de 8 mm, le plexi avec un trou de 6,8 mm pour procéder à un taraudage de 1,2 mm pour qu'elle se visse. Autrement-dit, pour une vis M8, le trou de perçage standard est de 6,8 même : on fait Ø vis - Pas de vis, soit .
Enfin, nous avons ajouté une ouverture centrale pour la remontée des câbles des encodeurs vers l'étage électronique et des ouvertures sur les côtés pour les 2 TOF et quatre Ultrasons.
L'ouverture centrale était d'un diamètre de 40 mm.
Dans cette boxe, ou l'ensemble de l'électronique sera regroupé on retrouve les 2 drivers, l'arduino MEGA et la breadboard.
Découpe Laser
Pour peaufiner le tout les fichiers ont été redistribués sur Trotec (logiciel/machine laser du Fablab) pour passer à la découpe. Nous avons tout de même arranger le jeu pour l'emboîtement, 0,09 mm pour les structures fixes et 0,15 mm pour les parties mobiles en amont, créant un jeu pour que les tiroirs coulissent sans forcer.
Le logiciel utilise un code couleur pour chaque actions. Les lignes de découpe sont en rouge, tandis que les lignes de gravure pour le marquage de surface sont en noir.
Rappel étape d'utilisation de la découpe Laser
-
Préparation : Positionnement de la plaque de MDF sur la grille de découpe.
-
Lancement : Lancement de l'impression après ajustement des paramètres.
-
Découpe : La machine effectue les découpes (contours des pièces).
-
Assemblage : Une fois les pièces refroidies, nous avons procédé à l'assemblage.
Guide d'assemblage
Création du châssis
La base a été dimensionnée pour être en adéquation avec l'espace de vie de l'utilisateur (chambre) et des mesures précises ont été prise pour le perçage des 16 trous des supports moteurs. Les trous ont été percés légèrement plus petits que la vis pour un taraudage optimal.
Fixation des composants
On fixe les supports moteurs en dessous de la base avec 4 vis M3 à tête plate de 8 même de chaque coté de la base, soit 16 vis M3, à l’aide des troues taraudés précédemment (le côté du support doit correspondre au côté de la base). on effectue cela par le dessous pour que les têtes de vis se posent sur le support et le bloque.
On fixe ensuite les moteurs aux support avec à chaque fois 2 des vis fournies avec les moteurs.
Faire attention à bien mettre les fils de tels sortent qu’il regarde le rond central.
Après, on enfonce les roues jusqu’à 1 ou 2 mm du support et on prend une vis M4 qui l’on visse à au niveau de la partie plate de la tige au bout du moteur. On doit sentir en faisant tourner la roue qu'elle est connectée au moteur.
Note : Vérifier le sens des roues (X-pattern) selon la Datasheet pour permettre les mouvements latéraux.
On fixe ensuite la première boite en faisant correspondre les troues de cette boite et de la base avec des plus grosses vis (cette fois par au dessus pour que les têtes de vis bloque la boite). Explication donnée dans le guide de montage.
Retour d'expérience et bonnes pratiques
BP GUIDE DE MONTAGE
L'épaisseur du trait de coupe laser varie selon le matériau, et pour un emboîtement dessiné pile à 6 même pour du MDF de 6 même sera trop lâche.
Solution : tester le "burn sur une pièce témoin. Nous avons validé 0,09 même pour que le système tienne sans forcer.
Lors de l'ajout des trous de taraudage et des ouvertures capteurs, risque d'alignement.
Solution : utiliser l'outil Inkscape pour mesurer et mettre à même hauteur les trous et les découper avant les contours pour éviter que la pièce ne bouge et ne décale le tout.
BP GUIDE D'ASSEMBLAGE
Solution : nouveau perçage suivi d'un taraudage à une taille supérieure et utilisation d'un système vis/boulon sur le Plexiglas le traversant.
Des fils qui se détachent et sont trop court à manipuler.
Solution : utilisation d'un kit connector dupont pour transformer et rassembler les fils des encodeurs afin d'améliorer leur manipulation.
Fonctionnement des mécanismes
Roues mecanum
Le déplacement de la base repose sur quatre roues Mecanum pilotées indépendamment par des moteurs à courant continu équipés d'encodeurs.
La "Règle de Trois" Odométrie
Pour que le robot sache où il est, il compte les impulsions (tics) générées par les encodeurs à chaque rotation moteur. Chaque rotation complète d'une roue de correspond à un déplacement linéaire de . Avec impulsions par tour, chaque "tic" représente environ (). C'est cette précision qui permet au robot de s'arrêter pile à la bonne distance.
Modes de Pilotage
Le mode "Aveugle" - distance connue :
On utilise ce mode pour les trajets prédéfinis (ex: sortir de son rangement de ). On convertit la distance cible en tics (ex: ). L'Arduino envoie un signal PWM (vitesse) aux moteurs et le programme compare en temps réel la valeur des encodeurs à la cible. Une fois les tics atteints, les moteurs sont coupés ().
Le Mode "Réactif" - distance inconnue :
On utilise ce mode pour l'interaction avec l'utilisateur ou l'évitement d'obstacles (ex: le capteur de force ou le TOF). Le robot commence à bouger dans la direction demandée. Le mouvement continue TANT QUE une condition externe est vraie.
Exemple : "Avancer tant que la valeur du capteur de force est " ou "Aller à gauche tant que le capteur TOF mesure ".
Dès que la condition n'est plus respectée (on lâche la poignée ou on approche d'un mur), le robot s'arrête instantanément.
Intelligence et sécurité
Système de déplacement : Base Holonome
Nous avons opté pour une configuration à 4 roues Mecanum (65 mm) permettant des déplacements omnidirectionnels, c'est-à-dire des translations selon 2 axes différents et des rotations.
Mouvement avant/arrière
Mouvement gauche/droite
Rotations
Le châssis choisi est en plexliglass. Il y a 16 vis pour maintenir les 4 roues mecanum !
Le contrôle de la base holonome repose sur le mixage des vitesses des 4 moteurs. Pour une translation latérale, les moteurs d'une même diagonale tournent en sens inverse des deux autres. L'Arduino MEGA calcule en temps réel les impulsions des encodeurs pour s'assurer que les quatre roues tournent à la même vitesse. Il garantit une trajectoire parfaitement droite malgré les frottements du sol et convertit les commandes "viens/repart" en vecteurs de vitesse pour chaque roue. En cas de dérive, ce sont les capteur ToF qui ajustent la vitesse différentielle des moteurs pour maintenir la table parallèle au lit.
Système d'ouverture et sécurité
Flux des informations
Entrée (Capteur de force) -> HX711 -> Arduino -> Consigne de vitesse négative -> Recul de la base
L'idée est d'implémenter la logique inverse pour dégager l'espace : Lorsque l'utilisateur tire la poignée, la base recule automatiquement pour accompagner le mouvement d'ouverture. Nous avons utilisé un capteur de force, un système semi-passif, comme une jauge de déformation (avec module HX711) sur la poignée.
Principe
Pour que le capteur fonctionne, il doit subir une flexion. Quand tu tires la poignée : La poignée tire sur le côté droit du capteur. Le côté gauche du capteur ne bouge pas (il est vissé au tiroir). La barre en métal se tord (flexion) entre les deux. L'Arduino détecte cette torsion et dit au robot : "Recule !"
Le capteur est monté en façade, en interface entre la poignée et le tiroir. Le côté 'fixe' est boulonné à la structure du tiroir via des cales de . Le côté 'mobile' supporte uniquement la poignée. La force de traction de l'utilisateur devient une déformation mécanique mesurable par le module HX711, tout en gardant une butée physique (le bois du tiroir) pour protéger le capteur d'une traction supérieure à
Guide d'assemblage
L'assemblage utilise un montage dit en "porte-à-faux" pour permettre la flexion de la jauge.
Côté Réaction (tiroir) : fixation par 2 vis M4 traversant la façade et deux entretoises en MDF de 6 mm chacune. Ce déport de 12 mm crée l'espace de déformation nécessaire.
Côté Action (utilisateur) : une plaque de MDF (poignée) est fixée à l'autre extrémité du capteur via les perçages M5.
Côté Utilisation (fonctionnement) : Lorsque l'utilisateur tire sur la plaque mobile, la barre de 80 mm subit une contrainte de traction transmise au pont de Wheasthone.
Percer un trou de 10 mm dans la façade du tiroir pour faire passer les fils à l'intérieur.
Les vis M4 (25 mm) traversent tout (façade + cales + capteur) et les vis M5 (- 20 mm) fixent ta poignée (1 au capteur.
Sens de vissage :
-
Liaison Châssis-Capteur (M4) : Insertion par l'intérieur. L'ordre est : Tête de vis > Façade > Cales > Capteur.
-
Liaison Capteur-Poignée (M5) : Insertion par l'extérieur. L'ordre est : Tête de vis > Poignée > Capteur.
Assurez-vous que ces vis ne soient pas trop longues pour ne pas venir buter contre la façade du tiroir derrière. Elles ne doivent toucher que la poignée et le capteur.
Logique et Asservissement
Le module HX711 amplifie ce signal pour l'Arduino MEGA.
Option A (Seuil fixe) : Si la force > 200g, la base recule à vitesse constante.
Sécurité de fin de course : Pour éviter que la base ne continue de reculer une fois le tiroir totalement ouvert, nous avons ajouté un microrupteur en fin de glissière. S'il est activé, il coupe immédiatement le recul des moteurs, même si une force est toujours détectée sur la poignée.
Par ailleurs, la sécurité est primordiale pour un dispositif médical à domicile. Pour assurer la sécurité de l'utilisateur des capteurs de choc physiques (bumpers) ont été intégré. Ces 8 microrupteurs à roulette (SPS75GL) ont été intégrés à l'avant et à l'arrière de la base.
S'ajoute à cela, quatre capteurs ultrasons répartis de chaque côté de la base déclenchant l'arrêt immédiat en cas d'obstacle détecté à proximité.
Schéma de Câblage
????????
Software to Hardware
Pipeline Global
Le système fonctionne comme une boucle fermée où l'information circule de l'utilisateur vers la mécanique :
Entrée Utilisateur : Interaction physique via les Boutons ou le Capteur de force.
Acquisition (Arduino) : Lecture instantanée des Encodeurs, des capteurs Ultrasons et du ToF.
Traitement (Prise de décision) : L'Arduino analyse si le chemin est libre et calcule la puissance nécessaire pour chaque roue.
Actionnement : Envoi des signaux PWM aux Drivers moteurs qui font tourner la Base roulante.
Supervision (Python) : En parallèle, l'Arduino envoie les données via le port Série vers un ordinateur/interface Python pour le diagnostic.
Logique de Décision
Pour un mouvement type "Avancer", l'Arduino suit cette priorité :
L'Ultrason voit-il un obstacle à moins de 20 cm ? Si oui STOP.
Le ToF indique-t-il que nous dérivons par rapport au lit ? Si oui Correction de l'angle des roues Mecanum.
Les Encodeurs ont-ils atteint le nombre de tics calculé ? Si non Continuer PWM.








