Bonjour à tous
Dans le cadre d'un gros projet de mon DUT GMP, je dois élaborer un suiveur de ligne (et éviteur d'obstacle éventuellement si je peux, mais ca reste optionnel) bien performant. Pour ça j'ai commander des suiveurs de ligne Parallax (d'ailleurs si vous avez d'autres capteurs à me recommander je suis toujours preneur )
le truc c'est qu'ils utilisent une librairie assez spéciale, et vu que je suis pas un expert, j'ai cherché tout ce que j'aurai pu trouver sur internet.
J'ai trouvé le programme et le branchement ci-dessous.
Problème : ce programme est fait pour DEUX SERVOMOTEURS, tandis que moi je veux le faire pour QUATRES MOTEURS...
Est-ce que quelqu'un pourrait m'aiguiller quant aux modifications à apporter au code et/ou au branchement?
Je vous remercie !
Il faut transposer les angles servo en variation de vitesse pour les moteurs.
Quand tu tournes tu fais accélérer les roues à l'extérieur du virage et ralentir celles à l'intérieur du virage.
Si tu as 4 moteurs tu peux en plus introduire une variation entre les roues avant et arrière car elles ne suivent pas tout à fait la même trajectoire et en toute rigueur il faudrait aussi jouer sur leur vitesse
Il manque de précisions. Quel type de moteurs? courant continu, je suppose?
Je dis souvent que l'on ne peut pas programmer si on ne sait déjà pas exprimer comment cela fonctionne. Faire avancer, tourner, reculer un mobile avec 2 moteurs, je sais faire, mais pourquoi avoir besoin de 4 moteurs? Comment doivent-il être commandés? Deux par deux? Indépendamment?
Bonjour @corentin_dmn.
Peux-tu mettre un lien vers où tu as tout ça ?. J'ai l'impression d'après l'assemblage et le code qu'il s'agit de servos à 360º fonctionnant comme des moteurs.
Si c'est le cas, vous n'auriez rien à toucher, il vous suffirait d'ajouter deux autres servos en parallèle à ceux que vous avez déjà.
Salutations.
4 moteurs à courants continus, 4 moteurs car ce sont des roues omnidirectionnelles (ou mecanum), et donc je voudrais que les roues soient commandés indépendamments
je vous met ci dessous le code modifié normalement pour des moteurs... mais il ne marche pas , comme vous pouvez voir lerreur ci jointe.
Je ne sais pas si ca vient de mon branchement ou de mon codage...
int QtiLeft =0;
int QtiCenter =0;
int QtiRight =0;
int dist_cm=0;
int S_A = 11; //speed motor a
int S_B = 10; //speed motor b
int M_A1 = 6; //motor a = +
int M_A2 = 5; //motor a = -
int M_B1 = 7; //motor b = -
int M_B2 = 8; //motor b = +
int R_S = 3; //sincer R
int S_S = 2; //sincer S
int L_S = 4; //sincer L
void setup() {
pinMode(M_B1, OUTPUT);
pinMode(M_B2, OUTPUT);
pinMode(M_A1, OUTPUT);
pinMode(M_A2, OUTPUT);
pinMode(S_B, OUTPUT);
pinMode(S_A, OUTPUT);
pinMode(L_S, INPUT);
pinMode(S_S, INPUT);
pinMode(R_S, INPUT);
analogWrite(S_A, 150);
analogWrite(S_B, 150);
delay(200);
}
void loop() {
delay(50);
QtiLeft = RCTime(2);
QtiCenter = RCTime(3);
QtiRight = RCTime(4);
}
long RCTime(int sensorIn)
{
long duration = 0;
pinMode(sensorIn, OUTPUT);
digitalWrite(sensorIn, HIGH);
delay(1);
pinMode(sensorIn, INPUT);
digitalWrite(sensorIn, LOW);
while(digitalRead(sensorIn))
{
return duration;
}
}
void QTI()
{
if (QtiCenter>100) //Straight
{forward();}
else if (QtiLeft>100 ) //Turn Left
{
{turnLeft();}
}
else if (QtiRight>100 ) // Turn Right
{
{turnRight();}
}
else if (QtiRight < 100 && QtiCenter<100 && QtiLeft<100) //White Surface
{
{Stop();}
delay(100);
}
delay(200);
}
void forward(){
digitalWrite(M_A1, LOW);
digitalWrite(M_A2, HIGH);
digitalWrite(M_B1, HIGH);
digitalWrite(M_B2, LOW);
}
void turnRight(){
digitalWrite(M_A1, LOW);
digitalWrite(M_A2, LOW);
digitalWrite(M_B1, HIGH);
digitalWrite(M_B2, LOW);
}
void turnLeft(){
digitalWrite(M_A1, LOW);
digitalWrite(M_A2, HIGH);
digitalWrite(M_B1, LOW);
digitalWrite(M_B2, LOW);
}
void Stop(){
digitalWrite(M_A1, LOW);
digitalWrite(M_A2, LOW);
digitalWrite(M_B1, LOW);
digitalWrite(M_B2, LOW);
}
Attends t'es pas idiot je suppose.
-Tu as d'un coté un programme suiveur de ligne
-De l'autre un programme qui permet de faire avancer/tourner un mobile équipé de roues Mecanum.
Tu ne crois pas qu'il doit y avoir moyen de faire quelque chose?
Bon, comme tu m'as l'air fâché avec les moteurs de recherche voilà un cadeau
ouui je viens de trouver ca aussi, mais bon le truc cest que deja je n'ai pas 5 fils sur mes moteurs mais seulement 2, et je n'ai pas du tout le même type de capteur : jai des capteurs QTI, au nombre de 3 indépendants avec 3 sorties B , R et W
Il est dommage que vous vouliez changer les servos pour les moteurs, si vous ajoutiez deux autres servos égaux connectés en parallèle avec ceux que vous avez, vous auriez déjà un 4 roues motrices et avec le code déjà fait. J'ai un 4wd et je trouve ce projet très intéressant, je prévois d'essayer de changer les moteurs pour les servos pour voir comment ça se passe.
Si vous voulez un bon suiveur de ligne, vous pouvez lire ceci TUTORIAL. Comme vous pouvez le voir, il n'utilise que 2 moteurs, la différence pour 4 moteurs n'est que la plate-forme où les placer et connectés en parallèle. Toutes les voitures robots qu'ils vendent et projettent sur le réseau, les deux moteurs de chaque côté sont connectés en parallèle et fonctionnent à l'unisson, je n'ai encore vu aucun projet dans lequel les 4 fonctionnent indépendamment.
Les salutations.
@corentin_dmn
Depuis le début, tu n'as donné aucune information précise sur le matériel que tu veux utiliser
quel moteurs exactement?
quel driver de moteur?
Donne des doc ou des liens vers le site des fournisseurs.
As-tu fait des tests de base:
Arduino + driver + moteur + programme de démo du driver
Arduino + capteur + programme de démo du capteur
Il y a très peu de chance que tu trouves LE programme qui comble toutes tes attentes (même matériel et exactement même besoin) mais il faut savoir prendre des bouts de code à gauche à droite et les coller ensemble.
C est ce que j’essaye de faire .
Bon en gros notre projet c’est un énorme robot de 1 m de long à 4 roues omnidirectionnelles possédant chacune un moteur . Il sera piloté à la manette ou en mode autonome avec suiveur de ligne . Notre mode à la manette fonctionne et moi je m’occupe du suiveur de ligne mais je n y arrive pas. on a 2 shields moteurs mais je sais pas trop le modèle j’ai demandé à mes camarades.
Moi j’ai des capteurs QTI de chez parallax