viernes, 9 de abril de 2010

programa de control de posicion para motores

int adc_ref;
int adc_y;
int i;
int n;

void main() {
adc_y = 512;
i = 0;
n = 6;
PORTC = 255;
TRISC = 0;
ADCON1 = 0x80; // Configure analog inputs and Vref


Delay_ms(2000);
while(1) {
adc_ref = Adc_Read(7);// Get results of AD conversion
//Adc_Read(2); // Get results of AD conversion


if(adc_ref >= adc_y){ //comparación para ver a que lado girar

if(i>6){
i=0;}

switch (i){ //secuencia de pasos para motor
case 0 : PORTC = 1; break;
case 1 : PORTC = 5; break;
case 2 : PORTC = 4; break;
case 3 : PORTC = 6; break;
case 4 : PORTC = 2; break;
case 5 : PORTC = 10; break;
case 6 : PORTC = 8; break;
default : PORTC = 255; break;


} Delay_ms(50);
i++;
}

if(adc_ref < adc_y){

if(n<0){n=6;}

switch (n){
case 0 : PORTC = 1; break;
case 1 : PORTC = 5; break;
case 2 : PORTC = 4; break;
case 3 : PORTC = 6; break;
case 4 : PORTC = 2; break;
case 5 : PORTC = 10; break;
case 6 : PORTC = 8; break;
default : PORTC = 255; break;


}
Delay_ms(50);
n--;
}
}
} //~!

No hay comentarios:

Publicar un comentario