Aller au contenu


Photo
- - - - -

Conception d'un vélo électrique

vélo électrique arduino code

33 réponses à ce sujet

#1 nekfury

nekfury

    Nouveau membre

  • Membres
  • 15 messages

Posté 27 août 2017 - 12:14

Bonjour,

il y a quelque temps, j'ai décidé de fabriquer un vélo électrique en m'inspirant du travail d'un gars (https://www.thingive...m/thing:2191603) qui utilise des composants d'aéromodélisme comme motorisation. Quasiment tout a fonctionné comme sur des roulettes excepté une chose : la poignée d'accélérateur transmet un signal analogique mais le variateur (ESC) à besoin d'un signal numérique. J'ai donc utilisé un arduino pour convertir le signal mais je n'ai pas réussi à tout faire fonctionner car quand j'actionne la poignée, le moteur fais quelques tours puis fais une petite pause avant que je puisse le réactiver. Quelqu'un aurait une idée du problème et de la façon de le résoudre ?

merci

Fichier(s) joint(s)



#2 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 27 août 2017 - 12:35

Bonjour.

 

Alors déjà comme tu es nouveau, tu devrais passer par la case présentation.

 

Sinon, pour ton problème, un moteur n'est pas un servo. Il ne se contrôle pas de la même façon.

 

En gros tu dois remplacer ton esc.attach par un pinmode (pour configurer la pin en sortie), et au lieu d'utiliser esc.write, tu dois utiliser un analogWrite, et là ça devrait marcher.



#3 nekfury

nekfury

    Nouveau membre

  • Membres
  • 15 messages

Posté 27 août 2017 - 12:40

j'ai pas tout compris désolé, je suis novice en arduino. aussi, je croyais pouvoir le contrôler comme un servo parce qu'il se branche de la même manière sur un émetteur rc et que l'on me l'avait affirmer sur d'autes forums.



#4 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 290 messages
  • Gender:Male

Posté 27 août 2017 - 12:58

Salut! As tu bien paramétré la largeur des signaux ppm dans le firmware ?
Ou alors ajuste les dans ton code avec 

esc.attach (9, 1000, 2000);

1000 et 2000 étant les valeurs que j'ai vu sur un screen du firmware. Ce n'est peut être pas ces valeurs qui correspondent à ta config.



#5 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 27 août 2017 - 01:15

Oups, désolé, je pensais que c'était un contrôleur moteur PWM.

Du coup je pense qu'ashira à raison et qu'il faut configurer la largeur des signaux. 



#6 nekfury

nekfury

    Nouveau membre

  • Membres
  • 15 messages

Posté 27 août 2017 - 04:29

j'ai essayé mais ça ne change rien. Est ce que ça pourrait être un problème de hardware (l'esc ou le moteur par exemple ) ?



#7 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 27 août 2017 - 05:28

Si tu as du matériel neuf c'est très peu probable. Il faudrait que tu donnes la référence de ton ESC pour pouvoir mieux t'aider.



#8 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 290 messages
  • Gender:Male

Posté 27 août 2017 - 05:35

Tu as accès aux réglages du firmware ?

http://vedder.se/wp-content/uploads/2015/01/Bldc_Tool_app_ppm.png

Par exemple dans cet onglet, as tu testé avec duty cycle coché ?

#9 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 27 août 2017 - 05:56

Je ne pense pas qu'il ait utilisé ce modèle d'ESC, il n'est pas commercialisé, il faut se faire fabriquer un PCB et y souder les composants.



#10 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 290 messages
  • Gender:Male

Posté 27 août 2017 - 06:22

Ha exacte..
En regardant plusieurs discutions sur le forum il semblerait qu'il y ait des sorte de sécurité, du genre initialiser l'esc avec 0 en consigne. Par exemple esc.write (0); dans le void setup.

http://www.robot-maker.com/forum/topic/6233-controler-variateur-de-vitesse-moteur-avec-arduino/

#11 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 27 août 2017 - 08:02

Après il y a un autre problème aussi, c'est que les moteurs brushless a basse vitesse c'est pas terrible. Les seuls moyens de les faire tourner correctement sans saccader et sans bloquer à basse vitesse, c'est d'utiliser des moteurs haut de gamme avec capteurs à effet hall ou de les commander en FOC (et pour ça il faut un contrôleur un peu plus évolué que ceux de modélisme). En modélisme à la base ils étaient utilisés pour des avions, hélicos, et multirotors, donc en tournant toujours à vitesse élevée.



#12 nekfury

nekfury

    Nouveau membre

  • Membres
  • 15 messages

Posté 27 août 2017 - 08:45

mon moteur est un Turnigy Aerodrive SK3 - 5055-280kv Brushless Outrunner Motor  et mon esc un TURNIGY TRUST 70A SBEC Brushless Speed Controller .

 

1.Pour le firmware, je pense pas y avoir accès et/ou je sais pas comment y accéder.

 

2.Donc il suffit que j'ajoute "esc.write (0);" dans mon code et ça réglerait le problème ?

 

3. Dans le cas de mon vélo, le moteur tournerait assez vite (avec un rapport de réduction d'environ 0.1) pour compenser le peu de couple d'un tel moteur, donc ça ne devrait pas poser problème.



#13 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 290 messages
  • Gender:Male

Posté 27 août 2017 - 10:23

2. Pas forcément, par exemple chez moi ça fonctionne bien avec ton code. 


#include <Servo.h>

Servo esc;
int throttlePin = 0;

void setup()
{
  esc.attach(9);
  Serial.begin(9600);
}

void loop()
{
  int throttle = analogRead(throttlePin);
  throttle = map(throttle, 0, 1023, 0, 179);
  Serial.println(throttle);
  //esc.write(throttle);
}

Essai ce code dans ton arduino et ouvre le port série (dans outil). Ça va afficher les infos venant de ta poignée.

Si ça varie bien de 0 à 179 c'est ok.

 

Ensuite c'est surement les valeurs min et max des largeurs d'impulsion à déterminer.

throttle = map(throttle, 0, 1023, 60, 120);

Remplace la ligne correspondente avec celle ci dans ton programme d'origine pour voir. 

 

Sinon tu as eu une doc papier avec l'esc ? Normalement il y a une procédure de démarrage dessus.



#14 nekfury

nekfury

    Nouveau membre

  • Membres
  • 15 messages

Posté 29 août 2017 - 04:37

en fait, je ne peux pas accéder au port série, du moins pas par usb (j'utilise un arduino uno).

j'ai aussi essayé de remplacer la ligne, sans succès pour l'instant



#15 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 290 messages
  • Gender:Male

Posté 29 août 2017 - 05:02

Peux tu faire une photo voir un schéma de ton montage ?

Tu as bien choisi le port com correspondant avant d'ouvrir le moniteur ? (Le même que celui utilisé pour programmer la carte)

#16 nekfury

nekfury

    Nouveau membre

  • Membres
  • 15 messages

Posté 29 août 2017 - 06:24

ça y est, j'ai réussi à afficher les infos venant de la poignée (valeurs : min.30, max. 152) mais je ne sais pas vraiment quoi en faire.

de plus, la notice ne donne pas d'information utile (seulement comment programmer l'esc au son pour quelques fonctions qui ne sont pas nécessaires).

 je tiens par ailleurs à te remercier pour ton aide.



#17 nekfury

nekfury

    Nouveau membre

  • Membres
  • 15 messages

Posté 29 août 2017 - 06:35

voici des photos des cablages

 

Image(s) jointe(s)

  • IMG_20170829_1914491.jpg
  • IMG_20170829_1914541.jpg


#18 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 290 messages
  • Gender:Male

Posté 29 août 2017 - 08:27

Dommage on ne voit pas le câblage complet, un schéma aurait été préférable.

Donc tu récupères bien l'information de la manette mais ça ne démarre pas de 0.

 

Donc essai ce code pour voir:


#include <Servo.h>
 
Servo esc;
int throttlePin = 0;
 
void setup()
{
esc.attach(9,1000,2000);
for(int i=0; i<=180; i++){ 
  esc.write(i);
  delay(3);
}
delay(4000);
}
 
void loop()
{
int throttle = analogRead(throttlePin);
throttle = map(throttle, 0, 1023, 0, 179);
esc.write(throttle);
}

Le programme simule une fois la manette partant de 0 et allant jusque 180. Peut être qu'il attend une calibration des gaz partant de 0.. 

Il a toujours le même comportement qu'au début, il fait quelques tour de temps en temps ?

 

(Attention au moteur s'il est relié au vélo^^) 



#19 nekfury

nekfury

    Nouveau membre

  • Membres
  • 15 messages

Posté 29 août 2017 - 08:45

je veux bien essayer de te faire un schéma, mais avec quel logiciel ?



#20 ashira

ashira

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 290 messages
  • Gender:Male

Posté 29 août 2017 - 09:06

Fritzing par exemple ou paint, sinon à la main du moment que c'est claire.



Répondre à ce sujet



  



Aussi étiqueté avec au moins un de ces mots-clés : vélo électrique, arduino, code

0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users