Pb Modelcraft VR18T [+ electronique & soft cde servos ]

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

mobytango
Messages : 2
Inscription : Ven Déc 12, 2008 4:03 pm

Pb Modelcraft VR18T [+ electronique & soft cde servos ]

Messagepar mobytango » Ven Déc 12, 2008 4:11 pm

Bonjour
je cherche à piloter un modelcraft VR18T par un pic de chez Microchip et la documentation fournie avec le variateur est très sommaire (pour ne pas dire inexistante).
J'imagine qu'il faut envoyer un signal dont la largeur de l'impulsion est modulée pour faire varier la vitesse. Je ne connais pas les limites de ce signal. Est ce que ce sont les mêmes que celle d'un servo dans le genre période du signal 20 ms, MLI min de 1ms et max de 2 ou 3 ms ou est ce totalement différent.
Je serais heureux de la réponse à cette question.

merci d'avance.

A vous lire.

Avatar de l’utilisateur
Louky
Messages : 899
Inscription : Sam Oct 22, 2005 6:33 am
Localisation : Var

Re: Problème avec un Modelcraft VR18T

Messagepar Louky » Ven Déc 12, 2008 5:04 pm

Bonjour et bienvenue !

Tout d'abord, j'ai déplacé le sujet dans un forum plus adapté ! , c'est important pour les utilisateurs qui cherchent ...

Pour ce qui est de la commande, tous les périphériques pouvant êtres connectés sur un récepteur de radiocommande doivent ( en principe ! ) fonctionner avec un neutre à 1,5 mS et les deux positions extrèmes à 1 et 2 mS.

Pour plus de détails, voir ce lien sur les servos sur l'excellent site de Francis THOBOIS.

En ce qui concerne la variateur proprement dit, c'est Yoda qui l'utilise sur le VIDI2.

Notre ami verdatre étant actuellement sur une lointaine planète de notre système solaire, il ne pourra donner de détails avant la semaine prochaine. :wink:

Par contre, selon le PIC choisi et le langage, j'ai peut être le bout de code "tout fait qui va bien" ...

mobytango
Messages : 2
Inscription : Ven Déc 12, 2008 4:03 pm

Re: Problème avec un Modelcraft VR18T

Messagepar mobytango » Sam Déc 13, 2008 3:26 pm

Merci Louki de ta réponse trés rapide et efficace.

Pour le bout de code , je te remercie aussi. Pourquoi pas, je programme depuis pas mal de temps.
mais ca peut être intérressant de voir comment tu fais. Pour l'instant je fais l'essai sur un 16f877 mais comme mon moteur sera équipé d'un codeur, je porterai le code sur un 18F2431 équipé pour la lecture directe des encodeurs.
je te raconterai à quoi ca sert plus tard si ca t'interresse.

a +

Fred

Avatar de l’utilisateur
Louky
Messages : 899
Inscription : Sam Oct 22, 2005 6:33 am
Localisation : Var

Re: Problème avec un Modelcraft VR18T

Messagepar Louky » Jeu Déc 18, 2008 5:32 pm

Aprés une semaine courte mais intense, me revoila !

Oui, effectivement ça m'intéresse de savoir pourquoi un moteur avec codeur ?

en attendant voici le code dont je parlai :

Ce code tourne sur des PIC type 16Fxxx et attaque sur la sortie PWM un 4017 monté en décodeur.
le schéma est celui utilisé sur la carte UC_vidéo décrite sur notre site
sch4017.jpg

sur le schéma ci-dessus ( un peu ancien ) il gère 4 servos, mais le code en gère 8.
le principe est de générer un train de pulse dont la première, plus large, va provoquer le reset du 4017
ensuite le compteur fait le reste, le code doit juste ajuster le temps entre chaque front de façon à ce qu'il corresponde aux pulses demandées.

Tout d'abord, les déclarations :

Code : Tout sélectionner

