PROCESAMIENTO_DIGITAL
/
Muestreo_Motor_CD_Tuzo_6
asdfhkjlk
Fork of Muestreo_Motor_CD_Tuzo_5 by
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 00004 DigitalOut led1(LED1); 00005 DigitalOut led2(LED2); 00006 InterruptIn cruce_cero(p9); //Se declara el pin de la interrupción "en limpio" para el optoacoplador 1 00007 DigitalOut limpia_opto(p10); //Se declara el pin que saca los pulsos del optoacoplador 1 "en limpio" 00008 DigitalIn opto(p23); //Se declara el pin donde entran los pulsos del optoacoplador 1 "en sucio" 00009 InterruptIn inter(p5); //Se declara el pin de la interrupción "en limpio" para el encoder 00010 DigitalOut senal(p7); //Se declara el pin que saca los pulsos del encoder "en limpio" 00011 DigitalIn pulsos(p6); //Se declara el pin donde entran los pulsos del encoder "en sucio" 00012 DigitalOut senal1(p21); //Se declara el pin de salida que da los pulsos al optoacoplador 2 00013 AnalogIn pot(p19); //Se declara el pin que lee el valor del potenciometro 00014 00015 //Timer t; //Función que medirá el tiempo de operación 00016 Thread thread; 00017 Thread thread2; 00018 Thread thread3; 00019 Thread thread4; 00020 Thread thread5; 00021 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 00022 int iteraciones=0; //iteraciones=Variable que contará el número de pulsos 00023 00024 void controlador() { //NO SE PARA QUE ESTA AQUI JAJAJAJA 00025 while(1) { 00026 Thread::wait(1); 00027 } 00028 } 00029 00030 /*void pruebas() { //Hilo que "limpia" los pulsos del encoder 00031 while(1){ 00032 //senal=pulsos.read(); 00033 } 00034 }*/ 00035 00036 void contador() { //Hilo que aumenta la variable "iteraciones" cada que el encoder detecta una vuelta 00037 iteraciones=iteraciones+1; 00038 } 00039 00040 void interr() { 00041 inter.rise(&contador); //Hilo que detecta los pulsos del encoder "en limpio" para aumentar contador 00042 } 00043 00044 void scr() { //Hilo que modula el ángulo de disparo de acuerdo al valor del pot 00045 b = pot.read(); 00046 c = b*0.00833; 00047 wait(c); 00048 senal1=1; 00049 wait(.0003); 00050 senal1=0; 00051 /*senal1=0; 00052 b = pot.read(); 00053 c = b*0.00833; 00054 if (opto==1) { 00055 wait(c); 00056 senal1=1; 00057 wait(0.0003); 00058 senal1=0; 00059 wait(0.009-c); 00060 } */ 00061 } 00062 00063 void Cruce_cero() { 00064 cruce_cero.rise(&scr); 00065 } 00066 00067 void vel() { //Hilo que calcula la velocidad en rpm del motor 00068 while (1) { //Se ejecuta siempre 00069 //t.reset(); //Se inicializa el timer 00070 Thread::wait(1000); //Se espera 1 segundo 00071 //printf("n vale: %d\n\r", iteraciones); //Se imprime el número de iteraciones para monitorear 00072 velo= iteraciones*60; //Se convierte de iteraciones a rpm 00073 printf("La velocidad en rpm es: %f\n\r", velo); //Se imprimen las rpm 00074 printf("El Pot es: %f\n\r", pot.read()); 00075 //printf("el tiempo es: %f\n\r", t.read()); //Se imprime el tiempo de ejecución para monitorear 00076 iteraciones=0; //Se comienza la cuenta de iteraciones de 0, para el siguiente ciclo 00077 } 00078 } 00079 00080 int main() { 00081 //vRef=600; 00082 //t.start(); //Se inicializa el timer 00083 thread.start(vel); //Se inicializa el hilo que calcula la velocidad 00084 thread2.start(Cruce_cero); 00085 thread3.start(interr); //Se inicializa el hilo que detecta señal del encoder 00086 thread4.start(controlador); 00087 //thread5.start(pruebas); 00088 00089 while(1){ 00090 limpia_opto=opto.read(); //Main donde se "limpian" los pulsos del optoacoplador 1 00091 senal=pulsos.read(); //Main donde se "limpian" los pulsos del encoder 00092 } 00093 } 00094 //p=0.4295; 00095 /*while(1) { 00096 err= vRef-velo; 00097 control= p*err; // Rango de error es de 0 a 1500; cuando el error es 1500 el angulo debe ser 00098 if(err<0){ 00099 led1=!led1; 00100 } 00101 if(err>1000){ 00102 led2=!led2; 00103 } 00104 if(err>=0 && err<600){ 00105 Control1=control/257.7; 00106 } 00107 if(err==600){ 00108 00109 } 00110 if(err>600 && err<1000){ 00111 00112 } */ 00113
Generated on Wed Jul 13 2022 09:12:11 by 1.7.2