asdfhkjlk

Dependencies:   mbed-rtos mbed

Fork of Muestreo_Motor_CD_Tuzo_5 by PROCESAMIENTO_DIGITAL

Committer:
LuisFernandoTuzo
Date:
Fri Nov 10 02:38:42 2017 +0000
Revision:
2:6bf21247bab4
Parent:
1:f7fb4980557c
Child:
3:bc70614a267f
Funciona la parte de modular el ancho de pulso con el pot. Asimismo, todos los hilos que aparecen habilitados (no comentados) funcionan sin entorpecer la salida de la mbed al optoacoplador 2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Sumobot 0:1c17e8f0fcc0 1 #include "mbed.h"
Sumobot 0:1c17e8f0fcc0 2 #include "rtos.h"
Sumobot 0:1c17e8f0fcc0 3
Sumobot 0:1c17e8f0fcc0 4 DigitalOut led1(LED1);
Sumobot 0:1c17e8f0fcc0 5 DigitalOut led2(LED2);
LuisFernandoTuzo 2:6bf21247bab4 6 InterruptIn cruce_cero(p9); //Se declara el pin de la interrupción "en limpio" para el optoacoplador 1
LuisFernandoTuzo 2:6bf21247bab4 7 DigitalOut limpia_opto(p10); //Se declara el pin que saca los pulsos del optoacoplador 1 "en limpio"
LuisFernandoTuzo 2:6bf21247bab4 8 DigitalIn opto(p23); //Se declara el pin donde entran los pulsos del optoacoplador 1 "en sucio"
LuisFernandoTuzo 2:6bf21247bab4 9 InterruptIn inter(p5); //Se declara el pin de la interrupción "en limpio" para el encoder
LuisFernandoTuzo 2:6bf21247bab4 10 DigitalOut senal(p7); //Se declara el pin que saca los pulsos del encoder "en limpio"
LuisFernandoTuzo 2:6bf21247bab4 11 DigitalIn pulsos(p6); //Se declara el pin donde entran los pulsos del encoder "en sucio"
LuisFernandoTuzo 2:6bf21247bab4 12 DigitalOut senal1(p21); //Se declara el pin de salida que da los pulsos al optoacoplador 2
LuisFernandoTuzo 2:6bf21247bab4 13 AnalogIn pot(p19); //Se declara el pin que lee el valor del potenciometro
Sumobot 0:1c17e8f0fcc0 14
LuisFernandoTuzo 2:6bf21247bab4 15 //Timer t; //Función que medirá el tiempo de operación
LuisFernandoTuzo 2:6bf21247bab4 16 Thread thread;
LuisFernandoTuzo 2:6bf21247bab4 17 Thread thread2;
LuisFernandoTuzo 2:6bf21247bab4 18 Thread thread3;
LuisFernandoTuzo 2:6bf21247bab4 19 Thread thread4;
Sumobot 1:f7fb4980557c 20 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
Sumobot 0:1c17e8f0fcc0 21 int iteraciones=0; //iteraciones=Variable que contará el número de pulsos
Sumobot 0:1c17e8f0fcc0 22
LuisFernandoTuzo 2:6bf21247bab4 23 void controlador() { //NO SE PARA QUE ESTA AQUI JAJAJAJA
Sumobot 0:1c17e8f0fcc0 24 while(1) {
LuisFernandoTuzo 2:6bf21247bab4 25 Thread::wait(1);
Sumobot 0:1c17e8f0fcc0 26 }
Sumobot 0:1c17e8f0fcc0 27 }
Sumobot 0:1c17e8f0fcc0 28
LuisFernandoTuzo 2:6bf21247bab4 29 void pruebas() { //Hilo que "limpia" los pulsos del encoder
LuisFernandoTuzo 2:6bf21247bab4 30 while(1){
LuisFernandoTuzo 2:6bf21247bab4 31 senal=pulsos.read();
LuisFernandoTuzo 2:6bf21247bab4 32 }
LuisFernandoTuzo 2:6bf21247bab4 33 }
LuisFernandoTuzo 2:6bf21247bab4 34
LuisFernandoTuzo 2:6bf21247bab4 35 void contador() { //Hilo que aumenta la variable "iteraciones" cada que el encoder detecta una vuelta
Sumobot 0:1c17e8f0fcc0 36 iteraciones=iteraciones+1;
Sumobot 0:1c17e8f0fcc0 37 }
Sumobot 0:1c17e8f0fcc0 38
LuisFernandoTuzo 2:6bf21247bab4 39 void interr() {
LuisFernandoTuzo 2:6bf21247bab4 40 inter.rise(&contador); //Hilo que detecta los pulsos del encoder "en limpio" para aumentar contador
Sumobot 0:1c17e8f0fcc0 41 }
Sumobot 0:1c17e8f0fcc0 42
LuisFernandoTuzo 2:6bf21247bab4 43 void scr() { //Hilo que modula el ángulo de disparo de acuerdo al valor del pot
LuisFernandoTuzo 2:6bf21247bab4 44 /*senal1=1;
LuisFernandoTuzo 2:6bf21247bab4 45 wait(.0003);
LuisFernandoTuzo 2:6bf21247bab4 46 senal1=0;*/
LuisFernandoTuzo 2:6bf21247bab4 47 senal1=0;
LuisFernandoTuzo 2:6bf21247bab4 48 b = pot.read();
LuisFernandoTuzo 2:6bf21247bab4 49 c = b*0.00833;
LuisFernandoTuzo 2:6bf21247bab4 50 if (opto==1) {
LuisFernandoTuzo 2:6bf21247bab4 51 wait(c);
LuisFernandoTuzo 2:6bf21247bab4 52 senal1=1;
LuisFernandoTuzo 2:6bf21247bab4 53 wait(0.0003);
LuisFernandoTuzo 2:6bf21247bab4 54 senal1=0;
LuisFernandoTuzo 2:6bf21247bab4 55 wait(0.009-c);
LuisFernandoTuzo 2:6bf21247bab4 56 }
Sumobot 0:1c17e8f0fcc0 57 }
Sumobot 0:1c17e8f0fcc0 58
LuisFernandoTuzo 2:6bf21247bab4 59 void Cruce_cero() {
LuisFernandoTuzo 2:6bf21247bab4 60 cruce_cero.rise(&scr);
LuisFernandoTuzo 2:6bf21247bab4 61 }
LuisFernandoTuzo 2:6bf21247bab4 62
LuisFernandoTuzo 2:6bf21247bab4 63 void vel() { //Hilo que calcula la velocidad en rpm del motor
Sumobot 0:1c17e8f0fcc0 64 while (1) { //Se ejecuta siempre
LuisFernandoTuzo 2:6bf21247bab4 65 //t.reset(); //Se inicializa el timer
Sumobot 0:1c17e8f0fcc0 66 Thread::wait(1000); //Se espera 1 segundo
LuisFernandoTuzo 2:6bf21247bab4 67 //printf("n vale: %d\n\r", iteraciones); //Se imprime el número de iteraciones para monitorear
LuisFernandoTuzo 2:6bf21247bab4 68 velo= iteraciones*60; //Se convierte de iteraciones a rpm
LuisFernandoTuzo 2:6bf21247bab4 69 //printf("La velocidad en rpm es: %f\n\r", velo); //Se imprimen las rpm
LuisFernandoTuzo 2:6bf21247bab4 70 //printf("El Pot es: %f\n\r", pot.read());
Sumobot 0:1c17e8f0fcc0 71 //printf("el tiempo es: %f\n\r", t.read()); //Se imprime el tiempo de ejecución para monitorear
Sumobot 0:1c17e8f0fcc0 72 iteraciones=0; //Se comienza la cuenta de iteraciones de 0, para el siguiente ciclo
Sumobot 0:1c17e8f0fcc0 73 }
LuisFernandoTuzo 2:6bf21247bab4 74 }
Sumobot 0:1c17e8f0fcc0 75
Sumobot 0:1c17e8f0fcc0 76 int main() {
LuisFernandoTuzo 2:6bf21247bab4 77 //vRef=600;
LuisFernandoTuzo 2:6bf21247bab4 78 //t.start(); //Se inicializa el timer
LuisFernandoTuzo 2:6bf21247bab4 79 thread.start(vel); //Se inicializa el hilo que calcula la velocidad
LuisFernandoTuzo 2:6bf21247bab4 80 thread2.start(Cruce_cero);
LuisFernandoTuzo 2:6bf21247bab4 81 thread3.start(interr); //Se inicializa el hilo que detecta señal del encoder
Sumobot 0:1c17e8f0fcc0 82 thread4.start(controlador);
Sumobot 1:f7fb4980557c 83
Sumobot 1:f7fb4980557c 84 while(1){
LuisFernandoTuzo 2:6bf21247bab4 85 limpia_opto=opto.read(); //Main donde se "limpian" los pulsos del optoacoplador 1
Sumobot 1:f7fb4980557c 86 }
LuisFernandoTuzo 2:6bf21247bab4 87 }
Sumobot 0:1c17e8f0fcc0 88 //p=0.4295;
Sumobot 0:1c17e8f0fcc0 89 /*while(1) {
Sumobot 0:1c17e8f0fcc0 90 err= vRef-velo;
LuisFernandoTuzo 2:6bf21247bab4 91 control= p*err; // Rango de error es de 0 a 1500; cuando el error es 1500 el angulo debe ser
Sumobot 0:1c17e8f0fcc0 92 if(err<0){
Sumobot 0:1c17e8f0fcc0 93 led1=!led1;
Sumobot 0:1c17e8f0fcc0 94 }
Sumobot 0:1c17e8f0fcc0 95 if(err>1000){
Sumobot 0:1c17e8f0fcc0 96 led2=!led2;
Sumobot 0:1c17e8f0fcc0 97 }
Sumobot 0:1c17e8f0fcc0 98 if(err>=0 && err<600){
Sumobot 0:1c17e8f0fcc0 99 Control1=control/257.7;
Sumobot 0:1c17e8f0fcc0 100 }
Sumobot 0:1c17e8f0fcc0 101 if(err==600){
Sumobot 0:1c17e8f0fcc0 102
Sumobot 0:1c17e8f0fcc0 103 }
Sumobot 0:1c17e8f0fcc0 104 if(err>600 && err<1000){
Sumobot 0:1c17e8f0fcc0 105
Sumobot 0:1c17e8f0fcc0 106 } */
Sumobot 1:f7fb4980557c 107