Bienvenue sur Multi Rotor Fans Club. Cliquer ici pour vous enregistrer
ou ici pour vous connecter


  • Annonce

Bonjour a tous.
Un petit changement sur l'adresse du forum qui a quand même son importance, surtout en terme de sécurité, c'est que nous passons en https, donc en connexion sécurisé.
Il vous suffit de modifier votre favori et/ou marque page et de regarder si tout fonctionne bien.
Si vous avez des erreurs, il vous suffit de définir le permissions.
Je vous recommande de le faire, car vous risquez de vous reconnecter a chaque session.
Voila, j’espère que cela vous conviens, j'essaye de faire le maximum pour que vous soyez en sécurité.
Dehas



Utiliser un arduino pour autopiloter mon contrôleur

Modérateur: Dehas

Utiliser un arduino pour autopiloter mon contrôleur

Message non lupar crtleroy » Lun 31 Juil 2017 14:38

Salut tout le monde,


Je bosse sur un octocopter, que je voudrais faire contrôler par un arduino. Mon idée est donc de ne pas utiliser une radiocommande mais d'embarquer mon arduino mega 2560 dans mon drone, et de le faire "passer" pour un recepteur RC ! Je précise que mon flight controller est un SP Racing F3 et j'utilise cleanflight.


Donc, plus précisément, je voudrais que mon arduino imite un récepteur en envoyant des signaux PWM dans les entrées RC de mon contrôleur de vol. Le premier truc à faire est donc déjà de connaître la nature des signaux PWM à la sortie d'un récepteur classique, chose que j'ai trouvée ici : http://diydrones.com/forum/topics/pwm-o ... m-receiver
A priori la commande PWM va de 1ms à 2ms sur une période totale de 20ms, pour un récepteur Spektrum classique. Je suppose donc qu'il me suffit de générer le même signal pour simuler une radiocommande. Ce qui me rassure pour la forme de l'onde c'est la nature de la commande sur cleanflight, qui va de 1000 à 2000 : il s'agit donc de 1000μs à 2000μs, c'est sûrement ça.

Donc, je génère un signal PWM de cette nature avec ce code Arduino très très simple :


void setup()
{
pinMode(13, OUTPUT);
}

void loop()
{
digitalWrite(13, HIGH);
delayMicroseconds(1300);
digitalWrite(13, LOW);
delayMicroseconds(20000 - 1300);
}

et je connecte la masse de l'arduino à l'entrée masse du récepteur (pin 1 de la broche IO-1 sur le SP F3) et la pin 13 de l'arduino sur n'importe laquelle des chaînes RC du contrôleur (j'ai tout essayé, pin 3, 4, etc, c'est à dire le throttle, les AUX, tout).

Bref, là, a priori j'envoie un signal PWM comme le récepteur est censé le faire. J'ouvre cleanflight et je regarde la commande sur les chaîne et rien du tout :( Elles sont toutes bloquées à 1500 comme d'hab. pourtant je pense avoir envoyé un signal de 1300...

Alors voilà, est ce que quelqu'un s'est déjà amusé à faire ça ? Ou s'y connaitrait un peu mieux que moi en PWM ou en communciation RC ? Je ne sais plus trop quoi faire :(

Votre soutien sera le bienvenu :) Merci d'avance !

Corentin
Avatar de l’utilisateur
crtleroy
 
Messages: 6
Enregistré le: Lun 31 Juil 2017 14:24

Re: Utiliser un arduino pour autopiloter mon contrôleur

Message non lupar Crisssss » Lun 31 Juil 2017 14:55

Un signal pwm sert a controler une seule voie il me semble..
C'est plutot un signal ibus ou sbus que tu devrais generer ;)
Avatar de l’utilisateur
Crisssss
Tricopter
Absent
 
Messages: 114
Enregistré le: Sam 3 Juin 2017 13:21
Localisation: Neuville sur Ain
    Voir la position géographique du membre

Re: Utiliser un arduino pour autopiloter mon contrôleur

Message non lupar furynick » Lun 31 Juil 2017 20:19

Utilises les pin PWM de ton arduino, ça sera déjà beaucoup plus pratique à coder.
Ensuite, la pin13 c'est la LED, mieux vaut éviter de l'utiliser.
Enfin, c'est particulièrement scabreux comme projet ... autant programmer directement le vol automatique sur le contrôleur sans quoi il te faudra coder le support d'une centrale inertielle tout comme un FC. Tu te retrouverais donc avec un FC complet qui pilote un FC.
Image Bourdons.fr
Tx:Taranis+ & T6J
Yon²:Talon v2, E600, 14x4.7, X2&M8N, APM3.2, T-2D, H3+S, X8R
Rēsu:ZMR 250, RCX10, 5x3, Naze32, X4R
Akuro:F450, Afro slim, 9x5 tri, X2&M8N, APM3.2, X4R
Image Fréquences CMT31
Avatar de l’utilisateur
furynick
Pilote toutes catégories
Absent
 
Messages: 2314
Enregistré le: Mer 5 Fév 2014 14:46
Localisation: Portet-sur-Garonne

Re: Utiliser un arduino pour autopiloter mon contrôleur

Message non lupar crtleroy » Mar 1 Aoû 2017 12:18