// frequence horloge du PIC= 4MHz
// definitions pour commande servos
#define NB_SERVOS       8   // IMPERATIVEMENT >1 !!!
#define PULSERVO_REF    187   // 3 ms pour le timer 2 ( 16uS/top )
#define PULSERVO_MIN    31   // 0,5 mS
#define PULSERVO_MAX    94   // 1,5 mS
#define PULSERVO_NEUTRE 62   // 1 mS valeur du neutre

#define PERIODE_REF      219   // 3,5 mS
#define DUREE_PULSE     16    // 0.25 mS

unsigned char SERVO[NB_SERVOS] ;    // table contenant les tps de pulse pour chaque servo

unsigned char IndServo ;           // indice de parcours de la table des pulses ( 0 = sync )


Ensuite une petite fonction d'init :

Code : Tout sélectionner

// ------------------------------------------------------------------------
// fonction d'init de tout le HARD associe au servos
void INIT_SERVO(void)
{

for(IndServo=0 ; IndServo<8 ; IndServo++ )   SERVO[IndServo]=PULSERVO_NEUTRE ;

IndServo=0 ;

PR2=PERIODE_REF ;        // pulse de raz 4017
CCPR1L=PULSERVO_REF ;


// on utilise le mode PWM : le timer 2 ( PR2 ) fixe la periode
// et CCPR1L fixe le temps ou la sortie est a 1
CCP1CON=0x0F ; // valide mode pwm et les deux bits sup ?0

TRISB &=~0x08 ;       // pin RB3 en sortie

// valide timer 2 avec prediviseur=16 , post=1
// soit 1 top = 16uS ( 4MHz )
T2CON=0x06 ;

TMR2=0 ;       // raz timer et prescaler

PIE1|=0x02 ;   // valide IT timer 2 ( TMR2=PR2 )

}


puis la fonction de gestion de l'interruption :

Code : Tout sélectionner

// ------------------------------------------------------------------------
// fonction d'interuption pour gestion cde servos
// IndServo donne la valeur de l'impulsion en cours ( 0 = reset , 1=servo 0 , ...  )
#INT_TIMER2
IT_SERVO()
{

switch( IndServo )
   {
   case 0:                   // les suivantes sont des pulses de servos
      CCPR1L=DUREE_PULSE;   // valeur pulse suivante = pulse std
      PR2=PERIODE_REF ;    // periode = impulsion de reset ( reference )
      IndServo++ ;
      break ;

   case NB_SERVOS:             // prochaine = Pulse de REF
      CCPR1L=PULSERVO_REF ;   // prochaine pulse = ref
      PR2=SERVO[NB_SERVOS-1];   // periode actuelle = derniere pulse servo
      IndServo=0 ;              // raz indice servo
      break ;


   default:                    // cas standard des pulses de servos
      PR2=SERVO[IndServo-1] ;  // periode = pulse servo courant
      IndServo++ ;
      break ;
   }

}


pour utiliser, Il suffit d'appeller la fonction d'init au debut du main et d'écrire dans le tableau SERVO[] les valeurs désirées !
Vous ne pouvez pas consulter les fichiers insérés à ce message.

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

Re: Problème avec un Modelcraft VR18T

Messagepar YODA » Dim Déc 28, 2008 3:40 pm

Bonjour !

Désolé de venir répondre aussi tardivement; heureusement notre ami Louky, était là pour donner les réponses aux questions posées.
Je n'ajouterai donc rien de plus concernant l a "pulse".
Par contre je viendrai confirmer le manque d'information sur ce variateur ! J'ai bien tenter de découvrir sur le net si quelques détails supplémentaires excistaient, mais rien...
Un souci majeur est apparu au fonctionnement. Au vu de la "doc" il est possible de supprimer la zone "neutre" correspondant à la transition avant / arrière.
Je n'ai à ce jour rien pu faire à ce sujet !!! le problème , c'est que cette zone neutre réduit de façon conséquente la marge de manoeuvre en marche arrière. De plus pour une commande en auto altitude, immersion, celà risque de ne pas donner satisfaction.
Je reste un peu déçu par ce détail, qui nuit quelque peu au fonctionnement du ROV.
Avez-vous constaté le même problème ? Solution adoptée ?
A bientôt.


Revenir vers « Electronique et capteurs »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité