Академический Документы
Профессиональный Документы
Культура Документы
CONTROL DE POSICIN DE
UN MOTOR DC MEDIANTE
DSP Y DE UNA INTERFAZ
GRFICA EN C#
Informe de proyecto final
NDICE DE TITULOS
ndice de Titulos I
1. Motor dc 5
1.1 Definicin 5
1.2 Control 5
2. Mdulo L298N 10
3. Arduino: 11
4.1 LM331 14
4.2 LM2907 15
5. Control PID 16
1. Equipo 20
2. Primera Parte: 21
2.1 Objetivos: 21
2.4 Medida del Circuito de driver de potencia Error! Bookmark not defined.
2.5 Medida del Circuito convertidor de frecuencia Error! Bookmark not defined.
3. Parte 2: 23
3.1 Objetivos: 23
Iv. Conclusiones 25
I. INTRODUCCION
CAPITULO 1:
Conceptos Generales
Los motores de corriente continua como por ejemplo motores DC WEG ( se puede
observar en la figura 1 ) son concebidos con las ms modernas tecnologas de proyecto,
resultando en mquinas compactas y con excelentes propiedades dinmicas, atendiendo
las ms diversas aplicaciones en las reas de automatizacin y control de procesos.
La naturaleza de la carga que se acopla al eje del motor define el comportamiento de esta
mquina. Para el caso de una carga liviana, el motor desarrollara una velocidad
relativamente alta y un par de giro bajo. Por el contrario, si se dispone de una carga pesada
o difcil de mover, el motor se mover a una velocidad menor y entregara ms par, pues
una mayor carga lo exige. Sin embargo, si la carga se mantiene constante, la operacin
del motor tambin se mantendr constante, sin posibilidades de controlar la velocidad
debido a que la tensin de suministro no se ve modificada.
Por lo tanto nos hemos planteado controlar la velocidad y posicin del motor DC cuando
este est bajo una carga simtrica y asimtrica.
III. OBJETIVOS
General:
Especficos:
1. MOTOR DC
1.1 Definicin
El motor de corriente continua (denominado tambin motor de corriente directa,
motor CC o motor DC por las iniciales en ingls direct current) es una mquina que
convierte energa elctrica en mecnica, provocando un movimiento rotatorio,
gracias a la accin de un campo magntico. Un motor de corriente continua se
compone principalmente de dos partes. El esttor da soporte mecnico al aparato
y contiene los polos de la mquina, que pueden ser o bien devanado de hilo de
cobre sobre un ncleo de hierro, o imanes permanentes. El rotor es generalmente
de forma cilndrica, tambin devanado y con ncleo, alimentado con corriente
directa a travs de delgas, que estn en contacto alternante con escobillas fijas
(tambin llamadas carbones). El principal inconveniente de estas mquinas es el
mantenimiento, muy costoso y laborioso, debido principalmente al desgaste que
sufren las escobillas o carbones al entrar en contacto con las delgas. Algunas
aplicaciones especiales de estos motores son los motores lineales, cuando ejercen
traccin sobre un riel, servomotores y motores paso a paso. Adems existen
motores de DC sin escobillas (brushless en ingls) utilizados en el aeromodelismo
por su bajo par motor y su gran velocidad. Es posible controlar la velocidad y el par
de estos motores utilizando tcnicas de control de motores de corriente continua.
1.2 Control
Las tcnicas de control de motores de corriente continua son herramientas que se
utilizan para controlar la velocidad, el par y el suministro de potencia de los motores
de corriente continua. El control de motores puede llevarse a cabo mediante tiristores
y un conocimiento bsico de electrnica de potencia. La mayora de motores
La Modulacin por Ancho de Pulso (PWM o Pulse Width Modulation) es una forma
muy eficaz de establecer cantidades intermedias de potencia elctrica entre la
mxima potencia y apagado. Una fuente de alimentacin con un interruptor de
alimentacin simple proporciona potencia solo cuando est activado. El PWM es una
tcnica relativamente reciente que se ha podido realizar gracias a los modernos
interruptores electrnicos de potencia. Una de las aplicaciones tpicas del PWM:
control de velocidad en motores elctricos.
El PWM funciona bien con controles digitales, ya que pueden configurar fcilmente
el ciclo de trabajo dada su naturaleza de encendido/apagado.
m (s) Kb
=
Vm (s) (Lm s + R m )(Jm s + Bm ) + K b 2
()
=
() + + 2
2. MDULO L298N
El mdulo L298N posee dos canales de Puente H, pudindolos utilizar para controlar
dos motores DC o un motor Pas a Paso, controlando el sentido de giro y velocidad.
Bsicamente est conformado por un driver L298N sus diodos de proteccin y un regulador
de voltaje de 5V(78M05) Su esquema electrnico es el siguiente:
Posee un conector de 6 pines para ingresar las seales TTL para controlar los
motores, una bornera de tres pines para la alimentacin, y dos borneras de 2 pines para
la salida a los motores.
3. DSP:
Un procesador digital de seales o DSP es un sistema basado en un procesador o
microprocesador que posee un conjunto de instrucciones, un hardware y un software
optimizados para aplicaciones que requieran operaciones numricas a muy alta
velocidad. Debido a esto es especialmente til para el procesado y representacin de
seales analgicas en tiempo real: en un sistema que trabaje de esta forma (tiempo
real) se reciben muestras, normalmente provenientes de un conversor analgico/digital
(ADC).
3.1 Funcionamiento:
Se ha dicho que puede trabajar con seales analgicas, pero el DSP es un sistema
digital, por lo tanto necesitar un conversor analgico/digital a su entrada y
digital/analgico en la salida. Como todo sistema basado en procesador programable
necesita una memoria donde almacenar los datos con los que trabajar y el programa
que ejecuta.
Si se tiene en cuenta que un DSP puede trabajar con varios datos en paralelo y un
diseo e instrucciones especficas para el procesado digital, se puede dar una idea
de su enorme potencia para este tipo de aplicaciones. Estas caractersticas
constituyen la principal diferencia de un DSP y otros tipos de procesadores.
3.2 Arquitectura:
Un DSP est diseado teniendo en cuenta las tareas ms habituales del procesado
digital: sumas, multiplicaciones y retrasos (almacenar en memoria).
3.3 Programacin:
Un DSP se puede programar tanto en ensamblador como en C. Cada familia de DSP
tiene su propio lenguaje ensamblador y sus propias herramientas suministradas por
el fabricante. Gracias a la colaboracin entre fabricantes, existen lenguajes de ms
alto nivel (y por lo tanto, ms sencillos y rpidos de usar) que incorporan la capacidad
de programar los DSP, en general pasando por un precompilado automtico en C.
Son los casos de LabVIEW y Matlab.
3.4 Aplicaciones:
Las aplicaciones ms habituales en las que se emplean DSP son el procesado de
audio y vdeo; y cualquier otra aplicacin que requiera el procesado en tiempo real.
Con estas aplicaciones se puede eliminar el eco en las lneas de comunicaciones,
lograr hacer ms claras imgenes de rganos internos en los equipos de diagnstico
mdico, cifrar conversaciones en telfonos celulares para mantener privacidad,
analizar datos ssmicos para encontrar nuevas reservas de petrleo, hace posible las
comunicaciones wireless LAN, el reconocimiento de voz, los reproductores digitales
de audio, los mdems inalmbricos, las cmaras digitales, y una larga lista de
elementos que pueden ser relacionados con el proceso de seales
4.1 LM331
Este convertidor de voltaje a frecuencia proporciona la salida un tren de pulsos a una
frecuencia precisamente proporcional al voltaje de entrada aplicado. El LM331 puede
operar con energa suministra tan solo 4.0V y cambia la frecuencia de salida de 1 Hz
a 100 kHz. Es ideal para uso en simple circuito de bajo costo para conversin de
analgico a digital, a largo plazo integracin, modulacin de frecuencia lineal o
demodulacin, conversin de frecuencia a voltaje y muchas otras funciones.
Caractersticas:
4.2 LM2907
Los dispositivos LM2907 y LM2917 son convertidores monolticos de frecuencia a
voltaje con un amplificador operacional de alta ganancia diseado para operar un
rel, una lmpara u otra carga cuando la frecuencia de entrada alcanza o excede una
velocidad seleccionada. El tacmetro utiliza una tcnica de bomba de carga y ofrece
duplicacin de frecuencia para baja entrada, proteccin de entrada total en dos
versiones (8-pin LM2907 y LM2917), y su salida oscila a tierra para una entrada de
frecuencia cero.
Caractersticas:
5. CONTROL PID
La estructura de un controlador PID es simple, aunque su simpleza es tambien su
debilidad, dado que limita el rango de plantas donde pueden controlar en forma satisfactoria
(existe un grupo de planta) inestables que no pueden estabilizadas con ningn miembro de
la familia PID).
La seal de control u(t) tiene un valor diferente de cero cuando la seal de error e(t)
es cero. Por lo que se concluye que dada una referencia constante, o
perturbaciones, el error en rgimen permanente es cero.
Con un control proporcional, es necesario que exista error para tener una accion de
control distinta de cero. Con accion integral, un error peque no positivo siempre
nos dara una acci on de control creciente, y si fuera negativo la se nal de control
sera decreciente. Este razonamiento sencillo nos muestra que el error en regimen
permanente sera siempre cero.
CAPITULO 2:
V. PROPUESTA DE SOLUCION
1. EQUIPO
DSP.
Circuito conversor de frecuencia a voltaje con LM331.
Motor DC de 24V
Mdulo puente-H L298N.
Fuente de laboratorio de 2 salidas reguladas y 1 de 5V.
Multmetro.
Osciloscopio
PC con Studio Composer y Visual C+++.
2. DISEO MECANICO:
2.1 Requisitos:
El mdulo tiene que ser ligero para transporte puesto que ser utilzado en
ambientes de laboratorio.
Debe tener un ranura especial para acoger el ventilador que permitir
mantener el motor en una temperatura estable.
Debe tener ranuras para la salida de los cables para la conexin a la funete
y al dsp
3. DISEO ELECTRNICO:
3.1 Requisitos:
El hardware a utilizar sea compatibles con el motor DC, la placa DSP y el
modulo LN298
4. DISEO ELCTRICO
4.1Requisitos:
En el diseo elctrico lo que se ver es la alimentacin del motor, ya que el resto
es parte electrnico. Al motor lo vamos a alimentar con 12V y lo pondremos un
ventilador para que no se sobrecaliente demasiado.
5. DISEO DE SOTFWARE
5.1 Cdigo en Visual C
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace Serial28335
{
public partial class Main : Form
{
byte[] dataTX = new byte[1024];
byte[] dataRX = new byte[1024];
int RxBytes=0;
string RxString;
int TxBytes = 0;
string TxString;
public Main()
{
InitializeComponent();
try
{
serialPuerto.PortName = "COM16";
//serialPuerto.Open();
}
catch (Exception ex) { System.Console.WriteLine(ex.ToString()); };
}
{
int i,enviado,recibe;
byte[] actualizaRX = new byte[1];
byte[] actualizaTX = new byte[1];
for (i = 0; i < 9; i++)
{
this.serialPuerto.Write(datos, i, 1);
enviado = datos[i];
actualizaTX[0] = (byte)enviado;
TxDataUpdateBin(actualizaTX);
Thread.Sleep(1);
recibe=this.serialPuerto.ReadByte();
actualizaRX[0] = (byte)recibe;
RxDataUpdateBin(actualizaRX);
if (enviado != recibe) {
System.Console.WriteLine("error de envio");
MessageBox.Show("Error de Comando", "Fall al enviar",
MessageBoxButtons.OK);
return;
};
}
Thread.Sleep(20);
for (i = 0; i < 100; i++)
{
//this.serialPuerto.Write(datos, 9, 1); //Envia el 64
Velocidad.Series["Velocidad"].Points.AddXY(i,i+2);
enviado = datos[9];
actualizaTX[0] = (byte)enviado;
TxDataUpdateBin(actualizaTX);
Thread.Sleep(20);
//recibe = this.serialPuerto.ReadByte();
//dataRX[i] = (byte)recibe;
//actualizaRX[0]=(byte)recibe;
//RxDataUpdateBin(actualizaRX);
}
}
private void RxDataUpdateBin(byte[] bb)
{
string s = "";
foreach (byte i in bb)
{
s += String.Format("{0:X2}", i);
}
RxBytes += s.Length;
RxString = RxString + s;
this.RXContador.Text = RxBytes.ToString();
//this.textBoxRX.Text += this.AtoX(s);
this.textBoxRX.Text = RxString;
return;
}
private void RxDataUpdate(string s)
{
RxBytes += s.Length;
RxString = RxString + s;
this.RXContador.Text = RxBytes.ToString();
this.textBoxRX.Text = AtoX(RxString);
return;
}
/// <summary>
/// Updates the TX byte data info.
/// </summary>
private void TxDataUpdate(string s)
{
TxBytes += s.Length;
TxString = TxString + s;
this.TXContador.Text = TxBytes.ToString();
this.textBoxTX.Text += this.AtoX(s);
return;
}
/// <summary>
/// Updates the TX byte byte data info.
/// </summary>
private void TxDataUpdateBin(byte[] bb)
{
string s = "";
// Add padding.
int nSpaces = 62 - hex.Length;
for (int i = 0; i < nSpaces; i++)
hex += " ";
}
}
#define EPWM_CMP_UP 1
#define EPWM_CMP_DOWN 0
#define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) =
25.0 MHz
#define ADC_CKPS 0x0 // ADC module clock = HSPCLK/1 = 25.5MHz/(1)
= 25.0 MHz
#define ADC_MODO 0x0 // 1 es simultneo 0 es secuencial
#define ADC_SHCLK 0x1 // S/H ancho en periodos ADC = 2 ciclos ADC
unsigned int i, ij;
float
u,v,ep,epa,kpp,kip,kdp,kip,dt,pr,ip,ipa,p,pa,w,wa,ew,pp,dp,plw,plwa,eplwa,pw,pw
a,wr,epwa,iw,iwa,dw,kpw,kiw,kdw,wmax;
unsigned int ResultadoADC[16];
void main(void)
{
DINT; //deshabilita interrupciones
EQep1Regs.QDECCTL.bit.QSRC = 0;
EQep1Regs.QDECCTL.bit.SOEN = 0;
EQep1Regs.QDECCTL.bit.SPSEL = 0;
EQep1Regs.QDECCTL.bit.XCR = 0;
EQep1Regs.QDECCTL.bit.IGATE = 0;
EQep1Regs.QDECCTL.bit.QAP = 0;
EQep1Regs.QDECCTL.bit.QBP = 0;
EQep1Regs.QDECCTL.bit.QIP = 0;
EQep1Regs.QDECCTL.bit.QSP = 0;
EQep1Regs.QEPCTL.bit.PCRM=0;
EQep1Regs.QEPCTL.bit.SEI=2; // Inicializa el
contador de posicin cuando hay un
EQep1Regs.QEPCTL.bit.IEI=0; // flanco de subida
en el STROBE (para el efecto rebote)
EQep1Regs.QEPCTL.bit.SWI=0;
EQep1Regs.QEPCTL.bit.SEL=0;
EQep1Regs.QEPCTL.bit.IEL=0;
EQep1Regs.QEPCTL.bit.QPEN=1;
EQep1Regs.QEPCTL.bit.QCLM=0;
EQep1Regs.QEPCTL.bit.UTE=1;
EQep1Regs.QEPCTL.bit.WDE=0;
EQep1Regs.QPOSMAX=0xffffffff; //0xffffffff
EQep1Regs.QUPRD=0xffffffff; //0xffffffff
EQep1Regs.QPOSINIT=0;
IniciaEPwm1();
InitAdc(); // inicializa ADC
iniciarRegADC(); // iniciar parmetros propios para el ADC
InitCpuTimers(); // inicializa los Cpu Timers
ConfigCpuTimer(&CpuTimer0, 150, 1000000); // a 150MHz 1000000uSeg =
1segundo
ConfigCpuTimer(&CpuTimer1, 150, 5000); // a 150MHz 4500000uSeg =
4.5segundos
ConfigCpuTimer(&CpuTimer2, 150, 500000); // a 150MHz 100000uSeg =
0.1segundos
CpuTimer0Regs.TCR.all = 0x4001; // Arrancar timer T0 TSS bit = 0
CpuTimer1Regs.TCR.all = 0x4001; // Arrancar timer T0 TSS bit = 0
CpuTimer2Regs.TCR.all = 0x4001; // Arrancar timer T0 TSS bit = 0
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
//IER |= M_INT3; // Interrupcin 3
//PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
iw=0;
iwa=0;
dw=0;
plw=0;
plwa=0;
eplwa=0;
do{ //hacer loop por lo menos una vez
IteraSerial();
}while(1); //Itera infinitamente
}
void IniciaEPwm1()
{
// Configurar TBCLK
EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD; // Determina el periodo
801 TBCLKs
EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // La fase es 0
EPwm1Regs.TBCTR = 0x0000; // Contador a cero
// Configurar acciones
EPwm1Regs.AQCTLA.bit.CBU = 1; // Set PWM1A en evento A, contar
arriba
EPwm1Regs.AQCTLA.bit.PRD = 1; // Clear PWM1A en evento A, contar
abajo
EPwm1Regs.AQCTLB.bit.CBU = 1; // Set PWM1B en evento B, contar
arriba
EPwm1Regs.AQCTLB.bit.PRD = 1; // Clear PWM1B en evento B,
contar abajo
EPwm1Regs.DBCTL.bit.IN_MODE = 3;
EPwm1Regs.DBRED = 1000;
EPwm1Regs.DBFED = 1000;
EPwm1Regs.DBCTL.bit.POLSEL = 2;
EPwm1Regs.DBCTL.bit.OUT_MODE = 0;
i++;
pr = (float)Direccion;
wmax = (float)(Cantidad/1000.00);
p = EQep1Regs.QPOSCNT;
ep = pr - p;
pp = ep*kpp;
ip = ipa + ep*kip*dt;
wr = pp+ip+dp;
if (wr>wmax){
wr=wmax;
}
else{
if (wr<-wmax){
wr=-wmax;
}
}
ew = wr-w;
pw = ew*kpw;
iw = iwa + ew*kiw*dt;
u = pw+iw+dw;
//u=wr;
ipa=ip;
pa = p;
iwa=iw;
wa=w;
if (u>12){
u=12;
v=u;
}
if (u<-12){(
u=-12);
v=u;
}
if (u<0){
v=-u;
}
else{
v=u;
}
if (u>=0){
EPwm1Regs.AQCTLA.bit.CBU = 1; // Set PWM1A en evento A,
contar arriba
EPwm1Regs.AQCTLA.bit.ZRO = 2; // Clear PWM1A en evento A,
contar abajo
EPwm1Regs.AQCTLB.bit.CBU = 1; // Set PWM1B en evento B,
contar arriba
EPwm1Regs.AQCTLB.bit.ZRO = 1;
GpioDataRegs.GPADAT.bit.GPIO2 = 1;
}
else{
EPwm1Regs.AQCTLA.bit.CBU = 1; // Set PWM1A en evento A,
contar arriba
EPwm1Regs.AQCTLA.bit.ZRO = 1; // Clear PWM1A en evento A,
contar abajo
EPwm1Regs.AQCTLB.bit.CBU = 1; // Set PWM1B en evento B,
contar arriba
EPwm1Regs.AQCTLB.bit.ZRO = 2;
GpioDataRegs.GPADAT.bit.GPIO2 = 1;
}
/*if ((ep<2) & (ep>-2)){
GpioDataRegs.GPADAT.bit.GPIO2 = 0;
}*/
EPwm1Regs.CMPB=(unsigned int)(v*EPWM1_TIMER_TBPRD /12.0);
EDIS;
}
plw = EQep1Regs.QPOSCNT;
eplwa=plw-plwa;
w=((plw-plwa)/(0.5*3280.00))*6.2814;
plwa=plw;
//ResultadoADC[0]= AdcRegs.ADCRESULT0 >>4;
//ResultadoADC[1]= AdcRegs.ADCRESULT1 >>4;
//AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; // Arranque de conversin del ADC
// El Cpu reconoce solo la interrupcin
EDIS;
}
void iniciarRegADC(void)
{
void IniciarSerial(void)
{
scia_fifo_init(); // Inicializa el FIFO del SCI
scia_init(); // Inicializa el lazo de iteracin
SendChar = 0;
}
void IteraSerial(void)
{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) {
return;
}; // espera por XRDY =1
ReceivedChar = SciaRegs.SCIRXBUF.all; //se lee el byte
SendChar=ReceivedChar; //se guarda en una variable
scia_xmit(SendChar); //se retransmite como ECO para que la PC sepa
caso=ReceivedChar; // se decodifica
switch (caso) { // con el CASE
case 0:
LeerDSP(); // Si el comando es un CERO Leer DSP
break;
case 1:
LeerDSP();
break;
case 2:
LeerDSP();
break;
case 3:
EscribirDSP(); // Si el comando es un TRES Escribir DSP
break;
case 4:
EscribirDSP();
break;
case 5:
EscribirDSP();
break;
};
}
void LeerDSP(void)
{
AddrCant(); //Averiguar la Direccin de memoria y cuantos
datos
/*for (j=0;j<Cantidad+1;j++)
{
memoria=0;
SendChar=memoria[Direccion]; // Buscar el dato en memoria
Direccion++;
do{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a XRDY
=1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del buffer
} while (ReceivedChar!=0x40); // Esperar a que sea el byte
64
scia_xmit(SendChar>>8); //Enviar parte alta del dato
do{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a XRDY
=1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all;
} while (ReceivedChar!=0x40); // Esperar a que sea el byte
64
scia_xmit(SendChar); //Enviar parte baja del dato
};*/
}
void EscribirDSP(void)
{
AddrCant();
for (j=0;j<Cantidad+1;j++) // Preparar la cantidad de veces
{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a XRDY
=1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del buffer
scia_xmit(ReceivedChar); // Enviar ECO
SendChar = ReceivedChar<<8; // Sube el valor recibido a la
parte alta
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a XRDY
=1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del buffer
scia_xmit(ReceivedChar); // Enviar ECO
SendChar = SendChar+ ReceivedChar; // Agrega parte baja del
dato
memoria[Direccion]=SendChar; // Graba el valor del dato en
memoria
Direccion++; // Incrementa para la prxima direccin
};
}
void scia_init()
{
SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// modo asncrono, protocolo idle-line
lnea en espera
SciaRegs.SCICCR.bit.SCICHAR = 7;
SciaRegs.SCICTL1.all =0x0003; // Habilitar TX, RX, SCICLK interno,
void scia_fifo_init()
{
SciaRegs.SCIFFTX.all=0xE040;
SciaRegs.SCIFFRX.all=0x204f;
SciaRegs.SCIFFCT.all=0x0;
}
void AddrCant(void)
{
int i=0;
Direccion=0;
ReceivedChar=0;
for (i=0;i<4;i++)
{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a XRDY =1 estado
listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del buffer
scia_xmit(ReceivedChar);// Enviar ECO
Direccion=(Direccion<<8)+ReceivedChar; // Ir agregando Direccin
};
for (i=0;i<4;i++)
{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a XRDY =1 estado
listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del buffer
scia_xmit(ReceivedChar);// Enviar ECO
Cantidad=(Cantidad<<8)+ReceivedChar; // Ir agregando Cantidad
};
}
CAPITULO 3:
Resultados Finales
VI. RESULTADOS
Se construy una maqueta para el estudio del control de motor DC con 2 cargas, una
circular y una en forma de alabe.
Se logr controlar la velocidad del motor (RPM) gracias al cdigo de DSP.
Se logr mantener al DSP y al motor en un ambiente propicio gracias al ventilador, y
as evitar su sobrecalentamiento.
.
VII. CONCLUSIONES
VIII. RECOMENDACIONES
Es necesario que los materiales a emplearse sean los indicados para que el voltaje
no dae los elementos.
Colocar resistencias en las entradas y salidas del DSP ya que podramos
quemarlos.
Usar los voltajes indicados para no quemas los materiales, no usar voltaje de ms.
Tener cuidado al momento de conectar los cables del motor, ya que una mala
conexin podra ocasionar que el motor se malogre y ya no funcionar.