Control Motor Ejemplo

download Control Motor Ejemplo

of 14

Transcript of Control Motor Ejemplo

Control de velocidad y sentido de un Motor-DC mediante PC

JORGE CASACUBERTA GARCIA 08-07-2010

NDICE1- OBJETIVO DEL PROYECTO 2- CONCEPTOS IMPORTANTES i. PIC 18F 2550 ii. Comunicacin USB iii. PWM iv. Puente-H 3- FIRMWARE 4- APLICACIN PC 5- DISEO ESQUEMTICO 6- SIMULACIN EN PROTEUS i. Datos a tener en cuenta ii. Puesta en marcha iii. Uso del osciloscopio en Proteus 7- BIBLIOGRAFIA

1 OBJETIVO DEL PROYECTOQueremos disear un control de velocidad y sentido para un motor que tenemos instalado en un telescopio que tiene incorporada una webcam, de este modo queremos crear un autoenfoque. Este proyecto solo incluye el control del motor. Antes de saber si la imagen est enfocada debemos de comprobarlo mediante algoritmos de anlisis de imagen. Por este motivo el control de motor tiene que ser dirigido desde un computador donde se analice la imagen. Teniendo estas condiciones en cuenta, nos dimos cuenta que haca falta una comunicacin entre PCMOTOR, vamos a usar el microcontrolador PIC 18F 2550 (de MICROCHIP que ya usamos en otra asignatura) de puente para crear esta comunicacin mediante USB entre PC PIC y el microcontrolador se encargar de mandar las seales adecuadas al motor.

2 CONCEPTOS IMPORTANTESAntes de hacer el montaje debemos de comprender que necesitamos y porque motivo. I. PIC 18F 2550 En las asignaturas SES y PEI hemos trabajado con el microcontrolador de la marca MICROCHIP. La familia 18 de MICROCHIP tiene la capacidad de Trabajar con USB, convertir seales analgicas en digitales, generar seales PWM, entre otras. Por lo tanto es ms que suficiente para lo que necesitamos. Para ms informacin mirar el enlace, donde detalla el trabajo realizado en las asignaturas. Tenemos disponible el DATASHEET del Pic y explicaciones de cmo debemos utilizarlo. http://personales.alumno.upv.es/jorcaga1/pei/trabajofase1.html

II. Comunicacin USB Trabaja como interfaz para transmisin de datos y distribucin de energa, que ha sido introducida en el mercado de PCs y perifricos para mejorar las lentas interfaces serie (RS232) y paralelo. Esta interfaz de 4 hilos, 12 Mbps y "plug and play", distribuye 5V para alimentacin, transmite datos y est siendo adoptada rpidamente por la industria informtica. Es un bus basado en el paso de un testigo, semejante a otros buses como los de las redes locales en anillo con paso de testigo y las redes FDDI. El controlador USB distribuye testigos por el bus. El dispositivo cuya direccin coincide con la que porta el testigo responde aceptando o enviando datos al controlador. Este tambin gestiona la distribucin de energa a los perifricos que lo requieran.

Emplea una topologa de estrellas apiladas que permite el funcionamiento simultneo de 127 dispositivos a la vez. En la raz o vrtice de las capas, est el controlador anfitrin o host que controla todo el trfico que circula por el bus. Esta topologa permite a muchos dispositivos conectarse a un nico bus lgico sin que los dispositivos que se encuentran ms abajo en la pirmide sufran retardo. A diferencia de otras arquitecturas, USB no es un bus de almacenamiento y envo, de forma que no se produce retardo en el envo de un paquete de datos hacia capas inferiores. Controlador Reside dentro del PC y es responsable de las comunicaciones entre los perifricos USB y la CPU del PC. Es tambin responsable de la admisin de los perifricos dentro del bus, tanto si se detecta una conexin como una desconexin. Para cada perifrico aadido, el controlador determina su tipo y le asigna una direccin lgica para utilizarla siempre en las comunicaciones con el mismo. Si se producen errores durante la conexin, el controlador lo comunica a la CPU, que, a su vez, lo transmite al usuario. Una vez se ha producido la conexin correctamente, el controlador asigna al perifrico los recursos del sistema que ste precise para su funcionamiento. El controlador tambin es responsable del control de flujo de datos entre el perifrico y la CPU. En nuestro caso vamos a trabajar con USB CDC que se trata de virtualizar la comunicacin mediante un puerto COM virtual. III.PWM La modulacin por ancho de pulsos de una seal o fuente de energa es una tcnica en la que se modifica el ciclo de trabajo de una seal peridica (una sinusoidal o una cuadrada, por ejemplo), ya sea para transmitir informacin a travs de un canal de comunicaciones o para controlar la cantidad de energa que se enva a una carga. El ciclo de trabajo de una seal peridica es el ancho relativo de su parte positiva en relacin con el perodo. La principal desventaja que presentan los circuitos PWM es la posibilidad de que haya interferencias generadas por radiofrecuencia. stas pueden minimizarse ubicando el controlador cerca de la carga y realizando un filtrado de la fuente de alimentacin.

IV. Puente-H

Un Puente H o Puente en H es un circuito electrnico que permite a un motor elctrico DC girar en ambos sentidos, avance y retroceso. Son ampliamente usados en robtica y como convertidores de potencia. Los puentes H estn disponibles como circuitos integrados, pero tambin pueden construirse a partir de componentes discretos.

El trmino "puente H" proviene de la tpica representacin grfica del circuito. Un puente H se construye con 4 interruptores (mecnicos o mediante transistores). Cuando los interruptores Q1 y SQ4 (ver figura) estn cerrados (y Q2 y Q3 abiertos) se aplica una tensin positiva en el motor, hacindolo girar en un sentido. Abriendo los interruptores S1 y S4 (y cerrando S2 y S3), el voltaje se invierte, permitiendo el giro en sentido inverso del motor.

3 FIRMWAREEn nuestro proyecto vamos a utilizar el MPLAB. MPLAB es una herramienta para escribir y desarrollar cdigo en lenguaje ensamblador para los microcontroladores PIC. MPLAB incorpora todas las herramientas necesarias para la realizacin de cualquier proyecto, ya que adems de un editor de textos cuenta con un simulado en el que se puede ejecutar el cdigo paso a paso para ver as su evolucin y el estado en el que se encuentran sus registros en cada momento. Es un software gratuito que se encuentra disponible en la pgina de Microchip, la versin actual (al momento de escribir estas palabras) es la 7.51. Para ms informacin consultar: http://personales.alumno.upv.es/jorcaga1/pei/configuracionMplab.html

Para facilitar la tarea usaremos libreras de USB y PWM ya implementadas y preparadas para trabajar en los PIC 18F. De esta forma evitaremos trabajar con registros internos del PIC y conseguiremos un cdigo ms intuitivo, sencillo y entendible. El cdigo lo podemos dividir en 3 partes: 1 inicializacin de libreras y opciones del dispositivo: Siempre debemos de configurar el PIC de modo que sepa en que modo est trabajando y que a velocidad (adems de otras configuraciones). En este caso trabajaremos a la velocidad mxima que no permite para conseguir una buena velocidad con el USB. El USB lo conectamos mediante un puerto COM virtual.#include #fuses HSPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN // Fuses utilizados: /* HSPLL: utilizamos un cristal HS de alta velocidad, en conjunto con el PLL para generar los 48Mhz. NOMCLR: Utilizamos reset por software, y dejamos el pin 1 del micro como entrada/salida digital. NOWDT: No utilizamos el perro guardin. NOPROTECT: Desactivamos la proteccin de cdigo. NOLVP: Desactivamos la programacin a bajo voltaje. NODEBUG: No entramos al modo debug. USBDIV: significa que el clock del usb se tomar del PLL/2 = 96Mhz/2 = 48Mhz. PLL5: significa que el PLL prescaler dividir en 5 la frecuencia del cristal. para HS = 20Mhz/5 = 4Mhz. CPUDIV1: El PLL postscaler decide la divisin en 2 de la frecuencia de salida del PLL de 96MHZ, si queremos 48MHZ, lo dejamos como est. VREGEN: habilita el regulador de 3.3 volts que usa el mdulo USB */ #use delay(clock=48000000) // Frecuencia mxima de trabajo. #include "usb_cdc.h" // Descripcin de funciones del USB. #include "usb_desc_cdc.h" // Descriptores del dispositivo USB.

2 inicializacin de variables e inicio del dispositivo: Configuramos las salidas B del PIC para que enve datos al PC, y el pin C0 para mandar la seal PWM y el C1 para enviar el sentido al MOTOR-DC. TA es el tiempo en Alto que va a estar la seal PWM y TC es el tiempo total de ciclo.#byte #bit #bit #byte LATC = 0xf8B PWM = LATC.0 DIREC = LATC.1 PORTB = 0xf81 // LATC como byte // LATC0 como bit // LARC1 como bit // PORTB como byte

void main() { unsigned char datoIN; unsigned char aux=20; unsigned char TA=10,TC=20; usb_cdc_init(); usb_init(); output_high(PIN_C0); output_low(PIN_C1);

// Dato que llega por la USART // Limite para el control de sentido del motor //Tiempo en alto y tiempo de ciclo del PWM // Configuramos al puerto virtual. // Inicializamos el stack USB.

3 cdigo ejecutable: Es un bucle que se mantiene mientras siga conectado. Lee los datos del registro USB y actualizamos la variable TA para que cambie la seal PWM mediante los delays.while(!usb_cdc_connected()) {} // espera a detectar una transmisin de la PC (Set_Line_Coding). output_high(PIN_C1); output_low(PIN_C0); do{ usb_task(); if (usb_enumerated()){

// Espera a que el dispositivo sea enumerado por el host.

if(usb_cdc_kbhit()){ // En espera de nuevos caracteres en el buffer de recepcin. datoIN=usb_cdc_getc(); // Lee lo que llego al buffer if (datoIN=='?') // Prueba comunicacin printf(usb_cdc_putc,"OK"); else{ if (datoIN > 20){ // como la barra de la aplicacin va de 0 a 40 usamos de 0 a 20 en una direccin y de 21 a 40 la otra. datoIN = datoIN - aux; // comprobamos en qu direccin debe de ir el motor de modificamos el dato si conviene. DIREC = 1; } else {DIREC = 0;} TA=datoIN; // Actualiza PWM } } PWM = 1; // PWM Sube delay_ms(TA); // Tiempo en alto PWM = 0; // PWM Baja delay_ms(TC-TA); // Tiempo en bajo TC = TA + TB usb_cdc_putc(PORTB); } }while (TRUE); // bucle infinito. } // Lee PORTB y lo enva por la USART

4 APLICACIN PCCon el fin de controlar el motor desde un computador, hemos creado una interfaz para hacer pruebas con el motor antes de aadir el proyecto al autoenfoque. Es una sencilla aplicacin creada con visual basic 2008.

El cdigo consta de 4 partes: 1 Carga programa (se podra cambiar por otro botn) Consigue los nombres de los puertos COM, ya que al trabajar con USB_ CDC virtualizamos el bus como un puerto COM.Imports System.IO Public Class frmMain Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim coms() As String = Ports.SerialPort.GetPortNames cbCOM.DataSource = coms End Sub

2 Barra de desplazamiento Cuando el dispositivo est conectado, manda el valor que tiene en la barra mediante USB. De la parte izquierda hasta el medio, el motor funciona en una direccin. De la parte derecha al medio en la otra direccin.Private Sub tbPWM_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbPWM.Scroll If serial.IsOpen Then serial.Write(Chr(Me.tbPWM.Value)) End If End Sub

3 Botn conectar Comprueba si el dispositivo est conectado e intenta conectarse.Private Sub btnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConectar.Click Try If btnConectar.Text = "Conectar" Then btnConectar.Text = "Desconectar" If Not serial.IsOpen Then serial.PortName = cbCOM.Text serial.Open() cbCOM.Enabled = False tmrDato.Enabled = True End If Else btnConectar.Text = "Conectar" If serial.IsOpen Then serial.Close() cbCOM.Enabled = True tmrDato.Enabled = False End If End If Catch ex As Exception MessageBox.Show("Error No: " & Err.Number & vbNewLine & Err.Description, "Error en la conexion", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub

4 Valor del puerto B Muestra los datos que recibe el PC desde los pines B del PIC.Private Sub tmrDato_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrDato.Tick If serial.IsOpen AndAlso serial.BytesToRead > 0 Then lblPORTB.Text = "Valor del puerto B:" & vbNewLine & serial.ReadByte End If End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles label1.Click End Sub End Class

5 DISEO ESQUEMTICOUtilizamos el PROTEUS para disear y simular el hardware, para ms informacin acerca del programa revisaremos los enlaces a la web de PEI. http://personales.alumno.upv.es/jorcaga1/pei/trabajofase1.html http://personales.alumno.upv.es/jorcaga1/pei/nuevoDiseno.html Esta es la vista preliminar del diseo. Podemos apreciar 5 partes fundamentales: 1 El PIC 18F 2550 2 El Cristal da la seal de reloj 3 El conector USB (podemos conectarlo y desconctalo como si fuera un pincho real) 4 Puertas NAND que nos ayudaran a la seleccin del sentido del motor 5 Puente en H

En el Proteus los microcontroladores tiene patillas ocultas como la VCC o GRN por estn alimentadas por defecto y no hace falta poner un Cristal ya que lo tienen internamente. De todos modos en el esquema hemos lo hemos puesto tambin por si queremos montar el dispositivo. El reloj se unira a los pines 9 y 10 del PIC.

Es el esquema del cristal. 2 condensadores de 15pF (22pF tambin valdra) y un cristal de 20MHZ.

El conector USB tiene 2 pines para alimentacin (VCC y GND) y los otros 2 se utilizan para transferir datos. Est alimentado a 5v

Las puertas lgicas son CMOS 4011 NAND. Y los transistores que forman el puente en H son IRF9530 (PNP) para Q2 y Q5, IRF630 (NPN) para Q3 y Q4. El motor es un MOTOR-DC activo simple a 5V, 10 revoluciones y una resistencia de 100hms.

6 SIMULACIN EN PROTEUSAntes de simular debemos seguir los pasos que tenemos en el enlace (pero cargando el .Hex de este proyecto) http://personales.alumno.upv.es/jorcaga1/pei/simulacionProteus.html

I. Datos a tener en cuenta Cuando conectamos por primera vez el dispositivo virtual tendremos que instalar el driver (que viene con los archivos). Para que funcione todo el proyecto hace falta trabajar desde Windows XP. Hemos intentado trabajar con Windows Vista / 7 pero no podemos porque la conexin USB virtual que general el Proteus da problemas. Hemos buscado un driver para 64bits y tampoco, ni si quiera con el modo de compatibilidad que nos ofrece el Windows 7 nos permita conectar adecuadamente. Antes de encender nuestra aplicacin de PC, debemos simular en Proteus y que detecte el dispositivo. La aplicacin busca en los puertos cuando se enciende, y da problemas si se detecta despus de iniciarla. Si queremos volver a compilar el .hex debemos de tener un plugin para MPLAB para poder compilar en CCS. Ya que la libreras de USB_CDC estn en est cdigo. Si encontramos unas en C18 serian fciles de cambiar.

II. Puesta en marcha Como hemos comentado antes, el orden de puesta en marcha seria: comenzar con la simulacin en Proteus, instalar el driver cuando se detecte el dispositivo (solo hay que hacerlo la primera vez), encender la aplicacin una vez reconocido el dispositivo, pulsar el botn conectar y empezar a mover la barra para ver el resultado.

III. Uso del osciloscopio en Proteus El Proteus dispone de varios dispositivos para visualizar como trabajan las seales. En este caso vamos a visualizar la seal PWM con un osciloscopio que debemos conectar de la siguiente forma. Pin A salida PWM Pin B salida U1 B Pin C salida U2 D Pin D salida U2 A

Una vez comencemos la simulacin saldr un ventana simulando un osciloscopio y tendremos una visin ms clara del manejo del motor. Si no nos sale la ventana debemos de pulsar Debuj-> 3.Digital oscilloscope durante la simulacin.

7 BIBLIOGRAFIAhttp://es.wikipedia.org/wiki/Modulaci%C3%B3n_por_ancho_de_pulsos http://es.wikipedia.org/wiki/Puente_H_%28electr%C3%B3nica%29 http://personales.alumno.upv.es/jorcaga1/index.html http://www.codeproject.com/KB/cs/USB_HID.aspx http://dynamoelectronics.multiforos.es/viewtopic.php?t=12 http://shibuvarkala.blogspot.com/2009/02/pulse-width-modulation-or-pwm-tutorial.html http://ingenet.com.mx/mcpiebot/2010/01/15/practicas-con-puerto-usb-con-pic-18f2550/ http://www.ccsinfo.com/downloads.php