Gambas France BETA


Pas de compte ? Incription

Commande de rotor d'antenne

12
AuteurMessages
f5pvg#1 Posté le 7/9/2010 à 08:57:00
Bonjour à tous,

J'ai fabriqué une antenne radioamateur (QUAGI). Un renvoi d'angle (rapport de 34/1, d'un poids de 20 kg) est installé sur une cheminée de maison d'habitation et me sert de support. J'ai fixé un moteur pas-à-pas (Moteur pas à pas unipolaire 6 fils 1A, 200 pas) sur l'axe horizontal de ce renvoi.

Antenne QUAGUI





Antenne verticale 5/8ième d'onde (pour information)


Vue de la partie antenne Quad(pour information)


Fixation des antennes au mat (pour information)




Diagramme de rayonnement de l'antenne


Moteur pas à pas
Format ISO NEMA23 - 200 pas par tour - Unipolaire 6 fils - 1 A par phase - 4,1 V - Couple de 2,4 Kg.Cm - Poids 470 g environ







Raccord entre le moteur pas à pas et le renvoi d'angle


La commande de celui-ci se fera par l'intermédiaire d'une carte électronique (K8055) et d'un programme sous gambas. Une deuxième carte électronique préprogrammée est installée (Contrôleur Moteur Pas à Pas Stepper Driver Board), elle sert d'interface entre la carte K8055 et le moteur pas-à-pas.

Carte K8055


Contrôleur Moteur Pas à Pas Stepper Driver Board
Moteur: 6 fils ou 4 fils stepper motor (2-phase)
Ampérage: <2A
Voltage (board): 5VDC
Voltage (stepper motor): 9-40VDC
Vitesse du moteur ajustable


Le projet débute aujourd'hui, 7 septembre 2010. Les fonctions principales doivent être opérationnelles fin octobre 2010 pour les vacances (mes antennes s'y trouvent).

Jean-Pierre, F5pvg.[center]
spheris#2 Posté le 7/9/2010 à 09:49:00
Jean-Pierre, F5pvg,
Bon courage pour ton projet.
tu as bien fait d'utiliser Gambas !
Nous serons là pour un petit coup de pouce si tu en as besoin.
A+
;) ;)
f5pvg#3 Posté le 7/9/2010 à 09:54:00
Transfert des commandes GB -> K8055

La carte K8055 n'accepte pas de travailler avec une commande plus rapide que 25 ms.
Je choisis donc de ne pas travailler sous les 50 ms. Je vais utiliser une fonction pause que j'utiliserai entre chaque envoi de commande.

1
DIM StartTime AS FloatDIM DiffTime AS FloatDIM pause AS INTEGER =0StartTime = TimerWHILE DiffTime < 5 'comptage pendant 5 secondespause=pause+1DiffTime = Timer - StartTimeDiffTime = DiffTime * 100WENDpause=int(pause/100) '50 ms, 1/20 de seconde * 5, soit 100 pour 5 secondesprint pause


Je vais tester cette partie ...
spheris#4 Posté le 7/9/2010 à 09:56:00
pourquoi n'utilises-tu pas un Timer ?
http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=31
;)
f5pvg#5 Posté le 7/9/2010 à 10:05:00
pourquoi n'utilises-tu pas un Timer ?
http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=31
;)


J'utilise effectivement la fonction Timer, mais, afin d'optimiser le fonctionnement du programme en fonction de la rapidité des UC, il me semble plus judicieux de ne pas afficher le résultat et garder celui-ci dans une variable pause pour utilisation ultérieure.

Je remerciement vivement de l'aide que vous m'apporterez.

Jean-Pierre, F5pvg
Prokopy#6 Posté le 7/9/2010 à 17:18:00
Kinder PinguiSalut f5pvg,

J'utilise effectivement la fonction Timer, mais, afin d'optimiser le fonctionnement du programme en fonction de la rapidité des UC, il me semble plus judicieux de ne pas afficher le résultat et garder celui-ci dans une variable pause pour utilisation ultérieure.

Je remerciement vivement de l'aide que vous m'apporterez.

Jean-Pierre, F5pvg


Il y a en effet une manière bien plus simple et optimisée de faire cela. Il y a l'instruction Wait qui permet de "mettre en pause" ta fonction pendant un temps donné.

Par exemple, si tu veux attendre 50 milisecondes (0.05 s) dans ta fonction, tu auras juste à faire :

1
WAIT 0.05


Et c'est tout. :)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
f5pvg#7 Posté le 7/9/2010 à 23:17:00
Salut f5pvg,

J'utilise effectivement la fonction Timer, mais, afin d'optimiser le fonctionnement du programme en fonction de la rapidité des UC, il me semble plus judicieux de ne pas afficher le résultat et garder celui-ci dans une variable pause pour utilisation ultérieure.

Je remerciement vivement de l'aide que vous m'apporterez.

Jean-Pierre, F5pvg
a en effet une manière bien plus simple et optimisée de faire cela. Il y a l'instruction Wait qui permet de "mettre en pause" ta fonction pendant un temps donné.

Par exemple, si tu veux attendre 50 milisecondes (0.05 s) dans ta fonction, tu auras juste à faire :

1
WAIT 0.05


Et c'est tout. :) [/Quote]

Effectivement, je n'y avais pas pensé, merci Prokopy.

Voilà un point important, me semble-t-il, réglé.
f5pvg#8 Posté le 8/9/2010 à 22:21:00
Je vais m'efforcer à reprendre les bonnes habitudes apprises il y a 27 ans...

Les parties ci-dessous sont sujettes à modifications.

Déroulement du programme

0/DÉCLARATION DE VARIABLES
- variables PUBLIC
- variables PRIVATE

1/INITIALISATION

Chargement de données stockées dans une base de données SQLITE (si la base existe)
- 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)
- durée de pause entre les envois de commande au K8055 (Wait 0.05)
- date, heure et minute, de la sauvegarde de ce fichier

...
spheris#9 Posté le 9/9/2010 à 07:15:00
Le fichier CSV est un bon moyen de stocker les données.
Mais pour la recherche ou le pointage d'une donnée particulière, cela pourra sembler contraignant.
Je te conseille plutôt de t'orienter vers une petite base de données sqlite qui est très simple d'utilisation.
http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=191
Tes requêtes s'en trouveront simplifiées.
Bonne journée ;)
f5pvg#10 Posté le 9/9/2010 à 08:29:00
Le fichier CSV est un bon moyen de stocker les données.
Mais pour la recherche ou le pointage d'une donnée particulière, cela pourra sembler contraignant.
Je te conseille plutôt de t'orienter vers une petite base de données sqlite qui est très simple d'utilisation.
http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=191
Tes requêtes s'en trouveront simplifiées.
Bonne journée ;)


Merci pour l'information, je mets à jour le déroulement de l'application ci-dessus dans ce sens.

Bonne journée !
f5pvg#11 Posté le 9/9/2010 à 10:04:00
Je vais m'efforcer à reprendre les bonnes habitudes apprises il y a 27 ans...

Les parties ci-dessous sont sujettes à modifications.

(après installation du logiciel GAMBAS, SQLITE et driver K8055)

Déroulement du programme

0/DÉCLARATION DE VARIABLES

- variables PUBLIC
- variables PRIVATE

1/INITIALISATION

- test de communication à la carte électronique K8055
- test de présence de la base de données SQLITE puis chargement de celles-ci
.....- 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)
.....- durée de pause entre les envois de commande au K8055 (Wait 0.05)
.....- date, heure et minute, de la sauvegarde de ce fichier

...

gambix#12 Posté le 9/9/2010 à 15:00:00
Faire simple !27 ans .... ouch on reste dans la même moyenne mdr ... moi qui aurait cru ne voir que des boutonneux :) Je me suis bel et bien trompé ce sont les senior qui l'emporte et pour mon grand plaisir.

ça permettra une bonne symbiose dans le partage des connaissance intergénérationnel ça
Moins de texte dans une signature c'est agrandir son espace.
spheris#13 Posté le 9/9/2010 à 22:13: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 ?
gambix#14 Posté le 10/9/2010 à 07:45:00
Faire simple !
.....- 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 ?


La c'est moi qui doit intervenir ! :)

pourquoi trois champ spheris ... un seul suffit . Il faut générer la base avec du code gambas. Pour la date il faut bien sur ajouter un champ de type gb.date.

A partir de là hResult!Madate va retourner une variable de type date. Sur laquelle on peut agir comme on veux. Calculer des delay, ajouter des date extraire l'heure, ou le jour... enfin gambas a une panoplie de fonction liée aux dates.


http://gambasdoc.org/help/cat/time
Moins de texte dans une signature c'est agrandir son espace.
gambix#15 Posté le 10/9/2010 à 07:46:00
Faire simple !en français :)
http://gambasdoc.org/help/cat/time?fr
Moins de texte dans une signature c'est agrandir son espace.
12