Diversity DIY

Modérateur : Dehas

Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Diversity DIY

Message non lu par TiTTaN »

bonjour,

Je possède chez moi 2 RC305 avec des mini arduino.

Je voudrais donc me créer un diversity avec ses 2 récepteurs, je me suis récupérer un plan électronique tout fait pour faire les branchements des éléments principal:

Image.

Je voudrais faire quelques modifications et poser des questions(je maitrise pas beaucoup l électronique):

Modifications:
1- Utiliser un LM7805M (régulateur 5v) a la place du ubec.
2- Retirer les régulateurs d'origines et brancher le 5v en direct sur les rc305 pour éviter des chauffes inutiles
3- Intégrer un Micro OSD
4- Ajout de potentiomètre de 100k sur les lignes RSSI pour faire du calibrages


Questions:
Je voudrais ajouter des leds pour savoir sur quel récepteurs il est. j'ai pensé a un relais 3 contacts pour ajouter les leds.
Y aurait il pas plus simple???

Sur le schéma y a des condo (C5 C6) de 470uf, alors que la sortie du RC305 en a déjà, comprends pas pourquoi ??

Je voudrais juste quelques avis avant de me lancer !!!


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

Ton arduino vas pouvoir alimenter un LED en fonction du RX en cours et ceci en fonction de tes pin A0 & A1 (qui sont tes RSSI).
Je ne connais pas ton code de mais il ta suffit de faire:

If A0 > A1 {
LED_0
else
LED_1
}


Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Re: Diversity DIY

Message non lu par TiTTaN »

bonjour a tous,

pour le code je me guide avec cette page : http://just-rc.blogspot.fr/2012/07/new- ... ystem.html
je suis en plein montage et j ai presque terminer, par contre j ai un doute sur le branchement du BD242 par rapport au schema

composant vu de face: patte 1 a gauche (B) Patte 2 du milieu (C) patte 3 de droite (E), la fleche sur la patte 1 doit etre tourne vers l interieur normalement.

comment je cable ce composant ?


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Re: Diversity DIY

Message non lu par TiTTaN »

Cest bon pour le BD242, c est branché.
mon branchement est terminé, j'ai donc recopier et adapater le code donné + les leds:
int Relay = 2;
int PinHelix = A0;
int PinDipole = A1;
int RssiHelix = 0;
int RssiDipole = 0;


void setup() {

pinMode(Relay,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(9, HIGH);
}

void loop() {
RssiHelix = analogRead(PinHelix);
RssiDipole = analogRead(PinDiploe);


if (RssiHelix > RssiDiploe){digitalWrite(Relay, HIGH);}
if (RssiDipole > RssiHelix){digitalWrite(Relay, LOW;)}

delay(500);
}

if A0 > A1 {
LED_0
else
LED_1
}
Ton code consistes a éteindre la led selon l'etat, je voudrais mettre plutot 2 leds (une pour chaque Rx), peux tu me redonnais un code adapter ?? :]


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

Je ne comprends pas explique.


Avatar du membre
Vincent81
Quadricopter
Messages : 196
Enregistré le : dim. 30 nov. 2014 12:31
Réputation : 0
Localisation : Puylaurens, Tarn, France
Contact :

Re: Diversity DIY

Message non lu par Vincent81 »

Hello,
- LED_0 et LED_1 ne sont pas défini.
- le mini code if A0.. n'est pas dans la boucle loop.

Le plus simple, branche une led + résistance de 1k en série avec la led , le tout en // sur le relais et une autre entre la borne 2 du relais et la masse avec aussi une résistance en série de 1k ou un peu moins a cause de la résistance du relais (a mesurer et déduire de 1k), comme ça pas besoin de modifier le code d'origine.


Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

bruno a écrit :Je ne comprends pas explique.
De retour au bureau, je viens de comprendre (voir 8| et oui je suis miro depuis mon iPhone)

Donc mon code

Code : Tout sélectionner

if A0 > A1 {
LED_0
else
LED_1
}
N'était qu'informatif, et demandait à être traduit comme le dit Vincent81 sans déninition ça ne marchera pas.

Donc voici ce que je ferais:

Code : Tout sélectionner

int Led_RX1 = mettre ici le numéro de PIN pour la led 1 pour le Dipole
int Led_RX2 = mettre ici le numéro de PIN pour la led 2 pour l'Helix

int Relay = 2;
int PinHelix = A0;
int PinDipole = A1;
int RssiHelix = 0;
int RssiDipole = 0;


void setup() {
   // définition de la PIN 13 & 14 en OUTPUT
   pinMode(Led_RX1, OUTPUT);
   pinMode(Led_RX2, OUTPUT);

   pinMode(PinHelix, INPUT);
   pinMode(PinDipole, INPUT);
 }

void loop() {

   RssiHelix = analogRead(PinHelix);
   RssiDipole = analogRead(PinDiploe);


   // Si les 2 valeurs sont identique nous passons sur l'antenne dipole par defaut
   // mais il serait bon d'avoir une valeur de marge de 10% par exemple
   // ce qiuy vas éviter que le relais travail trop dans le cas ou les 2 valeurs sont trop proche.
  if(RssiHelix = RssiDiploe) {
     // nous nous mettons d'office sur l'antenne dipole
     digitalWrite(Relay, LOW);
  }

   // là aussi avoir une marge d'erreur pour éviter que le relais ne bascule trop souvent
   if (RssiHelix > RssiDiploe) {
      digitalWrite(Relay, HIGH); // nous passons sur l'Helix
      digitalWrite(Led_RX1, HIGH);   // la led (helix) est allumée
      digitalWrite(Led_RX2, LOW);   // la led (dipole) est eteinte
   } else {
      digitalWrite(Relay, LOW); // nous passons sur le Dipole
      digitalWrite(Led_RX1, LOW);   // la led (helix) est eteinte
      digitalWrite(Led_RX2, HIGH);   // la led (dipole) est allumée
   }

   delais(300) // nous attendons 300ms (ou autre valeur) avant de boucler. Là aussi le but est de ne pas faire trop travailler le relais.
}


Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Re: Diversity DIY

Message non lu par TiTTaN »

alors ca c est de la réponse balèze, je vais m inspirer de ton code; et m adapter.

j'ai terminé mon montage, on est gentil sur les critiques ce n'ai que ma V1 pour faire fonctionner un avant de le refaire proprement:

Image

je me suis rajouter des potards de 100k sur les circuit RSSI pour faire un pseudo étalonnage ci necessaires

Là maintenant faut que je règle mes problèmes d images qui se déforment :0 :0


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

Concernant ton code il te faudrai travailler sur une plage de valeur.
Digital write te renvoie un entier
Je te propose d'utiliser valRssi1 = constrain(valeur du digitalread, 1, 10) par exemple.
ValRssi1 ne peut avoir comme valeur que 1a 10.
Et 1 = 1 à 102 (1024/10)
Ce qui te donne donc une plage.
Tu peux donc ensuite comparer à ton digitalread
Si < 102
Si > 102
Je me fait comprendre ?


Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

Et une question :
Ta radio est une Taranis ?
Si oui regarde dans ma signature ;)


Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Re: Diversity DIY

Message non lu par TiTTaN »

Je débute dans le monde du arduino. donc moi néophyte complet comparé a vous.

Donc malheureusement non, je comprends pas pourquoi travailler sur une plage de valeur?;
le digitalRead(lecture RSSI par l'arduino,(je crois)?

j'aimerai bien faire un diversity bien abouti quand même, donc vos paroles sont intéréssantes

en radio, je possède une 9xr pro en openTX, j'ai deja ton tacker, mais je pense pas encore avoir le niveau pour en faire un.

apres pour un racer (QAV250), le tracker va devenir dingue ::d

comment peux t on faire une lecture RSSI qui passe a l arduino??


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

Travailler en plage :
Imaginons que le drone soit pas loin. Les 2 RX vont donc te retourner des valeur rssi très semble voir égale.
Donc ton relais ne vas cesser de basculer un RX vers l'autre !
Maintenant si tu travail sur un plage (qui sera à adapter) car je prends des valeur comme ça.
0 à 300 = mauvaise réception sur mon antenne dipôle. Je passe donc sur l'hélixe.
300 à 600 = valeur identique sur les 2 RX. Je force a utiliser l'antenne dipôle. Mon relais ne travail pas trop.
600 à 900 = valeur très bonne sur mon antenne dipole. Je reste sur cette antenne.

De plus comme tu travail via relais le fait de basculer vas te faire perdre l'image et ceci le temps de synchro de l'écran donc autant limiter cette perte.


Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

Pour la lecture RSSI tu dois utiliser la Pin RSSi de chaque récepteurs.
La valeur rssi vas de 0,1 très bon à 1,1 mauvais de mémoire.

Oui un racer.
Je ne sais pas si un diversity est très utiles car en effect à mon avis un diversity est à coupler avec un tracker (antenne directive tjrs vers le model pour du long range)


Avatar du membre
Vincent81
Quadricopter
Messages : 196
Enregistré le : dim. 30 nov. 2014 12:31
Réputation : 0
Localisation : Puylaurens, Tarn, France
Contact :

Re: Diversity DIY

Message non lu par Vincent81 »

Le lecture du RSSI est faite sur ces deux lignes :
RssiHelix = analogRead(PinHelix);
RssiDipole = analogRead(PinDiploe);

Une autre version du code en tenant compte comme l'a dit bruno de l'effet de seuil :

Code : Tout sélectionner

int EcartRssi;
int Seuil = 10; // par exemple, a régler.

void loop() {

EcartRssi = analogRead(PinHelix) - analogRead(PinDiploe);

// Si les 2 valeurs sont identique nous passons sur l'antenne dipole par defaut
// ce qiu vas éviter que le relais travail trop dans le cas ou les 2 valeurs sont trop proche.
if ((abs(EcartRssi) < Seuil) || (EcartRssi < 0))  {
// nous nous mettons d'office sur l'antenne dipole
 digitalWrite(Relay, LOW);
 digitalWrite(Led_RX1, LOW); // la led (helix) est eteinte
 digitalWrite(Led_RX2, HIGH); // la led (dipole) est allumée
} else {
digitalWrite(Relay, HIGH); // nous passons sur l'Helix
digitalWrite(Led_RX1, HIGH); // la led (helix) est allumée
digitalWrite(Led_RX2, LOW); // la led (dipole) est eteinte
}
delais(300) // nous attendons 300ms (ou autre valeur) avant de boucler. Là aussi le but est de ne pas faire trop travailler le relais.
}


Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

C'est aussi une solution.
Mais garde mes propos en mémoire ;)


Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Re: Diversity DIY

Message non lu par TiTTaN »

ok,j'ai compris le principe des plages et c'est très intressants :]

Concrètement ça se mets en place comment ??au plus simple,juste en inserant les lignes de vincent dans mon code d'origine ??

(merci pour ton aide aussi bruno)


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

Oui c'est.


Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Re: Diversity DIY

Message non lu par TiTTaN »

je remettrais le code au propre demain,
ce soir faut que je m imprime le support antenne

j hesite entre 2 avec une petite preference pour la premiere:

https://www.thingiverse.com/thing:452802

http://www.thingiverse.com/thing:858112


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
Dehas
Administrateur du site
Messages : 16171
Enregistré le : ven. 3 juin 2011 12:50
Réputation : 5
Localisation : Saint Dié des Vosges
Genre :
Contact :

Re: Diversity DIY

Message non lu par Dehas »

Mettez les balises "code" pour les codes !!


Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Re: Diversity DIY

Message non lu par TiTTaN »

Bonsoir a tous,

Je reviens vers vous pour tout mettre au clair,

donc si j'ai compris voila le code que je devrais mettre dans mon arduino:

Code : Tout sélectionner

int Relay = 2;
int PinHelix = A1;
int PinDipole = A0;
int RssiHelix = 0;
int RssiDipole = 0;
int Led_RX1 = 3; //led 1 pour le Dipole omnidirectionnelle
int Led_RX2 = 4; //led 2 pour l'Helix directionnelle

void setup() {
 
 pinMode(Relay,OUTPUT); 
 pinMode(9,OUTPUT);
 digitalWrite(9, HIGH);
}

