Uso del motor paso a paso para la visualización analógica

0

Estoy haciendo un proyecto sobre el diseño de voltímetros. Una de las condiciones del proyecto es que debe tener una pantalla analógica. Después de la investigación, descubrí que usar un motor paso a paso es una de las soluciones. El motor paso a paso X-25, que está diseñado para grupos de automóviles, es lo suficientemente compacto y potente como para impulsar un indicador en el dial.

Sin embargo, estoy teniendo dificultades para girar el motor a un ángulo particular según el voltaje medido.

He adjuntado el esquema del circuito y el código snap. Gracias de antemano por su ayuda.

   while (1) 
{
    voltage = ADC/204.8*18;//ADC/18.618;

    if (voltage>=0 && voltage<=3)
    {
        // OCR1A = 65;  
         degree = 34;

         while(degree)                              
         {
             PORTB = 0x01;          //0001
             _delay_ms(10);
             PORTB = 0x04;          //0100
             _delay_ms(10);
             PORTB = 0x02;          //0010
             _delay_ms(10);
             PORTB = 0x08;          //1000
             _delay_ms(10);
             degree--;                             
         }
        //_delay_ms(1500);
    } 
    else if(voltage>3 && voltage<=4)
    {

         //OCR1A = 175; 
          degree = 75;
                       //All pins of PORTB as output

          while(degree)                              
          {
              PORTB = 0x01;          //0001
              _delay_ms(10);
              PORTB = 0x04;          //0100
              _delay_ms(10);
              PORTB = 0x02;          //0010
              _delay_ms(10);
              PORTB = 0x08;          //1000
              _delay_ms(10);
              degree--;                             
          }
        //_delay_ms(1500);
    }
    else
    {

         //OCR1A = 300; 
          degree = 100;

          while(degree)                             
          {
              PORTB = 0x01;          //0001
              _delay_ms(10);
              PORTB = 0x04;          //0100
              _delay_ms(10);
              PORTB = 0x02;          //0010
              _delay_ms(10);
              PORTB = 0x08;          //1000
              _delay_ms(10);
              degree--;                             
          }
        //_delay_ms(1500);
    }
}

}

Saludos Srinidhi

    

0 respuestas

Lea otras preguntas en las etiquetas