système arduino

Toutes les infos, questions et idées sur la partie électronique ( et électrique ! ) et les
différents capteurs utilisés ( sauf vidéo et éclairages, voir le forum
ci-dessous ).

Modérateurs : YODA, Louky

oniff
Messages : 61
Inscription : Dim Mars 20, 2011 6:25 pm

système arduino

Messagepar oniff » Lun Mars 04, 2013 10:45 pm

Bonsoir à tous,
Juste pour vous présenter se système assez avantageux pour avoir le minimum de connaissances en électronique.
Wikipédia vous l'expliquera mieux que moi: http://fr.wikipedia.org/wiki/Arduino
C'est pas cher, facile à mettre en oeuvre... pas forcement le plus compacte mais bon.
Le modèle de carte utilisée pour mon ROV est la "ARDUINO MEGA 2560". Les ponts en H sont des L298N (fonctionnent en 12V)
Je contrôle tout avec cette carte soit: 7 moteurs 12V DC; 3 servomoteurs, 3 LED (intensité), des capteurs voie d'eau et j'en exploite même pas la moitié.
Les moteurs de propulsion tournent en contra-rotation.

Le programme, ça donne ça: (pour mon utilisation)

//                     CONTROLE DU ROV "WASP" 
//.........................................................................................
#define motorPin1a 22 // broche 22 digital, moteur 1 marche AV (propulsion)
#define motorPin1b 23 // broche 23 digital, moteur 1 marche AR (propulsion)
#define motorPin2a 24 // broche 24 digital, moteur 2 marche AV (propulsion)
#define motorPin2b 25 // broche 25 digital, moteur 2 marche AR (propulsion)
#define motorPin3a 26 // broche 26 digital, moteur vertical marche AV (plongée)
#define motorPin3b 27 // broche 27 digital, moteur vertical marche AR (plongée)
#define motorPin4a 28 // broche 28 digital, moteur allongement bras gauche marche AV (manip)
#define motorPin4b 29 // broche 29 digital, moteur allongement bras gauche marche AR (manip)
#define motorPin5a 30 // broche 30 digital, moteur rotation bras gauche marche AV (manip)
#define motorPin5b 31 // broche 31 digital, moteur rotation bras gauche marche AR (manip)
#define motorPin6a 32 // broche 32 digital, moteur allongement bras droit marche AV (manip)
#define motorPin6b 33 // broche 33 digital, moteur allongement bras droit marche AR (manip)
#define motorPin7a 34 // broche 34 digital, moteur rotation bras droit marche AV (manip)
#define motorPin7b 35 // broche 35 digital, moteur rotation bras droit marche AR (manip)
#define ledPin36   36 // broche 36 digital, LED capteur d'eau
#include <Servo.h>
Servo myservo1; // créer un objet servo 1 pour le contrôler; servo camera
Servo myservo2; // créer un objet servo 2 pour le contrôler; servo pince gauche
Servo myservo3; // créer un objet servo 3 pour le contrôler; servo pince droite
int sensorPin1 = A0; // borne analogique potentiomètre moteur 1 propulsion.......(digital 22/23)
int sensorPin2 = A1; // borne analogique potentiomètre moteur 2 propulsion.......(digital 24/25)
int sensorPin3 = A2; // borne analogique potentiomètre moteur plongée............(digital 26/27)
int sensorPin4 = A3; // borne analogique potentiomètre moteur allong bras gauche.(digital 28/29)
int sensorPin5 = A4; // borne analogique potentiomètre moteur rota bras gauche...(digital 30/31)
int sensorPin6 = A5; // borne analogique potentiomètre moteur allong bras droit..(digital 32/33)
int sensorPin7 = A6; // borne analogique potentiomètre moteur rota bras droit....(digital 33/34)
int potpin8 = A7; // borne analogique potentiomètre servo camera..............(PWM 9)
int potpin9 = A8; // borne analogique potentiomètre servo pince gauhe.........(PWM 10)
int potpin10 = A9; // borne analogique potentiomètre servo pince droite........(PWM 11)
int pinPot1 = A10; // borne analogique potentiomètre LED 1.....................(PWM 12)
int pinPot2 = A11; // borne analogique potentiomètre LED 2 & 3.................(PWM 13&8)
int capteurEau = 37; // borne digitale capteur voie d'eau
int pinLed1 = 12; // borne PWM LED 1
int pinLed2 = 13; // borne PWM LED 2
int pinLed3 = 8; // borne PWM LED 3
int potValue1 = 0; // variable du potentiomètre LED 1
int potValue2 = 0; // variable du potentiomètre LED 2&3
int sensorValue = 0; // variable des potentiomètres moteurs
int val1; // variable du potentiomètre servo caméra
int val2; // variable du potentiomètre servo pince gauche
int val3; // variable du potentiomètre servo pince droite
 void setup() {
  // declare les broches en sorties:
  pinMode(motorPin1a , OUTPUT);// digital 22
  pinMode(motorPin1b , OUTPUT);// digital 23
  pinMode(motorPin2a , OUTPUT);// digital 24
  pinMode(motorPin2b , OUTPUT);// digital 25
  pinMode(motorPin3a , OUTPUT);// digital 26
  pinMode(motorPin3b , OUTPUT);// digital 27
  pinMode(motorPin4a , OUTPUT);// digital 28
  pinMode(motorPin4b , OUTPUT);// digital 29
  pinMode(motorPin5a , OUTPUT);// digital 30
  pinMode(motorPin5b , OUTPUT);// digital 31
  pinMode(motorPin6a , OUTPUT);// digital 32
  pinMode(motorPin6b , OUTPUT);// digital 33
  pinMode(motorPin7a , OUTPUT);// digital 34
  pinMode(motorPin7b , OUTPUT);// digital 35
  pinMode( pinLed1, OUTPUT); // PWM 12
  pinMode( pinLed2, OUTPUT); // PWM 13
  pinMode( pinLed3, OUTPUT); // PWM 8
  analogWrite( pinLed1, 0 ); // Eteint la LED 1 (PWM 0%)
  analogWrite( pinLed2, 0 ); // Eteint les LED 2&3 (PWM 0%)
  myservo1.attach(9); // borne 9 PWM servo caméra
  myservo2.attach(10); // borne 10 PWM servo pince gauche
  myservo3.attach(11); // borne 11 PWM servo pince droite
}
void loop () {
sensorValue = analogRead(sensorPin1); // moteur propulsion 1
if (sensorValue> 540){
//marhe avant 
digitalWrite(motorPin1a , HIGH);
digitalWrite(motorPin1b , LOW);
digitalWrite(motorPin2a , LOW);
digitalWrite(motorPin2b , HIGH);
else
if (sensorValue< 500) {
//marhe arriere  
digitalWrite(motorPin1a , LOW);
digitalWrite(motorPin1b , HIGH);
digitalWrite(motorPin2a , HIGH);
digitalWrite(motorPin2b , LOW);
}
else {
//stop  
digitalWrite(motorPin1a , LOW);
digitalWrite(motorPin1b , LOW);
digitalWrite(motorPin2a , LOW);
digitalWrite(motorPin2b , LOW);
}
sensorValue = analogRead(sensorPin2); //moteur propulsion 2
if (sensorValue> 520) {
//gauche 
digitalWrite(motorPin1a ,LOW);
digitalWrite(motorPin1b , HIGH);
digitalWrite(motorPin2a , LOW);
digitalWrite(motorPin2b , HIGH);
else
if (sensorValue< 500) {
//droite 
digitalWrite(motorPin1a , HIGH);
digitalWrite(motorPin1b , LOW);
digitalWrite(motorPin2a , HIGH);
digitalWrite(motorPin2b , LOW);
}
sensorValue = analogRead (sensorPin3); // moteur vertical
if (sensorValue>535){
//marche AV
digitalWrite(motorPin3a , HIGH);
digitalWrite(motorPin3b , LOW);
else
if (sensorValue<495) {
//marche AR
digitalWrite(motorPin3a , LOW);
digitalWrite(motorPin3b , HIGH);
}
else {
//stop
digitalWrite(motorPin3a , LOW);
digitalWrite(motorPin3b , LOW);
}
sensorValue = analogRead (sensorPin4); // moteur along bras gauche
if (sensorValue> 990) {
//marche AV
digitalWrite(motorPin4a , HIGH);
digitalWrite(motorPin4b , LOW);
else
if (sensorValue< 977) {
//marhe AR
digitalWrite(motorPin4a , LOW);
digitalWrite(motorPin4b , HIGH);
}
else {
//stop       
digitalWrite(motorPin4a , LOW);
digitalWrite(motorPin4b , LOW);
}
sensorValue = analogRead(sensorPin5); // moteur rota bras gauhe
if (sensorValue> 993) {
//marche AV
digitalWrite(motorPin5a , HIGH);
digitalWrite(motorPin5b , LOW);
else
if (sensorValue< 980) {
//marche AR
digitalWrite(motorPin5a , LOW);
digitalWrite(motorPin5b , HIGH);
}
else {
//stop
digitalWrite(motorPin5a , LOW);
digitalWrite(motorPin5b , LOW);
}
sensorValue = analogRead(sensorPin6); // moteur allong bras droit
if (sensorValue> 996) {
//marhe AV
digitalWrite(motorPin6a , HIGH);
digitalWrite(motorPin6b , LOW);
else
if (sensorValue<988) {
//marche AR
digitalWrite(motorPin6a , LOW);
digitalWrite(motorPin6b , HIGH);
}
else {
//stop
digitalWrite(motorPin6a , LOW);
digitalWrite(motorPin6b , LOW);
}
sensorValue = analogRead(sensorPin7); // moteur rota bras droit
if (sensorValue> 985) {
// marche AV
digitalWrite(motorPin7a , HIGH);
digitalWrite(motorPin7b , LOW);
}
else
if (sensorValue< 970) {
// marche AR
digitalWrite(motorPin7a , LOW);
digitalWrite(motorPin7b , HIGH);
}
else {
//stop
digitalWrite(motorPin7a , LOW);
digitalWrite(motorPin7b , LOW);
}
  { // 3 servos
  // servo camera
  val1 = analogRead(potpin8); // lire la valeur du potentiomètre 1
  val1 = map(val1, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur
  // servo pince gauche
  val2 = analogRead(potpin9); // lire la valeur du potentiomètre 2
  val2 = map(val2, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur
  // servo pince droite
  val3 = analogRead(potpin10); // lire la valeur du potentiomètre 3
  val3 = map(val3, 0, 1023, 0, 179); // la discrétiser pour l'utiliser avec un servomoteur
  myservo1.write(val1); // mettre le servomoteur 1 dans la bonne position
  myservo2.write(val2); // mettre le servomoteur 2 dans la bonne position
  myservo3.write(val3); // mettre le servomoteur 3 dans la bonne position
  delay(5); // attendre que les servomoteurs aillent dans leur position
  }
  { // LED 1
    potValue1 = analogRead( pinPot1 );
    // ramener la valeur de 0-1024 à 0-255 pour PWM
    int ledPower = potValue1/4;
    ledPower = constrain( ledPower, 0, 255 );
    // Modifier la puissance de la LED 1
    analogWrite( pinLed1, ledPower );
  }
  { // LED 2&3
    potValue2 = analogRead( pinPot2 );
    // ramener la valeur de 0-1024 à 0-255 pour PWM
    int ledPower = potValue2/4;
    ledPower = constrain( ledPower, 0, 255 );
    // Modifier la puissance de la LED 2&3
    analogWrite( pinLed2, ledPower );
    analogWrite( pinLed3, ledPower );
  }
  {
    //capturer évenement (capteuru eau)
    if (digitalRead(capteurEau) == LOW) {
      //voie eau dedectée
      digitalWrite(ledPin36 , HIGH);
      }
    else {
      //voie eau non detectée
      digitalWrite(ledPin36 , LOW);
    }
  }
}


Il y à plein de forums et de tutos permettant d'apprendre et comprendre les bases et de réaliser son propre code.
Je vous met une vidéo de l'aperçu du ROV, tout les éléments à contrôler n'y sont pas encore:
http://youtu.be/X9-E3vMM6jU
https://skydrive.live.com/?cid=05d6fa36646b8647#cid=05D6FA36646B8647&id=5D6FA36646B8647%21134
https://onedrive.live.com/?cid=05D6FA36646B8647&id=5D6FA36646B8647%211332

GBDF1
Messages : 40
Inscription : Sam Mai 28, 2011 7:09 am

Re: système arduino

Messagepar GBDF1 » Ven Mai 03, 2013 12:12 pm

Bonjour

Je suis toujours sur mon projet de rov et te remercie de ton liens car c est très intéressant.

Je possède tout pour le fabriquer mais pour l'instant je doit finir la construction de mon catamaran en Alu ( 17m x 9m)

Cordialement

GBDF1
Messages : 40
Inscription : Sam Mai 28, 2011 7:09 am

Re: système arduino

Messagepar GBDF1 » Dim Mai 05, 2013 9:07 pm

Bonjour,

Avec quel langage tu programe ton interface arduino c,basic,pascal

Car je doit savoir par quel langage je vais commencer à apprendre pour pouvoir me servir des fichiers existant sur le site et les modifiées à ma guise.
Le seul problème c'est que je possède les fichiers de louky qui lui programme en c, les fichiers de fefenin qui lui programme en basic alors si toi tu programme en pascal c'est pas gagner pour moi.

Pour pouvoir comprendre les méthodes de programmation de louky ou fefenin ou oniff à votre avis c'est plus facile par commence par apprendre quoi comme langage.

Les fichiers de fefenin me plaise bien car je fait la même config que lui concernant les 6 propulseurs à 45° , et j'aime bien sa manette de Playstation

Un avis?

Merci
Pour louky maintenant que tu vend tes systèmes pour rov,que pourrai tu me proposer pour me faciliter un peu la tâche sans pour autant me vendre un rov complet.
Carte électronique,mallette de commande?pourquoi pas,à voir!

GBDF1
Messages : 40
Inscription : Sam Mai 28, 2011 7:09 am

Re: système arduino

Messagepar GBDF1 » Lun Mai 06, 2013 8:10 pm

Bonsoir,


Au fait c est quoi les ponts en h l298n?
Comment faites vous pour remonter la vidéo ?


Cordialement

Avatar de l’utilisateur
YODA
Messages : 619
Inscription : Sam Oct 22, 2005 6:09 am
Localisation : Var

Re: système arduino

Messagepar YODA » Dim Mai 26, 2013 9:22 pm

Bonsoir à tous !

je venais faire une petite incursion dans la discussion, car j'ai vu un message adressé à Louky qui malheureusement n'est plus trop en mesure de venir répondre systématiquement . Beaucoup de travail en perspective, le monopolise depuis quelques temps et les journées sont toujours de 24 heures....
En ce qui me concerne, il en est de même ! Vivement la retraite, on aura plus de temps à consacrer aux loisirs.
Je vais contacter Louky, pour qu'il sache qu'on attend une réponse de sa part.
En attendant d'avoir plus de temps à vous consacrer, bon courage pour la suite de vos réalisations... :wink:
A bientôt.

Yoda

Avatar de l’utilisateur
YODA
Messages : 619
Inscription : Sam Oct 22, 2005 6:09 am
Localisation : Var

Re: système arduino

Messagepar YODA » Mer Mai 29, 2013 8:18 pm

Bonsoir !

Je venais répondre aux questions sur la remontée du signal vidéo, ainsi du circuit spécialisé L298.
En ce qui concerne la transmission du signal vidéo, il existe depuis un bon moment des petits modules dédiés spécialement à cette fonction , que l'on appelle
"Balun" vidéo. Ils permettent une transmission de bonne qualité sur une paire torsadée, jusqu'à des distances importantes de l'ordre de 500m.
On trouve ces modules sur le site de Sélectronic , par exemple à un prix modeste ( une trentaine d'euros ).
Pas besoin d'alimenter ces modules, le signal vidéo y est injecté directement de la caméra, et à l'autre bout de la ligne , on réceptionne le signal sur un autre module identique, c'est "magique" !!!!

Pour ce qui est du circuit L298, il s'agit d'un circuit spécifique dédié au pilotage de petits moteurs ( Attention 4A max !!!!) Sinon échauffement....
On appelle ce type de montage un pont en "H" !!!
En fait la si l'on regarde le "H", la barre horizontale représente le moteur à actionner, et les quatre barre verticale (1-2-3-4) représentent schématiquement des interrupteurs.
Les deux barres du haut (1-2) sont alimentées avec par exemple du +12v, les deux barres du bas(3-4) sur du -12v !!!!
On vient piloter les deux interrupteurs opposés (1-4) le moteur , représenté par la barre horizontale tourne dans le sens horaire !
On vient maintenant piloter les deux interrupteurs (2-3) , le moteur tourne dans le sens contraire !
Il suffit de chercher sur le net le Datasheet du composant, et l'on y trouve tous les éléments dont on a besoin.
Voilà, j'espère avoir apporté une réponse aux questions qui étaient posées.
Bonne soirée à tous !

Yoda

Memphis
Messages : 20
Inscription : Ven Juil 01, 2011 2:16 pm

Re: système arduino

Messagepar Memphis » Sam Oct 19, 2013 4:31 pm

Bonjours tout le monde,

bonjours oniff,
ton sujet m'interesse vraiment si on pouvait en discuter!
j'ai également :
- une carte arduino Méga 2560 ADK
- arduino motor shield

et je ne connais pas encore bien la carte et la programmation,
j'suis entrain de lire les bouquins :p

Mécaniquement je trouve ton ROV superbe, ta vraiment du
t'amuser pendant la construction!
par contre combien pèse-t-il ?
comment vas tu le faire flotter?

oniff
Messages : 61
Inscription : Dim Mars 20, 2011 6:25 pm

Re: système arduino

Messagepar oniff » Ven Nov 08, 2013 5:00 pm

Pas de problème pour discuter de l'Arduino, par contre il faut que je me remette dans le bain, ça fait un moment que je n'y est pas touché.
Je pense réaliser la flota de mon ROV avec du styrodur ou bien de la mousse genre planche de piscine.
Je vais lui faire une petite refonte, je me suis aperçu que la structure de celui-ci à été mal pensée, j'ai plus de place pour les caissons électronique et batteries embarquées... Mais rien de bien méchant. Je vais utiliser des tubes pression PVC et le ROV aura une structure alu carrée.
https://skydrive.live.com/?cid=05d6fa36646b8647#cid=05D6FA36646B8647&id=5D6FA36646B8647%21134
https://onedrive.live.com/?cid=05D6FA36646B8647&id=5D6FA36646B8647%211332


Revenir vers « Electronique et capteurs »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités