En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies pour vous proposer des contenus et services adaptés. Mentions légales.
Vous êtes ici :   Accueil » Montage N°1
 
Prévisualiser...  Imprimer...  Imprimer la page...
Prévisualiser...  Imprimer...  Imprimer la section...

Rubriques

Rencontres (SM)

Mike James's

De jolis Modèles à voir sur ce site

 ↑  

Astuces (SM)

 ↑  

Mon Materiel

 ↑  

HMS TRENCHANT

 ↑  

Le U73

 ↑  

S100 SchnellBoot

 ↑  

La JOCELYNE

 ↑  

Le MOLCH

 ↑  

Réseaux sociaux

Montage N°1

rss Cet article est disponible en format standard RSS pour publication sur votre site web :
https://papy94.fr/Site/data/fr-articles.xml

Mon premier montage

12/2012

En premier lieu, je me suis lancé la dedans ,car Guy et Alain, sur le site BateauTruc, ce sont lancés a faire pleins de petits circuits destinés aux modélistes, en ce servant d'un Arduino et de microprocesseurs AtTiny, tous leurs exemples sont très bien détaillés, et sans eux ,je ne pourrais avancer, car je les copie beaucoup

Mon premier essai à été de faire un système pour contrôler la profondeur de plongée de mon soum

j'utilise  un servo qui a 3 positions

  • position 1 = commande une pompe de remplissage (uniquement remplissage)
  • position 2 = presse une durite pour garder l'eau dans le ballast
  • position 3 = libère la durite pour que l'eau par pression de l'air contenue dans le ballast puisse sortir

Les Objectifs :

  • Définir une profondeur maxi de plongée pour mon sous marin
  • Mettre mon servo en position 3 en prenant le pas sur la télécommande quand il dépasse la profondeur maxi, et que des qu'il repasse au dessus de cette profondeur maxi,  la télécommande reprend le contrôle du servo
  • Si  entrée d'eau mettre aussi mon servo en position 3 sans que la télécommande puisse intervenir, et donc retour a la surface et plus de plongée
  • Pouvoir modifier cette profondeur Maxi avec une voie de l'émetteur (navigation en piscine ou en étang)

Le test en vidéo:

Le matériel:

  • 1 capteur de pression MPX10GP pour mesurer la pression de l'eau
  • 1 AtTyny85 et de son support
  • 1 Led + résistance
  • barrette de contacts
  • Gravure un petit CI sur le WEB en prenant exemple sur celui du site BateauTruc

Montage_01.jpg

Ecriture du programme, puis transfère dans l'AtTiny85

Le Programme :

/*=========================================================================
                           CAPTEUR PRESSION reglabe avec emetteur + DETECTEUR D EAU
Commande un servo à l’aide d’un capteur de pression MPX10GP et d un detecteur d eau
La profondeur Max pourra être modifiée en faisant varier la valeur profondeur maxi avec la voie 7:
(Valeur théorique du Signal_Capteur =495 à 525)
 =========================================================================*/
#include <SoftwareServo.h>            // Appel de la librairie servo
SoftwareServo servo_1;                // Declare le servo (Pin 0 pour AtTyni85)
const int Signal_Reglage = 4;         // Declare la variable (Signal_Reglage profondeur) sur le pin 4. Le récepteur voie 7 sera branche ici (Pin 4 pour AtTyni85)
const int Signal_Capteur = 1;         // Declare la variable (Signal_Capteur) sur le pin 2. Le Capteur sera branche ici (Pin 2 pour AtTyni85)
const int Signal_Recepteur = 3;       // Declare la variable (Signal_Recepteur) sur le pin 3. Le récepteur voie 6 sera branche ici (Pin 3 pour AtTyni85)
const int Signal_Detecteur = 1;       // Declare le fil du detecteur (Signal_eau) sur le pin 1 (Pin 1 pour AtTyni85)

int Val_SignalReglage;                // Variable pour stocker la valeur lue sur le Recepteur voie 7
int Val_SignalCapteur;                // Variable pour stocker la valeur lue sur le capteur de pression
int Val_SignalRecepteur;              // Variable pour stocker la valeur lue sur le Recepteur voie 6
int angle_potar = 0;                  // Declare la variable (Angle_potar emetteur)
int Angle_Servo = 0;                  // Declare la variable (Angle_Servo)
int Angle_Servo_vidange = 90;         // Declare la variable (Angle_Servo_vidange)
int Pression_Surface = 0;             // Declare la variable (pression en Surface)
int Profondeur_Max = 0;               // Declare la variable (Profondeur_Max)
int pression_Max = 0;                 // Declare la variable pression Max lue par le capteur de pression
int pression_Min = 0;                 // Declare la variable pression Min lue par le capteur de pression

// Valeur théorique du Signal_Recepteur voie 6 = 1073 à 2110 avec emetteur Futaba
int Max_voie6 = 2110;                 // Declare la variable valeur max de la voie 6
int Min_voie6 = 1073;                 // Declare la variable valeur min de la voie 6
// Valeur théorique du Signal_Reglage voie 7 = 960 à 2060  avec emetteur Futaba
int Max_voie7 = 2060;                 // Declare la variable valeur max de la voie 7
int Min_voie7 = 960;                  // Declare la variable valeur min de la voie 7
//=========================================================================
void setup()
{
  pinMode(Signal_Reglage, INPUT);         // Declare la variable Signal Reglage en entree
  pinMode(Signal_Capteur, INPUT);         // Declare la variable Signal Capteur en entree
  pinMode(Signal_Recepteur, INPUT);       // Declare la variable Signal Recepteur en entrée
  servo_1.attach(0);                      // Attache le servo au pin 0   (Pin 0 pour AtTyni85)
 
  pinMode(Signal_Detecteur, INPUT);       // Declare la variable Signal detecteur eau en entrée
  digitalWrite(Signal_Detecteur, HIGH);   // Activation du pull-up interne pour le detecteur d eau


 // calibration du capteur de pression pendant les 5 premieres secondes pour definir la pression en surface
  pression_Max = analogRead(Signal_Capteur);            // pression Max = valeur lue par le capteur de pression (definir une valeur)
  pression_Min = pression_Max;                          // pression Min = pression Max (definir une valeur)
  while (millis() < 5000) {
   Val_SignalCapteur = analogRead(Signal_Capteur);                           //Stocker la valeur du CAPTEUR dans la variable "Val_SignalCapteur"
   if (Val_SignalCapteur > pression_Max) {pression_Max = Val_SignalCapteur;} // Enregistre la valeur Max lue par le capteur de pression   
   if (Val_SignalCapteur < pression_Min) {pression_Min = Val_SignalCapteur;} // Enregistre la valeur Mini lue par le capteur de pression
    //---fin calibration capteur de pression
  }
  if (pression_Max > pression_Min) {Pression_Surface = pression_Max-((pression_Max-pression_Min)/2);}  // defini la pression moyenne en surface
  if (pression_Max == pression_Min) {Pression_Surface = pression_Max;}                                 //si pas d ecart prendre la valeur maxi en reference
}

