1. DC motor icm L298 + Arduino

 
L298 in combinatie met Arduino en 1 of 2 DC motoren: 
 
 
 
pinconfiguratie van de L298 motordriver
 
Afbeelding invoegen

 
 
 

constructiefase 1: 1 DC motor in combinatrie met de L298 motordriver.  
 

Afbeelding invoegen
 
 
 
constructiefase 2: 1 DC motor nu verder in combinatie met breadboard, LEDS, de L298 motordriver en een Arduino UNO
 

 
Afbeelding invoegen
 
 
 
constructiefase 3: 1 DC motor, breadboard, LEDs, weerstanden, L298, Arduino UNO
 

 
 
Afbeelding invoegen
 
 

  constructiefase 4: idem fase 2 maar nu met 2 DC motoren 
 
 
 
Afbeelding invoegen
 
 

 
 
Arduino code voor 1 DC motor:
 
 

controle software voor het aansturen van 1 DC motor (motor 1)
 
// motor 1
int Motor_1_aan = 10;
int M1_rechts = 9;
int M2_links = 8;

void setup()
{
// motorpinnen worden OUTPUT 
pinMode(Motor_1_aan, OUTPUT); // verbind Arduino poort 10 met L298 poort no 7 
pinMode(M1_rechts, OUTPUT); // verbind Arduino poort 9 met L298 poort no 8
pinMode(M1_links, OUTPUT); // verbind Arduino poort 8 met L298 poort no 9
}

void loop()
{
// motor 1 aan
digitalWrite (Motor_1_aan,HIGH);
digitalWrite(M1_rechts, HIGH);
digitalWrite(M1_links, LOW);

delay(2000);

// verandering motor draairichting
digitalWrite(M1_rechts, LOW);
digitalWrite(M1_links, HIGH);
delay(2000);
}

 
 
 

controle software voor het aansturen van 2 DC motoren (motor 1 en 2)

// motor 1
int Motor_1 = 10;
int M1_rechts = 9;
int M1_links = 8;

// motor 2
int Motor_2 = 5;
int M2_rechts = 7;
int M2_links = 6;

void setup()
{
// alle motorpinnen worden OUTPUT 
pinMode(Motor_1, OUTPUT);
pinMode(Motor_2, OUTPUT);
pinMode(M1_rechts, OUTPUT);
pinMode(M1_links, OUTPUT);
pinMode(M2_rechts, OUTPUT);
pinMode(M2_links, OUTPUT);
}

void loop()
{
// deze functie zal beide motors laten draaien in beide richtingen 

// motor 1 aan
digitalWrite(M1_rechts, HIGH);
digitalWrite(M1_links, LOW);

// instelling snelheid motor 1 op waarde '200' uit een 8 bits bereik van 0~255 (spanning = 200/255 x voltage)
analogWrite(Motor_1, 200);

// motor 2 aan
digitalWrite(M2_rechts, HIGH);
digitalWrite(M2_links, LOW);

// instelling snelheid motor 2 op waarde '200' uit een 8 bits bereik van 0~255 (spanning = 200/255 x voltage)
analogWrite(Motor_2, 200);
delay(2000);

// verandering motor draairichting
digitalWrite(M1_rechts, LOW);
digitalWrite(M1_links, HIGH);
digitalWrite(M2_rechts, LOW);
digitalWrite(M2_links, HIGH);
delay(2000);

// beide motors worden uitgeschakeld
digitalWrite(M1_rechts, LOW);
digitalWrite(M1_links, LOW);
digitalWrite(M2_rechts, LOW);
digitalWrite(M2_links, LOW);
}
 
 
controle software voor het aansturen van 2 DC motoren maar nu met variërend toerental
 
 
// motor 1
int enA = 10;
int in1 = 9;
int in2 = 8;

// motor 2
int enB = 5;
int in3 = 7;
int in4 = 6;

void setup()
{
// alle motorpinnen worden OUTPUT 
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}

void demoOne()
{
// deze functie zal beide motors laten draaien in beide richtingen 

// motor 1 aan
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);

// instelling snelheid motor 1 op waarde '200' uit een 8 bits bereik van 0~255 (spanning = 200/255 x voltage)
analogWrite(enA, 200);

// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);

// instelling snelheid motor 2 op waarde '200' uit een 8 bits bereik van 0~255 (spanning = 200/255 x voltage)
analogWrite(enB, 200);
delay(2000);

// verandering motor draairichting
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);

// beide motors worden uitgeschakeld
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}

void demoTwo()

{
/* 
Met deze functie kunnen de motors verschillende toerentallen worden toegekend door pwm (pulse with modulation).
Het maximale toerental wordt bepaald door de hoogte van de aangeboden spanning in combinatie met het maximale toerental van de motor.
Als over - zowel motor A als B - een spanning van 5V staat en motor A maximaal 15 rpm en motor B 120 rpm aankan, dan zullen beide motoren dus een ander toerental aannemen.  
*/
 
// motors aan
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);

// acceleratie van 0 naar maximale snelheid.
for (int i = 0; i < 256; i++)

{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);

}
// deaccelaratie van maximum snelheid naar 0.
for (int i = 255; i >= 0; --i)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}

// beide motors uit
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}

void loop() // in de loop staan de twee 'calls'. 
{
demoOne();
delay(1000);
demoTwo();
delay(1000);
}