Gambas France BETA


Pas de compte ? Incription

Commande de rotor d'antenne

12
AuteurMessages
f5pvg#16 Posté le 11/9/2010 à 23:43:00
f5pvg,
Petite réaction personnelle suite à ton post

1/INITIALISATION

- test de communication à la carte électronique K8055
(un watch dog s'impose non ?)

- test de présence de la base de données SQLITE puis chargement de celles-ci
si test negatif alors crée-on en une ?

.....- indicatif radioamateur de l'utilisateur (ici, F5PVG/P, /P : portable)
.....- azimut de l'antenne (0 à 360 degrés)
.....- ''altitude'' de l'antenne (568 m)
.....- locator (JN16HD - longitude et latitude, format raccourci)
protocole antenne surement, OK !


.....- durée de pause entre les envois de commande au K8055 (Wait 0.05)
Attention l'envoi de donnee à la K8055 change l'etat des entrees/sortie en permanence.(mais tu le sais peut être)

.....- date, heure et minute, de la sauvegarde de ce fichier
La base de données aura t elle Trois champs DATE, HEURE,MINUTE, ou comment comptes tu faire ?



Bonjour,

Afin de bien analyser l'application, je me suis laissé quelques jours avant de débuter le code. Les indications de chacun me sont précieuses.

Pour répondre à spheris,

Effectivement, j'ai prévu un "watch dog", et après réflexion j'en rajouterai un deuxième à savoir :

- J'avais déjà prévu d'utiliser un capteur électromagnétique (de chez Radiospares) que je possède, il sera installé à proximité de l'axe horizontal et me renverra, grâce à la carte K8055 des impulsions +5 volts, indiquant que le système tourne.

- Après l'intervention de spheris, pour le deuxième "watch dog",
afin d'utiliser au mieux cette carte, je vais porter à 5 volts un port libre, la carte me renverra une valeur différente de zéro. C'est cette valeur, qui ne sera pas à zéro, que je compte surveiller.

En ce qui concerne les commandes envoyés à la carte K8055, j'ai besoin que cette dernière ne me renvoi qu'un impulsion, pour un pas de moteur, cette impulsion est renvoyé au contrôleur du moteur qui se charge de le commander correctement. Le port est remis à zéro immédiatement après l'impulsion (en tenant compte de la pause).

Pour effectuer 360 degrés, il me faudra 200 pas (un tour entier du moteur pas à pas) multiplié par 34 (rapport du renvoi d'angle) soit 6800 impulsions. Je viens de faire quelques essais avec la carte, il semble que je puisse diminuer la durée de pause entre les impulsions. Avec une pause de 50 ms, cela fait quand même presque 6 minutes pour un tour complet d'antenne.... Une pause de 15 ms correspond à un peu moins de deux minutes, donc acceptable.

Pour la base de données, je n'y ai pas encore réfléchi.

J'ai quelques idées sur les interfaces graphiques de l'application que je compte proposer aux avis. Je me laisse la nuit pour y réfléchir et vous les faire connaître.

A l'issue, je compte débuter le code.

Je vous remercie, tous, pour vos avis.

F5pvg
spheris#17 Posté le 12/9/2010 à 20:44:00
- Après l'intervention de spheris, pour le deuxième "watch dog",
afin d'utiliser au mieux cette carte, je vais porter à 5 volts un port libre, la carte me renverra une valeur différente de zéro. C'est cette valeur, qui ne sera pas à zéro, que je compte surveiller.


ou alors tu met à 5V une sortie pour charger un condensateur.et tu lis une entree toutes les 10sec. Si le condo ne s'est plus chargé alors probleme.
Au fait si le systeme ne reagit plus au watch dog ,que comptes-tu faire ? Reboot de linux ?
;)
f5pvg#18 Posté le 16/9/2010 à 21:03:00
Bonjour,

Dernières nouvelles quant à l'avance du projet.

L'installation du driver sous linux, ubuntu, s'est effectuée sans problème.

Les lignes de commande : k8055 -p:0 -d:1 -a1:0 -a2:0 ; k8055 -p:0 -d:0 -a1:0 -a2:0 et autres fonctionnent correctement.

Le script gambas :

1
PUBLIC SUB Main()DIM i AS IntegerFOR i = 1 TO 6800EXEC ["k8055", "-p:0", "-a1:", 1]WAIT 0.0015EXEC ["k8055", "-p:0", "-a1:", 0]NEXTEND


semble bon, mais j'ai un retour d'erreur. la carte ne semble pas connectée...

J'ai, au vu de mes premières recherches, mis la carte K8055, dans mon groupe., sans résultat positif.
Je continu à chercher...
f5pvg#19 Posté le 17/9/2010 à 21:59:00
Bonjour à tous.

Après recherches et divers essais :

Dans un premier temps, il s'avère que la structure de la commande EXEC, que j'avais copié sur un site gambas, ne convenait pas.
Dans un deuxième temps, je me suis aperçu pour une seconde fois de l'extrême lenteur de la carte k8055 pour ce projet. Il ne m'est pas possible d'attendre plusieurs minutes pour un tour complet de l'antenne (environ 10mn).

Je suis tenu de prendre en compte
- le temps d'ouverture du port avant l'envoi de données, soit environ 200 ms.
- le temps entre chaque instruction, soit 50 ms, semble convenir. En diminuant cette valeur de nombreuses erreurs d'accès au port 0 apparaissent. Même avec 50 ms, des erreurs sporadiques apparaissent.

Pour contourner ce problème de lenteur, j'ai déjà quelques solutions :
1/ changer par un moteur ayant moins de pas.
2/ intercaler entre la carte K8055 et l'interface de commande du moteur pas à pas, un circuit électronique qui, recevant une impulsion de la carte K8055, renvoie 10 impulsion, ou plus, à l'interface.
3/ utiliser les 8 ports de sorties du K8055 en même temps (associés à un port digital/analogique).
Avec un convertisseur parallèle/série, envoyer les trames séries vers le contrôleur, ce qui me réduira par 8 le nombre d'impulsion, soit 850x2 = 1700 impulsions.

Voici les commandes de test actuelles avec gambas sous Ubuntu 10.04 et d'un processeur bi-coeur:

1
PUBLIC SUB Main()DIM i AS IntegerEXEC ["k8055", "-d:1"]WAIT 0.2FOR i = 2 TO 6800 EXEC ["k8055", "-d:1"] WAIT 0.05 EXEC ["k8055", "-d:0"] WAIT 0.05NEXTEND



Je vais tester plus précisément cette carte K8055 afin de déterminer son temps de réponse par un script en ligne de commande.

F5pvg


f5pvg#20 Posté le 18/9/2010 à 16:38:00
Bonjour,

Résultat des premiers tests :

Ordinateur portable
ACER ASPIRE ONE

Système
UBUNTU 10.04

Processeur :
Bi-coeur : Intel Atom CUP N270 1.60 GHz

Script compilé sous Gambas2

1
PUBLIC SUB Main()DIM i AS IntegerEXEC ["k8055", "-d:1"]WAIT 0.2FOR i = 2 TO 6800 EXEC ["k8055", "-d:1"] WAIT 0.05 EXEC ["k8055", "-d:0"] WAIT 0.05NEXTEND


Pour 6800 ''fronts montants'' (avec optimisation du WAIT pour essayer de minimiser les erreurs de port) soit 13600 instructions 1 et 0 : 10 minutes et 30 secondes

Avec le script shell

1
FOR ((i = 6800 ; i >= 0 ; i -= 1))doecho $ik8055 -p0 -d:1k8055 -p0 -d:0done


(aucune erreur connexion au port 0, wait inutile ...)

Pour 6800 ''fronts montants'' soit 13600 instructions 1 et 0 : 9 minutes et 15 secondes

f5pvg

f5pvg#21 Posté le 20/9/2010 à 22:50:00
Bonjour,

Le choix le plus judicieux, à mon avis, est d'intercaler, juste après le k8055, un module qui, pour une impulsion en entrée renvoie à une cadence supérieure plusieurs impulsions sur l'interface de commande du moteur pas à pas.

J'ai choisi comme module, un circuit imprimé Arduino comportant un microprocesseur.

Carte Arduino



F5pvg


spheris#22 Posté le 21/9/2010 à 14:12:00
Arduino, ou même pour rester dans la logique Gambas, un PICBASIC de chez Lextronic programmable en basic.
;)
f5pvg#23 Posté le 23/9/2010 à 10:21:00
Bonjour,

