« SE3Binome2023-9 » : différence entre les versions
Aller à la navigation
Aller à la recherche
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 135 : | Ligne 135 : | ||
} | } | ||
</pre> | </pre> | ||
'''makefile :''' | |||
<pre> | |||
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 | |||
</pre> |
Version du 12 juin 2024 à 20:29
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