« SE3Binome2023-9 » : différence entre les versions
Aller à la navigation
Aller à la recherche
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 78 : | Ligne 78 : | ||
[[Fichier:Screenshot 2024-06-12 223401.png|centré|vignette|396x396px]] | |||
Version du 12 juin 2024 à 20:39
1. Objectif du Projet
Le but est de concevoir et développer une mini-voiture autonome en termes d'énergie, optimisée pour une utilisation efficiente de l'énergie, avec une gestion intelligente des mouvements et une signalisation intégrée.
2. Caractéristiques Techniques
a. Alimentation
- Batterie au Lithium : Utilisation d'une batterie au lithium pour l'alimentation principale, garantissant une autonomie élevée et une recharge efficace.
- Alimentation Intégrée : Mise en place d'un système d'alimentation intégré sur la carte pour une distribution optimale de l'énergie.
b. Propulsion
- Moteurs Continus : Deux moteurs continus de petite taille (2 cm) seront utilisés, positionnés au niveau des roues avant.
- Gestion des Moteurs : Utilisation d'un pont en H pour la réduction des contraintes mécaniques et l'inversion du sens de rotation des roues, favorisant une meilleure gestion de l'espace et du poids.
c. Signalisation
- LED de Surface : Installation de quatre LED de surface, deux à l'avant et deux à l'arrière, pour indiquer le sens de déplacement
3. Contrôle et Programmation
- Interface de Programmation : L'utilisateur peut programmer le trajet et les comportements de la voiture via un logiciel dédié sur ordinateur, qui communique avec la voiture via USB.
- Microcontrôleur : Le projet utilisera un microcontrôleur ATmega16u4 , la sélection dépendant de l'espace disponible pour la mémoire flash.
SCHEMA ET COMPOSANTE :
1- Batterie (Lithium)On utilise une batterie au Lithium afin que la voiture fonctionne de manière autonome
2-Microcontrôleur :
on utilise un ATMEGA16U4 :
3-régulateur et moteur :
4-port USB :
PCB :
Programmateur AVR :
Nous allons tester nos LED en codant un simple code permettant de les faire clignoter, nous allons utiliser un programmateur AVR :
#include<avr/io.h> #include<util/delay.h> #define LED_PIN PF4 int main(void) { DDRF |=(1 << LED_PIN); while(1) { PORTF |= (1 << LED_PIN); _delay_ms(1000); PORTF &= ~(1 << LED_PIN); _delay_ms(1000); } return 0; }
makefile :
export CC = avr-gcc export MCU = atmega16U4 export TARGET_ARCH = -mmcu=$(MCU) export CFLAGS = -Wall -I. -DF_CPU=16000000 -Os #-g export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections # -Os TARGET = display TERM = /dev/ttyUSB0 #TERM = /dev/ttyACM0 CPPFLAGS = -mmcu=$(MCU) PGMER = -c stk500v1 -b 57600 -P $(TERM) PGMERISP = -c stk500v1 -b 115200 -P $(TERM) ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF) C_SRC = $(wildcard *.c) OBJS = $(C_SRC:.c=.o) all: $(TARGET).hex ass:$(C_SRC) $(CC) -S $(CPPFLAGS) $(CFLAGS) $< -o $@ clean: rm -f *.o %.o:%.c $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ $(TARGET).elf: $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(TARGET).hex: $(TARGET).elf avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex upload: $(TARGET).hex stty -F $(TERM) hupcl # reset $(DUDE) $(PGMER) -U flash:w:$(TARGET).hex # $(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex size: $(TARGET).elf avr-size --format=avr --mcu=$(MCU) $(TARGET).elf
test LED :