Catégorie:RobotGEII
Sommaire
Description et présentation du Projet
Présentation du championnat
Structure du robot
Carte ultrason (Alexandre.N)
programme de test des capteurs US :
int trig = 36;
int echo = A9;
long lecture_echo;
long cm;
void setup()
{
pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
lecture_echo = pulseIn(echo, HIGH);
cm = lecture_echo / 58;
Serial.print("Distance : ");
Serial.print(cm);
Serial.println(" cm");
delay(100);
}
programme final des capteur US :
#include <util/delay.h>
#define distUSmini 30
/* _Trigger_
37 - PC0
36 - PC1
35 - PC2
34 - PC3
33 - PC4
32 - PC5
31 - PC6
_Echo_
8 - PK0
9 - PK1
10 - PK2
11 - PK3
12 - PK4
13 - PK5
14 - PK6
*/
boolean toggle1 = 0;
volatile unsigned long t[8];
unsigned long tfin, tdebut, d;
volatile boolean recpt;
volatile boolean newmesure = false;
volatile char numCapt;
volatile uint8_t USmode;
void setup() {
Serial.begin(115200);
pinMode(37, OUTPUT);
pinMode(36, OUTPUT);
pinMode(35, OUTPUT);
pinMode(34, OUTPUT);
pinMode(33, OUTPUT);
pinMode(32, OUTPUT);
pinMode(31, OUTPUT);
cli();
TCCR2A = 0;
TCCR2B = 0;
OCR2A = 156;
TCCR2B |= (1 << WGM12);
TCCR2B |= (1 << CS11);
TCCR2B |= (1 << CS10);
TCCR2B |= (1 << CS12);
TIMSK2 |= (1 << OCIE1A);
PCICR |= 1 << PCIE2;
sei();
}
ISR(TIMER2_COMPA_vect)
{
static boolean start = true;
if (start == true)
{
if (USmode == 0) numCapt = 7;
if (USmode == 1) numCapt = 0;
if (numCapt != 7) //mode1
{
numCapt++;
if (numCapt == 2) numCapt = 0; //à retirer quand 7 capteurs
}
TCCR2B &= ~((1 << CS12) | (1 << CS10));
OCR2A = 150;
if (numCapt == 7) // mode0
{
PORTC = 0b01111111;
PCMSK2 = 0b01111111;
}
else
{
PORTC = 1 << numCapt;
PCMSK2 = 1 << numCapt;
}
}
else
{
PORTC = 0;
recpt = false;
TCCR2B |= ((1 << CS12) | (1 << CS10));
OCR2A = 30;
}
start = !start;
}
ISR(PCINT2_vect)
{
if (recpt == false)
{
tdebut = micros();
recpt = true;
}
else
{
tfin = micros();
if ((tfin - tdebut) > 50)
{
t[numCapt] = tfin - tdebut;
recpt = false;
newmesure = true;
}
}
}
void loop() {
setUSmode(0);
static unsigned long dateAffichage = 0, dateActuelle;
dateActuelle = millis();
if (newmesure == true)
{
//t = tfin - tdebut;
if ((dateActuelle - dateAffichage) > 200)
{
//if
dateAffichage = dateActuelle;
//d = t / 58;
Serial.print("Duree 0: ");
Serial.print(t[0], DEC);
Serial.println(" us.");
Serial.print("Duree 1: ");
Serial.print(t[1], DEC);
Serial.println(" us.");
Serial.print("Duree 2: ");
Serial.print(t[2], DEC);
Serial.println(" us.");
Serial.print("Duree 3: ");
Serial.print(t[3], DEC);
Serial.println(" us.");
Serial.print("Duree 4: ");
Serial.print(t[4], DEC);
Serial.println(" us.");
Serial.print("Duree 5: ");
Serial.print(t[5], DEC);
Serial.println(" us.");
Serial.print("Duree 6: ");
Serial.print(t[6], DEC);
Serial.println(" us.");
Serial.print("Duree 7: ");
Serial.print(t[7], DEC);
Serial.println(" us.");
}
newmesure = false;
}
}
void setUSmode(uint8_t mode)
{
if (mode == 0) {
USmode = 0;
//numCapt=7;
}
if (mode == 1) {
USmode = 1;
//numCapt=0;
}
}
Carte gestion des moteurs (Johan)
Carte Moteur
Carte ultrason (Vincent)
Presentation
La carte ultrason joue un rôle essentiel dans les déplacements de notre robot, elle est chargée de détecter les obstacles de manière précise et rapide afin d'informer le robot sur leur position pour qu'il puisse réagir et les éviter. Pour détecter les obstacles nous utilisons le module HC-SR04 permettant l'acquisition d'une information de distance.
- Présentation du module HC-SR04 : Le HC-SR04 est un module ultrason permettant l'évaluation d'une distance de 2cm à 4m. La mesure est réalisée "sans contact". Le module est composé d'un émetteur et d'un récepteur ultrason ainsi qu'une électronique de contrôle. Le fonctionnement de ce module s'apparente à celui d'un sonar de sous marin et sa mise en œuvre est relativement simple car il est prêt à l'emploi et possède 4 pattes: un GND, un VCC, un triger pour effectuer la mesure et un Écho pour le résultat de la mesure.
Conception de la carte ultrason
Cahier des charges
Tout d'abord, pour la conception de cette carte, nous utiliseront 7 modules ultrason afin de donner le plus d'informations possible sur les obstacles positionnés sur la trajectoire du robot. Le module HC-SR04 n’étant pas répertorié par Eagle nous devons donc commencer par créer le composant, ainsi que son empreinte qui comportera la taille réelle du composantsur Eagle.
Ensuite nous devons choisir un microcontrôleur afin de piloter cette carte: on choisira un AT TINY 88 car il possede 2 port (C et D) dont on se servira pour gerer les 7 triger et les 7 echo des modules ultrason. Ce microcontrôleur permet aussi une communication SPI dont on se servira pour communiquer avec les autres cartes du robot.
Le bornier utilisé pour la liaison SPI doit répondre à des normes :
Schéma, board et typon
Voici le schéma éléctrique de la carte ultrason:
on notera que les pistes sont relativement proches et que le connecteur va être difficile à souder mais cela reste envisageable.
Des trous de perçage sont prévus sur la carte pour la fixée et la plaquée sur le chassi
système de fin de course (ballon) (Maxime)
Pages dans la catégorie « RobotGEII »
Cette catégorie comprend 4 pages, dont les 4 ci-dessous.