97
Departamento de Ingeniería de Sistemas y Automática PROYECTO FIN DE CARRERA: INGENIERÍA EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL CONTROL DE ARTICULACIÓN MEDIANTE PWM Y SISTEMAS EMBEBIDOS AUTOR: José Pujol Pérez TUTOR: Fabio Gómez-Estern Aguilar Universidad de Sevilla Mayo 2005

CONTROL DE ARTICULACIÓN MEDIANTE PWM Y SISTEMAS …bibing.us.es/proyectos/abreproy/50024/descargar_fichero/Memoria_JPujol.pdfPara ello se debe programar el microcontrolador, fabricar

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Departamento de Ingeniería de Sistemas y Automática PROYECTO FIN DE CARRERA: INGENIERÍA EN AUTOMÁTICA Y ELECTRÓNICA INDUSTRIAL

CONTROL DE ARTICULACIÓN MEDIANTE PWM Y SISTEMAS EMBEBIDOS

AUTOR: José Pujol Pérez TUTOR: Fabio Gómez-Estern Aguilar

Universidad de Sevilla Mayo 2005

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 1

MEMORIA DEL PROYECTO: CONTROL DE ARTICULACIÓN MEDIANTE PWM Y SISTEMAS EMBEBIDOS ÍNDICE: 1 OBJETIVOS................................................................................................ 4

2 TECNOLOGÍAS INVOLUCRADAS ............................................................. 5

2.1 Microcontrolador .................................................................................. 5

2.1.1 Características básicas................................................................. 5

2.1.2 Tipos de microcontroladores......................................................... 7

2.2 Lenguajes de programación................................................................. 7

2.3 Compiladores....................................................................................... 9

2.4 Motor.................................................................................................. 11

2.5 Sensor de posición del motor............................................................. 13

2.6 Comunicación PC con el microcontrolador ........................................ 14

2.7 Circuito de Potencia ........................................................................... 15

2.7.1 Señal de potencia (pwm) ............................................................ 15

2.7.2 Aislamiento ................................................................................. 16

2.7.3 Control de velocidad y de sentido de giro ................................... 16

2.7.3.1 Posibles alternativas............................................................ 16

2.7.3.2 Formas de implementar un puente H .................................. 17

2.8 Alimentación del sistema ................................................................... 19

2.9 Interfaces de programación ............................................................... 19

3 ELECCIÓN DE SOLUCIONES ................................................................. 20

3.1 Microcontrolador ................................................................................ 20

3.1.1 Elección de la gama AVR ........................................................... 20

3.1.2 Elección del ATMEGA8515 ........................................................ 21

3.1.3 Características del ATMEGA8515 .............................................. 24

3.2 Compilador......................................................................................... 27

3.3 Lenguaje de programación ................................................................ 29

3.4 Motor DC............................................................................................ 29

3.5 Encoder.............................................................................................. 30

3.6 Comunicación PC microcontrolador mediante puerto serie ............... 31

3.7 Elementos de potencia....................................................................... 32

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 2

3.8 Fuente de alimentación...................................................................... 34

3.9 Placa de programación ...................................................................... 35

4 DESARROLLO DEL PROYECTO POR BLOQUES Y FASES.................. 38

4.1 Funcionamiento básico ...................................................................... 38

4.1.1 Hardware .................................................................................... 39

4.1.2 Software...................................................................................... 39

4.2 Lectura del encoder ........................................................................... 41

4.2.1 Hardware: ................................................................................... 41

4.2.2 Programación:............................................................................. 43

4.3 Salida PWM ....................................................................................... 48

4.3.1 Hardware .................................................................................... 48

4.3.2 Software...................................................................................... 49

4.3.3 Resultados.................................................................................. 52

4.4 Comunicación Microcontrolador-PC Hyperterminal ........................... 52

4.4.1 Hardware .................................................................................... 52

4.4.2 Software...................................................................................... 52

4.4.2.1 Serie prueba: ....................................................................... 52

4.4.3 Comunicación Microcontrolador-PC Ventana Visual .................. 57

4.5 Circuito de Potencia ........................................................................... 58

4.5.1 Estructura Puente ....................................................................... 58

4.5.2 Aislamiento ................................................................................. 61

4.5.3 Protección del circuito de potencia: ............................................ 63

4.5.4 Disipadores................................................................................. 63

4.6 Sistema de control ............................................................................. 65

5 MONTAJE FINAL...................................................................................... 67

5.1 Esquema funcional............................................................................. 67

5.2 Disposición de componentes ............................................................. 68

5.3 Listado de componentes .................................................................... 68

5.3.1 Sistemas ..................................................................................... 68

5.3.2 Placa electrónica de control ........................................................ 68

5.3.3 Sistema de poleas ...................................................................... 70

5.4 Hardware ........................................................................................... 70

5.4.1 Esquemáticos ............................................................................. 70

5.4.1.1 Circuito de control ................................................................ 71

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 3

5.4.1.2 Circuito de Potencia............................................................. 72

5.4.2 PCB: placa de circuito impreso................................................... 73

5.4.2.1 Disposición de las Huellas de los componentes: ................. 73

5.4.2.2 Rutado de las pistas en dos caras:...................................... 73

5.4.2.3 Plano de masas: .................................................................. 74

5.4.2.4 Pistas cara de los componentes: ......................................... 75

5.4.2.5 Pistas cara de las pistas ...................................................... 76

5.4.2.6 Placa cara de las pistas....................................................... 77

5.4.2.7 Placa cara de los componentes........................................... 77

5.4.2.8 Placa con los componentes: ................................................ 78

5.5 Planos mecánicos .............................................................................. 78

5.6 Software............................................................................................. 80

5.7 Algoritmos de control ......................................................................... 85

5.7.1 Control proporcional.................................................................... 86

5.7.2 Control Proporcional Integral ...................................................... 87

6 PRUEBAS Y RESULTADOS. ................................................................... 88

6.1 Control Proporcional .......................................................................... 88

6.2 Control Proporcional-Integral ............................................................. 90

7 CONCLUSIONES Y DESARROLLOS FUTUROS .................................... 93

7.1 Conclusiones ..................................................................................... 93

7.2 Desarrollos futuros ............................................................................. 94

8 BIBLIOGRAFÍA, PROGRAMAS E INTERNET:......................................... 95

8.1 Bibliografía ......................................................................................... 95

8.2 Programas utilizados.......................................................................... 95

8.3 Páginas de Internet ............................................................................ 95

8.4 Notas.................................................................................................. 96

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 4

MEMORIA DEL PROYECTO: CONTROL DE ARTICULACIÓN MEDIANTE PWM Y SISTEMAS EMBEBIDOS

1 OBJETIVOS

El objetivo del proyecto es controlar una articulación, podría ser la de un robot, mediante un sistema embebido, es decir un microcontrolador, que genere una señal PWM que controle la posición de la articulación. El sistema recibe las órdenes a través de un Ordenador (PC), lee su posición mediante un encoder y actúa mediante una interfaz de potencia con componentes electrónicos.

Para ello se debe programar el microcontrolador, fabricar una placa en la que integrar los periféricos, diseñar una etapa de potencia y realizar un programa de comunicación en el PC que permita interactuar con el sistema.

Es necesario elegir un lenguaje de programmación un compilador y una interfaz de programación.

Para realizar el proyecto hay que integrar todas las tecnologías incluidas en el grafico desde la comunicación PC-microcontrolador hasta desarrollar un circuito de potencia integrado en la placa de control.

PC MicrocontroladorRef

Interfaz de Programación

C.Potencia Motor

Salida

Sensor posición

Compilador L.Programación

TECNOLOGÍAS INVOLUCRADAS

PWM

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 5

2 TECNOLOGÍAS INVOLUCRADAS

A partir del gráfico de la página anterior vamos a ver cuales son las tecnologías involucradas en el proyecto.

2.1 Microcontrolador

Un microcontrolador es un pequeño ordenador, capaz de realizar instrucciones cíclicas. Es capaz de recibir información a través de puertos de entrada, procesarla y enviarla a través de puertos de salida.

Además suelen disponer de generador de impulsos de reloj que sincronizan el sistema, memoria RAM para almacenar datos, memoria ROM, conversores analógicos / digitales, salidas PWM...

2.1.1 Características básicas

Las características básicas de un microcontrolador son:

Puertas de Entrada/ Salida: comunican al microcontrolador con los periféricos exteriores.

Reloj: circuito oscilador que proporciona una onda cuadrada de cierta frecuencia que permite sincronizar los procesos. El reloj puede ser interno o externo.

Temporizadores: Se emplean para controlar periodos de tiempo temporizadores y para llevar la cuenta de acontecimientos que suceden en el exterior (contadores).

Para la medida de tiempos se carga un registro con el valor adecuado y a continuación dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 6

UCP: Unidad Central de Procesos. Se encarga de procesar las instrucciones.

Reset: entrada que inicializa al microcontrolador.

Memoria no volátil:

ROM: Solo lectura. Contiene el programa de instrucciones que gobierna la aplicación.

EPROM (Eraseble Programmable Read Only Memory) permite cargar y borrar muchas veces.

EEPROM (Electrical Erasable Programmable Read Only Memory) permite cargar y borrar muchas veces el programa. Se puede realizar desde el grabador bajo el control del PC.

Memoria volátil: RAM: es la memoria de trabajo. Guarda las variables y los datos.

Otras características que pueden poseer los microcontroladores son:

Interrupciones externas: permite conectar dispositivos externos y que estos produzcan interrupciones en el programa.

Salida PWM: modulación por anchura de pulsos.

Conversión Analógico/ Digital: permite leer o generar señales analógicas.

Puertos de comunicación: Permiten al microcontrolador comunicarse con otros dispositivos.

UART: adaptador de comunicación serie asíncrona.

USART: adaptador de comunicación serie síncrona y asíncrona.

USB (Universal Serial BUS) moderno bus serie para los PC

CAN (Controller Area Network) permite la adaptación con redes de conexionado multiplexado.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 7

2.1.2 Tipos de microcontroladores

Según el ancho de palabra: 4 bits, 8, 16 y 32 bits.

Los microcontroladores de 16 y 32 bits deben reservarse para aplicaciones que requieren sus altas prestaciones debido a su elevado precio.

Los microcontroladores de 8 bits son los más populares por su relación prestaciones/ precio.

Arquitecturas de microcontroladores:

Arquitectura Von Neumann:

Dispone solo de una memoria donde se almacenan los datos e instrucciones, así como de un único bus.

Cuando la UCP se dirige a la memoria principal, primero accede a la instrucción y después a los datos necesarios para ejecutarla.

Arquitectura Harvard:

Dispone de memorias y buses independientes para los datos y las instrucciones.

Acceso paralelo, cuando se está leyendo una instrucción la instrucción actual está utilizando el bus de datos. Una vez finalizada la instrucción actual, la siguiente ya está en la CPU. Por lo que permite una ejecución más rápida.

Este es el tipo de configuración que se está imponiendo.

Según tipo de instrucciones que ejecute la UCP:

CISC: (Complex Instruction Set Computer) Computadoras de juego de instrucciones complejo, que disponen de un repertorio de instrucciones elevados (unas 80) alguna de ellas muy sofisticadas y potentes, pero como contrapartida requieren muchos ciclos de máquina para ejecutar las instrucciones complejas.

RISC: (Reduced Instruction Set Computer) Computadoras de juego de instrucciones reducido, en los que el repertorio de instrucciones es muy reducido. Las instrucciones son muy simples y suelen ejecutarse en un ciclo de máquina. Además los RISC deben tener una estructura pipeline y ejecutar todas las instrucciones a la misma velocidad.

SISC: (Specific Instruction Set Computer) Computadoras de juego de instrucciones específico.

2.2 Lenguajes de programación

De bajo nivel a alto nivel tenemos:

• Código-máquina

• Ensamblador

• Intérpretes

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 8

• C y C++

• Basic

• Diseño por bloques de control

Código máquina:

El lenguaje propio del ordenador, basado en el sistema binario, o código máquina, resulta difícil de utilizar para las personas.

El programador debe introducir todos y cada uno de los comandos y datos en forma binaria. La programación en lenguaje máquina es una tarea tan tediosa y consume tanto tiempo que muy raras veces lo que se ahorra en la ejecución del programa justifica los días o semanas que se han necesitado para escribir el mismo. Por lo que está en desuso.

Ensamblador:

Es un lenguaje de bajo nivel que traduce el lenguaje de ensamble a lenguaje de máquina. Utiliza letras del alfabeto para representar los diferentes arreglos del código binario de la máquina. Los programadores de ensamble deben conocer profundamente la arquitectura y el lenguaje de máquina de su computadora. El programa ensamblador traduce cada instrucción de ensamble escrita por el programador a la instrucción en lenguaje de máquina binario equivalente. Por lo que es rápido y eficiente.

La programación en lenguaje ensamblador puede resultar un tanto ardua para el principiante, pero permite desarrollar programas muy eficientes, ya que otorga al programador el dominio absoluto del sistema. Los fabricantes suelen proporcionar el programa ensamblador de forma gratuita y en cualquier caso siempre se puede encontrar una versión gratuita para los microcontroladores más populares.

Anteriormente era necesario debido a las bajas prestaciones de los microcontroladores y la necesidad de optimizarlas.

Intérpretes:

Es un traductor de un lenguaje de alto nivel a código máquina. Ejecuta el programa leyendo cada sentencia en alto nivel traduciéndola y ejecutándola. Los dos interpretes más populares son los lenguajes BASIC Y FORTH.

Lenguaje C:

Fue desarrollado a principios de la década de los 70 en Bell Laboratories por Brian Kernigham y Dennis Ritchie. Ellos necesitaban desarrollar un lenguaje que se pudiera integrar con UNIX, permitiendo a los usuarios hacer modificaciones y mejorías fácilmente.

C es un lenguaje de nivel medio puesto que combina elementos de lenguajes de alto nivel como es escritura fácilmente legible. Permitiendo por otro lado la manipulación de bits, bytes y direcciones. Propio esto de lenguajes de bajo nivel.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 9

El lenguaje C está caracterizado por ser un lenguaje de uso general con una síntesis sumamente compacta y de alta portabilidad.

Una de sus principales características es el uso de librerías externas que contienen la definición de funciones.

Lenguaje C++:

Fue desarrollado por Bjarne Stroustrup en los Bell Laboratories a principios de la década de los '80. C++ introduce la programación orientada al objeto en C. Es un lenguaje extremadamente poderoso y eficiente. C++ es un super conjunto de C, para aprender C++ significa aprender todo acerca de C, luego aprender programación orientada al objeto y el uso de éstas con C++.

Basic:(Beginners All-purpose Symbolic Instruction Code)

Fue el lenguaje de programación interactivo más popular en la década de los 70. Es un lenguaje de propósito general. Desarrollado por John Kemeny y Thomas Kurtz en "Dartmouth College" en 1963. Existen numerosas versiones, algunas son compiladores y otras son intérpretes.

Diseño por bloques de control:

Fácil de programar.

Complicada adaptación al código especifico de cada microcontrolador.

No se controla a bajo nivel.

2.3 Compiladores

Es un programa que traduce un lenguaje de alto nivel al lenguaje de máquina de una computadora. Según va ejecutando la traducción, coteja los errores hechos por el programador. Traduce un programa una sola vez, generalmente, y es cinco veces más rápido que los programas intérpretes.

La programación en un lenguaje de alto nivel (como el C ó el Basic) permite disminuir el tiempo de desarrollo de un producto. No obstante, si no se programa con cuidado, el código resultante puede ser mucho más ineficiente que el programado en ensamblador. Las versiones más potentes suelen ser muy caras, aunque para los microcontroladores más populares pueden encontrarse versiones demo limitadas e incluso compiladores gratuitos.

Los compiladores disponibles para AVR son:

• Codevision

• Imagecraft.

• GCC

Codevision:

También conocido como CVAVR o simplemente Codevision. Sistema completamente desarrollado para las series de AVR.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 10

El entorno de desarrollo o IDE (Integrated Development Environment) es fácil de usar. Contiene un proyecto base e incluye un generador automático de código llamado Codewizard AVR, que genera todo lo necesario para la inicialización y configuración de los registros y periféricos internos del AVR, y algunos periféricos externos (usando bibliotecas incluidas).

En un aspecto más técnico, CodevisionAVR puede producir código en formato COFF, que implica poder ser usado con el Depurador AVR Studio, con capacidad completa de depuración. También puede producir código en formato OBJ, y en formato Intel HEX para usar con otras herramientas de programación de FLASH y EEPROM.

Existe un soporte técnico bastante efectivo y útil a cargo del propio autor del compilador. Además, también se recomienda visitar los foros de AVRfreaks.

GCC-AVR:

El Compilador de C GNU para AVR trabaja bajo MSDOS o MSDOS bajo win32, o bajo Linux. GCC-AVR no viene con un IDE o una de la mayoria de las herramientas que acompañan a los otros dos compiladores, es simplemente un Compilador de C. Sin embargo, GCC-AVR tiene una ventaja sobre los otros compiladores: como todos los productos GNU, GCC-AVR es completamente libre, y puede obtenerse el código fuente para el compilador para que pueda ser fácilmente compilado para trabajar en casi cualquier plataforma (especialmente cualquier máquina de Linux).

Como todos los compiladores GNU, GCC-AVR se proporciona con el estilo de programa standard UNIX Make, usado para hacer proyectos. Make usa “Archivos Make” para decirle al compilador qué hacer y cómo hacerlo. Existe un juego de “Archivos Make” que pueden modificarse fácilmente para hacer la compilación mucho más fácil en la mayoría de proyectos AVR.

GCC no puede producir autónomamente ficheros de salida COFF para usar AVR Studio para depuración y simulación. Sin embargo, hay un programa disponible que convierte salida binaria ELF a COFF.

El soporte técnico para GCC es un poco más difícil que los otros, porque no está escrito por una única persona o incluso una compañía. Por esto existe el forum AVRFreaks de AVRGCC, para personas que necesiten ayuda con AVRGCC, cómo sustituto de un servicio de ayuda técnico. Funciona bien.

Imagecraft Compiler C (AVR):

Normalmente abreviado a ICCAVR o ICC (para no confundir con GCC), éste compilador totalmente compatible con C ANSI, creado por Imagecraft Creations Inc. Imagecraft ha fabricado una gama de compiladores para varias arquitecturas embebidas (incluyendo Atmel AVR y Tiny-AVR) desde 1994. ICCAVR es un entorno de desarrollo completamente integrado para la serie AVR disponible en dos versiones: la versión Standard, que genera el código para la gama AVR clásica y la MegaAVR, y la versión Profesional, que tiene algunas características extras (lo más notable el Compresor de Código, que reduce el tamaño del código binario generado en un 20%). El soporte para dispositivos sin SRAM (por ejemplo, serie Tiny y el AT90S1200) lo realiza un

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 11

producto separado: el “ICC-Tiny”. Una versión de prueba de 30 días del compilador está disponible, y también permite un número limitado de usos de “Code Compressor”, cómo la versión Standard. Pasado el periodo de prueba, el usuario debe registrar la versión de prueba o dejará de ser utilizable.

El IDE es fácil de usar, basado en un proyecto. Incluye un generador de código automático llamado Aplicación Builder (similar a CodeWizard de CodeVisionAVR) que se puede ver en la figura 30; permite generar el código de inicialización para periféricos internos de microcontroladores AVR. Las librerías proporcionadas dan apoyo para la mayoría de periféricos internos usados, cómo UART, SPI, EEPROM, y también funciones de comprobación de Stack (Pila).

ICC puede producir el código en formato COFF. Esto se necesita para usar con AVR Studio con completas capacidades de depuración. También puede generar formato Intel Hex para la programación ISP de memoria flash y EEPROM.

El soporte técnico de ImageCraft Creaciones Inc. es excelente. Sus respuestas son siempre puntuales y exactas. Además, su programador es un habitual en los foros de AVRFreaks con lo que está al día de novedades.

2.4 Motor

En un sistema de control se pueden utilizar los siguientes tipos de motores eléctricos.

• Motor paso a paso

• Motor CC

• Servomotor

• Motor CA

Motor paso a paso:

Tipo de motor cuya principal característica es que su eje se mueve a saltos.

Características:

• Precisos

• Baja potencia mecánica

• Alto consumo

• Señal de control especial, fácilmente generable por un microcontrolador.

Servomotor:

Motor de CC que se mueve de forma continua entre dos posiciones.

Motor C.A.:

Tensión de alimentación de c.a. Difícil control de velocidad.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 12

Aplicaciones industriales de gran potencia.

Motor C.C.:

Características:

• Tensión de alimentación de c.c.

• Revolución continua.

• Necesitan de realimentación para aplicaciones de control.

• Fácil inversión de giro.

• Control de velocidad sencillo.

Modelo Eléctrico:

Esquema Eléctrico:

Rm

MVm

-

+

Ve

-

+

wKV ee ×=

Ve:Fuerza contraelectromotriz

Ke: Constante electromotriz

w: velocidad angular

La velocidad del motor es proporcional a la tensión aplicada.

Par mecánico e intensidad:

El motor convierte la intensidad generada en un par mecánico

IKT i ×=

T: Par mecánico generado por el motor

Ki: Constante de par

I: Intensidad consumida por el motor.

Manteniendo la tensión de alimentación constante al aumentar la velocidad del motor el consumo de intensidad y el par disminuyen.

I,T

W

Modelo mecánico:

Tkm =+ θθ θ

m: inercia del eje

k: constante de fricción de Coulomb

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 13

θ : velocidad angular del motor

Realizando la transformada de Lagrange:

( ) Tkms =+ θ2

Teniendo en cuenta el modelo eléctrico:

m

e

m

m

RsK

RV

Tθ−=

( )

−=+ θθ

m

e

m

m

RsK

RV

Ksms 2

m

m

e

e

RV

Rk

kms =

++ θ2

Con ello podemos obtener la función de transferencia del motor a controlar:

( ) ( )( ) ( )ss

k

Rkk

sms

RsV

ssG

m

e

m

mv τ

θθ +

=

++

==→ 1

1

A la función de transferencia debemos añadir la fricción estática (coulomb) que impide que el motor funcione para pequeños valores de tensión. Este fenómeno es importante tenerlo en cuenta a la hora de diseñar el control del motor.

2.5 Sensor de posición del motor

La forma más sencilla de leer la posición del motor con un microcontrolador es mediante un encoder.

Un encoder es un dispositivo que proporciona una señal digital en respuesta a un movimiento angular.

Tipos:

• Absoluto

• Incremental

Absoluto:

Produce un número binario que identifica cada posición en el disco. Con lo que se puede conocer la posición sentido de giro y velocidad.

Incremental:

Produce pulsos igualmente espaciados al girar el eje. Por lo que podemos conocer la velocidad sentido de giro y la posición a partir de una posición de referencia. Esto se calcula mediante las señales A, B, Z

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 14

Señal A: número de pulsos proporcional al giro angular. Permite calcular la posición y velocidad.

Señal B: desfase positivo y negativo respecto a la señal A según sea el sentido de giro. Permitiendo conocer el sentido de giro.

Señal Z: da un pulso por vuelta al pasar por el origen, permitiendo tener una posición de referencia.

2.6 Comunicación PC con el microcontrolador

Algunas de las opciones que tenemos para comunicar el microcontrolador con el PC son:

• Puerto serie

• Puerto paralelo

• Ethernet

• Radio modem

• USB.

Puerto serie:

Es el sistema más común para comunicar un PC y un microcontrolador. Para conectar el PC a un microcontrolador por el puerto serie se utilizan las señales Tx, Rx y GND. El Pc utiliza la norma RS232 por lo que los niveles de los pines están comprendidos entre +15 y –15 voltios. Los microcontroladores normalmente trabajan con niveles TTL (0-5v). Por lo que es necesario un circuito que adapte señales y que las invierta.

El componente más empleado cómo adptador e inversor de señales es el MAX 232. Puerto Paralelo:

Funciona de forma similar al puerto serie, en vez de utilizar un conector DB9 hay que usar un DB25.

Radio modem:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 15

Se conecta un módulo de radio-modem al microcontrolador y otro al PC. El tipo de comunicación es serie, con niveles de tensión TTL por lo que no se pueden conectar directamente a una interfaz RS-232. La señal de datos está invertida por lo que es necesario utilizar algún tipo de inversor.

Es muy similar a la transmisión por cable, aunque con algunas particularidades:

Tanto la transmisión como la recepción son semiduplex, es decir se puede transmitir o recibir. Pero no permite las dos a la vez.

El número máximo de bytes que se pueden enviar en cada paquete es limitado. Los bytes excedentes se pierden.

Antes de enviar datos desde el microcontrolador al radio modem es necesario recibir todos los datos almacenados que tenga el módulo de radio en su bufer.

Ethernet:

Es una placa electrónica que gestiona el intercambio de datos entre ordenadores usando protocolos como es el TCP/ IP.

Mediante la placa Ethernet podemos conectar nuestro microprocesador a la red Internet y por lo tanto al PC.

2.7 Circuito de Potencia

Los motores necesitan una corriente elevada que no puede ser suministrada por la electrónica de control. Es decir los pines de salida del microcontrolador no son capaces de hacer girar a un motor.

La electrónica de potencia se encarga de adaptar las señales de control a los niveles efectivos para mover los motores.

Necesidades del circuito de potencia:

• Comunicación Microcontrolador con la etapa de potencia: señal de potencia.

• Aislamiento entre el circuito de control(5V) y el circuito de potencia(24V).

• Control de la velocidad y del sentido de giro del motor

2.7.1 Señal de potencia (pwm)

PWM (Pulse Width Modulation) Modulación por anchura de pulsos

Una manera de obtener una corriente continua cuyo valor medio se pueda variar es modular el ancho de una señal pulsatoria de onda cuadrada que varíe entre 0 V. y un valor máximo de tensión VMAX.

Estos circuitos reciben el nombre de Modulador de Pulsos (PWM).

