Pages: [1]   Go Down
Author Topic: Moteur CC  (Read 548 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
// 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





* moteur_mousse_1_1.png (42.38 KB, 650x279 - viewed 17 times.)
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 52
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

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

Code:
unsigned long time = millis();

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

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

Paris
Offline Offline
Full Member
***
Karma: 1
Posts: 175
Beyond the possible...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
void stopMotor() {
 analogWrite(pinMoteur, 0);
}
Logged

The Mind is like a parachute it works best when opened.

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

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

Merci
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
// 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.
Logged

Paris
Offline Offline
Full Member
***
Karma: 1
Posts: 175
Beyond the possible...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu inclus la fonction, puis tu l'appelle a chaque fois que tu veut tout simplement.
Logged

The Mind is like a parachute it works best when opened.

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: April 13, 2013, 06:27:16 am by edwinre » Logged

Pages: [1]   Go Up
Jump to: