Page 1 sur 1

Pb Modelcraft VR18T [+ electronique & soft cde servos ]

Publié : Ven Déc 12, 2008 4:11 pm
par mobytango
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.

Re: Problème avec un Modelcraft VR18T

Publié : Ven Déc 12, 2008 5:04 pm
par Louky
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" ...

Re: Problème avec un Modelcraft VR18T

Publié : Sam Déc 13, 2008 3:26 pm
par mobytango
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

Re: Problème avec un Modelcraft VR18T

Publié : Jeu Déc 18, 2008 5:32 pm
par Louky
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 !

Re: Problème avec un Modelcraft VR18T

Publié : Dim Déc 28, 2008 3:40 pm
par YODA
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.