Changed some names for assets pictures, added summary in readme and some links to other markdown files

This commit is contained in:
Yohan Boujon 2023-04-12 00:13:47 +02:00
parent fb484e3c88
commit ffe7010957
9 changed files with 27 additions and 11 deletions

View file

@ -1,5 +1,22 @@
# Fonctionnement et descriptions des implémentations pour le projet Voilier
## Résumé des fonctionnalitées réalisées
- [x] Batterie affichée via l'UART Rx
- [x] Temps en heure et minute de la RTC affiché via l'UART Rx
- [x] Contrôle avec PWM du moteur via l'UART en Tx
- [x] Mise à une position d'origine pour la voile à l'aide du servo moteur
- [x] Si l'accéléromètre détecte un désalage, la voile est mise à 180°
*NB : La pin ayant changé entre le servomoteur (anciennement PA0), il n'est plus fonctionnel pour le moment.*
- [ ] Changement de la position de la voile à l'aide de la position de la girouette
- [x] Incrémentation/Décrémentation de la girouette
- [ ] Changement de la position avec cette donnée
## Documents explicatifs divers
- Explication du fonctionnement de l'UART avec un Raspberry Pi 4 [ici](/implementation/remote.md)
- Explication des drivers dans une [cheat sheet](/driver/driver.md)
### Tableau de répartition des services
| Service | Nom | Fonction |
@ -26,7 +43,7 @@
___
## Motoréducteur
![[cdc motor.png]]
![CDC MOTOR](assets/cdc_motor.png)
Le motoréducteur se contrôle via 2 broches, une où est transmise une PWM de plus de 20kHz avec un rapport cyclique de 0% à 100% afin de contrôler la vitesse de rotation du plateau et une afin de changer la direction de rotation du plateau.
@ -39,9 +56,8 @@ $$ f_{tim} = {f_µ \over ARR * PSC} $$
Sachant que la fréquence du microcontrôleur est de 72 MHz et que l'o souhaite une fréquence de 20 kHz, on peut facilement calculer les registres ARR et PSC.
$$ ARR * PSC = {f_µ \over f_{tim}} = {72000000 \over 20000} = 3600 $$
Comme on peut le voir dans la documentation, les registres sont sur 16 bits et peuvent donc avoir une valeur maximale de 65536.
![[arr motor.png]]
![[psc motor.png]]
![ARR MOTOR](assets/arr_motor.png)
![PSC MOTOR](assets/psc_motor.png)
Nous allons donc choisir de mettre ARR à 3599 (le registre compte à partir de 0) et PSC à 0, ce qui va à moindre échelle éviter au passage quelques calculs non nécessaire au microcontrôleur.
*Il faudra donc ensuite prévoir de gérer le rapport cyclique seulement entre 0 et 3599*
@ -113,7 +129,7 @@ En testant, nous nous sommes rendu compte qu'entre 0 et 1000, le moteur ne tourn
___
## Servomoteur
![[pwm servo.png]]
![PWM SERVO](assets/pwm_servo.png)
Le servomoteur se contrôle via 1 broches où est transmise une PWM de période de 20 ms avec un rapport cyclique de 5% à 10% afin de contrôler l'angle de l'axe du servomoteur.
@ -127,8 +143,8 @@ Sachant que la fréquence du microcontrôleur est de 72 MHz et que l'o souhaite
$$ ARR * PSC = {f_µ \over f_{tim}} = {72000000 \over 50} = 1440000 $$
Comme on peut le voir dans la documentation, les registres sont sur 16 bits et peuvent donc avoir une valeur maximale de 65536.
![[arr motor.png]]
![[psc motor.png]]
![ARR MOTOR](assets/arr_motor.png)
![PSC MOTOR](assets/psc_motor.png)
Nous allons donc choisir de mettre ARR à 3599 car il faut pouvoir gérer 180° possibles sur une seule des 20 ms de la période du timer (180 * 20 = 3600) et PSC à 399 pour avoir le division de 3600 * 499 = 1440000.
*Il faudra donc ensuite prévoir de gérer le rapport cyclique seulement entre 0 et 3599*
@ -298,11 +314,11 @@ MyI2C_GetString(I2C2, 0x06, &data);
La fonction MyRTC_GetTime instancie une structure de donnée I2C en fournissant l'adresse esclave du composant RTC, l'adresse de la variable qui va contenir les données reçu mais également le nombre d'octet à recevoir.
![[add rtc.png]]
![ADD RTC](assets/add_rtc.png)
Elle va ensuite utilisé le driver SPI pour lire les regsitres de l'adresse 0x00 à 0x06 (en 7 fois donc) et lire les secondes, minutes, heures, jour, date, mois et années puis les écrires dans les variables contenu par les pointeurs fournis en paramètres à la fonction.
![[reg rtc.png]]
![REG RTC](assets/reg_rtc.png)
#### Test de l'implémentation
@ -315,7 +331,7 @@ ___
L'accéléromètre est un composant qui est sur la carte du voilier et qui permet de connaître la position angulaire de ce dernier dans l'espace via de la lecture dans les regsitres à l'aide du SPI.
![[adc accel.png]]
![ADC ACCEL](assets/adc_accel.png)
*Cette implémentation utiliser le driver SPI founit durant le projet*
@ -356,7 +372,7 @@ MySPI_Set_NSS();//CS HIGH
La fonction Init_accelerometre utiliser d'abord la librarie SPI founit afin d'initialiser le SPI 1.
Elle paramètre ensuite l'accéléromètre comme souhaité pour désactiver le mode auto sleep, utiliser le mode de faible consommation et formater les données qui vont être ensuite lues.
![[reg accel.png]]
![REG ACCEL](assets/reg_accel.png)
**void Lecture_accelerometre(float* GX, float* GY, float* GZ)**
```c

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View file

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View file

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View file

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB