Mini proiect (2) - Controlarea unui motor DC folosind Arduino

Controlarea unui motor DC folosind Arduino

Azi am meșterit un circuit de control al turației unui motor DC. Cred ca e cel mai simplu circuit bazat pe un tranzistor, o dioda și o rezistenta, toate conectate ca în schema de mai jos. In plus am mai folosit un buton pentru a incrementa viteza de rotație cu 10 unități. In momentul în care butonul nu este apăsat atunci viteza de rotație a motorului va scădea cu 5 unități.
Schema electronica de control:


Montajul folosind placa Arduino

Controlarea unui motor DC folosind Arduino

Montajul folosind placa DIY bazata pe Arduino


Progrămelul de control :

/*
Adafruit Arduino - Lesson 13. DC Motor
*/

// Pin 8 has an LED connected on most Arduino boards.
// give it a name:
int led1 = 8;
const int buttonPin = 2; // the number of the pushbutton pin
int motorPin = 3;
int speed = 100;
// variables will change:
int buttonState = 0;  // variable for reading the pushbutton status

void setup() 
{ 
  pinMode(motorPin, OUTPUT);
  // initialize the digital pin as an output.
  pinMode(led1, OUTPUT);
  //randomSeed(analogRead(0));
  analogWrite(motorPin, speed);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT); 
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);   
} 
void loop() 
{
 // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // increase DC motor speed:    
    speed += 10; 
  } 
  else {
    // reduce DC motor speed:    
    speed -= 5; 
  } 
  // print the results to the serial monitor:
  Serial.print("Speed = " );                       
  Serial.println(speed); 
  
  if (speed >= 0 && speed <= 255)
  {
    analogWrite(motorPin, speed);
  }
  SetToHigh(led1); //turn the LED on (HIGH is the voltage level)    
  SetToLow(led1); //turn the LED off by making the voltage LOW  
} 

void SetToHigh(int led)
{
  digitalWrite(led, HIGH); // turn the LED off by making the voltage LOW
  delay(500); // wait for a second
}
void SetToLow(int led)
{
  digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
  delay(500); // wait for a second
}

Documentație

Tutorial inspirat de pe learn.adafruit.com/adafruit-arduino-lesson-13-dc-motors/.
 

Week-end plăcut tuturor!

Etichete

Afișați mai multe

Arhiva

Afișați mai multe