Control PID Sobre Motor Universal
Enviado por ricbah7 • 21 de Octubre de 2013 • 585 Palabras (3 Páginas) • 988 Visitas
proyecto de instrumentación
Jesús Ricardo Bahamón Quimbaya
Paul Sahagun Landa
Introducción
Objetivo
Desarrollar una aplicación en la cual se empleen sensores, se utilice Labview para procesar los datos y realizar un control PID sobre alguna de las variables
Aplicación
Control de velocidad de un motor de corriente alterna, conectando labview a través de arduino con los sensores.
Se conecta un encoder a l motor para sensar la velocidad del motor, el encoder envía 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
Amplificador Operacional LM741
Módulo Bluetooth JY-MCU
Fuente de alimentación +/- 12 volts
Encoder
Diagramas eléctricos
Detector de cruce por cero

Triac

Código
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 verifica=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
#define 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 interrupción 0 está en pin 2
//--------------------------------
}
void loop() {
// put your main code here, to run repeatedly:
do
{
escuchar();
}
while(cadena!="Cntc");
//Serial.println("conectado");
while(i==0)
{
//Serial.println("Otro");
verifica=0;
tiempo=0;
sensor1=analogRead(A0);
inputString="";
cadena="";
Serial.println(sensor1);
delay(20);
while(i==0)
{
escuchar();
tiempo++;
// Serial.println(cadena);
if(cadena=="Ok")
{
verifica=2;
break;
}
else{
...