Se obtiene una señal cuadrada, cuyo valor medio es fácilmente variable, señal con la que se puede regular la velocidad de un motor de c.c.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 16

En una onda cuadrada se varía el ancho de pulso positivo, manteniendo constante la frecuencia, ya que de esta manera el valor medio de la onda resultante es variable dependiendo de la duración del pulso positivo de la misma.

Es un método para conseguir conversión Digital-Analógica variando el ciclo de trabajo (duty cycle) de una onda cuadrada de forma que se obtiene un valor medio de CC.

2.7.2 Aislamiento

Cumple la misión de proteger y aislar el circuito de control y el circuito de potencia.

Posibles alternativas:

• Optoacopladores

Aislamiento mediante señal luminosa.

Ventaja: alta velocidad de conmutación.

• Relés

Proporcionan aislamiento mecánico

Inconveniente: no tiene la suficiente velocidad de conmutación.

Por lo que se realiza la interfaz mediante optoacopladores.

2.7.3 Control de velocidad y de sentido de giro

2.7.3.1 Posibles alternativas

Formas de controlar el sentido de giro de un motor:

Dos fuentes de alimentación y medio puente

Una fuente de alimentación y puente en H

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 17

Ventaja: Circuito más simple

Inconveniente: Necesita dos fuentes de alimentación

Ventaja: Solo necesita una fuente de alimentación.

Inconveniente: Circuito más complejo.

Para controlar el motor tanto en velocidad como en sentido de giro elegimos el puente en H ya que permite utilizar una sola fuente de alimentación.

Para el manejo del sentido de giro de los motores (cw y ccw) y la velocidad de estos se hace uso del puente H. Cerrando S1-S4 para el giro en sentido horario y S2-S3 para el giro en sentido contrario.

El control de la velocidad se realiza median la señal pwm mandada desde el micro a los transistores a través del elemento de aislamiento.

2.7.3.2 Formas de implementar un puente H

Opciones:

• Circuito Integrado

• Elementos discretos

Mediante un circuito integrado:

Ventaja: simplicidad de montaje.

Problema: potencia máxima limitada.

Mediante elementos discretos:

Inconveniente: montaje complicado.

Ventaja: Soporta grandes potencias.

Dado que el circuito tiene que soportar una potencia elevada (245W) necesitamos implementar el puente en H con cuatro interruptores mediante elementos discretos. Posibilidades:

• Transistores BJT

• Mosfet

Transistores BJT:

Los transistores de potencia BJT son similares a los de señal aunque con algunos cambios físicos para permitir que soporten tensiones y corrientes elevadas.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 18

Características:

Fenómenos de segunda ruptura.

El transistor debe funcionar en la zona de operación segura.

La ganancia del transistor es baja.

Mosfet:

Son similares a los transistores BJT de potencia permitiendo soportar grandes caidas de tensión y corrientes elevadas.

Estructura Mosfet

Presentan ventajas frente a los transistores de potencia como son:

• Carecen de fenómenos de segunda ruptura.

• No requieren corrientes de polarización elevadas. Son dispositivos controlados por tensión.

• Es más rápido que lo bipolares.

Requisitos del sistema:

• Frecuencia de conmutación de 1kHz.

• Potencia de 245W.

• Tension 24v.

• Ic 10A.

Se ha seleccionado los transistores BJT de potencia como componentes discretos debido a que cumple con los requisitos mínimos y a que se ha

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 19

encontrado mas informacion sobre control de motores realizados con estos componentes.

2.8 Alimentación del sistema

El sistema tiene que ser alimentado mediante una fuente de alimentación que proporcione dos salidas de corriente continua una para alimentar el circuito de control y otra para alimentar el circuito de potencia.

2.9 Interfaces de programación

Entre las posibles placas programadoras de las que podemos disponer para programar el microcontrolador tenemos:

STK 500:

El STK500 es un completo kit de evaluación y sistema de desarrollo para los microcontroladores de la serie AVR Flash de Atmel. Está diseñado para ofrecer a los diseñadores un rápido comienzo para desarrollar código en los AVR, combinado con características avanzadas para el uso del kit de evaluación como prototipo y ensayo de nuevos diseños.

ISP:

Esta herramienta (a veces llamada “cable de programación”) permite la programación ”en sistema” (ISP, In-System Programming), de la línea de microcontroladores Atmel AT, utilizando una PC con puerto paralelo disponible. Aprovechando este concepto, se sugiere la siguiente metodología de trabajo:

Implementar la aplicación del microcontrolador, considerando el (mínimo) hardware necesario para el circuito de programación ISP, con su correspondiente conector. De esta manera, no es necesario extraer de la placa el microcontrolador para su programación, y se lo deja instalado en la aplicación.

Cuando se necesite cargar un nuevo programa en el micro, simplemente se enchufa el ”cabezal”.

(header) de la interfaz de programación en el conector que fue reservado en la aplicación, y luego se ejecuta en la PC el software de programación.

El software de programación, bajo Windows (98/NT/2000/ME/XP), es provisto gratuitamente por la firma Atmel.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 20

3 ELECCIÓN DE SOLUCIONES

3.1 Microcontrolador

3.1.1 Elección de la gama AVR

Los microcontroladores usados, siguiendo las especificaciones del proyecto general, son de la serie AVR de Atmel. Aunque no sea obligatorio el uso de estos microcontroladores, se facilita así el seguimiento de proyectos futuros, reduciendo el gasto de desarrollo de software y hardware, y dejando abierta una línea de investigación.

La amplia gama de microcontroladores AVR ofrecen soluciones para los requerimientos de todas las posibles tarjetas que se deseen desarrollar.

Descripción de los microcontroladores AVR:

La tecnología de los microcontroladores AVR es CMOS de 8 bits con bajo consumo, basados en arquitectura RISC. Esto implica que poseen un completo juego de instrucciones, la mayor parte de las cuales se ejecutan en un único ciclo de reloj, consiguiendo una capacidad de procesamiento cercana a 1MIPS por MHz. Esto permite al diseñador del sistema optimizar el consumo gracias a la gran velocidad de procesamiento.

Según el modelo, incorporan diferentes tamaños de memoria flash, RAM y EEPROM. Además es posible usar una SRAM externa mediante el uso de un bus de datos / direcciones multiplexado junto con las señales de control usuales en modo Intel (RD, WR, CS, ALE). La memoria flash permite programar el microcontrolador incluso una vez ya montado en la tarjeta final (ISP – In System Programming) sin recurrir a niveles de tensión especiales. La memoria EEPROM permite almacenar datos para conservarlos aún cuando se apague el dispositivo (por ejemplo, guardar configuraciones).

En la tecnología AVR se combina un gran número de instrucciones con 32 registros de propósito general. Los 32 registros están conectados directamente a la unidad aritmético lógica (ALU), permitiendo que dos registros independientes sean accesibles por una instrucción simple ejecutada en un ciclo de instrucción. Resulta una tecnología muy eficiente, que permite una capacidad de procesamiento hasta 10 veces superior que los convencionales microcontroladores CISC.

La familia AVR permite trabajar con frecuencias hasta 16 MHz. Suelen existir dos versiones por modelo. La versión L que trabaja con una tensión de alimentación 2.7 V, alcanzando velocidades de trabajo entre 4 u 8 MHz, y la versión superior que trabaja con alimentación en el rango 4.0 – 5.5 V, alcanzando hasta 8 o 16 MHz.

Enumeramos a continuación las características típicas de la familia AVR de microcontroladores:

• Temporizadores / Contadores de 8 y 16 bits flexibles con modos de comparación.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 21

• Interrupciones internas y externas.

• UART serie programable.

• USART serie programable (reemplazando a la UART).

• Puerto serie SPI.

• RTC (Real Time Clock).

• TWI (Two Wire serial Interface).

• Líneas de entrada / salida digitales configurables.

• Temporizador Watchdog programable con oscilador interno.

• Detector de Brown – Out (algunos lo llevan incorporado).

• Comparador Analógico.

• Conversor Analógico Digital.

• Interfaz JTAG.

• PWM (Pulses Width Modulation).

La memoria Flash on-chip Downloadable (descargable) permite que la memoria del chip sea reprogramada a través del interfaz SPI en el propio sistema o mediante programador JTAG.

Combinando una tecnología RISC de 8 bits con una CPU con memoria Flash, la familia de microcontroladores AVR de Atmel proporcionan una elevada flexibilidad en los diseños a bajo coste, dando una solución bastante efectiva para muchas aplicaciones de control.

La familia AVR se complementa con un completo juego de programas y sistemas de desarrollo incluyendo: compiladores C, ensambladores, simuladores, emuladores en circuito, kits de evaluación.

La familia AVR utiliza la llamada arquitectura Harvard con buses y memorias separadas para los datos y para el programa. Este concepto permite instrucciones sencillas, que son ejecutadas en un solo ciclo de reloj. La memoria de programa es Flash.

3.1.2 Elección del ATMEGA8515

Dentro de la gama AVR de ATMEL se dispone de las siguientes soluciones:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 22

Device

Flash (Kbytes) EEPROM (Kbytes) SRAM (Bytes) Max I/O Pins F.max (MHz) Vcc (V) 16-bit Timers Ext Interrupts

8-bit Timer

AT90PWM2 8 0.5 512 19 16 2.7-5.5 1 4 1

AT90PWM3 8 0.5 512 19 16 2.7-5.5 1 4 1

ATmega128 128 4 4096 53 16 2.7-5.5 2 8 2

ATmega1280 128 4 8192 86 16 1.8-5.5 4 32 2

ATmega1281 128 4 8192 51 16 1.8-5.5 4 32 2

ATmega16 16 0.5 1024 32 16 2.7-5.5 1 3 2

ATmega162 16 0.5 1024 35 16 1.8-5.5 2 3 2

ATmega165 16 0.5 1024 54 16 1.8-5.5 1 17 2

ATmega168 16 0.5 1024 23 20 1.8-5.5 1 26 2

ATmega169 16 0.5 1024 53 16 1.8-5.5 1 17 2

ATmega2560 256 4 8192 86 16 1.8-5.5 4 32 2

ATmega2561 256 4 8192 51 16 1.8-5.5 4 32 2

ATmega32 32 1 2048 32 16 2.7-5.5 1 3 2

ATmega325 32 1 2048 53 16 1.8-5.5 1 17 2

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 23

ATmega3250 32 1 2048 68 16 1.8-5.5 1 17 2

ATmega329 32 1 2048 53 16 1.8-5.5 1 17 2

ATmega3290 32 1 2048 68 16 1.8-5.5 1 32 2

ATmega406 40 0.512 2048 18 1 abr-25 1 4 1

ATmega48 4 0.256 512 23 20 1.8-5.5 1 26 2

ATmega64 64 2 4096 53 16 2.7-5.5 2 8 2

ATmega640 64 4 8192 86 16 1.8-5.5 4 32 2

ATmega645 64 2 4096 53 16 1.8-5.5 1 17 2

ATmega6450 64 2 4096 68 16 1.8-5.5 1 17 2

ATmega649 64 2 4096 53 16 1.8-5.5 1 17 2

ATmega6490 64 2 4096 68 16 1.8-5.5 1 32 2

ATmega8 8 0.5 1024 23 16 2.7-5.5 1 2 2

ATmega8515 8 0.5 512 35 16 2.7-5.5 1 3 1

ATmega8535 8 0.5 512 32 16 2.7-5.5 1 3 2

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 24

Requisitos para el microcontrolador:

• 2 canales PWM.

• USART.

• Velocidad de 16MHz.

• Número de entradas/ salidas (2/ 3).

• 2 Interrupciones externas.

• Compatible con el módulo de programación disponible (STK 500).

Elección del ATMega8515:

Dentro de la gama de Atmel se ha elegido el ATMega8515 debido a que cumple las exigencias mínimas necesarias en cuanto a rapidez, salidas pwm, número mínimo de entradas/ salidas, puerto serie, se puede programar con la STK 500 y principalmente porque es el que se puede encontrar en las tiendas.

Previamente se había trabajado con el ATMEGA163 debido a que se disponía de él en el laboratorio, pero al comprar un nuevo modelo ya solo se podía disponer del ATMEGA8515.

3.1.3 Características del ATMEGA8515

Principales características:

Avanzada arquitectura AVR RISC:

• 130 Potentes instrucciones, la mayoría ejecutadas en un ciclo de reloj.

• 32 registros de propósito general de 8 bits. • Hasta 16 MIPS trabajando a 16MHZ.

Memoria de programa no volátil y RAM interna:

• 8k bytes de memoria Flash reprogramable en el sistema final (ISP). • 10000 ciclos de escritura lectura. • 512 bytes de memoria EEPROM reprogramable en el sistema final

(ISP). • 10000 ciclos de escritura lectura. • 512 bytes de memoria RAM estática interna. • Protección del programa para seguridad del SW.

Característica de los periféricos:

• Un temporizador / contador de 8 bits con preescalado modo de comparación y de captura.

• Un temporizador / contador de 16 bits con preescalado modo de comparación y de captura.

• Tres canales PWM. • UART serie programable. • Temporizador Watchdog programable generado a partir de oscilador

