Création ROV

Où l'on cause d'autres modèles que l'on réalise, des navires de surface, voitures, hélicos, avions, car on peut aussi vouloir partager ses autres activités modélistes...
Avatar de l’utilisateur
papy94
Messages : 653
Inscription : 23 janv. 2010 14:31
Localisation : Champigny sur marne
Contact :

Re: Création ROV

Message par papy94 »

je suis impressionne par ton travail :Up:

au niveau du poids de l'ensemble,tu en es ou ?
Avatar de l’utilisateur
Patjabix
Modérateur
Messages : 4979
Inscription : 06 janv. 2010 00:13
Localisation : Chanas (Isère)

Re: Création ROV

Message par Patjabix »

Même question pour le poids :D

Du beau boulot tout ça :applaudi:

Bravo
A+
Pat, membre de la guilde des racleurs de fond
Image Image
Avatar de l’utilisateur
Rackham
Messages : 2725
Inscription : 23 janv. 2010 18:43
Contact :

Re: Création ROV

Message par Rackham »

hoo l'engin :shock:
Haddock : Messieurs, Cet homme est innocent : Tintin nous l’a dit. Allez-vous lui laisser ces menottes… et l’empêcher d’aller me chercher une bouteille de cognac ?
Avatar de l’utilisateur
oniff
Messages : 186
Inscription : 07 mars 2011 20:00
Localisation : Rennes

Re: Création ROV

Message par oniff »

Bonjour, et merci beaucoup.
Pour le poids, je suis actuellement à 3,5Kg. Reste les moteurs environ 75gr chacun et les roulements qui vont avec, pour être large: 100gr par compartiment moteurs X 9 au total: +/- 1kg supplémentaire.
Il faut que je prenne en compte les caissons électronique, l'électronique lui même: caméra, arduinno, variateurs, ect..... 5 à 600gr je pence.
La batterie, je ne suis pas fixé sur le type de celle-ci, niveau poids ça peut être le jour et la nuit. Admettons 500gr.
Et Le flotteur, quoi que celui-ci ne devrais pas être très lourd (styrodur)
Donc normalement il devrait ce situer dans la fourchette des 8 /10Kg.
Avatar de l’utilisateur
Patjabix
Modérateur
Messages : 4979
Inscription : 06 janv. 2010 00:13
Localisation : Chanas (Isère)

Re: Création ROV

Message par Patjabix »

Ok, 8 à10 kg ça fait déjà un joli bébé ;)
A+
Pat, membre de la guilde des racleurs de fond
Image Image
Avatar de l’utilisateur
pierre
Messages : 3686
Inscription : 08 janv. 2010 12:42
Localisation : Créteil (94)

Re: Création ROV

Message par pierre »

Salut.
Question batterie, si tu es limite en devis de poids,je te préconise les LIFE PO4 à 10A 3,3 V cylindriques.
Gain par rapport à du NICD 7A sous 6 V : 1,2kg vs 800gr. 5 éléments vs 2. Encombrement, ya pas photo.
Pas d'effet mémoire. Pas de décharge induite comme les NIMH.
Seul bémol, cela nécessite d'avoir un chargeur LIFE et cabler le pack pour l'équilibrage.
Image
Sinon, j'ai hâte de voir ta réalisation évoluer dans son milieu.
Mes sous-marins en état de marche :
Un Surcouf, un Seaview, une Flying sub, un Minisub, un subracer.
Autres modèles : quadricoptère MiniDex amphibie full carbon, Quad Alien 680 pliable slowfly + Gopro
J-Pay quad 250 racer, Hexacoptère Typhoon H Yunnec.
Avatar de l’utilisateur
mickey60
Messages : 1506
Inscription : 12 janv. 2010 23:53
Localisation : cenpuis (60)

Re: Création ROV

Message par mickey60 »

C'est vrai que c'est beau,c'est du beau boulot :Up: .
moi,je vais me mettre à la couture :Oo: ,bin oui !!!!! çà ENERVE.
Blague à part ,je souhaite vraiment que tu ne sois pas géné par le poids, çà serai dommage.
Bonne continuation.
A+
Michel.
Ma 1ére réalisation:
Albator,sous marin imaginaire en pvc.
Mon futur projet :
Css Hunley en zinc au 1/10, en construction.
Avatar de l’utilisateur
oniff
Messages : 186
Inscription : 07 mars 2011 20:00
Localisation : Rennes

Re: Création ROV

Message par oniff »

Bonjour à tous,

J'ai quasiment reçu tout le matériel nécessaire pour finir le robot.
Et fini le programme, c'est long mais ça passe dans la "méga". :Up:
//                     CONTROLE DU ROV  
//.........................................................................................
#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 sortie capteur


#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
  Serial.begin(9600); // debug capteur eau
  Serial.println("Lancement de la capture" ); // indique le lancement de la capture (capteur eau)
 }

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);
      delay(1000);
    }
    else {
      //voie eau non detectée
      digitalWrite(ledPin36 , LOW);
      delay(1000);
    }
  }
}



Pour le capteur d'eau, je regardais celui de Geeks,
Image
Ce serait tip top à utiliser mais il y a quelque chose que je ne comprend pas, sur le code du capteur, c'est que je ne vois pas la LED déclarée à la ligne 20 du code, l'entrée 13 est notée "//" donc pas pris en compte :?:
En fait se que je souhaiterais serais de juste faire allumer une LED sur la console de pilotage lors de la présence d'eau dans un caisson étanche du ROV.
Dernière modification par oniff le 01 mars 2013 18:55, modifié 1 fois.
Avatar de l’utilisateur
Geeks
Messages : 3593
Inscription : 03 juil. 2010 21:04
Localisation : Brive la Gaillarde (Correze 19)

Re: Création ROV

Message par Geeks »

Bonjour Oniff.

Et bien, jolie travail de programmation :Up:

Bon, alors oui, en effet j'ai commenter la ligne de la led 13 car je renvoie l'information sur le port série pour visualiser l'état sur l'écran du PC.

Alors, si je me rapelle bien, à la place de :

Code : Tout sélectionner

/* LOOP */
void loop() {
  
  //Capturer l'évèvement
  if(digitalRead(capteurEau) == LOW) {
  
    //On a une voie d'eau
    Serial.println("Etat : presence eau");
    delay(1000);
  }
  else {
    //Nous n'avons aucun défaut
    Serial.println("Etat : ok");
    delay(1000);
  }
  
  //Boucler
}
tu peux écrire:

Code : Tout sélectionner

/* LOOP */
void loop() {
  
  //Capturer l'évèvement
  if(digitalRead(capteurEau) == LOW) {
  
    //On a une voie d'eau
    digitalWrite(30 , HIGH); 
    delay(1000);
  }
  else {
    //Nous n'avons aucun défaut
    digitalWrite(30 , LOW); 
    delay(1000);
  }
  //Boucler
}
Enfin, un truc dans ce style :Up:
A défaut d'avoir la science infuse, j'infuse la science. - Racleur de fond depuis Pons 2014.
Sous-marin en état de repos sur cale : Minimog 01
Avatar de l’utilisateur
oniff
Messages : 186
Inscription : 07 mars 2011 20:00
Localisation : Rennes

Re: Création ROV

Message par oniff »

Yes, merci Geeks, je viens de compléter avec l’intensité des LEDs réglable. Capteur voie d'eau je m'en occupe. ;) .
Dernière modification par oniff le 01 mars 2013 18:55, modifié 1 fois.
Répondre