Skip to content

Commit c1c3303

Browse files
committed
feat: rework and comment thermal mock driver for giving a reference implementation
1 parent 30a6e19 commit c1c3303

File tree

5 files changed

+1199
-192
lines changed

5 files changed

+1199
-192
lines changed

docs/regulation_thermique.md

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ graph TB
173173
FACTORY[create_thermal_regulation_driver<br/>Factory Function]
174174
175175
subgraph "Implémentations Driver"
176-
MOCK_DRIVER[MockThermalRegulationDriver<br/>Simulation Physique Réaliste]
176+
MOCK_DRIVER[MockL298NThermalRegulationDriver<br/>Simulation Physique Réaliste]
177177
NATIVE_DRIVER[NativeThermalRegulationDriver<br/>Raspberry Pi I2C + GPIO]
178178
CP2112_DRIVER[Cp2112ThermalRegulationDriver<br/>USB-HID Bridge]
179179
end
@@ -261,7 +261,7 @@ L'architecture introduit une **séparation totale** entre la logique de régulat
261261
- **Async/Await** : Support natif pour les opérations asynchrones
262262

263263
#### Couche Implémentation (Drivers)
264-
- **MockThermalRegulationDriver** : Simulation physique réaliste avec modèle thermique avancé
264+
- **MockL298NThermalRegulationDriver** : Simulation physique réaliste avec modèle thermique avancé
265265
- **NativeThermalRegulationDriver** : Accès direct Raspberry Pi avec optimisations I2C/GPIO
266266
- **Cp2112ThermalRegulationDriver** : Pont USB-HID universel pour tout système
267267
GPIO --> ACTUATORS_RPI[Actuateurs natifs]
@@ -344,6 +344,66 @@ Le système utilise une architecture I2C extensible pour gérer un grand nombre
344344
#### Gestion Partagée des Ressources
345345
L'accès aux composants physiques est partagé entre tous les démons de régulation connectés à un même bus I2C (natif ou CP2112). Un système de mutex et de pool de connexions assure la cohérence des accès concurrents aux contrôleurs PWM, ADC et GPIO.
346346

347+
#### Affectation des Broches H-Bridge
348+
349+
Le système utilise une affectation standardisée des broches GPIO et PWM pour le contrôle des H-Bridge :
350+
351+
##### Configuration H-Bridge #1 (Contrôle Thermique Primaire)
352+
- **IN1** : GPIO 0 du CAT9555 (bit 0 du registre de sortie 0x02)
353+
- **IN2** : GPIO 1 du CAT9555 (bit 1 du registre de sortie 0x02)
354+
- **ENA** : Canal 0 du PCA9685 (registre PWM 0x06) - Contrôle de puissance PWM
355+
356+
##### Configuration H-Bridge #2 (Extension Future)
357+
- **IN3** : GPIO 2 du CAT9555 (bit 2 du registre de sortie 0x02)
358+
- **IN4** : GPIO 3 du CAT9555 (bit 3 du registre de sortie 0x02)
359+
- **ENB** : Canal 1 du PCA9685 (registre PWM 0x0A) - Contrôle de puissance PWM
360+
361+
##### Logique de Contrôle H-Bridge
362+
363+
| Mode Thermique | IN1 | IN2 | ENA (PWM) | Direction | Effet |
364+
|----------------|-----|-----|-----------|-----------|-------|
365+
| **Chauffage** | HIGH | LOW | 0-100% | Forward | Peltier heating ou résistance |
366+
| **Refroidissement** | LOW | HIGH | 0-100% | Reverse | Peltier cooling |
367+
| **Arrêt** | LOW | LOW | 0% | Brake/Disable | Aucun effet thermique |
368+
| **Frein** | HIGH | HIGH | 0% | Brake | Freinage électrique |
369+
370+
##### Avantages de cette Affectation
371+
- **Standardisation** : Même mapping sur tous les drivers (Mock, Native, CP2112)
372+
- **Extensibilité** : Support de multiples H-Bridge sur un même CAT9555
373+
- **Sécurité** : Contrôle séparé direction/puissance pour éviter les courts-circuits
374+
- **Flexibilité** : Permet le contrôle indépendant de multiples actuateurs thermiques
375+
376+
```mermaid
377+
graph LR
378+
subgraph "CAT9555 GPIO Controller"
379+
GPIO0[GPIO 0<br/>H-Bridge 1 IN1]
380+
GPIO1[GPIO 1<br/>H-Bridge 1 IN2]
381+
GPIO2[GPIO 2<br/>H-Bridge 2 IN3]
382+
GPIO3[GPIO 3<br/>H-Bridge 2 IN4]
383+
end
384+
385+
subgraph "PCA9685 PWM Controller"
386+
PWM0[Channel 0<br/>H-Bridge 1 ENA]
387+
PWM1[Channel 1<br/>H-Bridge 2 ENB]
388+
end
389+
390+
subgraph "H-Bridge Controllers"
391+
HBRIDGE1[H-Bridge 1<br/>L298N #1]
392+
HBRIDGE2[H-Bridge 2<br/>L298N #2]
393+
end
394+
395+
GPIO0 --> HBRIDGE1
396+
GPIO1 --> HBRIDGE1
397+
PWM0 --> HBRIDGE1
398+
399+
GPIO2 --> HBRIDGE2
400+
GPIO3 --> HBRIDGE2
401+
PWM1 --> HBRIDGE2
402+
403+
HBRIDGE1 --> |±12V| THERMAL1[Actuateur Thermique 1<br/>Peltier + Résistance]
404+
HBRIDGE2 --> |±12V| THERMAL2[Actuateur Thermique 2<br/>Extension Future]
405+
```
406+
347407
#### Architecture de Contrôle Thermique Bidirectionnel
348408

349409
Le système utilise une approche innovante combinant PWM et H-Bridge pour un contrôle thermique précis :
@@ -1165,7 +1225,7 @@ T_effective = T_previous + ΔT × (1 - e^(-dt/τ))
11651225

11661226
**1. ADC Virtuel (ADS1115)**
11671227
```rust
1168-
impl MockI2CDriver {
1228+
impl MockI2CL298NDriver {
11691229
fn read_adc_controller(&self, register: u8, length: usize) -> Result<Vec<u8>> {
11701230
match register {
11711231
0x00 => {
@@ -2947,7 +3007,7 @@ graph LR
29473007
TRAIT[ThermalRegulationDriver<br/>✅ Trait Complet]
29483008
FACTORY[create_thermal_regulation_driver<br/>✅ Factory Pattern]
29493009
2950-
MOCK[MockThermalRegulationDriver<br/>✅ Simulation Physique]
3010+
MOCK[MockL298NThermalRegulationDriver<br/>✅ Simulation Physique]
29513011
NATIVE[NativeThermalRegulationDriver<br/>✅ Raspberry Pi]
29523012
CP2112[Cp2112ThermalRegulationDriver<br/>✅ Portabilité USB]
29533013

0 commit comments

Comments
 (0)