interno.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 25

• Interfaz SPI maestro / esclavo.

Características especiales:

• Reset. • Modo de bajo consumo. • Interrupciones externas e internas.

Rango de funcionamiento: 4.5 a 5.5V

Velocidad: 0-16 MHz.

Diagrama de bloques:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 26

Configuración de pines del Microcontrolador Atmega8515 con encapsulado tipo PDIP y Descripción de Pines:

Se dividen en dos tipos los asociados a puertos y los pines para configuración básica del dispositivo.

Pines configuración básica del dispositivo:

VCC: Voltaje de alimentación.

GND: Conexión a 0v.

XTAL1, XTAL2: entrada y salida del oscilador.

RESET: Una señal con nivel bajo por mas de 50ms resetea el sistema.

Puertos:

Puerto A: PA7:PA0

Puerto de 8- bit bidireccional configurable como entrada o como salida.

Puerto B: PB7:PB0

Puerto C: PC7:PC0

Puerto D: PD7:PD0

Registros:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 27

3.2 Compilador

Decidir cuál de los tres compiladores es más fácil de usar es una cuestión personal. Los dos compiladores comerciales (ICC y CV) son programas de tipo ‘instalar y funcionar’: ejecutas el programa de instalación, pones en marcha un proyecto con el IDE incorporado, y comienzas a trabajar (asumiendo que

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 28

tengas permitido su uso). GCC requiere algo más de esfuerzo para ejecutarlo la primera vez, pero una vez configurado no es mucho más difícil su uso.

Los IDEs incluidos para CV e ICC son muy fáciles de usar, siendo el de Codevision ligeramente más asequible para un principiante, pero ambos son igualmente potentes y manejables. El sistema Imagecraft es más parecido a un sistema tradicional de desarrollo de C (Borland C++), mientras que Codevision está configurado de forma que parece ligeramente más dedicado a gente hardware que hace del software un recurso para un fin. Esto se evidencia por el número de librerías incluidas en Codevision para soportar varios dispositivos hardware rápida y fácilmente.

Por otro lado GCC tiene la ventaja principal de ser gratis. Si se descarga GCC, AVR Studio, y un software de programación, entonces se tiene un completo sistema de desarrollo AVR C con el coste del tiempo navegando en Internet para obtenerlos. Esta ventaja implica un inconveniente. El interfaz de usuario no es bueno, especialmente si no se integra en un IDE. AVR Studio sin ser un gran IDE es suficiente, pero su administrador de proyecto tiende a ser desordenado y la ventana tiende a ocultarse unas detrás de otras. Una mejora podría ser una barra fija de administrador de proyecto (cómo tienen los dos IDEs comerciales) bajo el lado de la ventana tal que no pueda ser ocultada por otras ventanas; sin esta mejora, proyectos grandes pueden ser difíciles de desarrollar.

Imagecraft C se aconseja para programadores que también hacen hardware. La versión profesional con sus opciones adicionales es probablemente el compilador más potente revisado, y si la compatibilidad IAR es necesaria el Imagecraft es la mejor elección.

GCC no es de fácil uso, pero puede hacerse manejable para quienes no tengan un presupuesto elevado. Hace las cosas algo más raras, por el hecho de que GCC no fue escrito originalmente para programar microcontroladores, pero no es difícil acostumbrarse a ellas. No se recomienda para aquellos que no manejan el lenguaje ANSI C. Más recomendado para quien desea administrar sus propios proyectos y makefiles.

Los diseñadores que trabajan con hardware y que también hacen la programación preferirán Imagecraft C. Con esta elección se facilita el esfuerzo de programar el hardware sin involucrarse en cómo, siempre que el hardware esté soportado por las librerías incluidas. Probablemente la mejor elección para quién no este familiarizado al 100% con el lenguaje C.

Se han utilizado los tres compiladores disponibles para los microcontroladores Atmel AVR en Lenguaje C. Además estos microcontroladores se pueden programar en Basic.

Codevision es el compilador más sencillo de usar y más potente al ser el más específico. Además cuenta con la ventaja de que el libro usado de referencia ha sido “Embedded C… y éste está orientado hacia su uso.

A pesar de ello a mitad del proyecto se ha debido cambiar al compilador ImageCraft dado que las versiones disponibles del Codevision en ese momento

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 29

no soportaban el nuevo micro ATMEGA8515. Finalmente se encontró una versión actualizada del Codevision.

También se ha probado a usar el compilador IER aunque su uso se hacia más complicado al ser más genérico que los otros dos.

Se ha elegido para la realización de la programación del proyecto presente el compilador CodevisionAVR por las siguientes razones:

• Su excelente entorno de trabajo integrado (IDE) y su extraordinario compilador.

• Fue escrito específicamente para los microcontroladores AVR.

• Produce un código preciso, utilizando las características de los microcontroladores AVR.

• Produce un código más pequeño y más eficiente para los microcontroladores AVR de Atmel.

• Posee un generador de código automático CodeWizarAVR, una herramienta que facilita la programación inicial en la mayoría de los proyectos.

3.3 Lenguaje de programación

Una vez seleccionado el microprocesador AVR, estos se pueden programar en lenguaje ensamblador, en C, y Basic.

Los posibles lenguajes de programación disponibles para los microcontroladores usando compiladores son:

• Lenguaje C

• Basic

El lenguaje de programación seleccionado es C, ya que es un lenguaje sencillo de usar, que permite tanto una programación de alto nivel (el lenguaje es fácilmente comprensible), como de bajo nivel (podemos actuar a nivel de registros). Es compatible con el compilador del que disponemos y además ya se tenía experiencia con éste lenguaje.

3.4 Motor DC

El motor del que se dispone para hacer el proyecto es un motor de c.c., se ha utilizado este motor por adecuarse a las necesidades y por disponibilidad.

Motor de CC. Dunkermotoren GR63x55

Características:

Par Nominal: 27 Ncm

Velocidad Nominal: 3350rpm

Potencia nominal: 94.7W

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 30

Voltaje nominal: 24V

Corriente Nominal: 4.9A

Corriente de vacío: 0.4A

Velocidad de vacío: 3650 rpm

Par de arranque: 211Ncm

Potencia máxima: 245W

Peso: 1,7Kg

Dimensiones: ∅63mm, L125mm

Aplicaciones:

Debido a su pequeño volumen y altas prestaciones es adecuado para:

• Ingeniería de precisión.

• Ingeniería de control y medida.

• Servo-ingeniería.

Por lo que es un motor que se adecua a las necesidades de nuestro proyecto.

3.5 Encoder

El encoder del que se dispone para realizar el proyecto es un encoder Omron rotativo incremental E6B2

Características:

Amplio rango de operación: 5 a 24Vc.c.

Consumo: 80mA max.

Resolución de 2000pulsos/revolución.

Salida de paso por origen ajustable.

Configuración de salida: Colector abierto.

Frecuencia máxima de respuesta: 100kHz.

Diagrama del circuito de salida: Colector abierto.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 31

Diagrama de operación:

Indicación de paso por origen:

Con la función de indicación de paso por origen es muy sencillo ajustar la salida Z. En la siguiente figura se muestra la relación entre la salida Z y el origen. Hay que posicionar el eje como se muestra en la figura.

3.6 Comunicación PC microcontrolador mediante puerto serie

Se ha elegido la comunicación mediante puerto serie debido a que el microcontrolador seleccionado viene preparado para recibir tales señales de una forma sencilla y eficiente.

El protocolo elegido para la comunicación PC y el sistema es el RS-232. Ha sido elegido, por ser uno de los más utilizados y comunes en el ordenador.

Como los niveles lógicos que salen del micro no son compatibles con los lógicos del puerto, necesitamos usar como interfaz el MAX-232 para que adecue estos valores.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 32

La conexión es sencilla, sólo es necesario comunicarlo con dos pines del puerto serie además de la tierra. Debido a ello, se eligió por su funcionalidad y sencillez en la comunicación.

La entrada a este chip, proviene de los pines TX y RX. Éstos, van conectadas directamente al MAX-232 a partir de las pines 11 y 12, que son de entrada. Y las pines de salida serán las que se conectarán con el puerto serie.

Posteriormente, hemos añadido un conector de puerto serie macho en la placa, que se conectará a través de un cable serie hembra con el puerto serie del PC.

+C5

1u

+

C6

1u+

C71u

+ C81u

+C91u

U5

MAX232

C1+1

V+2

C1-3

C2+4

C2-5

V-6

T2OUT7

R2IN8

VCC16

GND15

T1OUT14

R1IN13

R1OUT12

T1IN11

T2IN10

R2OUT9

U6

DB9S

FG1

Rx2

Tx3

DTR4

GND5

DSR6

RTS7

CTS8

RI9

VCC

Tx

Rx

Comunicación Puerto SerieVCC

3.7 Elementos de potencia

Una vez que se ha decidido realizar el circuito mediante un puente en H formado por transistores BJT discretos aislados mediante Optoacopladores es necesario diseñar el circuito.

Puente en H mediante transistores:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 33

Q2 Q4

Q3AQ1A

U7

MOTOR1

1

2

2

VCC 24V

PWM1 PWM2

PWM2 PWM1

La señal PWM enviada por el microprocesador actúa sobre la base de los transistores.

Problema: La corriente generada por el microcontrolador no es suficiente por lo que hay que montar un Par Darlington por cada transistor.

Puente en H mediante Transistores en Par Darlington:

Q2

Q3

Q6

Q5AQ1A

Q4A

U7

MOTOR1

1

2

2

Q7

Q8A

VCC 24V

PWM2 PWM1

PWM1 PWM2

Cada transistor ha sido sustituido por una pareja de transistores formando un par Darlington.

Aislamiento mediante optoacopladores:

Se ha elegido el aislamiento mediante optoacopladores ya que permite aislar el circuito de potencia y el de control con suficiente velocidad de conmutación.

Un optoacoplador combina un dispositivo semiconductor formado por un fotoemisor, un fotoreceptor y entre ambos hay un camino por donde se transmite la luz. Todos estos elementos se encuentran dentro de un encapsulado que por lo general es del tipo DIP.

Funcionamiento del Optoacoplador:

La señal de entrada es aplicada al fotoemisor y la salida es tomada del fotorreceptor. Los optoacopladores son capaces de convertir una señal eléctrica en una señal luminosa modulada y volver a convertirla en una señal eléctrica. La gran ventaja de un optoacoplador reside en el aislamiento eléctrico que puede establecerse entre los circuitos de entrada y salida.

Diferentes tipos de Optoacopladores

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 34

Fototransistor: se compone de un optoacoplador con una etapa de salida formada por un transistor BJT.

Fototriac: se compone de un optoacoplador con una etapa de salida formada por un triac.

Fototriac de paso por cero: Optoacoplador en cuya etapa de salida se encuentra un triac de cruce por cero. El circuito interno de cruce por cero conmuta al triac sólo en los cruce por cero de la corriente alterna.

Al incluir los optoacopladores el circuito queda:

Puente en H + Optoacopladores:

U1

OPTO

1 6

2

5

4

Q2

Q3

Q6

Q5AQ1A

Q4A

U7

MOTOR1

1

2

2

Q7

Q8A

MJE2955T

U2

OPTO

1 6

2

5

4

U4

OPTO

16

2

5

4

U3

OPTO

16

2

5

4

VCC 24V

PWM2PWM1

Vcc +5v

Vcc +5v

La señal pwm enviada por el micro actúa sobre la base del transistor permitiendo que este conduzca y amplificando ésta por lo tanto:

Q2BC239C

R4

10k

OPTOACOPLADOR U2

PWM1

SALIDA DEL

3.8 Fuente de alimentación

La fuente de alimentación tiene que cumplir los siguientes requisitos:

Circuito de control: 5v, I<1A

Circuito de potencia: 24v, 10,5A. P=250w

La fuente de alimentación seleccionada es la Tektronix PS280. Ya que se dispone de ella en los laboratorios y cumple con los requisitos tensión, potencia y número de salidas necesarias.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 35

3.9 Placa de programación

La placa de programación del microcontrolador es la STK500 debido a que permite programar el microcontrolador seleccionado y disponemos de ella en los laboratorios.

Las características del kit de evaluación STK 500 son:

• Compatible con AVR Studio.

• Interfaz RS-232 con PC para programación y control.

• Alimentación de potencia regulada entre 10-15 V DC.

• Zócalos para dispositivos AVR de 8, 20, 28 y 40 pines.

• Varios modos de programación para dispositivos AVR: ‘Parallel/Serial High Voltage’ e ‘ISP (In-system Programming)’.

• Programación ISP para dispositivos AVR en placas externas.

• Reprogramación de dispositivos AVR.

• 8 LEDs y 8 pulsadores para uso general.

• Todos los puertos entradas / salidas de los microcontroladores AVR son fácilmente accesibles gracias a conectores con pines.

• Puerto RS-232 adicional para uso general.

• Conectores de expansión para ampliaciones.

• Memoria Flash de 2 Mbit para almacenamiento de datos.

Entre todos los dispositivos AVR admitidos por la STK 500, se encuentra el microcontrolador usado en el nodo de control de potencia del proyecto: el ATMega8515.

El esquema de la placa STK 500 es el mostrado en la figura, donde se señalan todos los elementos que la componen:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 36

Kit de Evaluación STK 500.

Configuración hardware y programación.

El kit de evaluación STK 500 incluye un microcontrolador AT90S8515-8 en el zócalo marcado con SCKT3000D3 (en rojo en la figura 32).

El área de zócalos para los dispositivos AVR (‘sockets for target AVR’) permite conectar varios tipos de microcontroladores AVR, según número de pines. Entre ellos el AT90S8515, objetivo del proyecto.

El kit de evaluación tiene una zona de jumpers (‘option settings jumpers’) La colocación por defecto de los jumper permite al microcontrolador trabajar con la fuente de reloj y alimentación de la placa. También podría tener una tensión de referencia, un reset y/o un oscilador, todo ello de la placa.

El microcontrolador está programado con un programa test que cambia los LEDs (encendido / apagado). Se usan los cables planos de 10 pines suministrados para unir los LEDs y los pulsadores con los puertos correspondientes (‘Header LEDs’ con ‘Header PORTB’ y ‘Header Switches’ con ‘PORTD’).

Se requiere una alimentación externa de 10-15 V DC. Se recomienda introducir en ‘Power connector’ un conector con centro negativo para permitir apagar y encender la alimentación desde el interruptor correspondiente en la placa (‘Power switch’). Si se alimenta la placa, el LED de potencia (‘Power LED’) se pone en rojo, y el LED de estado (‘Status LED’) se pone en verde, tras pasar por amarillo, indicando que la alimentación está llegando al microcontrolador. El programa estará trabajando en el ATMEGA8515 y se puede probar, pulsando cualquier pulsador viendo cómo se enciende y apaga el led correspondiente.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 37

Para programar el ATMEGA8515 hay que conectar el cable plano de 6 pines entre el conector ‘ISP6PIN’ y el conector del dispositivo AVR correspondiente, en este caso ‘SPROG3’ que corresponde, que es el más cercano (ver figura). Esta conexión marca el tipo de programación usada: ISP (In-System Programming). Esta programación utiliza el SPI (Serial Peripheral Interface) interno del microcontrolador AVR para cargar el código en la memoria Flash y EEPROM del dispositivo. Requiere sólo de VCC, GND, RESET y 3 señales para la programación. Nuestro dispositivo, el AT90S8515, permite este tipo de programación.

Para comunicar la placa STK 500 con el PC de trabajo, donde se instala AVR Studio para trabajar, se dispone de un cable serie RS-232, y un par de puertos en la placa: uno para el control, y otro auxiliar. Se conecta el cable entre el puerto RS-232CTRL del kit y el puerto COM del PC (figura 34).

Conexión entre STK 500 y PC vía RS-232.

Una vez realizadas todas las conexiones de hardware necesarias para la programación del ATMEGA8515, se abre el programa AVR Studio, y se abre la ventana correspondiente al kit STK 500, para proceder a realizar la programación del micro. En la figura 35 se observa una ventana abierta. Existe un buena guía de usuario que facilita la configuración de los elementos que aparecen al ir pinchando en las diferentes pestañas de la ventana: Fuses, Lock Bits, etc.

El resultado final es que con muy poco hardware (dos cables planos, un cable serie RS-232, la placa STK 500, y el microcontrolador) y con un programa software totalmente gratuito disponible en www.atmel.com, se realiza la programación de cualquier microcontrolador de la serie AVR fácilmente, siempre que esté admitido por los zócalos de la placa del Kit de evaluación.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 38

4 DESARROLLO DEL PROYECTO POR BLOQUES Y FASES

Para resolver el proyecto éste se ha aislado en diferentes problemas, los cuales se han ido afrontando de forma separada.

Desarrollo del Circuito de control:

• Funcionamiento básico

• Lectura del encoder

• Salida PWM

• Comunicación por Puerto serie

Desarrollo del circuito de potencia:

• Diseño del circuito

• Fabricación PCB

Aplicación del circuito de control y el circuito de potencia

• Programas de control

4.1 Funcionamiento básico

El primer paso es programar el microcontrolador y realizar el hardware necesario para que dispongamos de salidas con las que conocer el estado del microprocesador. En este caso se realiza un programa para que un led titile en un intervalo de 0.5s, para lo cual también se programa una interrupción por temporizador.

Éste primer proyecto aunque trivial es fundamental para comenzar a desarrollar el proyecto partiendo de la base de que tanto el micro, como el compilador y la tarjeta de programación funcionan correctamente. Además a lo largo del proyecto se utilizara este circuito/programa como base para desarrollar los demás.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 39

4.1.1 Hardware

+C322pF

+ C422pF

VCC

U1

ATmega8515-DIP

PB0/OC0/T01

PB1/OC2/T12

PB2/RXD1/AIN03

PB3/TXD1/AIN1)4

PB4/SS5

PB5/MOSI6

PB6/MISO7

PB7/SCK8

/RESET9

PD0/RXD010

PD1/TXD011

PD2/INT012

PD3/INT113

PD4/TOSC114

PD5/TOSC2/OC1A15

PD6//WR16

PD7//RD17

XTAL218

XTAL119

GND20

VCC40

PA0/AD039

PA1/AD138

PA2/AD237

PA3/AD336

PA4/AD435

PA5/AD534

PA6/AD633

PA7/AD732

PC0/A821PC1/A922PC2/A1023PC3/A1124PC4/A1225PC5/A1326PC6/A1427PC7/A1528PE2/OC1B29PE1/ALE30PE0/ICP/INT231

D1 LED

D2LED

Y116MHz

+ C1O,1u

U14

ALIMENTACION +5V

11

22Funcionamiento básico

R4

R5

4.1.2 Software

#include <mega8515.h>

//global variables

unsigned int timecount =0; // global time counter

// Timer 0 overflow interrupt service routine

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

TCNT0=6; //inicializa el timer a 6. 250*1/15625=0,016s

if (++timecount==63) // 0.016*63=1s

PORTA.1=PORTA.1^1; ;// Conmuta el PIN 1 del puerto A

timecount=0; // inicia el contador

void main(void)

// Input/Output Ports initialization

// Port A initialization

PORTA=0x00; // Valor inicial bits PORTA=0

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 40

DDRA=0x03; // PORTA0 y PORTA1 as output

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: 15,625 kHz

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x05; // CK/1024

TCNT0=0x00;

OCR0=0x00;// Global enable interrupts

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x02; // Activa TO1E0

#asm("sei")

PORTA.0=0;

while (1);

Estructura del programa:

Se ha creado una interrupción por Timer 0 que salta cada 15,625KHz*250=0,016s y en la que se incrementa un contador que hace conmutar el PinA.1. El programa principal no realiza ninguna tarea aparte de iniciar los registros.

Codificación del microcontrolador:

TIMSK: Timer/Counter Interrupt Mask Register

TIMSK=0x02= 0000 0010

Activa la interrupción por Timer 0

TCCR0: Timer/ Counter 0 Control Register.

Los Bits 2,1,0 controlan la señal de reloj que activa el timer 0.

CS02 CS01 CS00 Interrupt functions

0 0 0 Timer 0 stop

0 0 1 Reloj del sistema=CK

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 41

0 1 0 CK/8

0 1 1 CK/64

1 0 0 CK/256

1 0 1 CK/1024

1 1 0 Pin T0 cuenta bajada de flanco

1 1 1 Pin T0 cuenta una subida de flanco

TCCR0=0x05=0000 0101 CK/1024

CK: Es el reloj del sistema=16MHz

CK/1024=15,625 KHz.

El timer 0 funciona cada 15,625 KHz, incrementando el registro TCNT0.

TCNT0: Timer/Counter Register

Da acceso directo (para escribir y para leer) para iniciar el contador Timer 0.

TCNT0=6; //inicializa el timer a 6. 256-6=250

250/15625=0,0016s

4.2 Lectura del encoder

El siguiente paso en el proyecto es que el microcontrolador sea capaz de leer las señales enviadas por el encoder.

4.2.1 Hardware:

Para ello lo primero es ver cual es el funcionamiento de un encoder incremental. Para lo cual se contó con el manual de Omron y una vez deducido su funcionamiento se comprobó con el osciloscopio.

Esquema de montaje:

Se comprueba que hay que conectar una resistencia de 1kΩ entre Vcc y las salidas A, y B para que el encoder funcione correctamente. Esto no es mencionado en el manual pero se supone que lo debemos saber al ser de salida a colector abierto.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 42

ser de salida a colector abierto.

Funcionamiento:

Salidas A y B sentido horario Salidas A y B sentido antihorario

Salidas A y Z, como se observa en la imagen se produce un pulso en Z por revolución.

Una vez que conocemos el funcionamiento del encoder y hemos visto que el osciloscopio lee correctamente las señales A y B pasamos a ver el circuito necesario para que funcione con el microcontrolador.

Al microcontrolador conectamos:

Las señales de entrada del encoder:

Señal A: PB0, señal B: PB1

Se habilita las interrupciónes INT0, INT1

Señal A: INT0, señal Z:INT1

Leds de estado:

Sentido de giro PA0: iluminado sentido horario, apagado antihorario.

Posición PA1, PA2: divide la circunferencia en cuatro cuadrantes.

Velocidad PA0: numero de pulsos proporcional a la velocidad.

Funcionamiento básico:

xtal1, xtal2, cristal 8MHz, condensadores 2uF

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 43

Vcc, Condensador 0,1F

GND

Alimentación del encoder

Reset:

Se ha añadido un sencillo circuito de reset que actúa sobre el pin de reset del micro que ya está habilitado para ello. Esto nos permite iniciar el sistema en caso de fallo.

No es necesario programar nada para el funcionamiento del reset.

ResetC1

0,1uFU3

Pulsasor RESET

1

2 3

4

Pin Reset

R11k

R21k

R31k

R4

R5

+ C20,1u

+C322pF

+ C422pF

VCC

U1

ATmega8515-DIP

PB0/OC0/T01

PB1/OC2/T12

PB2/RXD1/AIN03

PB3/TXD1/AIN1)4

PB4/SS5

PB5/MOSI6

PB6/MISO7

PB7/SCK8

/RESET9

PD0/RXD010

PD1/TXD011

PD2/INT012

PD3/INT113

PD4/TOSC114

PD5/TOSC2/OC1A15

PD6//WR16

PD7//RD17

XTAL218

XTAL119

GND20

VCC40

PA0/AD039

PA1/AD138

PA2/AD237

PA3/AD336

PA4/AD435

PA5/AD534

PA6/AD633

PA7/AD732

PC0/A821PC1/A922PC2/A1023PC3/A1124PC4/A1225PC5/A1326PC6/A1427PC7/A1528PE2/OC1B29PE1/ALE30PE0/ICP/INT231

D1 LED

D2LED

Y116MHz

VCC

U7

RESET

1

2 3

4

+ C1O,1u

U14

ALIMENTACION +5V

11

22

J1

ENCODER

12345

Tierra- MarronAlimentacion-Azul

Lectura del Encoder

Señal Z- NaranjaSeñal B- BlancoSeñal A- Negro

4.2.2 Programación:

Para generar el programa de lectura de encoder se parte de generar una interrupción cada vez que la señal A genere un pulso, y utilizar el valor de A para saber si es un flanco de subida o de bajada y el valor de B para saber si es el instante de actuar sobre el valor del contador. Siempre que se hay producido un flanco de subida en la señal A y B=0 aumentar contador, y siempre que se ha producido un flanco de bajada y B=0 decrementar contador.

Además mediante la señal Z reseteamos la variable de posición del contador.

Líneas de código: Interrupcion externa INT0

A=PINB.0; // Lee PINB 0 y le asigna el valor a la vble A

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 44

B=PINB.1; // Lee PINB 1 y le asigna el valor a la vble B

if (A==1 && B==0 ) // Señal es un flanco de subida y Sentido de giro horario

cont=cont+1;

cont_pos=cont_pos+1;

if (A==0 && B==0) // La señal es un flanco de bajada y Sentido de giro antihorario

cont=cont-1;

cont_pos=cont_pos-1;

Interrupción externa INT1

cont_pos=0;

Estructura del programa:

El programa contiene un main donde se inician los registros y se establece la posición mediante la activación de los leds. Hay dos tipos de interrupciones. Dos interrupciones externas debido a la señal del encoder A en la que se incrementa o decrementa los pulsos del encoder y a la señal del encoder Z en la que se resetea el contador de posición. Una interrupción interna por timer 0 en la que se calcula la posición y la velocidad.

Configuración del micro:

GICR: General Interrupt Control Register

GICR|=0x40= 0100 0000

Activa la interrupción INT0, INT1 e INT2 permanecen desactivadas.

MCUCR: MCU Control Register

Bit1, Bit0: ISC01, ISC00 Bits de control de la Interrupción 0.

ISC01 ISC00 Descripción

0 0 Nivel bajo de INT0 genera una interrupción.

0 1 Cualquier cambio de nivel genera una interrupción

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 45

1 0 La bajada de flanco de INT0 genera la interrupción.

1 1 La subida de flanco de INT0 genera la interrupción.

MCUCR=0x01=0000 0001

INT0 se activa cada vez que la señal cambia de nivel.

GIFR: General Interrupt Flag Register

GIFR=0x40=01000000 Activa el flag INTF0.

Software: #include <mega8515.h>

// global variables here

long int timecount =0; // Global time counter

long int cont=0; // Variable que almacena los pulsos

long int cont_ant=0; // Variable que almacena los pulsos anteriores

long int cont_pos=0; // Variable que almacena los pulsos se resetea la paso por ceroº

bit A; // Vble almacena el estado de la salida A del encoder

bit B; // Vble almacena el estado de la salida B del encoder

bit R=1; // Vble que resetea Pos P

float V=0; // Vble que almacena la velocidad

float P=0; // Vble que almacena la posición

float tm=0.02; // Tiempo de muestreo

// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void)

A=PINB.0; // Lee PINB 0 y le asigna el valor a la vble A

B=PINB.1; // Lee PINB 1 y le asigna el valor a la vble B

if (A==1 && B==0 ) // Señal es un flanco de subida y Sentido de giro horario

cont=cont+1;

cont_pos=cont_pos+1;

if (A==0 && B==0) // La señal es un flanco de bajada y Sentido de giro antihorario

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 46

cont=cont-1;

cont_pos=cont_pos-1;

// Led VELOCIDAD

if (((int)timecount/2000)%2==0) // Vueltas impares led apagado, pares encendido

PORTA.3= 1;

else

PORTA.3= 0;

// External Interrupt 1 service routine

interrupt [EXT_INT1] void ext_int1_isr(void)

cont_pos=0; // resetea el contador

// Timer 0 overflow interrupt service routine

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

TCNT0=6; // 1/15625= 64us *250= 0.016s

V=(cont - cont_ant)/tm; // Calculo de la velocidad pulsos/s

P=cont_pos*360/2000; // Posición en º

cont_ant=cont; // Actualiza la variable cont_ant

if (++esc==31)

esc=0;

escribe=1;

void main(void)

// Input/Output Ports initialization

// Port A initialization

PORTA=0x00;

DDRA=0x0F; // Configura los pines 0,1,2,3 como salidas

PORTC=0x00;

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 47

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: 15,625 kHz

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x05; // CK/1024

TCNT0=0x00;

OCR0=0x00;

// External Interrupt(s) initialization

GICR|=0x40; // INT0: On INT1: Off INT2: Off

MCUCR=0x01;// INT0 Mode: Any change

EMCUCR=0x00;

GIFR=0x40; // Activa Flag INTF0

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x02; // Activa Timer 0

// Global enable interrupts

#asm("sei")

while((A!=0)&&(B!=0)) //ESPERAR A=0 Y B=0 es decir a que el encoder esté parado

;

while (1)

// Led Sentido de Giro

if (V>=0) // Sentido de giro horario

PORTA.0=1;

else // Sentido de giro antihorario

PORTA.0=0;

// Leds Posición

if ( ((P<=90)&&(P>=0)) || ((P<=-270)&&(P>-360)) )// I Cuad.

PORTA.1=1;

PORTA.2=1;

else if (((P<=180)&&(P>90))||((P<=-180)&&(P>-270)))// II

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 48

PORTA.1=1;

PORTA.2=0;

else if (((P<=270)&&(P>180))||((P<=-90)&&(P>-180)))// IIIC

PORTA.1=0;

PORTA.2=1;

else // IV Cuadrante

PORTA.1=0;

PORTA.2=0;

;

4.3 Salida PWM

Antes de incorporar el control con pwm al proyecto lectura de encoder se comprueba que el funcionamiento del microcontrolador con salida pwm es el que deseamos.

Para ello se toma la señal de salida del PWM en un osciloscopio y se varía el % del Duty Cycle, o ciclo de trabajo.

4.3.1 Hardware

Solo hay que añadir las salidas OC1A y OC1B al circuito con funcionamiento básico.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 49

R4

R5

+C322pF

+ C422pF

VCC

U1

ATmega8515-DIP

PB0/OC0/T01

PB1/OC2/T12

PB2/RXD1/AIN03

PB3/TXD1/AIN1)4

PB4/SS5

PB5/MOSI6

PB6/MISO7

PB7/SCK8

/RESET9

PD0/RXD010

PD1/TXD011

PD2/INT012

PD3/INT113

PD4/TOSC114

PD5/TOSC2/OC1A15

PD6//WR16

PD7//RD17

XTAL218

XTAL119

GND20

VCC40

PA0/AD039

PA1/AD138

PA2/AD237

PA3/AD336

PA4/AD435

PA5/AD534

PA6/AD633

PA7/AD732

PC0/A821PC1/A922PC2/A1023PC3/A1124PC4/A1225PC5/A1326PC6/A1427PC7/A1528PE2/OC1B29PE1/ALE30PE0/ICP/INT231

D1 LED

D2LED

Y116MHz

+ C1O,1u

U14

ALIMENTACION +5V

11

22

OC1B

OC1A

Salida PWM

4.3.2 Software

Configuración del microcontrolador:

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: 2000,000 kHz

// Mode: Fast PWM top=01FFh

// OC1A output: Non-Inv.

// OC1B output: Non-Inv.

// Noise Canceler: Off

// Input Capture on Falling Edge

TCCR1A=0xA2;

TCCR1B=0x0A;

TCCR1: Timer/Counter Control Register

Está compuesto de dos registros: TCCR1A, TCCR1B.

TCCR1A: Timer/Counter Control Register

Controla el modo de comparación y la activación de señales PWM.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 50

Bit7,6,5,4: Compare output mode Fast PWM para canal A y B. Establece el modo de comparación en OC1A/B.

COM1A1/

COM1B1

COM1A1/

COM1B1

Descripción

0 0 OC1A/OC1B desconectados.

0 1 El valor de comparación conmuta la línea 0C1x

1 0 El valor de comparación pone a cero la línea 0C1x

1 1 El valor de comparación pone a uno la línea 0C1x

Bit1,0: WGM11, WGM10

Una vez activado el modo PWM mediante WGM13 en TCCR1B controla la resolución del PWM.

TCCR1A=0xA2= 1010 0010

Se activa el modo fast PWM y el valor de comparación pone a cero OC1A/B

TCCR1B: Timer/Counter Control Register

Controla la frecuencia de reloj que actúa sobre el Timer1.

Bits 4,3:WGM13, WGM12

WGM13 activa el modo PWM .

Bits 2,1,0: CS12, CS11, CS10: Igual timer 0.

Una vez seleccionado WGM13, WGM11=PWM11, WGM12=PWM12.

PWM11 PWM10 PWM resolution Timer Top Value

0 0 PWM Disabled

0 1 8- bit 255(0xff)

1 0 9- bit 511(0x1ff)

1 1 10 bit 1023(0x3ff)

TCCR1B=0x0A= 0000 1010 CK/8=2000,000 kHz y se activa el modo PWM

Dado que hemos seleccionado 9-bit, el topcount es 511.

Prescaler: Determinado por CS12, CS11, CS10. CK/8

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 51

HzMHz

topcountprescalerkSystemcloc

f PWM 195651128

162

=××

=××

=

DDRD: Data Direction Register D

Funciones alternas del puerto D: PD5 es OC1A

DDRD=0x20=0010 0000; // activa como salida OC1A

DDRE: Data Direction Register E

Funciones alternas del puerto E: ED2 es OC1B

DDRE=0x04=0000 0100; // aciva como salida OC1B

Estructura del programa:

El programa principal inicia los registros y entra en el bucle principal donde inicia las salidas OC1A y OC1B.

Programa: #include <mega8515.h>

void main(void)

// Declare your local variables here

float error=0;

unsigned int PWM_ant;

// Port D initialization

PORTD=0x00;

DDRD=0x20; // aciva como salida OC1A

// Port E initialization

PORTE=0x00;

DDRE=0x04; // aciva como salida OC1B

0CR1A= 250; //Aprox. 50% del duty cycle

0CR1B=25; // Aprox. 5% del duty cycle

while (1);

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 52

4.3.3 Resultados

Los resultados obtenidos para 0CR1A=250, 0CR1B=25, con resolucion de 511:

En la fotografía se ve como 0CR1A es la mitad del ciclo , y OCR1B es un 5%.

4.4 Comunicación Microcontrolador-PC Hyperterminal

Para realizar la comunicación entre el microcontrolador y el PC se ha utilizado el puerto serie de este conectándolo a la USART del microcontrolador mediante un conector DB9 hembra y un módulo MAX232 que convierte las señales TTL del micro a RS232 usadas por el PC.

4.4.1 Hardware

Basta con añadir la comunicación serie al modelo básico.

VCC

R4

R5

+C322pF

+ C422pF

VCC

U1

ATmega8515-DIP

PB0/OC0/T01

PB1/OC2/T12

PB2/RXD1/AIN03

PB3/TXD1/AIN1)4

PB4/SS5

PB5/MOSI6

PB6/MISO7

PB7/SCK8

/RESET9

PD0/RXD010

PD1/TXD011

PD2/INT012

PD3/INT113

PD4/TOSC114

PD5/TOSC2/OC1A15

PD6//WR16

PD7//RD17

XTAL218

XTAL119

GND20

VCC40

PA0/AD039

PA1/AD138

PA2/AD237

PA3/AD336

PA4/AD435

PA5/AD534

PA6/AD633

PA7/AD732

PC0/A821PC1/A922PC2/A1023PC3/A1124PC4/A1225PC5/A1326PC6/A1427PC7/A1528PE2/OC1B29PE1/ALE30PE0/ICP/INT231

LED

LED

Y116MHz

+ C1O,1u

U14

ALIMENTACION +5V

11

22

+C5

1u

+

C6

1u

+

C71u

+ C81u

+

C91u

U5

MAX232

C1+1

V+2

C1-3

C2+4

C2-5

V-6

T2OUT7

R2IN8

VCC16

GND15

T1OUT14

R1IN13

R1OUT12

T1IN11

T2IN10

R2OUT9

U6

DB9S

FG1

Rx2

Tx3

DTR4

GND5

DSR6

RTS7

CTS8

RI9

VCC

Comunicación PC- Micro

4.4.2 Software

4.4.2.1 Serie prueba:

El programa utilizado en el PC es el HyperTerminal de Windows.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 53

Para comprobar que la comunicación se realiza correctamente se ha realizado un programa de prueba. En el programa se reciben datos del teclado y se presentan por pantalla.

En él se revisa un registro, por lo que no hace falta interrupciones.

Líneas de código:

No es necesario realizar interrupciones basta con revisar si el registro se ha llenado. if (UCSRA & 0x80) // Si llega un dato a 9

Configuración del microcontrolador:

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud rate: 9600

UCSRA: USART Control and Status Register A

UCSRA=0x00;

UCSRB: USART Control and Status Register B

Bit 4: RXEN Habilita la recepción de datos.

Bit 3: TXEN Habilita la transmisión de datos.

UCSRB=0x18=0001 1000

UCSRC: USART Control and Status Register C

Bit 7: URSEL selecciona entre acceder al registro UCSRC y UBRRH. Si esta a uno USCRC.

Bit 6: UMSEL selecciona transmisión asíncrona 0, o síncrona 1.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 54

Bit 5,4: UPM1, UPM2 Modo paridad.

UPM1 UPM2 Modo de paridad

0 0 Deshabilitado.

0 1 Reservado

1 0 Habilitado EVEN paridad

1 1 Habilitado ODD paridad

Bit 3: USBS Bit de selección de stop.

Selecciona el número de bits de parada insertado por el transmisor. USBS 0 1-bit. USBS 1 2-bit.

Bit 2, 1: UCSZ1, UCSZ0.

Combinado con el bit UCSZ2 situado en UCSRB selecciona el tamaño de los datos.

UCSZ2 UCSZ1 UCSZ0 Tamaño del carácter

0 0 0 5- bit

0 0 1 6-bit

0 1 0 7-bit

0 1 1 8-bit

1 0 0 Reservado

1 0 1 Reservado

1 1 0 Reservado

1 1 1 9-bit

Bit 0: UCPOL usado en modo síncrono

UCSRC=0x86=1000 0110;

Selecciona registro UCARC, paridad deshabilitada, tamaño de carácter de 8-bit.

UBRR: USART Baud Rate Register

Tasa de transmisión de datos.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 55

UBRRH se comparte con UCSRC

Bit 11,0: UBRR: registro de 12 bit que contiene el USART baud rate.

UBRRL=0x67= 51

6701031960016

161

16x

MHzbaudrateCK

UBRR ==−

×=−

×=

Estructura del programa:

En el programa principal se inician los registros y se entra en el bucle while en el que se chequea la recepción de datos presentándose estos por pantalla. Para ralentizar el proceso se usa la función wait (retraso).

Programa seriebi: #include <mega8515.h>

// Standard Input/Output functions

#include <stdio.h>

void wait(void)

unsigned int i,j;

for(i=0;i<1000;i++)

for(j=0;j<1000;j++);

void main(void)

// Declare your local variables here

char ch;

// Input/Output Ports initialization

PORTA=0x00;

DDRA=0x03;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 56

// USART Baud rate: 9600

UCSRA=0x00;

UCSRB=0x18;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x67;

PORTA.0=0;

while (1)

printf( "Nuevo Ciclo \n\r");

PORTA.1=PORTA.1^1;

if (UCSRA & 0x80) // Si llega un dato a 9

ch=UDR;

printf( "Recibido dato:%d \n\r",ch);

else

printf( "Esperando datos\n\r");

wait();

Configuración programa HyperTerminal:

Bits segundo: 9600

Bits datos:8

Paridad: No

Bits parada: 1

Control de flujo: Ninguno

Presentación de datos por pantalla:

En la imagen se ve como el programa recibe las letras a, b,c ,d , e... presentando su código ASCII

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 57

4.4.3 Comunicación Microcontrolador-PC Ventana Visual

El programa se ha realizado en Visual Basic 6.0 contando con bibliotecas de gráficos proporcionadas por Active X.

El programa permite variar la referencia del motor en grados y envía el dato a través del puerto serie. El programa también se encarga de recibir y almacenar los datos enviados por el microprocesador en cuanto a posición y él se encarga de grabar también los instantes de tiempo para realizar las gráficas de control que ejecuta en tiempo real.

El microcontrolador se encarga de recibir la referencia y de enviar la posición, lo cual hace con la misma programación que con el Hyperterminal.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 58

4.5 Circuito de Potencia

EL circuito de potencia seleccionado es un puente de transistores. El circuito de potencia está aislado del circuito de control mediante optoacopladores ya que el circuito de control trabaja a 5v y con baja intensidad y el circuito de potencia trabaja a 24v.

4.5.1 Estructura Puente

El esquema del puente de transistores es el de cuatro interruptores para conseguir el cambio del sentido de giro en el motor.

Para seleccionar los transistores de potencia se ha tenido en cuenta los requerimientos del motor DC en cuanto a potencia y la frecuencia de trabajo del pwm.

Motor DC:

IN=4A.

Frecuencia de trabajo del PWM: 1kHz

Con lo cual se necesita un transistor que soporte:

Icmax=8A.

Vce=50V

Zona de funcionamiento segura de los transistores:

Se comprueba que los transistores funcionan en la zona de operación segura.

Se han seleccionado los transistores:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 59

TABLA DE DIFERENTES TRANSISTORES

De la tabla se han seleccionado MJE2955T, MJE2955T debido a que cumplen las especificaciones.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 60

Característica Transistores MJE2955T, MJE2955T

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 61

4.5.2 Aislamiento

Para aislar el circuito de control del circuito de potencia se han utilizado cuatro optoacopladores.

Requerimiento para los Optoacopladores:

Frecuencia de trabajo 1kHz

Tabla optoacopladores

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 62

Se selecciona el modelo CNY17F1 por cumplir con las especificaciones y encontrarse en el comercio.

Características optoacoplador CNY17F1:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 63

4.5.3 Protección del circuito de potencia:

Para proteger los elementos del circuito de potencia frente a eventuales fallos se han colocado un fusible en cada una de las ramas del puente en H.

Para calcular el valor de los fusibles se ha tenido en cuenta la intensidad nominal de funcionamiento del motor.

AI N 9,4=

Por lo que se han seleccionado dos fusibles de 6A.

Se ha comprobado que el fusible resiste la intensidad de arranque del motor que es de 10A.

4.5.4 Disipadores

Para el cálculo de los radiadores necesarios se ha tenido en cuenta:

)( ajaj RRPTT θθ +×=−

Siendo:

CT j º150= = Temperatura de la unión

CTa º40= = Temperatura ambiente

WCR j /º66,1=θ = Resistencia térmica de la unión

aRθ = Resistencia térmica de la aleta

WP 4= = Potencia consumida por los transistores

Con lo que se obtiene:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 64

WCRP

TTR j

aja /º84,25=−

−= θθ

Lo cual se puede solucionar con pequeñas aletas individuales atornilladas a cada uno de los transistores de potencia, como se puede ver en el catálogo de la figura. Se selecciona el modelo 18202.

Catálogo de aletas:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 65

Al realizar el montaje y ponerlo en funcionamiento se comprueba que para una aplicación de control de brazo articulado no es necesario poner las aletas en los transistores, ya que el motor no funciona continuamente.

4.6 Sistema de control

El sistema funciona con un control realimentado en el que el PC transmite la referencia a seguir, el encoder lee la señal de salida del motor (posición) y la realimenta con lo que el microcontrolador calcula el error y actúa en función del tipo de control programado mandando una señal PWM al circuito de potencia el cual actúa sobre el motor.

Esquema de control:

Tipos de Controles que se van a implementar y características principales.

Controlador Proporcional:

La señal de actuación es proporcional al error.

( ) eKtu p ×=

u: señal de actuación

Kp: Constante proporcional a ajustar.

e: error

Controlador Proporcional Integral:

La señal de actuación es proporcional al error y a la integral del error.

( ) ( )dtteT

KeKtu

t

i

pp +×=

0

Para un control digital esto se puede escribir:

tmeKeKu ip ××+×= int

Control

Cto. ctrl

Actuador

Cto. Pot.

Sistema

Motor Ref

Sensor

Encoder

PCError

PWM

Salida

Posic.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 66

= tee

0int

eint: error integral

ki: constante integral a ajustar

tm: tiempo de muestreo

La componente integral elimina los errores en régimen permanente.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 67

5 MONTAJE FINAL

5.1 Esquema funcional

PC MicrocontroladorRef C.Potencia MotorSalida

Encoder

ESQUEMA FUNCIONAL

PWM

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 68

5.2 Disposición de componentes

5.3 Listado de componentes

5.3.1 Sistemas

Nº Denominación Cantidad

1 Motor Eléctrico Corriente continua Dunkermotoren GR63x55 1

2 Encoder Omrom E6B2 1

3 Sistema de poleas 1

4 Placa electrónica de control 1

5 Fuente de alimentación de 30v 1

6 PC 1

5.3.2 Placa electrónica de control

CIRCUITO DE CONTROL BASICO

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 69

Nº Denominación Cantidad

1 Microcontrolador ATMEL ATMEGA8515 PDIP 1

2 Zócalo micro 40 pines (rectangulares) PDIP DIL 1

3 Cristal 16 MHz 1

4 Condensadores 22pF 2

5 Condensador 0,1uF 1

6 Clema de conexión de conectores 1

MÓDULO ENCODER

Nº Denominación Cantidad

1 Conector 5 pines 1

2 Resistencias 1kΩ 3

+ RESET

Nº Denominación Cantidad

1 Pulsador 1

2 Condensador 0,1µF 1

+ SALIDAS LED

Nº Denominación Cantidad

1 Resistencias 330Ω 2

2 Leds 2

+ PUERTO SERIE

Nº Denominación Cantidad

1 MAX232 ECSE 1

2 Conector puerto serie DB9 hembra 1

3 Condensadores 1µF 5

+ PCB

Nº Denominación Cantidad

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 70

1 Placa positiva de doble cara. Medidas 180x100 1

CIRCUITO DE POTENCIA

Nº Denominación Cantidad

1 Optoacopladores CNY17-2 4

2 Clemas 2 conexiones 2

3 Resistencias 10KΩ 2

4 Resistencias 52Ω 2

5 Condensadores 2,2 µF 1

6 Condensadores 470 µF , 63v 1

7 Transistores BD239C 2

8 Transistores STM (MJE3055T) 4

9 Transistores STM (MJE2955T) 4

10 Radiadores 18202 8

11 Tornillos 8

12 Tuercas 8

13 Fusibles 6ª 2

14 Porta Fusibles 2

5.3.3 Sistema de poleas

Nº Denominación Cantidad

1 Poleas duraluminio 2

2 Correa de plástico 1

5.4 Hardware

5.4.1 Esquemáticos

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 71

5.4.1.1 Circuito de control

R11k

R21k

R31k

R4

R5

+ C20,1u

+C322pF

+ C422pF

+C5

1u

+

C6

1u

+

C71u

+ C81u

+

C91u

U1

ATmega8515-DIP

PB0/OC0/T01

PB1/OC2/T12

PB2/RXD1/AIN03

PB3/TXD1/AIN1)4

PB4/SS5

PB5/MOSI6

PB6/MISO7

PB7/SCK8

/RESET9

PD0/RXD010

PD1/TXD011

PD2/INT012

PD3/INT113

PD4/TOSC114

PD5/TOSC2/OC1A15

PD6//WR16

PD7//RD17

XTAL218

XTAL119

GND20

VCC40

PA0/AD039

PA1/AD138

PA2/AD237

PA3/AD336

PA4/AD435

PA5/AD534

PA6/AD633

PA7/AD732

PC0/A821PC1/A922PC2/A1023PC3/A1124PC4/A1225PC5/A1326PC6/A1427PC7/A1528PE2/OC1B29PE1/ALE30PE0/ICP/INT231

VCC

D1 LED

D2LED

Y116MHz

VCC

U5

MAX232

C1+1

V+2

C1-3

C2+4

C2-5

V-6

T2OUT7

R2IN8

VCC16

GND15

T1OUT14

R1IN13

R1OUT12

T1IN11

T2IN10

R2OUT9

U6

DB9S

FG1

Rx2

Tx3

DTR4

GND5

DSR6

RTS7

CTS8

RI9

U7

RESET

1

2 4

3

Alimentacion-AzulTierra- MarronSeñal A- NegroSeñal B- BlancoSeñal Z- Naranja

VCCVCC

+ C1O,1u

U14

ALIMENTACION +5V

11

22

J1

ENCODER

12345

OC1B

OC1A

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 72

5.4.1.2 Circuito de Potencia

U13ALIMENTACION 24V

11

22

R7 52

R852

R9 10k

R10 10K

+ C10470u

+C11

2,2u

Q1BC239

Q2BC239

Q3MJE3055T

Q4MJE3055T

Q5MJE3055T

Q8MJE2955T

Q9MJE2955T

Q10MJE2955T

F1

FUSEHOLDERF2

FUSEHOLDER

U8

CNY17

1 6

2

5

4

U9

CNY17

1 6

2

5

4

U10

CNY17

16

2

5

4

U11

CNY17

16

2

5

4

VCC

VCC

OC1B

OC1A

U12MOTOR1

1

22

Q7MJE2955T

Q6MJE3055T

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 73

5.4.2 PCB: placa de circuito impreso

Para realizar la placa de circuito impreso se realiza el proceso necesario:

Realización de esquemáticos. Disposición de las Huellas de los componentes. Grosor de las pistas. Rutado de las pistas. En este paso se comprueba que es necesario realizar pistas en las dos caras. Rutado en dos caras. Plano de masas.

5.4.2.1 Disposición de las Huellas de los componentes:

Se ha realizado de manera que las pistas fueran lo mas corta posible así como respetando el equilibrio y la armonía en la disposición de los componentes.

5.4.2.2 Rutado de las pistas en dos caras:

Para ello se ha evitado que el programa rute pistas en la cara superior en los integrados y en el conector DB9 para facilitar la soldadura de los componentes. Esto se ha hecho mediante las zonas de bloqueo.

Grosor de las pistas:

Pistas de control: 1,6mm

Pistas de potencia: 3,2mm

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 74

5.4.2.3 Plano de masas:

Para mejorar el funcionamiento del circuito se crea un plano de masas.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 75

5.4.2.4 Pistas cara de los componentes:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 76

5.4.2.5 Pistas cara de las pistas

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 77

5.4.2.6 Placa cara de las pistas

5.4.2.7 Placa cara de los componentes

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 78

5.4.2.8 Placa con los componentes:

5.5 Planos mecánicos

Polea Motor

Material: Duraluminio

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 79

Polea Encoder

Material: Duraluminio

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 80

5.6 Software

Se ha incorporado todos los bloques de los programas desarrollados y la configuración de todos los puertos y modos de funcionamiento.

Estructura:

El programa funciona con dos tipos de interrupciones una por temporizador que se utiliza para el bucle de control. Y dos interrupciones externas que reciben las señales A y Z del encoder.

Programa: #include <mega8515.h>

#include <stdio.h> // Standard Input/Output functions

long int cont=0; // Variable que almacena los pulsos

int cont_pos=0; // Variable que almacena los pulsos se resetea al paso por ceroº

bit A; // Vble almacena el estado de la salida A del encoder

bit B; // Vble almacena el estado de la salida B del encoder

float P=0; // Vble que almacena la posición

int esc=0; // Contador comunicación de escritura

int escribe=0; // Vble comunicación de escritura

int ref=0; // vble que almacena la referencia a seguir

float kp=0.075; // Constante del control proporcional

float ki=0.030; // Constante del control integral

float kd=0.001; // Constante del control integral

float e=0; // Vble que almacena el error

float eint=0; // Integral del error

float e_ant=0;

float u=0; // actuación del sistema

// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void)

A=PINB.0; // Lee PINB 0 y le asigna el valor a la vble A

B=PINB.1; // Lee PINB 1 y le asigna el valor a la vble B

if (A==1 && B==0 ) // Señal es un flanco de subida y Sentido de giro horario

cont=cont+1;

cont_pos=cont_pos+1;

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 81

if (A==0 && B==0) // La señal es un flanco de bajada y Sentido de giro antihorario

cont=cont-1;

cont_pos=cont_pos-1;

// External Interrupt 1 service routine

interrupt [EXT_INT1] void ext_int1_isr(void)

long int cont_redondeado;

float cont_decimal;

cont_pos=0;

cont_redondeado=((int)(cont/2000)); // resetea el contador

cont_decimal= cont/2000.0-cont_redondeado;

cont= cont_redondeado*2000;

if(cont_decimal>0.5) cont=cont+2000;

if(cont_decimal<-0.5) cont=cont-2000;

// Timer 0 overflow interrupt service routine

interrupt [TIM0_OVF] void timer0_ovf_isr(void)

TCNT0=6; // 1/15625= 64us *250= 0.016s

P=cont*(360/2000.0); // Posición en º

if (++esc==31) // 0.016*15=Cada 0,25s

esc=0;

escribe=1;

// Control motor

e=P-ref;

eint=eint+e;

u=Señal de control;

if (u>0)

OCR1A=u;

OCR1B=0;

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 82

if (u<0)

OCR1B=-u;

OCR1A=0;

if (u==0)

OCR1A=0;

OCR1B=0;

e_ant=e;

void main(void)

char cont_poschar=0;

char angulorecibido=0;

int angulogrados; // vble que almacena la referencia a seguir

// Input/Output Ports initialization

// Port A initialization

// Func0=Out Func1=Out Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=0 State1=0 State2=T State3=T State4=T State5=T State6=T State7=T

PORTA=0x00;

DDRA=0x03;

// Port B initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T

PORTB=0x00;

DDRB=0x00;

// Port C initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T

PORTC=0x00;

DDRC=0x00;

// Port D initialization

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 83

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=Out Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=0 State6=T State7=T

PORTD=0x00;

DDRD=0x20;

// Port E initialization

// Func0=In Func1=In Func2=Out

// State0=T State1=T State2=0

PORTE=0x00;

DDRE=0x04;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: 15,625 kHz

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x05;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: 2000,000 kHz

// Mode: Fast PWM top=01FFh

// OC1A output: Non-Inv.

// OC1B output: Non-Inv.

// Noise Canceler: Off

// Input Capture on Falling Edge

TCCR1A=0xA2;

TCCR1B=0x0A;

TCNT1H=0x00;

TCNT1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// External Interrupt(s) initialization

// INT0: On

// INT0 Mode: Any change

// INT1: On

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 84

// INT1 Mode: Any change

// INT2: Off

GICR|=0xC0;

MCUCR=0x05;

EMCUCR=0x00;

GIFR=0xC0;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x02;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud rate: 9600

UCSRA=0x00;

UCSRB=0x18;

UCSRC=0x86;

UBRRH=0x00;

UBRRL=0x67;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

// Analog Comparator Output: Off

ACSR=0x80;

// Global enable interrupts

#asm("sei")

PORTA.0=0;

while (1)

if (escribe==1)

PORTA.1=PORTA.1^1;

escribe=0;

cont_poschar=(255/2000.0)*cont_pos;

printf( "%d", cont_poschar);

putchar('\n');

putchar('\r');

if (UCSRA & 0x80) // Si llega un dato a 9

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 85

angulorecibido=UDR;

angulogrados=(angulorecibido/255.0)*360;

ref=angulogrados;

Comentarios sobre el programa:

Para evitar que el motor al sobre oscilar continuara dando vueltas se ha hecho que la posición se mida de forma absoluta pero actualizando el valor al paso por cero de forma que si se pierde algún pulso estos errores no se acumulen con el paso de las vueltas. Dado que no se dispone de todas las funciones del ANSI-C esto se ha escrito de la forma: long int cont_redondeado;

float cont_decimal;

cont_pos=0;

cont_redondeado=((int)(cont/2000)); // resetea el contador

cont_decimal= cont/2000.0-cont_redondeado;

cont= cont_redondeado*2000;

if(cont_decimal>0.5) cont=cont+2000;

if(cont_decimal<-0.5) cont=cont-2000;

5.7 Algoritmos de control

Para que el microcontrolador realice el control del motor hace falta programar un bucle de control con la siguiente estructura:

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 86

Para lo cual es necesario un temporizador que regularice el ciclo.

Leer la posición del encoder.

Leer la referencia asignada desde el PC.

Calcular el error.

Calcular el tiempo transcurrido por si han ocurrido interrupciones más prioritarias, como puede ser la señal del encoder.

Calcular la Actuación.

Enviar la señal de actuación.

Actualizar las variables.

5.7.1 Control proporcional

La señal de control es:

u=(kp*e)*(511/360);

e: error

kp: Constante proporcional a ajustar.

Esperar Tiempo de muestreo

Leer referencia, posicion y velocidad

Calcular error

Calcular tiempo transcurrido

Actuación

Actualizar Variables

BUCLE DE CONTROL

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 87

(511/360): Dado que el error puede variar entre 0 y 360 y la actuación del pwm entre 0 y 511, este factor de multiplicación permite que cuando el error sea máximo la actuación sea igual a uno. Aunque esto se modifica con la constante proporcional.

5.7.2 Control Proporcional Integral

La señal de control es:

u=((kp*(e)+ki*(eint)*tm))*(511/360) ;

eint: error integral

tm: tiempo de muestreo

ki: Constante integral a ajustar

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 88

6 PRUEBAS Y RESULTADOS.

Se ha probado con dos tipos de controladores Proporcional y Proporcionar Integral.

Primero se ha ajustado el control proporcional hasta obtener unos valores satisfactorios.

Luego partiendo del valor óptimo se ha ajustado la constante integral, modificando también a la baja la constante proporcional.

6.1 Control Proporcional

En el control proporcional se aprecia la fricción estática del motor impidiendo que el error en regimen permanente sea cero.

Se ve como en la primera prueba tenemos un control rápido y que sobrepasa la referencia.

En la segunda prueba la constante es demasiado baja y no llega a la referencia.

Se ha seguido cambiando los valores hasta llegar a la sobreoscilación.

Se puede apreciar como el sistema es bastante sensible cambiando gradualmente su comportamiento para pequeños cambios de la constante proporcional.

PRUEBA 1

KP=0.075 REF=0, 90, 180, 270, 180, 90

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 89

PRUEBA 2

KP=0.045 REF=0, 90, 180, 270, 180, 90

PRUEBA 3

KP=0.1 REF=0, 90, 180, 270, 180, 90

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 90

PRUEBA 4

KP=0.125 REF=0, 90, 180, 270, 360,0

PRUEBA 5

KP=0.15 REF=0, 90,

6.2 Control Proporcional-Integral

Se aprecia como al incluir el termino integral se corrigen los errores en régimen permanente.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 91

PRUEBA 1

KP=0.10 KI=0.007 REF=0, 90, 180, 270, 180, 90

PRUEBA 2

KP=0.1 Ki=0.035 REF=0, 90, 180, 270, 180, 90

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 92

PRUEBA 3

KP=0.1 Ki= 0.052 REF=0, 90, 180, 270, 180, 90

PRUEBA 4

KP=0.075 Ki= 0.025 REF=0, 90, 180, 270, 180, 90

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 93

7 CONCLUSIONES Y DESARROLLOS FUTUROS

7.1 Conclusiones

Una de las conclusiones sacadas al realizar el proyecto es que éste es muy completo tocando gran cantidad de temas, con lo que ha servido de herramienta para desarrollar gran parte de los conocimientos adquiridos en la carrera. Ésta precisamente es una de las dificultades del proyecto.

Temas tocados por el proyecto

• Programación de microcontroladores.

• Programación en Lenguaje C.

• Uso de compiladores.

• Comunicación microcontrolador PC mediante puerto serie.

• Programas de comunicación en PC.

• Uso de encoder y programación del microcontrolador para lectura de éste.

• Circuito de potencia mediante transistores aislados mediante optoacopladores.

• Diseño y fabricación de circuitos electrónicos.

• Diseño y fabricación de circuito impreso.

• Integración de sistemas.

• Programación de control de posición P, PI.

Limitaciones del proyecto:

• Máxima velocidad angular.

• Errores en la conversión de tipos.

• Velocidad de envío de datos.

• Puesta a cero del encoder.

Máxima velocidad angular que es capaz de controlar el micro: el sistema funciona correctamente para controlar un brazo articulado pero no está capacitado para controlar un motor en velocidad ya que el microcontrolador se desborda. Sería necesario un motor que funcionase a mayor frecuencia. Hay que tener en cuenta que el encoder genera 2000 interrupciones por revolución.

Errores en la conversión de tipos: al enviar y recibir sólo un byte por el puerto serie se cometen errores significativos. Esto se podría solucionar identificando diferentes tipos de datos en el envío de la información por parte del microcontrolador, con lo que podríamos codificar los dígitos con mas de 8 bits. Hay que tener en cuenta que esto reduciría la velocidad de envío de datos al ocupar durante más tiempo el micro con el puerto serie.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 94

Envío de datos a velocidad insuficiente. Por lo que no tenemos una representación exacta de lo que está pasando. Habría que modificar también el programa en Visual Basic para recepcionar estos datos.

Puesta a cero del encoder: el microcontrolador al iniciarse tiene el contaador del encoder a cero por lo que debemos colocar éste en esa posición antes de iniciar el sistema. Si no es así se produce un salto al paso por cero.

7.2 Desarrollos futuros

Conectividad Wireless:

Una de los posibles desarrollos del proyecto es incorporar comunicación inalámbrica. Opciones:

• Bluetooth

• Wifi

• Radiofrecuencia

Otro de los posibles desarrollos del proyecto es implementar el control mediante Real-Time Workshop (RTW):

RTW es una herramienta de Matlab que facilita el control en tiempo real desde Simulink acortando el ciclo de desarrollo de del software de control y permitiendo hacer énfasis en el diseño.

Permite al desarrollador concentrarse en aspectos de modelado y diseño matemático en lugar de pensar en los detalles de programación.

El modelo matemático utiliza herramientas gráficas de alto nivel para representar los sistemas, tales como diagramas de bloques y diagramas de estado. Facilita un entorno integrado de desarrollo para el diseño basado en el modelo. Usando estas herramientas se elimina el proceso de escribir código software de manera manual.

RTW permite generar código portable o un programa ejecutable desde un diagrama de Simulink a diferentes plataformas y lenguajes (DOS, C, Ada...)

Para ello hay que realizar un modelo SIMULINK del controlador que aplicándole RTW nos dará como resultado un programa en C de Control. Hay que preparar una plantilla que adecua el código generado por RTW a Atmel.

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 95

8 BIBLIOGRAFÍA, PROGRAMAS E INTERNET:

8.1 Bibliografía

Titulo: Embedded C and the Atmel AVR

Autor: Richard Barnett.

Titulo: Lenguaje C: Herramienta de Ingeniería

Autor: Fernando Castaño

Titulo: El lenguaje de programación C

Autores: Kernighan- Ritchie.

Título: Control

Autor: Ogata

Título:Principios de Electrónica

Autor: Malvino

Título: Introduction to Control System Technology

Autor: Robert N. Bateson

8.2 Programas utilizados

Compiladores: Codevision, ICC, IAR, Turbo C

Debugger: AVR Studio

Esquemáticos: Orcad Capture

Lay Out: Orcad Lay-Out

Visual Basic 6.0

Active Dx

8.3 Páginas de Internet

www.atmel.com Portal de la empresa que fabrica los microcontroladores facilita: datasheets, aplication note…

www.avrfreaks.net Novedades, foros y todo tipo de información sobre los microcontroladores

www.omron.com Portal del fabricante del encoder

www.mouser.com Componentes de electrónica de potencia

www.dunkermotoren.de Portal del fabricante del motor DC

www.maxim.com Portal del fabricante del conversor de señal max232

www.imagecraft.com Portal del compilador imagecraft

Control de articulación mediante PWM y sistemas embebidos IAEI

José Pujol Pérez Página 96

http://infotech.ir.ro Portal del compilador Codevision

8.4 Notas

Hay detalles que facilitan la realizacion del proyecto como son:

Para trabajar montar el microprocesador en un doble encapsulado de tipo torneado- rectangular. Uno va unido al micro y otro unido a la placa. Para así evitar que los pines se doblen. Hay que tener en cuenta que durante el proyecto se está cambiando continuamente el micro de la placa programadora a la STK500.

Para sacar el micro usar un destornillador plano.

Como experiencia personal yo recomiendo hacer la PCB tan pronto como se pueda, los cables de las placas de prototipos dan muchos problemas debido a que al manipular la placa se sueltan ocasionando perdidas de tiempo hasta encontrar el dichoso cable.

Otro consejo para novatos como yo, es que no esperes que nada funcione a la primera, intervienen tantas variables que casi siempre hay algún error.

Ah, desconfía de la instrumentación del laboratorio, osciloscopio, fuentes de alimentación, y a veces hasta de que esté el polímetro.