furynick a écrit:autant programmer directement le vol automatique sur le contrôleur sans quoi il te faudra coder le support d'une centrale inertielle tout comme un FC. Tu te retrouverais donc avec un FC complet qui pilote un FC.


Alors non en fait, je ne compte pas remplacer mon contrôleur de vol, je me rends bien compte que ce serait tordu. Non, ce que je veux faire c'est juste remplacer la radiocommande par une commande externe automatisée et embarquée. Par exemple, pour écrire une chorégraphie, actionner les servos au bon moment, et plus généralement robotiser le drone.

A vrai dire je compte aller encore plus loin puisque je voudrais en fait effectivement avoir une radiocommande, mais dont le récepteur est branché sur l'arduino. Ce qui me permet de piloter directement en bypassant les informations ou d'actionner à tout moment un pilote automatique programmable à souhait. Finalement le contrôleur de vol reste toujours le pilote, mais l'arduino est un copilote.
Avatar de l’utilisateur
crtleroy
 
Messages: 6
Enregistré le: Lun 31 Juil 2017 14:24

Re: Utiliser un arduino pour autopiloter mon contrôleur

Message non lupar crtleroy » Mar 1 Aoû 2017 12:29

furynick a écrit:Ensuite, la pin13 c'est la LED, mieux vaut éviter de l'utiliser.


Oh et effectivement sur les arduino les pins à utiliser de préférence sont les 3, 5, 6, 9, 10, et 11;
Mais là je travaille avec un arduino Mega donc ça devrait fonctionner de la pin 2 à 13 et 44 à 46 :) (https://www.arduino.cc/en/Reference/AnalogWrite)

Bon en revanche , je me suis rendu compte que j'utilisais digitalwrite() au lieu d'analogwrite()... Donc voilà j'ai de quoi réessayer ce soir j'espère que ça fonctionnera :)
Avatar de l’utilisateur
crtleroy
 
Messages: 6
Enregistré le: Lun 31 Juil 2017 14:24

Re: Utiliser un arduino pour autopiloter mon contrôleur

Message non lupar crtleroy » Mar 1 Aoû 2017 12:31

Crisssss a écrit:Un signal pwm sert a controler une seule voie il me semble..


Alors oui, et pour l'instant ce que j'essaye de faire c'est de générer plusieurs PWM pour contrôler tous mes canaux.

Mais effectivement je considère carrément l'idée de générer un signal PPM, qui pourra contrôler mes 8 canaux avec une seule voie :).
Avatar de l’utilisateur
crtleroy
 
Messages: 6
Enregistré le: Lun 31 Juil 2017 14:24

Re: Utiliser un arduino pour autopiloter mon contrôleur

Message non lupar furynick » Mar 1 Aoû 2017 23:00

Je ne pense pas que tu puisses piloter un FC en pré-programmant des séquences de commande pour la simple et bonne raison que le milieu dans lequel l'appareil évolue et totalement instable.

Actionner la commande de roulis de 15% pendant 1s n'aura jamais le même effet.
Image Bourdons.fr
Tx:Taranis+ & T6J
Yon²:Talon v2, E600, 14x4.7, X2&M8N, APM3.2, T-2D, H3+S, X8R
Rēsu:ZMR 250, RCX10, 5x3, Naze32, X4R
Akuro:F450, Afro slim, 9x5 tri, X2&M8N, APM3.2, X4R
Image Fréquences CMT31
Avatar de l’utilisateur
furynick
Pilote toutes catégories
Absent
 
Messages: 2314
Enregistré le: Mer 5 Fév 2014 14:46
Localisation: Portet-sur-Garonne

Re: Utiliser un arduino pour autopiloter mon contrôleur

Message non lupar crtleroy » Mer 2 Aoû 2017 10:57

Je suis bien d'accord ! L'idée n'est pas vraiment de donner toute la main à un arduino pour le pilotage. C'est d'utiliser l'arduino, avec davantage de capteurs, pour réaliser des séquences plus compliquées. Par exemple pour larguer un colis, arrivé proche de la cible, l'arduino prend le relais, pour un atterrissage difficile, il prend le relais, pour une manoeuvre d'évitement automatique s'il y a un obstacle, il prend le relais, etc :) A côté de ça c'est la possibilité d'activer des modes de vols via l'arduino, ou même d'armer/désarmer via arduino, donc ça veut dire que je peux l'armer avec mon téléphone aussi (ce n'est qu'un exemple pour montrer l'ouverture que ça apporte)

Je note que l'implémentation de lois de commande et de correcteurs pour une stabilisation externe du drone ne me fait pas vraiment peur (et non, ce n'est pas une stabilisation en "plus" de celle du correcteur de vol, c'est simplement celle que l'on fait avec nos mains quand on pilote par exemple. notre cerveau dirige naturellement nos pouces pour stabiliser le drone, même s'il est déjà censé être stable)

Bref, et quoi qu'il en soit j'ai réussi hier soir à générer du PPM pour contrôler 8 canaux avec une seule voie :). Du coup j'ai le contrôle sur 8 canaux directement depuis l'arduino. Je le mettrai en bypass pour piloter à la main et je m'occuperai d'implementer d'autres choses plus tard ! ais bon en tout cas ça a marché, c'est bon ;)
Avatar de l’utilisateur
crtleroy
 
Messages: 6
Enregistré le: Lun 31 Juil 2017 14:24


Retourner vers Modules et Montages DIY

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité