Projet ICN2 2016/2017

De Informatique et Création Numérique
(Différences entre les versions)
Aller à : Navigation, rechercher
(Le programme)
(Amélioration)
 
(3 révisions intermédiaires par un utilisateur sont masquées)

Version actuelle en date du 17 septembre 2017 à 20:02

Sommaire

[modifier] Participants

  • Nassim BOUDANES

[modifier] Cahier des charges

(thumbnail)
Chassis avec chenilles

Pour réaliser ce robot filoguidé les composants suivants vont être utilisés :

  • un chassis avec moteurs et chenilles ;
  • deux joysticks miniatures pour la commande ;
  • un contrôleur de moteurs ;
  • un détecteur ultra-son ;
  • un Arduino nano pour gérer le tout.


[modifier] Réalisations

[modifier] Prise en main

(thumbnail)
Chassis pour l'apprentissage

Dans les premières séances un chassis complétement monté est utilisé pour comprendre la programmation de ce type de robot.

[modifier] La manette

Il a été décidé de construire un circuit imprimé pour la manette, le circuit comprend deux joysticks et une prise RJ12 femelle. Le câble entre la manette et le robot sera constitué d'un câble à 6 conducteurs avec deux prises RJ12 mâles à chaque bout. Le logiciel Fritzing est utilisé pour concevoir le circuit imprimé. Le fichier de ce circuit est disponible Fichier:Manette.fzz.

Le circuit de la manette a été produit par la société Fritzing, les deux exemplaires sont visibles sur la photo.

(thumbnail)
Circuit imprimé manette


(thumbnail)
Forme pour la manette
(thumbnail)
Manette plexiglass

Pour que la manette soit plus simple d'utilisation, une forme a été créée avec inkscape pour obtenir une plaque de plexiglass adaptée. La plaque a été découpée à Polytech'Lille mais avec des réglages mal adaptés, d'où les traces de brulé.

[modifier] Contrôle du chassis

Un contrôleur de moteurs pololu à base de circuit TB6612FNG a ensuite été testé pour faire tourner les moteurs du chassis de test.

(thumbnail)
Chassis et plaque d'essai
(thumbnail)
Zoom sur l'Arduino et le contrôleur de moteur


À terme ce montage doit être utilisé pour le chassis acheté par l'élève.

(thumbnail)
Montage sur le chassis choisi
(thumbnail)
Autre vue


Comme il n'est pas pratique de fixer la plaque d'essai au chassis, un second circuit imprimé Media:Robot chenille.fzz a été conçu, le circuit comporte :

  • une prise RJ12 femelle pour connecter le câble en provenance de la manette ;
  • un emplacement pour l'Arduino nano ;
  • un emplacement pour le contrôleur de moteurs pololu ;
  • un emplacement pour le détecteur ultrasons.

Le circuit imprimé a été gravé lors de la visite à Polytech'Lille.

(thumbnail)
Circuit imprimé pour le chassis

Voici une image du rendu actuel de la manette :

Le circuit principal a été fixé sur le chassis, et le programme de fonctionnement a été écrit et est fonctionnel.

Le système complet, robot avec manette connectée par un câble, est lui aussi fonctionnel :

(thumbnail)
Système complet

[modifier] Le programme

L'Arduino micro a été programmé pour lire les commandes de la manette et commander les moteurs du chassis. Ce programme est donné ci-dessous.

const int SW1_pin = A3;
const int SW2_pin = A4;
const int X_pin = A5;
const int Y_pin = A7;

int motor1_pwm = 6;
int motor1_in1Pin = 5; 
int motor1_in2Pin = 4;

int motor2_pwm = 10;
int motor2_in1Pin = 7;
int motor2_in2Pin = 8;

int pinSTBY = 3;

void setup() {
  
 pinMode(motor1_in1Pin, OUTPUT);
 pinMode(motor1_in2Pin, OUTPUT);
 pinMode(motor1_pwm, OUTPUT);

 pinMode(motor2_in1Pin, OUTPUT);
 pinMode(motor2_in2Pin, OUTPUT);
 pinMode(motor2_pwm, OUTPUT);
  
 pinMode(SW1_pin, INPUT_PULLUP);
 pinMode(SW2_pin, INPUT_PULLUP);
 pinMode(pinSTBY, OUTPUT);
 
 pinMode(X_pin, INPUT);
 pinMode(Y_pin, INPUT);

 Serial.begin(9600);

 digitalWrite(pinSTBY, HIGH);
 
}

void  SetMotor1(int speed, boolean reverse)
  {
    analogWrite(motor1_pwm, speed);
    digitalWrite(motor1_in1Pin, ! reverse);
    digitalWrite(motor1_in2Pin, reverse);
  }
  
void  SetMotor2(int speed, boolean reverse)
  {
    analogWrite(motor2_pwm, speed);
    digitalWrite(motor2_in1Pin, ! reverse);
    digitalWrite(motor2_in2Pin, reverse);
  }

void loop() {
  
  int b1=digitalRead(SW1_pin);
  int b2=digitalRead(SW2_pin);
  int X=analogRead(X_pin);
  int Y=analogRead(Y_pin);
  
  Serial.print("Bouton Gauche:  ");
  Serial.print(b2);
  Serial.print("\n");
  Serial.print("Bouton Droit:  ");
  Serial.print(b1);
  Serial.print("\n");
  Serial.print("X-axis: ");
  Serial.print(analogRead(X_pin));
  Serial.print("\n");
  Serial.print("Y-axis: ");
  Serial.println(analogRead(Y_pin));
  Serial.print("\n\n");
  

   if (Y < 400) 
{
    SetMotor1(210, true);
    SetMotor2(210, true);
}

   if (Y > 700) 
{
    SetMotor1(210, false);
    SetMotor2(210, false);
}
   if(Y < 750 && Y > 350)
{   
   SetMotor1(0, false);
   SetMotor2(0, false);
}
  
   if (X < 400) 
{
    SetMotor1(150, true);
    SetMotor2(150, false);
}

   if (X > 700) 
{
    SetMotor1(150, false);
    SetMotor2(150, true );
}

}

[modifier] Amélioration

Le problème ensuite rencontré est le suivant : l'alimentation. En effet, le chassis ne possède que 4 emplacement de piles AA, pour un total de 6V, alors que le voltage nécessaire est de 9V, il manque donc 2 piles.
Il fallut alors créer une plaque contenant un emplacement pour 2 piles, et cette plaque permettra de gérer l'ensemble de l'alimentation du robot.
Le fichier Fritzing est téléchargeable ici : Media:Plaque Alimentation Robot.fzz.

(thumbnail)
Circuit imprimé pour les piles supplémentaires

Une fois la plaque installé, le robot est bien alimenté et fonctionne parfaitement. Vous trouvez ci-dessous des photos du robot final.

[modifier] Démonstration

Pour une vidéo de démonstration cliquez ici.

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Outils