Page 1 sur 1

Timer !!!!!X6S

Posté : 15 nov. 2018, 16:10
par olivier65
Chronomètre timer pour Radio XK X6S

Bonjour,
Comme vous je déplorais l’absence de timer dans la radio fournie avec le K110
J’ai regardé ici et là et trouvé quelqu’un qui avait incorporé un timer dans la radio mais le fonctionnement était un peu trop simple et je l’ai incrémenté de nouvelles fonctions.

j’en ai réalisé un, avec mon cahier des charges.

1 ) Pas de modifications extérieures de la radio hormis une petite fenêtre optionnelle sous les pieds pour donner accès à la prise USB du programmateur. On se sert des deux inters idlup et coupure moteur TC.
2) Déclenchement automatique du timer dès qu’on est en idleup.
3) Remise à zéro du timer (TC+ flight mode normal)
4) Mémorisation automatique du temps en cours : exemple je vole en idleup je me crashe, j’ actionne la coupure moteur toujours en idleup, je remets la couronne et je repars en libérant la coupure moteur -> le chrono continue où il s’est arrêté.
5 ) Pas besoin de rebooter la radio entre chaque accu.
6 )Temps de fin paramétrable dans le logiciel de la carte à exprimer en millisecondes (pour ma part j’ai mis 3’40 ‘’ soit 220000 millisecondes).
8) des tonalités durée de bip différentes : départ chrono, reset du temps, mise en standby, 1 bip= 1minute, 2 bip=2minutes, 3 bip=3minutes….
7) comme sur ma DX6, 15 secondes avant la fin la radio bippe toutes les secondes avant un bip de fin plus long.
8) Apres le bip de fin le temps continue à être comptabilisé et le module bippe aux minutes suivantes (vous avez le droit de tuer votre accu ;-).
9) faible cout de réalisation (sinon il valait mieux acheter une futaba) 7 euros

Liste des courses :
une carte nano Arduino avec usb exemple :
https://www.banggood.com/ATmega328P-Nan ... rehouse=UK

un buzzer : https://www.banggood.com/Eachine-Aurora ... rehouse=CN

De plus il faut : fer à souder, soudure, fil de câblage, 2 résistances environ 10k (a récupérer), ordinateur, cable usb…
Le module est câblé sur les broches libres des interrupteurs Idlup et coupure moteur, ainsi que sur le + de l’alimentation de la radio après inter marche/arrêt et sur le - .
Le programme est dispo par mp.

Quelques photos ....

Image

Image

Image

Image

Re: Timer !!!!!X6S

Posté : 15 nov. 2018, 16:34
par Yoy24
Yop)

C'génial ça olivier65...! :) :) :) :) :)

Re: Timer !!!!!X6S

Posté : 15 nov. 2018, 16:48
par ludaero
Enorme!! bravo!

tu aurais une vidéo du fonctionnement?

Re: Timer !!!!!X6S

Posté : 15 nov. 2018, 16:59
par olivier65
Non désolé j'ai pas de video , j'ai pas de compte youtube et je sais pas mettre en ligne et dans le mail ca passera pas.
Et puis ca va être long d'attendre minute par minute ;-) ou alors il faut faire un montage ....
Sinon je veux bien faire un facetime video avec toi ;-)

Re: Timer !!!!!X6S

Posté : 15 nov. 2018, 22:59
par olivier65
Bon, j'ai fait une vidéo et ouvert un compte YouTube je mets demain la vidéo si j'y arrive.
Passe partout je te mail le fichier demain matin

Re: Timer !!!!!X6S

Posté : 15 nov. 2018, 23:39
par steph66
Félicitation, joli montage :)

Tu nous mettras le schéma électrique et ton programme aussi hein ? ;)

Re: Timer !!!!!X6S

Posté : 16 nov. 2018, 10:01
par ludaero
Super merci pour tout ca!!!!!!!!!

Re: Timer !!!!!X6S

Posté : 16 nov. 2018, 10:24
par olivier65
Bonjour,

Voici la vidéo :
https://youtu.be/5296IBMRVNc

Le cablage est sur la dernière photo.
Pour le fichier, j'ai pas de drive je peux l'envoyer à quelqu'un pour qu'il le mette en ligne?

olivier

Re: Timer !!!!!X6S

Posté : 16 nov. 2018, 21:27
par Sp@r0
Trop bien bravo !!!!! parcontre juste une question tu mets combien de 100% de gaz pour voler aussi longtemps ?

Pour le fichier si tu me l'envoi je mettrais un lien :) Tu peux aussi simplement publier le code dans un post ;)

Re: Timer !!!!!X6S

Posté : 17 nov. 2018, 19:47
par olivier65
Je mets 100% avec lipohv mais je fais pas de la 3d hard

Re: Timer !!!!!X6S

Posté : 19 nov. 2018, 14:49
par olivier65
voila le code (post suivant) -->copiez tout sauf ma signature ;-)

Le temps final à régler est la variable « temps_final » a exprimer en millisecondes.
Je voulais 3’40’’ donc j’ai mis ((3x60)+40)x1000 soit 220000

