Está en la página 1de 14

U

N G

I U

V A

R D

S A

I L

D A

A J

D A R

D A

PROYECTO DE INSTRUMENTACIN
Jess Ricardo Bahamn Quimbaya Paul Sahagun Landa

Introduccin
Objetivo Desarrollar una aplicacin en la cual se empleen sensores, se utilice Labview para procesar los datos y realizar un control PID sobre alguna de las variables Aplicacin Control de velocidad de un motor de corriente alterna, conectando labview a travs de arduino con los sensores. Se conecta un encoder a l motor para sensar la velocidad del motor, el encoder enva un tren de pulsos que se hace pasar por un comparador para poder obtener voltajes positivos y negativos, y luego se hace pasar por el conversor de frecuencia a voltaje, as, este valor de voltaje se hace pasar por el un ADC del arduino (pin A_0) y este dato es enviado por bluetooth a Labview; del mismo modo, desde labview se puede enviar por bluetooth el valor de velocidad deseado con el correspondiente valor PID. Elementos Resistencias varias Capacitores varios Arduino UNO TRIAC Optoacoplador Conversor de frecuencia a voltaje lm2907 Amplicador Operacional LM741 Mdulo Bluetooth JY-MCU Fuente de alimentacin +/- 12 volts Encoder

U n i v e r s i d a d d e G u a d a l a j a r a!

Control de velocidad

Diagramas elctricos
Detector de cruce por cero

Triac

U n i v e r s i d a d d e G u a d a l a j a r a!

Control de velocidad

Cdigo
Arduino

#include <SoftwareSerial.h> #include <TimerOne.h>

//SoftwareSerial bt(8,12);

//Recepcion y envio de datos String inputString = ""; String cadena=""; boolean stringComplete = false; int sensor1=0; int tamano=0; int i=0; int verica=0; int tiempo=0; int power=50; int conectado=0; int espera=10000; //----------------------------------

//Control TRIAC //Se conecta al pin 2 el opto para el cruce por cero
U n i v e r s i d a d d e G u a d a l a j a r a! Control de velocidad

#dene triacApin 5 int frequencia = 60; int stateTriacA = 0;

//----------------------

void setup() { // put your setup code here, to run once:

Serial.begin(9600); // bt.begin(9600); inputString.reserve(100); cadena.reserve(100); //Control TRIAC pinMode(triacApin, OUTPUT); digitalWrite(triacApin, LOW); Timer1.initialize(); attachInterrupt(0, zero_cross_detect, RISING); //Serial.println("yu"); //Se conecta al pin 2 el opto para el cruce por cero, la interrupcin 0 est en pin 2 //-------------------------------
U n i v e r s i d a d d e G u a d a l a j a r a! Control de velocidad

void loop() { // put your main code here, to run repeatedly: do { escuchar(); } while(cadena!="Cntc"); //Serial.println("conectado"); while(i==0) { //Serial.println("Otro"); verica=0; tiempo=0; sensor1=analogRead(A0); inputString=""; cadena=""; Serial.println(sensor1); delay(20); while(i==0) { escuchar(); tiempo++;
U n i v e r s i d a d d e G u a d a l a j a r a! Control de velocidad

// Serial.println(cadena); if(cadena=="Ok") { verica=2; break; } else{ if(tiempo==espera) { digitalWrite(12,HIGH); break;} } } stringComplete = false; inputString=""; cadena=""; tiempo=0; while(i==0) {
U n i v e r s i d a d d e G u a d a l a j a r a! Control de velocidad

escuchar(); tiempo++; if(cadena != ""&&cadena!="Ok") { verica=2; break;} else { if(tiempo==espera) { verica=0; digitalWrite(12,HIGH); break;} } } // Serial.println(cadena); stringComplete = false;

power=cadena.toInt(); //Serial.println(power); Serial.println("Ok"); delay(20);


U n i v e r s i d a d d e G u a d a l a j a r a! Control de velocidad

if(verica==0) { inputString=""; cadena=""; break; }

void escuchar() { while (Serial.available()) { // get the new byte: char inChar = Serial.read(); // add it to the inputString: inputString += inChar; // if the incoming character is a newline, set a ag // so the main loop can do something about it: if (inChar == '\n') { stringComplete = true; break; } } tamano=inputString.length();
U n i v e r s i d a d d e G u a d a l a j a r a! Control de velocidad

cadena=inputString.substring(tamano-1,0); delay(20); //Serial.print("rr"); }

//Control TRIAC void zero_cross_detect() { //Serial.println("Simon"); // if(power > 0) //{ long dimtime = map(power,0,100,8000,1); // calcula o tempo de delay para o disparo do TRIAC 7950,100 //Serial.println(dimtime); Timer1.setPeriod(dimtime); Timer1.initialize(dimtime); Timer1.attachInterrupt(gateTRIAC); //associa a funcao gateTRIAC com Interrupcao do TIMER1

// } // else /* { digitalWrite(triacApin, LOW); // mantem gate do TRIAC desativado. Timer1.stop(); }*/ }


U n i v e r s i d a d d e G u a d a l a j a r a! Control de velocidad

void gateTRIAC () { //Serial.println('k'); digitalWrite(triacApin, HIGH); delayMicroseconds(100); digitalWrite(triacApin, LOW); Timer1.stop();

//------

U n i v e r s i d a d d e G u a d a l a j a r a!

Control de velocidad

10

U n i v e r s i d a d d e G u a d a l a j a r a!

Control de velocidad

11

Labview

U n i v e r s i d a d d e G u a d a l a j a r a!

Control de velocidad

12

Conclusiones

Labview es una poderosa herramienta de procesamiento de datos, y permite una programacin simple y rpida. Arduino es una plataforma de desarrollo que ahorra mucho tiempo en la elaboracin de proyectos, sinembargo es conveniente, al usar libreras, saber exactamente que partes del arduino usa, y si no se necesita en otra parte de la programacin. El control de velocidad de un motor AC, solo es posible para motores con escobillas, no para otro tipo.

U n i v e r s i d a d d e G u a d a l a j a r a!

Control de velocidad

13