Go Down

Topic: Moteur CC (Read 845 times) previous topic - next topic

edwinre

Bonjour,

J'ai ce programme pour contrôler un moteur courant continu de 9V, le programme le fait accélérer et déccélérer , jusqu'à la, tout va bien mais le problème ce que je veux qu'au bout de 5 secs, il s'arrête complètement et ne redémarre plus. Comment faire?

Code: [Select]
// déclarer la variable pour contenir la pin associée au moteur
int pinMoteur = 9;

void setup()
{
    // spécifier que la pin liée au moteur est une sortie
    pinMode(pinMoteur, OUTPUT);
}

void loop()
{
    // boucle pour faire accélérer le moteur
    for (int i = 0 ; i <= 255 ; i++)
    {
        //envoyer la valeur de 0 à 255
        analogWrite( pinMoteur, i);
        // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
        delay(10);
    }

    // boucle pour faire décélérer le moteur
    for (int j = 0 ; j <= 255 ; j++)
    {
        //envoyer la valeur de 255 à 0
        analogWrite( pinMoteur, 255 - j);
        // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
        delay(10);
    }
}


Ensuite, je voudrais savoir comment faire pour au lieu contrôler un moteur, en contrôler deux.
Dans mon circuit, j'utilise un transistor NPS BC337, une résistance de 2.2 Kohm, une diode de roue libre, une pile de 9 V et une arduino mega.

le branchement est comme en pièce jointe. Et il marche très bien en réalité.
Merci.
Edwin




marcha

Salut,

Tu peux utiliser la fonction millis() pour savoir le nombre de millisecondes écoulées depuis le démarrage de l'arduino.

Code: [Select]

unsigned long time = millis();

while( millis() - time < 5000) {
  ... // ton code
}


après 5 secondes on entre plus dans la boucle while

-Standby

Tu crée une fonction que tu appellera a chaque fois que tu veut que ton moteur s’arrête, c'est pas très compliqué avec le PWM car 0% signifie en quelque sorte 0v et 100% Vmax



Code: [Select]
void stopMotor() {
analogWrite(pinMoteur, 0);
}
The Mind is like a parachute it works best when opened.

edwinre

Pour la fonction millis, je dois l'insérer avant la déclaration de variables et mettre ensuite tout le code?
Pour

Code: [Select]
void stopMotor() {
analogWrite(pinMoteur, 0);
}


Je dois le mettre où, après le dernier delay?

Merci

edwinre

J'ai essayé de mettre la boucle millis et delay mais il ne s'arrête toujours pas:

Code: [Select]
// déclarer la variable pour contenir la pin associée au moteur
int pinMoteur = 9;

void setup()
{
    // spécifier que la pin liée au moteur est une sortie
    pinMode(pinMoteur, OUTPUT);
}

void loop()
{
  unsigned long time = millis();

while( millis() - time < 5000)
{
    // boucle pour faire accélérer le moteur
    for (int i = 0 ; i <= 255 ; i++)
    {
        //envoyer la valeur de 0 à 255
        analogWrite( pinMoteur, i);
        // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
        delay(10);
    }

    // boucle pour faire décélérer le moteur
    for (int j = 0 ; j <= 255 ; j++)
    {
        //envoyer la valeur de 255 à 0
        analogWrite( pinMoteur, 255 - j);
        // attendre 10 millisecondes pour donner le temps de réaliser l'accélération
        delay(10);
    }
}
}


Et quelle valeur de résistance je dois mettre dans le circuit (2.2 K ohm suffit?)?

Merci.

-Standby

Tu inclus la fonction, puis tu l'appelle a chaque fois que tu veut tout simplement.
The Mind is like a parachute it works best when opened.

edwinre

#6
Apr 13, 2013, 01:16 pm Last Edit: Apr 13, 2013, 01:27 pm by edwinre Reason: 1
Comment ça? La fonction millis? Je ne l'ai jamais utilisée, comment faire pour ce programme? Je veux juste qu'après que le moteur deccélère, il se stoppe complètement et ne redémarre surtout pas ou ne recommance pas la boucle.

Merci à vous

Go Up