void loop() {
RssiHelix = analogRead(PinHelix);
RssiDipole = analogRead(PinDipole);


if (RssiHelix > RssiDipole){digitalWrite(Relay, HIGH);}
if (RssiDipole > RssiHelix){digitalWrite(Relay, LOW;)}

delay(500);
}

int EcartRssi;
int Seuil = 10; // par exemple, a régler.

void loop() {

EcartRssi = analogRead(PinHelix) - analogRead(PinDipole);

// Si les 2 valeurs sont identique nous passons sur l'antenne dipole par defaut
// ce qiu vas éviter que le relais travail trop dans le cas ou les 2 valeurs sont trop proche.
if ((abs(EcartRssi) < Seuil) || (EcartRssi < 0))  {
// nous nous mettons d'office sur l'antenne dipole
 digitalWrite(Relay, LOW);
 digitalWrite(Led_RX1, LOW); // la led (helix) est eteinte
 digitalWrite(Led_RX2, HIGH); // la led (dipole) est allumée
} else {
digitalWrite(Relay, HIGH); // nous passons sur l'Helix
digitalWrite(Led_RX1, HIGH); // la led (helix) est allumée
digitalWrite(Led_RX2, LOW); // la led (dipole) est eteinte
}
delais(500) // nous attendons 500ms (ou autre valeur) avant de boucler. Là aussi le but est de ne pas faire trop travailler le relais.
}
j'ai juste ajouter le code de pour assigner les leds sur les pins (D3 et D4) au début et rajouter le reste a la suite.

Je suis bon :] ???


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

Dans ton setup c'est la pin 9 output et ce digitalwrite ?
De plus mets t aussi tes output et input par exemple les leds.

À tu vérifier la valeur des pin rssi des tes RX pour bonne et mauvaise réception ?


Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Re: Diversity DIY

Message non lu par TiTTaN »

non j'ai mesuré 0.354 sur le rc1 et 0.332 sur le rc2 pour la mauvaise reception, je mesurerai ce soir avec le drone a coté et des antennes clover identiques !!

Pour les branchement sur l'arduino, j'ai l'alim bien sur, les Leds sur les postifs sur les pins D3,D4 et le negatif a la masse, la commande relais sur D2, les rssi sur le A0 et A1.

J'ai rien d'autre de cabler dessus.

je ne sais pas ce que c est ce digitalwrite, je croyais à une commande
sur le D9 je n'ai rien dessus, il me manque des branchements ?? :-|


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
bruno
Pilote toutes catégories
Messages : 1820
Enregistré le : mar. 15 avr. 2014 11:39
Réputation : 1
Localisation : Créteil (94)

Re: Diversity DIY

Message non lu par bruno »

Donc si c'est pas utilisé retiré les appel à la 9.

Et dans le setup tu mets tous les input et output pour le lecteur c'est mieux.


Avatar du membre
TiTTaN
Octocopter
Messages : 634
Enregistré le : ven. 2 janv. 2015 12:00
Réputation : 0
Localisation : DAX
Genre :

Re: Diversity DIY

Message non lu par TiTTaN »

ok je remets ca au propre des que je rentre !! merci de ton aide :super:


TBS Discovery-=-RD210-=-QAV250 Low Racer-=-GERPC Mark4 HD5-=-Taranis X9D+ 2019-=- Google DJI Digital FPV
Avatar du membre
Vincent81
Quadricopter
Messages : 196
Enregistré le : dim. 30 nov. 2014 12:31
Réputation : 0
Localisation : Puylaurens, Tarn, France
Contact :

Re: Diversity DIY

Message non lu par Vincent81 »

Tes leds sont de led 5V ou "normales" ?
Vérifie la tension de tes leds, si c'est des normales, il leur faut du 0.6..1V max, l'arduino délivre du 5V (ou 3.3 suivant le modèle), donc il te faut une résistance en série pour faire chuter la tension, sinon, tu risque de cramer la sortie de l'arduino.


Répondre

Retourner vers « Electronique (Cartes, Moteurs, ESC, Radios) »