![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Control Motor CD
Fork of Muestreo_Motor_CD_Tuzo_2 by
Diff: main.cpp
- Revision:
- 1:f7fb4980557c
- Parent:
- 0:1c17e8f0fcc0
--- a/main.cpp Thu Nov 09 19:49:42 2017 +0000 +++ b/main.cpp Fri Nov 10 00:39:50 2017 +0000 @@ -9,26 +9,29 @@ DigitalOut senal1(p21); DigitalIn opto(p23); AnalogIn pot(p19); +DigitalOut prueba1(p10); +InterruptIn prueba2(p9); Timer t; //Función que medirá el tiempo de operación -Thread thread, thread2, thread3, thread4; //Función que se ejecutará en paralelo al programa principal -float velo=0, vRef=0, err=0, p=0, control=0, b=0, c=0, Control1=0; //Variable flotante en la cual se guardará la velocidad en rpm +//Thread thread; +//Thread thread2; +//Thread thread3; +Thread thread4; //Función que se ejecutará en paralelo al programa principal +Thread thread5; +float velo=0, vRef=0, err=0, p=0, control=0, b, c, Control1=0; //Variable flotante en la cual se guardará la velocidad en rpm int iteraciones=0; //iteraciones=Variable que contará el número de pulsos +/*void Prueba() { + senal1=1; + wait(.0003); + senal1=0; + led2=!led2; + }*/ + void controlador() { //Thread::wait(3000); while(1) { - senal1=0; - b = pot.read(); - c = b*0.00833*1000; - if (opto==1) - { - Thread::wait(c); - senal1=1; - Thread::wait(.3); - senal1=0; - Thread::wait(9-c); - } + //prueba2.rise(&Prueba); } } @@ -36,9 +39,15 @@ iteraciones=iteraciones+1; } +void pruebas() { + while(1){ + senal=pulsos.read(); //se filtra la señal del encoder, para limpar el ruido. + } + } + void filtro() { while(1){ - senal=pulsos.read(); //se filtra la señal del encoder, para limpar el ruido. + prueba1=opto.read(); //se filtra la señal del encoder, para limpar el ruido. } } @@ -46,7 +55,7 @@ inter.rise(&contador); //Se declara la interrupción } -void vel() { //Funcion Se convierte de iteraciones a rpmn vel, ejecutada por el hilo secundario +/*void vel() { //Funcion Se convierte de iteraciones a rpmn vel, ejecutada por el hilo secundario while (1) { //Se ejecuta siempre t.reset(); //Se inicializa el timer Thread::wait(1000); //Se espera 1 segundo @@ -57,15 +66,22 @@ //printf("el tiempo es: %f\n\r", t.read()); //Se imprime el tiempo de ejecución para monitorear iteraciones=0; //Se comienza la cuenta de iteraciones de 0, para el siguiente ciclo } - } + }*/ int main() { //vRef=600; //Hilo principal - t.start(); //Se inicializa el timer - thread.start(vel); //Se inicializa el hilo secundario - thread2.start(filtro); - thread3.start(interr); + //t.start(); //Se inicializa el timer + //thread.start(vel); //Se inicializa el hilo secundario + //thread2.start(filtro); + //thread3.start(interr); thread4.start(controlador); + thread5.start(filtro); + + while(1){ + led1=!led1; + + } + } //p=0.4295; /*while(1) { err= vRef-velo; @@ -85,4 +101,4 @@ if(err>600 && err<1000){ } */ - } +