//=========================================================================
void loop()
{
  noInterrupts();  
  //-----------------test Detection eau -----------------
   if (digitalRead(Signal_Detecteur)){  //------------ si pas de contact eau-----------
               
          //-----------------definir la profondeur maxi avec la telecommande----------------
            Val_SignalReglage = pulseIn(Signal_Reglage, HIGH, 30000);    // Donne à la variable (Val_SignalReglage) la valeur de (Signal_Reglage) lue sur le pin 4
            interrupts();                                                // Reactive les interruptions
            angle_potar = map(Val_SignalReglage, Min_voie7, Max_voie7, 0, 30);      // Calibre des valeurs du potar voie 7 de 0 à 30  
            angle_potar = constrain(angle_potar, 0, 30);                 // Fixe les valeurs minimum et maximum du potar
            Profondeur_Max = Pression_Surface + angle_potar;             // definir la profondeur maxi demandee avec la voie 7
            if ((Profondeur_Max > 550) or (Profondeur_Max < Pression_Surface))  {Profondeur_Max = Pression_Surface;}
          
          //-----------------test profondeur----------------
          Val_SignalCapteur = analogRead(Signal_Capteur);                  // Lit la valeur du Capteur de pression
               if (Val_SignalCapteur  <= Profondeur_Max) {     //--------si pression capteur < Profondeur_Max défini--------------
                  Val_SignalRecepteur = pulseIn(Signal_Recepteur, HIGH, 30000);  // Donne à la variable (Val_SignalRecepteur) la valeur de (Signal_Recepteur) lue sur le pin 3
                  interrupts();                                                  // Reactive les interruptions
                  Angle_Servo = map(Val_SignalRecepteur, Min_voie6, Max_voie6, 45, 135);   // Calibre des valeurs de pour le servo de 0 à 180  
                  Angle_Servo = constrain(Angle_Servo, 45, 135);                 // Fixe les valeurs minimum et maximum en degré de monservo
                  servo_1.write(Angle_Servo);                            // Positionne le servo suivant les ordes de la radiocommande  
                  delay(15);                                             // Delai pour que le servo atteigne sa position
                  SoftwareServo::refresh();                              // Rafraichissement bibliotheque servo
                 
               }else{     //-------------si pression capteur > Profondeur_Max ------------------
                  interrupts();                                          // Reactive les interruptions
                  servo_1.write(Angle_Servo_vidange);                    // Positionne le servo en vidange
                  delay(15);                                             // Delai pour que le servo atteigne sa position
                  SoftwareServo::refresh();                              // Rafraichissement bibliothèque servo
               } //-----------------fin test profondeur----------------    

  }else{  //----------- si Detection eau -------------------------
      interrupts();                                          // Reactive les interruptions
      servo_1.write(Angle_Servo_vidange);                    // Positionne le servo en vidange
      delay(15);                                             // Délai pour que le servo atteigne sa position
      SoftwareServo::refresh();                              // Rafraichissement bibliotheque servo
      }  //-----------------Fin Detection eau-----------------
 } //========================== FIN DU PROGRAMME=============================

Cela fonctionne sur mon bureau ,reste plus qu'a l'essayer dans l'eau


Date de création : 01/01/2013 @ 16h02
Dernière modification : 02/01/2013 @ 11h33
Page lue 6505 fois

Traduction

Recherche

Recherche

Préférences


Se reconnecter :
Votre nom (ou pseudo) :
Votre mot de passe
<O>


  543525 visiteurs
  4 visiteurs en ligne

  Nombre de membres 114 membres
Connectés :
( personne )
Snif !!!

Cela peut servir

 ↑  

Calendrier

Lien constructions

Il faut ètre inscrit sur les forums
_ Buildingreport of my type VIIC scale 1:35 Forum RCgroups
_ My 1/32 VIIC Forum RCgroups
_ graupner Shark conversion Forum RCgroups
_ Engel Gato anyone building Forum RCgroups
_ VII-C/41 REVELL au 1/72ém Forum La royale
_ VII-C/41 REVELL au 1/72ém Forum subsim

 ↑  

Annonce

Archives Nouvelles


+ Année 2017
 -  Année 2017
+ Année 2015
 -  Année 2015
+ Année 2014
 -  Année 2014
+ Année 2013
 -  Année 2013
+ Année 2012
 -  Année 2012
+ Année 2011
 -  Année 2011
+ Année 2010
 -  Année 2010
+ Année 2009
 -  Année 2009
Vous êtes ici :   Accueil » Montage N°1