Motor de control C Velocidad Programa DC

Cómo escribir un motor de control C Velocidad Programa DC en lenguaje de programación C ?


Solution:
  1. const int buttonPin=8;     // El boton pulsador se declara como la entrada 8 del pin del Arduino
  2. const int sensorPin=3;     // El pin numero 3 hace referencia al sensor de barrera
  3.  
  4. int motorPin=5;      // Utilizamos el pin 5 para declarar al motor
  5. const int pot=0; //entrada analogica del arduino  A0
  6. int buttonState = LOW; // Estado del boton pulsador
  7. const int A=2;  //  Entradas del dip Swicht
  8. const int B=6;
  9. const int C=7;
  10. const int D=9;
  11. const int E=10;
  12. const int F=11;
  13. const int G=12;
  14. const int H=13;
  15. int i=0;
  16. int suma=0;
  17. int velocidad=0;
  18. int contador=0;
  19. int aux=0;
  20. int Vueltas=0;
  21.  
  22. void setup()
  23. {
  24.   pinMode(motorPin, OUTPUT);// Pin de salida del motoreductor
  25.   pinMode(buttonPin, INPUT);// Pin de entrada del boton pulsador
  26.   digitalWrite(buttonPin,HIGH);//Se energiza el boton pulsador
  27.   pinMode(sensorPin, INPUT);
  28.   Serial.begin(9600);
  29.  
  30. }
  31.  
  32. void loop()
  33. {
  34.   buttonState = digitalRead(buttonPin);
  35.    //Serial.println(buttonState);
  36.  
  37.   if(buttonState==HIGH)
  38.   {
  39.     buttonState = HIGH;
  40.      entrada_binaria();
  41.    
  42.        
  43.       do
  44.       {
  45.      
  46.           pwm();//Se activa la funcion PWM
  47.           contador=digitalRead(sensorPin);
  48.           if(contador==HIGH)
  49.              {
  50.                 if (aux==0)
  51.                 {
  52.                   Serial.println(suma);
  53.                   suma=suma+1;
  54.                 }
  55.                 aux=1;
  56.              }
  57.              if(contador==LOW)
  58.              {
  59.                aux=0;
  60.              }
  61.              if(suma==Vueltas)
  62.              {
  63.               Serial.println(suma);
  64.               analogWrite(motorPin,0);
  65.               digitalWrite(motorPin,LOW);
  66.               suma=0;
  67.               buttonState=LOW;
  68.              }
  69.    
  70.          
  71.            
  72.       }
  73.       while(buttonState==HIGH);
  74.    
  75.   }    
  76. }
  77. void pwm()//Para controlar la velocidad del motor se realiza la division entre 4 del valor de 1023
  78. {
  79.   int velocidad=0;
  80.   velocidad=analogRead(pot);//toma valores de 0 a 1023
  81.   velocidad=velocidad/4;//ajustamos el valor del por para poder usar el PWM
  82.   analogWrite(motorPin,velocidad);//valores entre 0 y 255 mando el valor a el motor
  83.    //Serial.println ("Valor del PWM:");
  84.   //Serial.println(velocidad);
  85. }
  86. void entrada_binaria() // En esta parte del void se le asignan valores para cada boton del dip
  87. {
  88.   Vueltas=0;
  89.          if(digitalRead(A)==HIGH)
  90.        {
  91.         Vueltas=Vueltas+10;
  92.        }
  93.         if(digitalRead(B)==HIGH)
  94.        {
  95.         Vueltas=Vueltas+20;
  96.        }
  97.          if(digitalRead(C)==HIGH)
  98.        {
  99.         Vueltas=Vueltas+40;
  100.        }
  101.         if(digitalRead(D)==HIGH)
  102.        {
  103.         Vueltas=Vueltas+80;
  104.        }
  105.         if(digitalRead(E)==HIGH)
  106.        {
  107.         Vueltas=Vueltas+160;
  108.        }
  109.         if(digitalRead(F)==HIGH)
  110.        {
  111.         Vueltas=Vueltas+320;
  112.        }
  113.        if(digitalRead(G)==HIGH)
  114.        {
  115.         Vueltas=Vueltas+640;
  116.        }
  117.           if(digitalRead(H)==HIGH)
  118.        {
  119.         Vueltas=Vueltas+1280;
  120.        }
  121.        //Serial.println ("No. Vueltas :");
  122.        //Serial.println(Vueltas);
  123. }


Learn More :