Tuto commande ESC par Arduino et Wii nunchuck
Page 1 sur 1 • Partagez
Tuto commande ESC par Arduino et Wii nunchuck
Bonjour,
Comme demande sur mon autre post concernant mon longboard electrique, voila les details de mon montage
WII Nunchuck -> Arduino -> ESC Brushless
Le materiel
Arduino UNO R3
Nunchucky (Adaptateur prise Wii Nunchuck pour arduino, bcp d'autre modeles existent, c'est juste une plaque avec des pins a souder)
Wii Nunchuck sans fil (2.4ghz)
http://www.ebay.co.uk/itm/2-4-GHz-RF-Wireless-Nunchuck-controller-for-Wii-Nintendo-/120868592265?
ESC Brushless, qui vont avec le moteur.
Attention, les differents modeles de nunchuck sans fils ne s'interfacent pas tous facilement avec
l'arduino, il y a une histoire de codage du signal qui peut donner des soucis a la librairie arduino nunchuck.
Les libraires Nunchuck sont normalement faites pour le nunchuck officiel, a fil. Les modeles sans fils normalement demandent de la bidouille.
Ce modele fonctione tel quel avec la librairie, coup de chance, donc pas de bidouille.
Ca n'est pas de la top qualite, il y a des fois des coupures dans le signal envoye par le joystick, mais bon ca fonctionne.
Connections
WiiChuck Adapter / Arduino PIN
* Gnd / Gnd
* 3.3v / 3.3V
* Data / A4 (I2C Data)
* Clk / A5 (I2C Clock)
ESC for Brushless motors / Arduino PIN
* Black (Gnd) / Gnd
* White (data) / Digital PWM 9
Programmation Arduino
Librairie Nunchuck:
http://www.gabrielbianconi.com/projects/arduinonunchuk/
Il en existe plusieurs, j'ai trouve celle la simple et claire. Elle fonctionne parfaitement pour moi.
Progamme:
j'envoie les signaux a l'ESC en microseconds, au lieu d'utiliser l'angle qu'on envoie d'habitude au servo.
Sinon, les ESC ne s'initialisent pas correctement au branchement et se mettent en erreur.
http://arduino.cc/en/Reference/ServoWriteMicroseconds
Ci dessous un exemple simplifie de programme Arduino. C'est une version ultra light du mien qui est plus complexe, car il attenue l'acceleration
sinon je tombe du skate au demarrage, et j'ai aussi ajoute une fonction 'cruise control' qui garde la vitesse courante.
En gros, il faut peut etre adapter les valeurs SERVO_MIN et SERVO_MAX en fonction de l'ESC,
j'ai aussi gere le fait que le moteur ne demarre vraiment a 1180 sur mon ESC. Par contre l'initialization ne se fera qu'a la valeur 1000.
J'ai ajoute un delay PULSE_DELAY sinon les signaux 'bourrent' l'ESC qui finit par faire n'importe quoi. Donc apres chaque commande envoyee on attend PULSE_DELAY
avant de continuer.
Comme demande sur mon autre post concernant mon longboard electrique, voila les details de mon montage
WII Nunchuck -> Arduino -> ESC Brushless
Le materiel
Arduino UNO R3
Nunchucky (Adaptateur prise Wii Nunchuck pour arduino, bcp d'autre modeles existent, c'est juste une plaque avec des pins a souder)
Wii Nunchuck sans fil (2.4ghz)
http://www.ebay.co.uk/itm/2-4-GHz-RF-Wireless-Nunchuck-controller-for-Wii-Nintendo-/120868592265?
ESC Brushless, qui vont avec le moteur.
Attention, les differents modeles de nunchuck sans fils ne s'interfacent pas tous facilement avec
l'arduino, il y a une histoire de codage du signal qui peut donner des soucis a la librairie arduino nunchuck.
Les libraires Nunchuck sont normalement faites pour le nunchuck officiel, a fil. Les modeles sans fils normalement demandent de la bidouille.
Ce modele fonctione tel quel avec la librairie, coup de chance, donc pas de bidouille.
Ca n'est pas de la top qualite, il y a des fois des coupures dans le signal envoye par le joystick, mais bon ca fonctionne.
Connections
WiiChuck Adapter / Arduino PIN
* Gnd / Gnd
* 3.3v / 3.3V
* Data / A4 (I2C Data)
* Clk / A5 (I2C Clock)
ESC for Brushless motors / Arduino PIN
* Black (Gnd) / Gnd
* White (data) / Digital PWM 9
Programmation Arduino
Librairie Nunchuck:
http://www.gabrielbianconi.com/projects/arduinonunchuk/
Il en existe plusieurs, j'ai trouve celle la simple et claire. Elle fonctionne parfaitement pour moi.
Progamme:
j'envoie les signaux a l'ESC en microseconds, au lieu d'utiliser l'angle qu'on envoie d'habitude au servo.
Sinon, les ESC ne s'initialisent pas correctement au branchement et se mettent en erreur.
http://arduino.cc/en/Reference/ServoWriteMicroseconds
Ci dessous un exemple simplifie de programme Arduino. C'est une version ultra light du mien qui est plus complexe, car il attenue l'acceleration
sinon je tombe du skate au demarrage, et j'ai aussi ajoute une fonction 'cruise control' qui garde la vitesse courante.
En gros, il faut peut etre adapter les valeurs SERVO_MIN et SERVO_MAX en fonction de l'ESC,
j'ai aussi gere le fait que le moteur ne demarre vraiment a 1180 sur mon ESC. Par contre l'initialization ne se fera qu'a la valeur 1000.
J'ai ajoute un delay PULSE_DELAY sinon les signaux 'bourrent' l'ESC qui finit par faire n'importe quoi. Donc apres chaque commande envoyee on attend PULSE_DELAY
avant de continuer.
- Code:
// ====================================================
#include <Wire.h>
#include <ArduinoNunchuk.h>
#include <Servo.h>
#define BAUDRATE 19200
#define SERVO_MIN 1000 //0 // 33 ?
#define SERVO_MAX 2000 //180 // 142 ?
#define PULSE_DELAY 300 // Délais entre chaque impulsion (cette valeur varie-t-elle selon les moteurs/ESC ?)
#define GLOBAL_DELAY 10 // Delai between each WiiChuck joystick check
ArduinoNunchuk nunchuk = ArduinoNunchuk();
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
int lastpos = 0; // store the last value and write to the servo only if it changes
void setup()
{
nunchuk.init();
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
nunchuk.update();
// Get nunchuck joystick pos and convert it to the ESC scaled value
pos = nunchuk.analogY;
pos = map(pos, 128, 256, SERVO_MIN, SERVO_MAX); // scale it to use it with the servo
if (pos != lastpos)
{
// sets the servo position according to the scaled value
myservo.writeMicroseconds(pos);
delayMicroseconds(PULSE_DELAY);
// remember this value to see if the next is different
lastpos = pos;
}
delay(GLOBAL_DELAY);
}
// ====================================================
Dernière édition par nopap le Dim 17 Mar 2013 - 19:15, édité 2 fois
nopap- Messages : 50
Date d'inscription : 29/11/2012
Re: Tuto commande ESC par Arduino et Wii nunchuck
merci d'avoir partagé, je garde ça dans un coin de la tête
à l'usage, ça se dose bien ou pas le joystick ?
tu dis que le signal coupe régulièrement, c'est surtout ça qui m'inquiète, que l'ESC reste au taquet parce que la connexion a sauté par exemple. Tu as moyen de détecter ça avec la librairie ?
à l'usage, ça se dose bien ou pas le joystick ?
tu dis que le signal coupe régulièrement, c'est surtout ça qui m'inquiète, que l'ESC reste au taquet parce que la connexion a sauté par exemple. Tu as moyen de détecter ça avec la librairie ?
pierrot22- Localisation : Rennes (35)
Messages : 105
Date d'inscription : 05/02/2013
Age : 36
Re: Tuto commande ESC par Arduino et Wii nunchuck
Oui ca dose pas trop mal, mais sa course est petite donc ca peut donner des accoups, d'ou l'interet d'une librairie qui amortit les accelerations.
J'ai aussi note que sur ce nunchuck pas cher, la course du joystick commence a envoyer du signal a 1/3, c'est a dire que la course deja petite n'est effective que sur 2/3 de celle ci.
Enfin qd je dis que ca coupe, c'est pas en roulant et l'ESC ne reste jamais au taquet, pas de souci de ce cote la. Note aussi que l'ESC si l'arduino coupe arrete les moteurs automatiquement par securite.
En fait ca coupe qd tu donnes les gaz a un certain point, toujours le meme, comme si le joy avait un point sans contact. Pas simple a expliquer... en gros tu acceleres en poussant le joy, le signal recu va augmenter, et a un certain point retomber a 0 pour ensuite repartir de la ou il en etait. C'est maintenant amorti avec mon programme arduino, mais les premiers essais etaient un peu casse gueule car les moteur ont la peche qd ca repart de 0 a la ou tu en etais :-)
J'ai aussi note que sur ce nunchuck pas cher, la course du joystick commence a envoyer du signal a 1/3, c'est a dire que la course deja petite n'est effective que sur 2/3 de celle ci.
Enfin qd je dis que ca coupe, c'est pas en roulant et l'ESC ne reste jamais au taquet, pas de souci de ce cote la. Note aussi que l'ESC si l'arduino coupe arrete les moteurs automatiquement par securite.
En fait ca coupe qd tu donnes les gaz a un certain point, toujours le meme, comme si le joy avait un point sans contact. Pas simple a expliquer... en gros tu acceleres en poussant le joy, le signal recu va augmenter, et a un certain point retomber a 0 pour ensuite repartir de la ou il en etait. C'est maintenant amorti avec mon programme arduino, mais les premiers essais etaient un peu casse gueule car les moteur ont la peche qd ca repart de 0 a la ou tu en etais :-)
nopap- Messages : 50
Date d'inscription : 29/11/2012
Re: Tuto commande ESC par Arduino et Wii nunchuck
alors là y a de la maitrise......belle idée en tout cas.....dommage pour la course!!
Re: Tuto commande ESC par Arduino et Wii nunchuck
je vois ce que tu veux dire ouais, c'est bizarre, et ça peut être désagréable...
C'est surtout la partie commande de l'ESC qui m'intéresse. Soit je ferai une solution sans fil dans ce cas je prendrai plutôt une télécommande de modélisme. Soit une solution filaire, dans ce cas plutôt avec une gachette comme sur les trottinettes électriques, avec une carte "testeur de servo" ou à travers un petit arduino.
C'est surtout la partie commande de l'ESC qui m'intéresse. Soit je ferai une solution sans fil dans ce cas je prendrai plutôt une télécommande de modélisme. Soit une solution filaire, dans ce cas plutôt avec une gachette comme sur les trottinettes électriques, avec une carte "testeur de servo" ou à travers un petit arduino.
pierrot22- Localisation : Rennes (35)
Messages : 105
Date d'inscription : 05/02/2013
Age : 36
Re: Tuto commande ESC par Arduino et Wii nunchuck
Tu as raison, la partie importante c'est la commande des ESC.
Sur l'ardhuino tu peux interfacer bcp de commandes differentes.
J'ai un module bluetooth, pour faire une commande a base de smartphone ou manette wii, le module WII nunchuck, et je viens de me trouver sur ebay un module emetteur recepteur en 433mhz pour faire eventuellement ma propre telecommande a gachette.
Apres en filaire tu n;as plus de limite et c'est finalement pas si embetant, sur mon skate j'aii mis un leash pour prevoir un arret auto si je tombe, donc je suis deja relie par un fil, un de plus fait peu de difference.
Sur l'ardhuino tu peux interfacer bcp de commandes differentes.
J'ai un module bluetooth, pour faire une commande a base de smartphone ou manette wii, le module WII nunchuck, et je viens de me trouver sur ebay un module emetteur recepteur en 433mhz pour faire eventuellement ma propre telecommande a gachette.
Apres en filaire tu n;as plus de limite et c'est finalement pas si embetant, sur mon skate j'aii mis un leash pour prevoir un arret auto si je tombe, donc je suis deja relie par un fil, un de plus fait peu de difference.
nopap- Messages : 50
Date d'inscription : 29/11/2012
Re: Tuto commande ESC par Arduino et Wii nunchuck
C'est relativement facile de se faire une télécommande avec une carte Arduino, mais méfiance quand même avec le 433 MHznopap a écrit:un module émetteur récepteur en 433mhz pour faire éventuellement ma propre télécommande
Il y parfois du monde dessus : talkies-walkies, télécommandes de garages, écoute-bébé, stations météo sans fil, alarmes, jouets... et assez peu de canaux.
Donc au minimum prévoir un codage d'identification, contrôle d'erreur de transmission, cheksum...
Christian- Modérateur
- Localisation : Alpes (région Grenoble 38) et Pornichet, St Brévin (44)... en été
Messages : 2962
Date d'inscription : 13/10/2010
Age : 57
Re: Tuto commande ESC par Arduino et Wii nunchuck
Oui tu as raison, j'ai d'ailleurs commande ce module au depart pour recuperer les donnees de mes capteurs de station meteo sur un arduino. Comme il vient avec emetteur et recepteur ca m'a donne d'autres idees...
C'est le probleme avec arduino c'est sans fin
C'est le probleme avec arduino c'est sans fin
nopap- Messages : 50
Date d'inscription : 29/11/2012
Re: Tuto commande ESC par Arduino et Wii nunchuck
Hi
Currently this code reaction is very sensitive, you can provide me with constant speed and brake the code to try it??
My config is: Logic3 Wireless Nunchuck + Arduino UND R3 + HobbyKing Red Brick 60A ESC *2 + Turnigy L3040A-480G Brushless Motor *2
Why choose this motor and ESC, (because it is cheap, but the road has not been tested, I do not know enough torque)
My e-mail: leonoxo @ gmail . com
Currently this code reaction is very sensitive, you can provide me with constant speed and brake the code to try it??
My config is: Logic3 Wireless Nunchuck + Arduino UND R3 + HobbyKing Red Brick 60A ESC *2 + Turnigy L3040A-480G Brushless Motor *2
Why choose this motor and ESC, (because it is cheap, but the road has not been tested, I do not know enough torque)
My e-mail: leonoxo @ gmail . com
leonoxo- Messages : 1
Date d'inscription : 04/08/2013
Sujets similaires
» Arduino + Xbee
» Commande HK
» E-MontainBoard "Fuze'Projet"
» 12 - Le récepteur de radio commande
» Systeme de chronometrage
» Commande HK
» E-MontainBoard "Fuze'Projet"
» 12 - Le récepteur de radio commande
» Systeme de chronometrage
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|