Arduino, ou même pour rester dans la logique Gambas, un PICBASIC de chez Lextronic programmable en basic.
;)


Je possède sur mon lieu de vacance un module Arduino, je pourrais effectivement utiliser un PICBASIC.

Je suis en train de me poser les questions sur les commandes que je doit passer à la carte K8055 :

- envoyer le multiple de pas en une fois (j'utiliserai un port disponible qui reste à 1 tant qu'il y a des trames)
- un à un, en attendant que le module Arduino est fait son travail


F5pvg

spheris#24 Posté le 23/9/2010 à 20:01:00
La K8O55 est essentiellement une carte de commutation.
Elle n'est pas vraiment faite pour générer des creneaux.
Son temps de réponse n'est pas terrible.
L'idée de l'Arduino n'est pas mal. Mais tu peux réaliser ceci avec 1 bascule JK tout simplement.
;)
f5pvg#25 Posté le 23/9/2010 à 22:42:00
Bonjour,

La K8O55 est essentiellement une carte de commutation.
Elle n'est pas vraiment faite pour générer des créneaux.
Son temps de réponse n'est pas terrible.
L'idée de l'Arduino n'est pas mal. Mais tu peux réaliser ceci avec 1 bascule JK tout simplement.
;)


effectivement cette carte n'est pas terrible..., j'étais très enthousiaste au début, je le prend maintenant comme un jeu et je vais faire en sorte d'utiliser au maximum ses possibilités. Pour la carte Arduino, j'avais déjà quelques idées qui me trottaient dans la tête, que je vais expliquer. Pour la bascule JK, effectivement solution très simple m'obligeant à créer une platine et à sortir mon insoleuse ... L'idée m'était passée par la tête, mais non retenue...

...

F5pvg
f5pvg#26 Posté le 25/9/2010 à 19:57:00
Bonjour,

Ci-joint une première vue du câblage :



Ports utilisés :

Ports sortis : (vers module Arduino)
- port 1 : 0 -> aucune action
- port 1 : 1 -> préparation à l'envoi des trames vers Arduino, attente que les ports entrés 1 à 5 soient à 0
- port 2 et port 3 = 1 -> impulsion, trames pour indiquer la durée du WAIT au module Arduino
- port 2 = 1 et port 3 = 0 puis port 2 = 0 et port 3 =0 -> impulsion, l'antenne tourne vers l'Est
- port 2 = 0 et port 3 = 1 puis port 2 = 0 et port 3 =0 -> impulsion, l'antenne tourne vers l'Ouest
- port 1 : 0 -> fin d'envoi des trames

Ports entrés
- port 1 à 5 : état du module Arduino, rapport diviseur 2 puissance 5 (32)

Pendant que le module Arduino transmet les trames vers la carte contrôleur, il est possible d'envoyer, de la carte K8055 vers Arduino, une nouvelle série de trames (même dans une direction différente) par la mise à 1 du port 1, attente que les ports entrés 1 à 5 passent à 0 puis envoie de nouvelles trames (recalcule de la direction par le module Arduino).

f5pvg

f5pvg#27 Posté le 28/9/2010 à 15:52:00
Bonjour,

Je récupère les icônes et prépare la face avant de l'application.

...










F5pvg
f5pvg#28 Posté le 31/10/2010 à 22:22:00
Reprise d'activité avec mes excuses pour cette absence ....
f5pvg#29 Posté le 12/12/2010 à 22:32:00
Faces avant









Nous trouvons sur ces faces avant, soit le compas ou une carte géographique avec la direction en cours de mise au point signalée par la flèche, une cellule contenant sous format numérique la direction en cours, un indicatif radioamateur, le locator (long. et lat. en abrégées), l'heure au format GMT (Z) ou locale, la direction souhaitée à partir d'un locator (calcul automatique de l'azimut) ou entrée directe de l'azimut.
Les boutons type magnétophone, à partir de la gauche, exécution, retour rapide, avance rapide, stop, pause, enregistrement d'une séquence.

spheris#30 Posté le 5/2/2011 à 11:33:00
f5pvg,
as-tu commandé tout le matériel ?
Où en es-tu du soft en Gambas ?
;) ;)
12