Freinage avec arduino

Bonjour
Je fais partie d un projet en SI qui s’intitule velo controle par smartphone et je m occupe de la partie commande de freinage par un servomoteut
Mon programme consiste à lire le freinage et à le commande par le servomoteur
Mais je ne sais pas si j ai juste je vous montre ce que j ai déjà fais et dites moi ce qu il faut corrige sachant que je suis débutant


Void freiner ()
{
#define CMD_Freiner “cmd_freiner”
If cmd_freiner==1
Frein=1
}
#include <servo.h>
Servo monservo ;
Void setup ()
{
Monservo.Attach(2,1000,2000)
Monservo.write(90);
}
Void loop ()
{
}

Il y a plusieurs problèmes dans ton code

-1- la déclaration d'une fonction qui ne retourne aucune valeur s'écrit "void" et pas "Void" (pas de majuscule

-2- #define CLD_Freiner="cmd_freiner" ne sert a rien cette constante n'est utilisée nulle part

-3- if cmd_freiner==1 devrait s'écrire if(cmd_freiner==1) mais ça ne marchera pas la variable cmd_freiner n'est pas déclarée, de plus elle n'a pas étée initialisée avec une valeur

-4- Frein=1 tu tonne une valeur à une variable qui n'est pas déclarée

-5- dans ton setup, tu déclare un objet monservo et tu lui donne une consigne ça correspond à quoi, à quelle position du servo ?

-6- dans ton loop tu ne fais rien

la constante CMD_freiner reçoit pour valeur "cmd_freiner" il n'y aura jamais aucune relation avec la variable cmd_freiner

d'autre part un freinage n'est jamais une valeur 0 ou 1, ce qui résulterait à roue non freinée pour la valeur 0 roue bloquée pour la valeur 1 en général quand tu freine, tu appuie plus ou moins fort sur le levier de frein, qui génère une puissance de freinage proportionnelle

pour cela, il te faut faire l'acquisition de la position du levier de frein et ensuite calculer la valeur à transmettre au servo je n'ai pas de formule à te donner, mais ça peut être trouvé par expérimentation

commencez par

  • décrire le problème et l'approche retenue
  • décrire comment vous allez mettre cela en fonction dans la vraie vie
  • en tirer le mode opératoire (quelles sont les commandes possibles, que doivent-elles faire)
  • faire un certain nombre de tutos concernant les éléments du projet (servo, commande, arduino, C++, ...)
  • formaliser en français l'algo une fois que vous comprenez les possibilités du matériel
  • passer au code

vous avez un peu grillé les étapes là...

Alsaciennn67: On a trouvé une force de patin de 1.5 N Force de câble de 3.3N et un effort de poignée de 1.55 n Quelle valeur est a mettre ?

Et bien cela dépend de l'endroit où tu appliques ta force!

Dans le programme tu ne programmes pas la force du servo, tu indiques sa position (l'angle du bras). A vous de concevoir un couplage correct entre le servo et le point d'application afin de garantir la force et la course suffisante pour assurer le freinage.

Pour être franc, le programme est pas cohérent Il fait rien du tout à part définir une position initiale du servo

Est-ce que tu as au moins essayé de le compiler ?

Il te faut partir du principe qu'une carte Arduino ce n'est qu'un microcontrolleur associé à quelques composants électroniques qui lui permettent de fonctionner

Et un microcontrolleur c'est quelque chose de très con qui ne sait absolument rien faire tant qu'on ne lui a pas dit ce qu'il devait faire. Autrement dit un miconcontrolleur n'est qu'un bout de plastique inutile tant qu'il n'a pas été programmé

Par contre il a la capacité de répéter insallablement et de manière très rapide le programme qu'il contient

Tout "l'art" de la programmation consiste à indiquer au microcontrolleur ce qu'il doit faire et ce de façon extrèmement précise

Mais ce n'est pas tout. Sur une carte Arduino il y a une multitude de connecteurs. Chaque connecteur va permettre au micontrolleur de communiquer avec un environnement extérieur. Par exemple led, bouton poussoir, potentiomètre, carte d'interface (shield), ...

Vu les difficultés que tu rencontres, je te conseille de partir à la découverte de l'Arduino via le blog d'Eskimon Egalement tu peu charger les programmes d'exemple et essayer de comprendre comment ils sont écris et à quoi sert chaque ligne de proramme

N'hésite pas à communiquer et a te mettre en relation avec des personnes déjà familiarisées avec le monde Arduino (profs, élèves, amis, ...)

Mais la fonction lire le freinage je la comprends pas car elle ne va pas affiché de valeur

La fonction lire le freinage? quelle fonction ? Il n'y a rien dans ton programme qui ressemble à ça

Un projet de ce type, d'après ce que j'ai pu comprendre, ne se resume pas à quelques lignes de code

Quelle relation y a-t'il entre ta care Arduino, l'utilisateur et la partie mécanique du vélo ?

Si une décision de freinage est effectuée, comment la carte Arduino est-elle informée de cette décision ?

Une fois que la carte Arduino a acquis cette information quelle décision doit-elle prendre et comment donner un ordre à un organe mécanique (servo dans ton cas)

Bon, ça commence à se construire, mais c'est encore un peu en désordre

Avec freinage= analogRead(freinagePin); tu fais une acquisition de données venant de l'extérieur de la carte Arduino

Mais int freinagePin=0; n'est pas une entrée analogique sur la carte. Les entrées analogiques sont nommées A0, A1, A2, ... Donc il vaudrait mieux écrire int freinagePin=A0; Ensuite regarde sur la doc de la carte où se situe le connecteur correspondant.

Dans cette hypothèse, tu vas faire l'acquisition d'une tension variant de 0 à 5V, ce qui voudrait dire qu'il y a un potentiomètre ou équivalent fixé mécaniquement au levier de frein. L'acquisition avec analogRead te donnerais une information sur la position du levier de frein.

Et dans ce cas on n'est plus dans le cadre de ton projet puisque l'information concernant le freinage doit être fournie par un Smartphone Il reste de nombreux points à résoudre L'application pour le Smartphone est-elle déjà réalisée ? Comment est-ce qu'elle transmet les données ? Sous quelle forme ? Comment est-ce que tu reçois ces données sur la carte Arduino ?

Ne perd pas de vue que c'est un projet SI et que c'est TON projet. Toutes les recherches documentaires que tu pourras faire ne peuvent que t'être bénéfiques

bon il serait temps de lire comment utiliser le forum et poster correctement, non?

corrigez votre post ci dessus et rajoutez les code tags autour du code: [code][color=blue]// votre code ici[/color][/code].

ça doit ressembler à cela:// votre code ici (faites aussi ctrl-T (PC) or cmd-T (Mac) dans l'IDE avant de copier le code pour qu'il soit indenté correctement)

Au lieu de coder n'importe quoi (vous avez demandé à être franc....) pourriez vous répondre aux questions en #2 ?

Alsaciennn67: Alors moi c'est absolument pas ma tâche du projet , l'application a été faite oui après j'en sais pas plus

vous allez avoir une super note sur la notion de travail d'équipe et implication dans le projet...

Nous non plus on n'en sait pas plus....

Bon on va vous aider un peu à réfléchir...

Mon programme consiste à lire le freinage et à le commander par le servomoteur

question1: lire le freinage |500x268 comment allez vous "lire le freinage"? ça veut dire quoi? comment vous le mesurez? avec quoi?

question 2: le commander par le servomoteur |500x215 comment allez vous "le commander par le servomoteur"? ça veut dire quoi? comment ça va fonctionner mécaniquement? pour quel type d'étriers, est-ce la même force à appliquer ?

question 3:Quelle relation mathématique / physique entre la grandeur mesurée à la question 1 et les paramètres sur l'action du moteur?

Alsaciennn67: Mon programme consiste à lire le freinage et à le commande par le servomoteur

On a l'impression très nette que vous vous lancez dans la programmation sans savoir ce qu'il faut faire. Vous lisez le freinage comment, puisqu'il vient d'un smartphone? Le freinage est codé comment? Quelle relation relie votre servo à la fonction de freinage? Parce que comme l'a dit Alain46 un freinage ce n'est pas binaire. Suivant que l'on appuie plus ou moins fort sur le frein on applique un effort plus ou moins important sur l'organe de freinage.

On a fait des tests pour voir l'effort que le vélo a besoin pour freiner ainsi on a choisit notre servo en fonction de ça Grâce au Bluetooth Justement je sais pas comment le codé car il n'est pas binaire .. Oui c'est la même force pour l'étrier

Vous ne semblez pas vous pencher sérieusement sur votre sujet. bon courage.