RC-ELEC

Accueil

Historique

Les montages

Interface RC-USB

Interface PCtoRC

Altilog

Réalisation

Download

Composants

PCB

Commander

Montages

Accessoires

Divers

Prises écolage

Liens

Contact

 

Logiciel PC - suite

 

Nous allons maintenant décrire la partie logicielle située côté PC.

 

L'interface est reconnue par le PC comme étant de type HID: Human Interface Device. L'avantage est que ce type de déclaration ne nécessite aucun driver spécifique pour le dialogue avec le PC, le driver 'hid' étant standard à Windows et présent sur tous les PC à partir de Windows 98SE (sauf Windows NT qui ne gère pas l'usb).

En revanche, le dialogue avec une telle interface n'est pas des plus simples, mais vous n'avez pas besoin ici de rentrer dans le détail de ce fonctionnement. Vous pouvez vous contenter d'utiliser les fonctions proposées déjà définies pour ce dialogue.

 

Les exemples de codes fournis sont commentés et très explicites. En cas de doutes, n'hésitez pas à me contacter.

 

Fonctionnement:

L'élément le plus important à connaître est la façon dont les informations sont transmises à l'interface. Ces informations sont codées sur 38 octets:

 

BufferOut(x) Signification
0

toujours à 0

1

nombre de voies (1 à 16) + 128 si modulation négative

32 ou 160 pour fonction testeur de servo

2-3 Voie 1

valeur sur 16 bits

1 ms = 12000

2 ms = 24000

4-5 Voie 2
6-7 Voie 3
8-9 Voie 4
10-11 Voie 5
12-13 Voie 6
14-15 Voie 7
16-17 Voie 8
18-19 Voie 9
20-21 Voie 10
22-23 Voie 11
24-25 Voie 12
26-27 Voie 13
28-29 Voie 14
30-31 Voie 15
32-33 Voie 16
34-35 durée totale frame sur 16 bits (1 ms = 1500)
36-37 durée totale minipulse sur 16 bits (1 ms = 12000)

Les valeurs des voies sont fournies sur 16 bits pour une grande précision. une valeur de 12000 correspond à un pulse de durée 1ms, soit au débattement maxi du servo d'un côté, une valeur de 24000 correspond à un pulse de durée 2ms, soit au débattement maxi du servo de l'autre côté. Le neutre correspond donc à 18000 (1,5ms).

 

La durée total de la frame correspond à la durée totale du signal transmis: elle comprend tous les pulses de codage des voies plus le pulse dit de synchronisation. Cette durée est généralement de 20 ms (soit 30000 dans le codage sur 16 bits).

 

La durée du minipulse est la durée du pulse de séparation des voies (voir schéma du signal ppm en page Théorie). Il est en général autour de 0,3 ms (soit  3600 dans le codage sur 16 bits).

 

Une fois les valeurs transmises, l'interface génère le signal PPM correspondant jusqu'à ce qu'elle reçoive de nouvelles valeurs. Il n'est donc pas nécessaire d'envoyer en permanence des valeurs à l'interface, mais seulement si il y a changement.

Nota: si l'on ne désire transmettre que 4 voies par exemple, ce seront les valeurs des voies 1 à 4 qui seront utilisées, les valeurs des voies 5 à 16 seront ignorées.

 

La fonction testeur de servo est activée en fournissant comme nombre de voies 32 ou 160.

L'interface génère alors un pulse positif dont la durée est fixée par la valeur de la voie 1. Ce pulse peut être directement utilisé pour commander un servo. Il faudra cependant penser à fournir une alimentation au servo (+5 volts), l'interface ne transmettant que le signal et la masse.

 

Logiciel de démonstration:

L'exemple fourni ici permet de visualiser le fonctionnement de l'interface et sert de base de départ pour le développement de votre propre application. Cet exemple se trouve sous trois langages différents: Visual Basic 6, Delphi 2005 ainsi qu'un exemple en C++ fourni par un utilisateur. Vous pouvez télécharger les fichiers en page Download.

L'ensemble du code source est disponible. Certaines parties de ce code ne doivent pas être modifiées (gestion du dialogue PC<=>interface, définition de certaines fonctions, etc...). Des commentaires précisent la partie libre de modification.

L'exemple fourni, une fois compilé, permet la création du fichier PCtoRC.exe

Une fois lancé, celui-ci donne la fenêtre suivante:

 

 

L'utilisation de ce logiciel de démonstration est particulièrement intuitive et ne nécessite pas d'explication particulière.

A chaque modification d'une valeur (position voie, durée frame, sens de modulation, etc...), les nouvelles valeurs sont envoyées à l'interface.

Si vous avez des questions sur le fonctionnement de cette interface ou sur l'exemple fourni, n'hésitez pas à me contacter.

Vous trouverez en page Questions quelques réponses aux questions les plus courantes.

 

 

(c) 2006 rc-elec.com