Au niveau matériel pour coller au programme .
Le fil venant de la broche libre de l’inter throotle cut est à câbler sur la broche 3 digitale du circuit (forcé par défaut au niveau logique haut 5v via une résistance de 10k environ)
Le fil venant de la broche libre de l’inter idleup est à câbler sur la broche 4 digitale du circuit (forcé par défaut au niveau logique haut 5v via une résistance de 10k environ)

Le buzzer+ est à câbler sur la broche 9 du circuit et le moins .

L’alimentation sur le circuit se fait sur le Vin et le - et se câble sur la batterie de la radio après inter et sur le – qu’on trouve un peu partout.
Pour l’implantation matérielle il y a dans la radio un plot percé non utilisé (quand on l’ouvre en bas à droite) sur lequel on peut visser une petite platine fine genre rhodoïd puis double face avec mousse et rislan sur le module.

Voilà, n’hésitez pas pour d’autres questions

Olivier

Re: Timer !!!!!X6S

Posté : 19 nov. 2018, 14:51
par olivier65
// petit programme pour faire bipper un buzzer du nombre de minutes qui s'ecoulent.
// --------------connexion materielles des broches(pins) ---------------
// #define PinBuzzer 9
// #define ThrottleCut 3
// #define IdlUp 4
const int PinBuzzer = 9; // sortie 9 connectee au buzzer
const int ThrottleCut = 3; // entree 3 connecte l'interrupteur Throttle Cut
const int IdlUp = 4; // entree 4 connectee a l'interrupteur IdlUp

//---------------------- variables pour debug
unsigned long temps_final=220000L; // entrez ici la duree totale voulue (en millisecondes)
unsigned long temps_cumule=0L; // chronometre
unsigned long depart = 0L;
unsigned long pause = 0L;
unsigned long temps_cumule_tmp =0L;
unsigned long curseur=0L;
boolean started = false;
int time_checked = 0;
boolean razable = true;
int cestfini=15; // 10 bips la fin
int duree=250; // duree d'un bip
int freq=600; // frequence du bip
int TC=0; // etat de la broche du Throttle Cut
int IU=0; // etat de la broche de l'IdlUp


//-------------------------------------------------------

void setup() {
pinMode(PinBuzzer, OUTPUT); //sortie buzzer
pinMode(ThrottleCut, INPUT); //entrée Throttle cut TC
pinMode(IdlUp, INPUT); //entrée Idlup IU
}

void loop() {
TC = digitalRead(ThrottleCut); //lecture hight ou low du TC
IU = digitalRead(IdlUp); //lecture hight ou low de IU
//if (TC == HIGH && IU == LOW) on est en armed et IU donc chronometrage
//if (TC == LOW && IU == HIGH) on est en TC et non-IdlUp donc reset : le temps est mis a zero
//if (TC == LOW && IU == LOW) on est en TC et IU donc standby : le temps est memorise
//if (TC == HIGH && IU == HIGH) on est en armed et non-IdlUp donc standby : le temps est memorise



if (TC == LOW && IU == HIGH) { // reset du chrono
reset();
}
if (TC == IU) { //standby
stop_chrono();
}
if (TC == HIGH && IU == LOW) { // chronom�trage
start_chrono();
}
check_point(); // gestion du buzzer
delay(100); // limite le temps d'activité du processeur...
}



//-------------------------- les fonctions -----------------------------

void reset() {
temps_cumule=0L;
depart = 0L;
pause = 0;
temps_cumule_tmp =0L;
time_checked = 0;
curseur=0;
started = false;
cestfini=15;
if(razable) {
tone( PinBuzzer, freq, duree );
delay (500);
tone( PinBuzzer, freq, duree );
delay (500);
tone( PinBuzzer, freq, duree );
razable = false;
}
}

void start_chrono() {
if(!started) {
depart = millis();
started = true;
razable = true;
tone( PinBuzzer, freq, 1000);
}
}

void stop_chrono() {
if (started) {
unsigned long pause = millis();
temps_cumule += pause - depart;
started = false;
razable = true;
tone( PinBuzzer, freq, duree );
}
}

void check_point() { // gestion du buzzer
if (started) {
unsigned long curseur = millis();
unsigned long temps_cumule_tmp = 0L;
temps_cumule_tmp = curseur - depart;
temps_cumule_tmp += temps_cumule;
if ((temps_cumule_tmp/60000) > time_checked) {
for (int i = 0; i < (time_checked+1); i++) {
tone( PinBuzzer, freq, duree );
delay(500);
}
time_checked++;
}

if ((temps_cumule_tmp) > (temps_final-15000)) {
for (int f = 0; f < cestfini; f++) {
tone( PinBuzzer, freq, 400 );
delay(1000);
}
cestfini=0;
}
}//fin started
} //fin checkpoint

Re: Timer !!!!!X6S

Posté : 19 nov. 2018, 21:34
par steph66
olivier65 a écrit :
19 nov. 2018, 14:49
Voilà, n’hésitez pas pour d’autres questions
La suave voix des DX9 me manque ;) Voilà une idée d'upgrade :D :D :D

Re: Timer !!!!!X6S

Posté : 19 nov. 2018, 23:16
par titi78
Une fonction chauffage pour les pouces. ...