Introducción: Bascom y AVR

Transcription

Introducción: Bascom y AVR
Octavo Electrónica 2009 – 2010
Universidad Técnica de Ambato
Facultad de Ingeniería en
FISEI
Sistemas Electrónica e Industrial
Octavo Electrónica 2009 – 2010
FISEI - UTA
TABLA DE CONTENIDOS
INSTALACIÓN
Instalación de Bascom ……………………………………………………………... 1
INTRODUCCIÓN A BASCOM
Bascom ……………………………………………………………………………... 6
AVR ………………………………………………………………………………… 7
Qué es lo que usted necesita para empezar ……………………………………… 7
Su Pc ………………………………………………………………………………... 7
Construir (o comprar) un "programador" ……………………………………... 8
EL SOFTWARE DE PROGRAMACIÓN
Obtener TWinAVR. ………………………………………………………………. 9
Obtener Userport …………………………………………………………………. 11
Configurar TWinAVR Bascom …………………………………………………. 12
Como usar Bascom ……………………………………………………………….. 13
Programa básico para hacer parpadear un led con intervalos de 1 segundo .. 18
Un semáforo de dos intersecciones ……………………………………………… 19
Juego de luces para discoteca …………………………………………………… 21
Ejercicio con la instrucción FOR NEXT ……………………………………….. 23
LAS VARIABLES BIT, BYTE Y WORD ……………………………………… 23
Luces del auto fantástico ………………………………………………………… 24
Ejercicios con pulsadores ……………………………………………………….. 25
La declaración IF… THEN …………………………………………………….. 25
FISEI
Contador binario con pulsador antirrebote …………………………………… 27
Led intermitente de velocidad variable ………………………………………… 29
Manejo de un display de 7 segmentos con el ci.7447 ………………………….. 30
Octavo Electrónica 2009 – 2010
FISEI - UTA
Un contador decimal de un digito con el ci 7447 y un pulsador ……………. 30
Manejo de un display de 7 segmentos sin el ci.7447 …………………………. 31
Declaración LOOKUP ………………………………………………………… 32
Manejo de 4 display de7 segmentos con el ci.7447 ………………………….. 33
Contador decimal de 4 digitos con el CI.7447 ………………………………… 34
Manejo de 4 displays de 7 segmentos sin el ci.7447 (rotulación) …………… 36
Manejo de 4 displays con rotulo en movimiento …………………………….. 37
Manejo de un modulo lcd ……………………………………………………… 38
Defina sus propios personajes lcd …………………………………………….. 45
Contador de pulsos con lcd ……………………………………………………. 47
Generación de sonido …………………………………………………………. 49
Una sirena policial …………………………………………………………….. 50
Generación de un timbre de teléfono celular ……………………………….. 51
Llamada telefónica DTMF …………………………………………………… 51
La declaración DTMFOUT …………………………………………………... 52
Lectura de un teclado de 16 pulsadores con display ded 7 segmentos ……. 54
Cerradura electrónica con clave en memoria flash ……………………….. 57
Cerradura electrónica con clave en memoria ram y cambio de clave …… 60
Cerradura electrónica con clave en memoria eeprom y cambio de clave .. 62
La declaración WRITEEEPROM y READEEPROM ……………………... 62
MOTORES PASO A PASO
Que es un motor Paso a paso ………………………………………………… 65
FISEI
Motores paso a paso bipolares ………………………………………………. 65
Motores paso a paso unipolares ……………………………………………… 67
Secuencia del circuito de control …………………………………………….. 69
Octavo Electrónica 2009 – 2010
FISEI - UTA
Manejo de un motor paso a paso en secuencia wave drive ………….……. 70
Manejo de un motor paso a paso en secuencia full step ……………..……. 71
Manejo de un motor paso a paso en secuencia half step …….………….… 71
COMUNICACIÓN
Que es la comunicación serial? …………………………………………..… 72
Modos de transmisión de datos ……………………………………... 73
Comunicación serial avr a pc …………………………………………..….. 74
Comunicación serial pc a avr …………………….……………………..…. 76
Comunicación i²c ……………..………………………………………….….. 77
Comunicación i²c con una memoria serial 24l04b …………………….…. 79
Interrupciones ………………………………………………………….....…. 82
SLEEP Y WAKE-UP, WATCH DOG …………………………….……….. 84
Circuito programador de AVR ……………………………………….…… 86
FISEI
Datashteets ……………………………………………………………….. 89 - 123
Octavo Electrónica 2009 – 2010
FISEI - UTA
FISEI
Octavo Electrónica 2009 – 2010
FISEI - UTA
FISEI
Octavo Electrónica 2009 – 2010
FISEI - UTA
INSTALACIÓN
INSTALACIÓN DE BASCOM
Después de que usted ha descargado el archivo ZIP que usted necesita, debe ABRIR el
archivo. En Windows XP, para la versión de la DEMOSTRACIÓN, corra los
setupdemo.exe. (http://www.atmel.com : (http://www.ckuehnel.ch)
Click en el botón Next para seguir la instalación.
FISEI
Aparecerá la ventana de información de la licencia.
Octavo Electrónica 2009 – 2010
FISEI - UTA
1
Leer las instrucciones, selecciones 'I accept the agreement' y presione el botón NEXT.
La ventana siguiente se mostrará
Lea la información adicional y presiones el botón NEXT
Ahora la próxima pantalla aparecerá:
FISEI
Usted puede seleccionar la direccion y camino dónde le gusta que BASCOM sea
instalado. Usted puede también acepte el valor predefinido que es
C:\Archivo de programas\MCS Electronics\BASCOM-AVR
Cuando tu termines click en botón NEXT para continuar
Octavo Electrónica 2009 – 2010
FISEI - UTA
2
Cuando el directorio existe, porque usted instala una más nueva versión, usted
conseguirá una advertencia.
En caso de la advertencia, selecciones Yes.
Tú observaras la siguiente ventana.
Usted puede escoger crear en un nuevo Grupo del Programa llamdo 'BASCOM-AVR', o
usted pueda modificar el nombre, o instale en un Grupo del Programa existente,
presione el boton Next después de que usted ha hecho su opción
FISEI
Ahora el archivo esta siendo instalado.
3
Octavo Electrónica 2009 – 2010
FISEI - UTA
Después de que los archivos principales se instalan, algunos archivos
adicionales se instalarán.
Cuando la instalación está lista usted verá la última pantalla
FISEI
Usted tiene que reiniciar su computadora.
Octavo Electrónica 2009 – 2010
FISEI - UTA
4
La carpeta del programa BASCOM se crea:
FISEI
Usted puede ver los "Raed me" y archivos de la Licencia y usted puede
empezar BASCOMAVR.
Octavo Electrónica 2009 – 2010
FISEI - UTA
5
FISEI
Octavo Electrónica 2009 – 2010
FISEI - UTA
INTRODUCCIÓN: BASCOM Y AVR
BASCOM:
Medios básicos del compilador Bascom.
Bascom es desarrollado y vendido por MCS Electronics.
Bascom viene en tres variantes
Bascom-LT para microcontroladores Atmel AT89Cx051
Bascom-8051 de 8051 microcontroladores.
Bascom-AVR de microcontroladores Atmel AVR
Bascom es una aplicación para PC que le permitirá:
Escribir programas en Basic
Traducir estos programas en el PC para código maquina (un formato que el
controlador puede ejecutar AVR).
Simular el código compilado
El uso de programas externos de flash ("programa"), el código compilado en
microcontrolador de un AVR Atmel.
Lo bueno de Bascom es que se puede empezar con una versión libre Bascom, y
descargar el Bascom-AVR Demo zip-file), cuyo único límite es la 4k tamaño del código
generado (esto fue 2k hasta 2005 ). The obvious choice of AVR microcontroller would
then be one of the (2k flash) ATTiny models or the much-used (but now obsolete)
AT90S2313 which will let you get acquainted with Bascom and AVR microcontrollers.
La elección obvia de microcontrolador AVR sería uno de los flash (2K) modelos
ATTINY o el tan usado (pero ahora obsoleto) AT90S2313 que le permitirá
familiarizarse con Bascom y microcontroladores AVR.
FISEI
Bascom permite crear rápidamente prototipos porque se ha incorporado soporte para
casi todos los microcontroladores AVR características tales como:
Contadores / temporizadores
UART
ADC
PWM
I2C
Además de que soporta gran cantidad de periféricos, tales como:
Botones
LCD de alfanuméricos
LCD Gráficos
PS / 2 para teclado
Control remoto por infrarrojos
Es sobre todo este apoyo que hace que el uso de Bascom atractivo en términos de
tiempo ahorrado, mientras que el desarrollo de una aplicación.
Octavo Electrónica 2009 – 2010
FISEI - UTA
6
AVR:
AVR es una familia de microcontroladores de 8 bits con una amplia gama de variantes
diferentes en:
Tamaño del programa de la memoria (flash)
Tamaño de la memoria EEPROM
Número de pines I / O
Número de servicios tales como características de los chips UART y ADC
Paquete de formularios
El más pequeño es el microcontrolador ATTINY11 con 1k flash y 6 pines I / O. The
largest is the ATMEGA256x with 256k flash, 54 I/O pins and lots of on-chip features.
La más grande es la ATMEGA256x con 256K flash, 54 pines I / O y muchas de las
características del chip.
Todos los controladores tienen el AVR RISC mismo como conjunto de instrucciones,
que permite portar bastante fácil de los programas de Bascom entre los tipos de
microcontroladores. Que ejecutar una instrucción por ciclo de reloj haciéndolas
sensiblemente más rápido que el 8 bits comparables 4 ciclos de reloj por cada
instrucción de los controladores de Microchip PIC.
¿QUÉ ES LO QUE USTED NECESITA PARA EMPEZAR?
La siguiente lista es el mínimo que necesita para empezar con la primera solicitud:
Un PC con un puerto paralelo con Windows (95 y más).
Bascom instalado en su PC.
Un "programador", un dispositivo que carga el código que se compila por
Bascom en la memoria del programa del microcontrolador.
Una configuración de prueba con un microcontrolador.
SU PC
FISEI
Su PC debe ejecutar W95 o superior, consulte la página Bascom AVR para más
detalles. Si usted quiere construir su propio programador sencillo, el PC debe tener un
puerto paralelo o en serie. Si su PC funciona NT, 2000 o XP, acceso al puerto paralelo
requiere un pequeño programa independiente. Detalles de seguir adelante.
Octavo Electrónica 2009 – 2010
FISEI - UTA
7
Instalar Bascom
Comience con la descarga de la versión libre Bascom. Se limitará el tamaño de código
que puede compilar (traducir de base a código de máquina AVR) de 2k, pero le ayudará
a empezar con casi todos los aspectos importantes de Bascom y controladores AVR.
Ir a la Electrónica MCS, sitio web a continuación, seleccione Descargas y, a
continuación Bascom, a continuación, Bascom-AVR, y descargar el Bascom-AVR
Demo archivo ZIP. Descomprimir en un directorio temporal. A continuación, inicie el
programa de instalación ejecutable, que ahora debería estar en este directorio temporal.
Instale Bascom, usted puede elegir el directorio de instalación.
Cree un directorio Bascom de trabajo, por ejemplo: C: \ Yourname \ Bascom \
FISEI
Construir (o comprar) un "programador"
Aquí, un programador es un dispositivo para obtener el código Bascom compilado en la
memoria flash del microcontrolador AVR. La forma más fácil sería comprar un
programador. i elige la STK500 Atmel, se obtiene un programmerboard con un
controlador de AVR y algunos periféricos, tales como LED's. Esto le permite ponerse
en marcha inmediatamente. Sin embargo, la construcción de su propio programador es
fácil y barato.
Un programador muy básico es el basado en el SP12 trabajado por Roland Walter. Su
hardware del programador es controlado a través del puerto paralelo del PC con un
pequeño programa llamado TWinAVR. Usted debe descargarlo también. Descomprimir
TWinAVR a una ubicación conveniente en su PC. No se necesita configuración, puede
ejecutar TWinAVR.exe directamente desde el directorio de descarga
La versión de Roland es un programador en el que tienes que poner el microcontrolador
AVR en un zócalo, el programa, quite el microcontrolador y colocarlo en la
configuración del circuito. Lo hice un par de veces y consideró que sería posible
modificar su hardware de programación para que en la Programación del Sistema (ISP).
Para ello ISP, usted simplemente puede reservarse el microcontrolador pines que se
trate con la programación para este fin. Sin embargo, mientras esté conectado el
programador, estos pines no se puede utilizar para cualquier otro fin, puesto que podría
producirse un conflicto entre el programador, el microcontrolador y cualquier otra cosa
adjunta a estos pines. Esto no sería tanto un problema con microcontroladores grandes
con gran cantidad de pines I / O, pero en el AVR pequeños, sacrificando esos pines para
la programación externa a menudo no es posible. La solución es modificar el
programador de tal manera que las clavijas de programación sólo se conecta al
microcontrolador mientras que la programación está lugar. Para un buffer, he intentado
un 74HCT244 y 74HCT541. Los resultados de estos búferes pueden ser tri-dijo, lo que
significa que sus resultados se puede dejar aislados o "flotantes", evitando así problemas
con el hardware conectado a los pines de programación.
Este programador simple puede ser construido sobre un trozo de Vakelita..
Octavo Electrónica 2009 – 2010
FISEI - UTA
8
El software de programación
Obtener TWinAVR.
Este es el software que se comunica a través del hardware de programación se realizó
con el controlador de AVR. Les recomendamos que usen el TWinAVR hecho por
Ronald Walter. Ir a su página web, en la columna de la izquierda, seleccione
microcontrolador, seleccione Programador, lea el texto (que usted aprenderá algunas
TWinAVR alemán!) Y descargar.
TWinAVR de instalación
FISEI
TWinAVR tiene que ser configurado para usar el Vcc generados por algunos pines del
puerto paralelo para cambiar el buffer.
Octavo Electrónica 2009 – 2010
FISEI - UTA
9
Iniciar TWinAVR, haga clic en el logo de TWinAVR en la esquina superior izquierda,
haga clic en el Ajuste.
Se aparecerá la siguiente ventana, para configurar el software.
FISEI
En esta ventana desactive la casilla Vcc. Esto significa que sólo se genera Vcc
TWinAVR mientras está activo. Si a continuación, utilizar esta Vcc para cambiar el
buffer 74HCT244, el bufferports será aislado TWinAVR cuando no está activo, dando
lugar a "En la programación del sistema. Aproveche esta oportunidad para comprobar la
configuración en paralelo: si el puerto no está en el estándar de la dirección "y 378",
(comprobarlo en la BIOS del PC si es necesario) cambiar la configuración LPT en
consecuencia.
Octavo Electrónica 2009 – 2010
FISEI - UTA
10
Obtener Userport si es necesario
Si está utilizando Windows NT, 2000 o XP, TWinAVR no tendrán acceso directo al
puerto paralelo. Una solución es usar un programa piloto especial que proporciona
acceso directo. Uno de ellos es un programa de Userport. Debe ser instalado y la
configuración antes de utilizar TWinAVR. En primer lugar, Userport descarga.
Descomprima en un directorio, y Userport.sys copia de este directorio C: \ Windows \
System32 \ Drivers. Leer Userport.pdf. Userport.exe de inicio.
FISEI
La ventana principal muestra la configuración predeterminada. Asumiendo que su
puerto paralelo está en "y 378", sólo es necesario la primera entrada en la ventana de la
izquierda para permanecer. En la ventana izquierda, seleccione 3BC-3BF y 3E8-3FF y
haga clic en Eliminar. Repita este paso para todas las entradas en la ventana derecha.
Octavo Electrónica 2009 – 2010
FISEI - UTA
11
Lo que queda es 200-37F en la ventana izquierda. Click on Start. Haga clic en Iniciar.
Userport ahora activa la dirección seleccionada gama para usted y lo harán cada vez que
enciendes tu PC. Si necesita utilizar el puerto paralelo para otros fines, por ejemplo una
impresora, debe iniciar el programa de Userport y haga clic en Detener. El conductor
será cancelada.
Configurar TWinAVR Bascom
Bascom compila código básico en un "Bin'-archivo. Esta caja-archivo contiene las
instrucciones de AVR en el llamado código de máquina, lo que el controlador de AVR
puede ejecutar directamente. Usted puede utilizar un programador externo para escribir
esta caja de archivo en la memoria flash del AVR. El programador externo, a su vez, es
controlado a través de un programa separado como TWinAvr. TWinAvr le permite
seleccionar el archivo HEX que debe enviar al AVR. Sin embargo, es mucho más fácil
si Bascom directamente TWinAvr podría comenzar después de la compilación está
terminada y decirle que TWinAvr hex-archivo para su uso.
Esto se puede hacer en Bascom como sigue:
FISEI
Inicio Bascom, seleccione Opciones / Programador
Externo Seleccione 'programador' de la lista de los programadores
Seleccione la pestaña "Otros"
Entrar en el "programa" campo de la localización de su software de
programación, TWinAvr.exe en nuestro caso. Utilice el.
Introduzca en el campo "Parámetro ': (archivo)
Octavo Electrónica 2009 – 2010
FISEI - UTA
12
Esto le dice a Bascom para iniciar TWinAvr con el nombre de la bandeja de archivo, se
produce después de que la compilación fue exitosa:
A continuación, haga clic en Aceptar.
PROGRAMACIÓN BÁSICA PARA HACER PARPADEAR LEDs CON
INTERVALOS DE 1 SEGUNDO POR MEDIO DE TODO EL PUERTO B.
Este es el programa con el cual iniciaremos nuestro primeros pasos en el mundo de los
AVR, este programa te enseñara a configura los puertos de nuestro microcontrolador.
En primer lugar, configurar Bascom para iniciar TWinAvr con el nombre correcto de la
bandeja de archivo se produce después de una compilación exitosa.
A continuación, proceder como sigue
FISEI
Inicio Bascom
Seleccione Archivo / Nuevo
Octavo Electrónica 2009 – 2010
FISEI - UTA
13
En el textwindow que aparece, entrar en el programa de bases siguientes:
FISEI
“El atmega8 posee 8kb de memoria flash, 512 bytes eçde EEPOM, y 1KB de
SRAM, posee 2 timers, 2 de 8 bits y uno de 16 bits…Posee un reloj de tiempo real
(RTC) con oscilador externo.. y 6 canales de ADC… y por supuesto comunicación
serial…”
(A medida que escribe Bascom va a cambiar el texto del programa de color de acuerdo a
las palabras clave que reconoce).
En este simple de los programas, PORTB del AVR ATMEGA8 por primera vez
configurado para funcionar como una salida. PORTB Entonces se establece en el valor
decimal 255. Los ocho bits de PORTB se establece ahora en valor binario "uno". Tenga
en cuenta que sólo la parte inferior de siete bits están disponibles en el exterior como
alfileres PB0 hasta PB6. Si se conecta cualquiera de estos pines a un LED con un
resistor limitador de corriente a tierra, la corriente fluirá desde el AVR a los LED. El
LED está encendido. Después de esperar durante 1000 milisegundos, PORTB se
Octavo Electrónica 2009 – 2010
FISEI - UTA
14
establece en el valor decimal 0. Ahora, todos los pines se establecen en el valor binario
de "cero" y no pasará corriente del AVR a los LED. El LED está apagado. Después de
esperar otros 1000 milisegundos, se repite el ciclo. El resultado es que el LED
encenderse y apagarse.
Después de introducir el texto del programa, seleccione Archivo / Guardar como y
seleccione una ubicación y un nombre para el archivo. Supongamos que usted
seleccione 'ledflasher.bas' como un nombre de archivo. Como Bascom genera gran
cantidad de archivos después de una compilación, es una buena idea crear directorios
separados para cada proyecto Bascom que trabajar.
Bascom ahora se puede contar acerca de su configuración del controlador de AVR.
Seleccione Opciones / Compiler / Chip
FISEI
El chip está predeterminado a ATMEGA 8:
Octavo Electrónica 2009 – 2010
FISEI - UTA
15
Ahora, seleccione la pestaña de Comunicación:
Por defecto, la velocidad de reloj es de 4MHz, pero como usamos un cristal de 1MHz,
seleccione 1000000 de la lista de «frecuencia»
FISEI
Después se guarda el archivo, seleccione Program / Compile (F7).
Octavo Electrónica 2009 – 2010
FISEI - UTA
16
A continuación les dejo el circuito simulado, con el cual pueden ver funcionamiento de
nuestro primer programa creado.
Para simular necesitamos cualquier software dedicado a la electrónica que posea las
librerías de AVR, yo use el software Proteus, lo puedes bajar de www.4shared.com.
FISEI
Ahora vamos a aprender como configurar cada bit de los diferentes puertos como salida
o entrada, para ello vamos a realizar el siguiente ejemplo.
Octavo Electrónica 2009 – 2010
FISEI - UTA
17
FISEI
Octavo Electrónica 2009 – 2010
FISEI - UTA
PROGRAMA BÁSICO PARA HACER PARPADEAR UN
LED CON INTERVALOS DE 1 SEGUNDO.
Este proyecto es muy parecido al que lo vimos anteriormente, si usted no ha leído todo
el folleto, hágalo.
' Indico al compilador que micro voy a usar
$regfile = "m8def.dat"
' Cristal interno de 1MHz
$crystal = 1000000
'*******************************************************************
'*ENE STE EJEMPLO VAMOS A REALIZAR EL PARPADEO DE LOS LEDS... PERO VAMOS
'*VAMOS A VER COMO SE PUEDE CONFIGURAR BIT A BIT EL I/O DE UN PUERTO....
'*PARA ESTO VAMOS A USAR EL COMANDO DDR.... EL CUAL DEBE IR ACOMPAÑADO
DEL
'*COMANDO PORT......
'*ACA UNA BREVE DESCRIPCION DE ESTOS COMANDOS..
'*** DDBn PORTBn E/S Pull up
Comment
'*** 0
0 Entrada
No
Tercer estado (Alta impedancia)
'*** 0
1 Entrada
Yes
PBn
'*** 1
0 Salida
No
Push-Pull Salida en Cero
'*** 1
1 Salida
No
Push-Pull Salida en Uno
FISEI
'* DECIR BREVEMENTO QUE DEPENDIENDO DE LOS VALORES QUE DEMOS A ESTOS
PARAMETROS
'* OBTENDREMOS SALIDAS O ENTRADAS EN UN PUERTO...
'* PARA ESTE EJEMPLO VAMOS A CONFIGURAR BIT A BIT EL PORTB PARA QUE SEAN
SALIDAS EN 0
'* LOGICO
'* POR LO QUE LOS VALORES DEBEN SER DDRn 1 Y PORTn 0..
'* Configuro todo el puerto B.0 como salida
Ddrb.0 = 1
Portb.0 = 0
' Nombre de subrutina
Parpadear:
' Activar el puerto B.0
Portb.0 = 1
' Espero 1 segundo
Wait 1
' Apagar el puerto B.0
Portb.0 = 0
' Espero 1 segundo
Wait 1
' ir a la subrutina parpadear
Goto Parpadear
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
18
Una vez escrito el programa compilamos y grabamos el AVR, si no sabe como hacerlo
recordamos leer las páginas anteriores, no olvide dejar conectado como ilustra la figura
siguiente:
Una vez realizado este proyecto siga intentando con diferentes tiempos de Wait,
recuerde que son en segundos, pruebe Wait 3 verá que el parpadeo es mas lento, así
mismo ponga diferentes valores entre los 2 Wait, vera diferentes efectos. Si desea
tiempos mas pequeños debe usar Waitms, este se mide en milisegundos.
UN SEMAFORO DE DOS INTERSECCIONES.
Este es el ejemplo ideal para entender como asignar nombres a los diferentes bits de los
puertos, para ello usaremos un grupo de leds y manejaremos todo el puerto, existe otra
forma de realizar este proyecto, es controlando el puerto como un todo, para que
entiendan lo que digo, voy a realizar de las dos formas el programa.
FISEI
' Indico al compilador que micro voy a usar
$regfile = "m8def.dat"
' Cristal interno de 1MHz
$crystal = 1000000
' Configuro todo el puerto B.0 como salida
Config Portb = Output
' Nombre de subrutina
Semaforo:
Portb = 33
Wait 9
Portb = 34
Wait 3
Portb = 12
Wait 9
Portb = 20
Wait 3
Goto Semaforo
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
19
FISEI
Bien es momento de escribir el programa, empecemos de la forma que se maneja el
puerto completo, para esto debemos entender como trabaja los semáforos. Primero
nunca se encienden las luces del mismo color, es decir no puede estar en el un semáforo
verde y en el otro verde también existe un cambio de verde a amarillo mientras en el
otro semáforo sigue en rojo, en el momento que se pone en rojo el primer semáforo el
segundo salta de rojo a verde.
Por considerar que esta es una practica, pondremos tiempos estimados de cambio de
color, de verde a amarillo durante 9 segundos, de amarillo a rojo solo 3 segundos.
' Indico al compilador que micro voy a usar
$regfile = "m8def.dat"
' Cristal interno de 1MHz
$crystal = 1000000
' Configuro todo el puerto B.0 como salida
Config Portb = Output
' asigno nombres a los bit del puertoB
Verde2 Alias Pinb.0
Amarillo2 Alias Pinb.1
Rojo2 Alias Pinb.2
Verde1 Alias Pinb.3
Amarillo1 Alias Pinb.4
Rojo1 Alias Pinb.5
' Nombre de subrutina
Semaforo:
Rojo1 = 1 : Verde2 = 1
Wait 9
Verde2 = 0 : Amarillo2 = 1
Wait 3
Amarillo2 = 0
Rojo1 = 0
Verde1 = 1
Rojo2 = 1
Wait 9
Verde1 = 0 : Amarillo1 = 1
Wait 3
Goto Semaforo
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
20
Es esta otra manera de escribir el programa, noten que es más largo que el primer
programa, y además colocamos Alias a los diferentes bits del puerto B.
Rojo1 = 1
Verde1 = 1
Podemos escribirlo asi:
Rojo1 = 1 : Verde1 = 1
JUEGO DE LUCES PARA DISCOTECA
Este proyecto propone familiarizar aún más con el manejo de los puertos, esta vez
vamos a utilizar las 8 salidas del puerto B, se trata de una secuencia de luces que deben
encender de izquierda a derecha una tras otra con un intervalo de 200 mili segundos.
En la figura siguiente se muestra como conectar cada uno de los leds.
FISEI
A continuación, en el siguiente programa veremos una declaración nueva el GOSUB y
el RETURN, estos sirven para cuando tenemos muchas repeticiones de una línea o
grupo de líneas de programa, en nuestro caso el Wait, en vez de poner en cada cambio
de estado de las luces, lo agrupamos en una sola subrutina y lo llamaremos las veces
que queramos, la declaración RETURN lo envía de regreso a continuar después del
GOSUB que lo envió. Una de las ventajas mas importantes que tenemos es que ahorra
espacio en el AVR, y otra que si queremos cambiar el Wait por el de otro valor, basta
con cambiar una sola vez y el cambio se ejecuta para todos, lo que al contrario si no lo
utilizaremos el GOSUB y escribiríamos 30 Wait, deberíamos cambiarlo a los 30 Wait
por el de otro valor, un ejemplo sería:
Octavo Electrónica 2009 – 2010
FISEI - UTA
21
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb = Output
Discoteca:
Portb = 1
Gosub Pause
Portb = 2
Gosub Pause
Portb = 4
Gosub Pause
Portb = 8
Gosub Pause
Portb = 16
Gosub Pause
Portb = 32
Gosub Pause
Portb = 64
Gosub Pause
Portb = 128
Gosub Pause
Goto Discoteca
Pause:
Waitms 300
Return
End
Nota: La ubicación de la subrutina Pause, es importante, fíjense que se encuentra
después y fuera de las líneas principales de programación, si esta misma subrutina lo
colocáremos al principio del programa, de seguro se nos cuelga por que al encontrar el
RETURN simplemente no sabe a donde retornar ya que nadie lo ha enviado aún.
EJERCICIO CON LA INSTRUCCIÓN FOR NEXT
FISEI
Este proyecto es muy importante encenderlo, ya que el siguiente proyecto de luces de
auto fantástico utilizando la declaración FOR NEXT.
Esa declaración sirve para ejecutar un número n de veces una línea de programa o grupo
de líneas de programa, el siguiente proyecto pretende encender un led en el puerto B.0 5
veces con intervalo de medio segundo segundo, después debe detenerse por 2 segundos
y luego parpadear 3 veces mas, detenerse por 3 segundos y luego repetir nuevamente el
proceso, se puede utilizar el proto que se armo para las luces de discoteca ya que el
mismo nos servirá después para el siguiente proyecto el de las luces del auto fantástico,
FOR NEXT se utiliza de la siguiente manera:
Octavo Electrónica 2009 – 2010
FISEI - UTA
22
Dim Peter As Byte
FOR Peter = 1 to 5
NEXT
……..
que está
……..
NEXT
; Primero se crea y asigna un tamaño para la variable peter
; Ejecuta las siguientes instrucciones 5 veces hasta donde dice
; una vez concluido las repeticiones continúa con la declaración
; después del NEXT, peter debe ser creado como variable, es decir
; asignarle un espacio en la memoria en este caso para 5.
LAS VARIABLES BIT, BYTE Y WORD.
Estas son creadas para guardar datos en la memoria RAM (Random Access Memory) o
memoria de acceso casual, esta memoria trabaja únicamente mientras esté alimentado
el AVR, una vez que el AV R es desconectado, los datos de la memoria RAM se borran.
Dim Repe As Bit
; crea una variable y asigna un tamaño de un bit, es decir 0 o 1
Dim Repe As Byte ; crea una variable y asigna un tamaño de 8 bits, es decir 0 a 255
Dim Repe As Word ; crea una variable y asigna un tamaño de 2 bytes, es decir 0 a
65535
Para nuestro caso como queremos hacer 5 repeticiones, nos corresponde crear un BYTE
que nos permite almacenar un número hasta 255.
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb = Output
Led1 Alias Pinb.0
' creo una variable llamada Repe con
' longitud BYTE
Dim Repe As Byte
Programa:
' ciclo FOR
For Repe = 1 To 5
Led1 = 1
Waitms 500
Led1 = 0
Waitms 500
Next
Wait 2
For Repe = 1 To 5
Led1 = 1
Waitms 500
Led1 = 0
Waitms 500
Next
Wait 3
Goto Programa
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
23
LUCES DEL AUTO FANTÁSTICO (DESPLAZAMIENTOS)
Este proyecto es muy similar al de las luces para discoteca, con la diferencia de que este
se enciende de izquierda a derecha y luego de derecha a izquierda, pensaríamos que el
programa será el doble del tamaño que el que hicimos paira las luces de discoteca, pero
no es así, recuerde que existen varios caminos para llegar a un mismo objetivo, y este es
uno de ellos, esta vez utilizaremos los desplazamientos, que no son nada más que
recorrer un uno lógico a la izquierda o - Derecha de la salida de los puertos.
Los desplazamientos utiliza la multiplicación y la división, como sabemos el AVR
trabaja con el sistema binario, si tenemos una variable X con un valor inicial de 1
(%00000001) y lo Multiplicáramos por 2 . el resultado sería 2 (%00000010),y este a su
vez lo volveríamos a multiplicar por 2 el resultado sería 4 (%00000100), y así
sucesivamente hasta llegar a 128, en le en binario sería (% 10000000), veríamos que los
leds se enciende de la misma forma que las luces para discoteca, para hacer que las
luces se regresen hasta el puerto B.0 debemos dividir para 2, entonces 128 / 2 es igual a
64 (%01000000), como podemos ver ahora está regresando a su lugar de origen, los
desplazamientos se escribe de la siguiente manera:
Rotate Portb , Left ;desplaza a la izquierda un bit en el puerto
Rotate Portb , Right ;desplaza a la derecha un bit en el puerto
Entendido como funcionan los desplazamientos desarrollamos el siguiente programa:
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb = Output
' creo una variable llamada I con
' longitud BYTE
Dim I As Byte
Portb = 1
Programa:
' ciclo FOR
For I = 1 To 7
Rotate Portb , Left
Waitms 150
Next
For I = 1 To 7
Rotate Portb , Right
Waitms 150
Next
Return
FISEI
Goto Programa
End
Nota: No olvide cargar al Puerto con 1, porque si no lo hace significa que vale cero (0)
y esto multiplicado por 2 siempre dará cero, en consecuencia nunca veríamos el
desplazamiento.
Octavo Electrónica 2009 – 2010
FISEI - UTA
24
EJERCICIOS CON PULSADORES
Para esta practica debemos entender como funciona los pulsadores con el AVR, existe
básicamente 2 tipos de conexión para los pulsadores, el que siempre está en 1 lógico
(5V) y cuando es pulsado cambia a cero lógico (0V), y el que está en cero lógico y
cuando pulsamos para a uno lógico, los siguientes son los diagramas de conexión.
LA DECLARACION IF… THEN.
Esta sirve de condicionante, si es verdadera ejecuta la operación que sigue al THEN, y
si es falsa a la siguiente línea después del THEN, existen varias formas de aplicación.
IF porb.0 = 0 THEN Michu ; ir a Michu si la entrada Portb.0 es cero lógico
; ir a Gato si la entrada Portb.0 es uno lógico
IF porb.0 = 0 THEN
Porta.0 = 1
Wait 1
Porta.0 = 0
ENDIF
; Si la comparación es verdadera ejecuta todo el
; contenido que se encuentra entre el THEN y el
; END IF
FISEI
IF porb.0 = 1 THEN Gato
Octavo Electrónica 2009 – 2010
FISEI - UTA
25
IF porb.0 = 0 THEN
……….
ELSE
……….
ENDIF
; Si la comparación es verdadera ejecuta todo el
; contenido que se encuentra entre el THEN y el
; ELSE y si es falsa ejecuta el contenido entre
; ELSE y END IF
IF pato > 10 THEN Majo
; si la variable pato es mayor que 35 ejecuta Majo
El siguiente es el diagrama de conexión para esta práctica del pulsador:
Diagrama de conexión de un pulsador conectado en el puerto B0, de estado 1 lógico, en
el momento que es presionado este desvía la tensión hacia tierra, por lo que el AVR
detecta un cambio de estado a cero lógico, en ese instante se enciende el led.
FISEI
A continuación el programa en Basic para leer el estado de un pulsador:
Octavo Electrónica 2009 – 2010
FISEI - UTA
26
' Indico al compilador que micro voy a usar
$regfile = "m8def.dat"
' Cristal interno de 1MHz
$crystal = 1000000
'*******************************************************************
'*** ENE STE EJEMPLO VAMOS A REALIZAR EL PARPADEO DE LOS LEDS... PERO VAMOS
'*** VAMOS A VER COMO SE PUEDE CONFIGURAR BIT A BIT EL I/O DE UN PUERTO....
'*** PARA ESTO VAMOS A USAR EL COMANDO DDR.... EL CUAL DEBE IR ACOMPAÑADO DEL
'*** COMANDO PORT......
'*** ACA UNA BREVE DESCRIPCION DE ESTOS COMANDOS..
'*** DDBn PORTBn E/S Pull up
Comment
'*** 0
0 Entrada
No
Tercer estado (Alta impedancia)
'*** 0
1 Entrada
Yes
PBn
'*** 1
0 Salida
No
Push-Pull Salida en Cero
'*** 1
1 Salida
No
Push-Pull Salida en Uno
'*** DECIR BREVEMENTO QUE DEPENDIENDO DE LOS VALORES QUE DEMOS A ESTOS
'*** PARAMETROS OBTENDREMOS SALIDAS O ENTRADAS EN UN PUERTO...
'*** PARA ESTE EJEMPLO VAMOS A CONFIGURAR BIT A BIT EL PORTB PARA QUE
'*** SEAN SALIDAS EN 0 LOGICO
'*** POR LO QUE LOS VALORES DEBEN SER DDRn 1 Y PORTn 0..
' Configuro todo el puerto B.0 como entrada, con resistencia push pull
Ddrb.0 = 0
Portb.0 = 0
' Configuro todo el puerto C.0 como salida
Ddrc.0 = 1
Portc.0 = 0
Programa:
If Pinb.0 = 0 Then Goto Encender
Goto Programa
Encender:
Portc.0 = 1
Wait 3
Portc.0 = 0
Goto Programa
End
CONTADOR BINARIO CON PULSADOR ANTIRREBOTE
FISEI
En esta práctica haremos un contador binario, el resultado lo veremos en código binario
a través de 8 leds conectados al puerto B. Para esta practica necesita poner un
antirrobote al pulsador, ya que si presiona por un instante, dada la velocidad que procesa
el AVR el programa se ejecutara varias veces hasta que suelte el pulsador, para aprender
de los errores haga el programa sin antirrobote y luego con antirrobote.
Octavo Electrónica 2009 – 2010
FISEI - UTA
27
$regfile = "m8def.dat"
$crystal = 1000000
Ddrc.0 = 0
Portc.0 = 1
Config Portb = Output
Dim Num As Byte
Num = 0
Pulsar:
Portb = Num
If Pinc.0 = 0 Then Goto Contar
Goto Pulsar
Contar:
Num = Num + 1
Goto Pulsar
End
Si tuvo la oportunidad de ver funcionando este proyecto, se dará cuenta que cada que se
pulsa el botón el contador aumenta demasiado, esto es como se dijo antes por el AVR
trabaja a gran velocidad cada instrucción y cuando una persona presione el botón, por lo
menos necesita de 100ms de tiempo para soltarlo, en este tiempo el AVR ya sumo
alrededor de 25000 veces. Para solucionar este problema proponemos hacer un
programa de antirrobote de tecla, en el cual si presionamos el botón, este envía a un
programa que lo mantiene encerrado, únicamente sale de esta subrutina en el momento
que el pulsador deja de ser presionado, a continuación incluimos un WAITMS 200, que
es necesario para que en el momento de soltar la tecla se estabilice la señal.
$regfile = "m8def.dat"
$crystal = 1000000
Ddrc.0 = 0
Portc.0 = 1
Config Portb = Output
Dim Num As Byte
Num = 0
Pulsar:
Portb = Num
If Pinc.0 = 0 Then Goto Contar
Goto Pulsar
FISEI
Contar:
If Pinc.0 = 0 Then Goto Contar
Waitms 200
Num = Num + 1
Goto Pulsar
End
Para conocer más sobre los operadores matemáticos disponible como: resta
multiplicación, división, etc. Existentes en el Software BASCOM, se recomienda ver la
ayuda del software.
Octavo Electrónica 2009 – 2010
FISEI - UTA
28
LED INTERMITENTE DE VELOCIDAD VARIABLE
Este proyecto se basa en dos pulsadores, el primero para aumentar la frecuencia del
parpadeo del led, y el segundo para disminuir la frecuencia de parpadeo. Para esto
utilizaremos dos operadores matemáticos, la suma y la resta, la suma incrementa las
repeticiones de una instrucción FOR…NEXT, que contiene un WAITMS 5, mientras
que la resta disminuirá las repeticiones del mismo wait. Debemos tener en cuenta que
una variable BYTE no puede exceder su contenido a mas de 255. ni tampoco pasar a
valores negativos al ser restado consecutivamente, si excediera el valor a mas de 255, el
mismo se carga con valor de cero, y viceversa si el resultado de la resta pasara a
negativo, la variable se carga con 255.
$regfile = "m8def.dat"
$crystal = 1000000
Ddrb.0 = 0
Portb.0 = 1
Ddrb.1 = 0
Portb.1 = 1
Ddrc.0 = 1
Portc.0 = 0
FISEI
Led Alias Portc.0
' Pbaja Portb.1
' Psube Portb.0
Dim Xy As Byte
Dim Veces As Byte
Veces = 100
Inicio:
Led = 1
Gosub Tim
Led = 0
Gosub Tim
Goto Inicio
Tim:
If Pinb.0 = 0 Then Gosub Restar
If Pinb.1 = 0 Then Gosub Sumar
For Xy = 1 To Veces
Waitms 5
Next
Return
Sumar:
If Veces > 150 Then Return
Veces = Veces + 5
Return
Restar:
If Veces < 10 Then Return
Veces = Veces - 5
Return
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
29
PROYECTO CON DISPLAYS
MANEJO DE UN DISPLAY DE 7 SEGMENTOS CON EL
CI.7447
Los display son muy utilizados para visualizar datos. Para esta práctica se utiliza como
periférico de salida un display tipo ánodo común, para lo cual se facilita el diagrama en
la figura siguiente. El proyecto consiste en hacer un contador decimal (0,…,9), con
intervalos de 0.5 segundos.
El programa es muy similar al contador binario, con la diferencia que solo se necesita 4
bits del puerto, el decodificador binario a 7 segmentos (7447), es encargado de
transformar el número binario que ingresa al número decimal.
$regfile = "m8def.dat"
$crystal = 1000000
Config Portc = Output
Dim Numero As Byte
Encerar:
Numero = 0
Visualizar:
Portc = Numero
Waitms 500
If Numero = 9 Then Goto
Encerar
Numero = Numero + 1
Goto Visualizar
End
UN CONTADOR DECIMAL DE UN DIGITO CON EL CI
7447 Y UN PULSADOR
Adicionando al proyecto anterior un pulsador se hace un contador manual de un digito.
No se olvide hacer un programa antirrobote de tecla, por el caso expuesto
anteriormente.
FISEI
El diagrama de este proyecto es el mismo de la figura anterior, pero adicionando un
pulsador de estado uno lógico en el puerto B.0.
Octavo Electrónica 2009 – 2010
FISEI - UTA
30
$regfile = "m8def.dat"
$crystal = 1000000
Config Portc = Output
Ddrb.0 = 0
Portb.0 = 1
Dim Numero As Byte
Encerar:
Numero = 0
Visualizar:
Portc = Numero
If Pinb.0 = 0 Then Goto
Aumentar
Goto Visualizar
Aumentar:
If Pinb.0 = 0 Then Goto
Aumentar
Waitms 200
If Numero = 9 Then Goto Encerar
Numero = Numero + 1
Goto Visualizar
End
FISEI
MANEJO DE UN DISPLAY DE 7 SEGMENTOS SIN EL
CI.7447
Como se sabemos, al AVR se le puede programar para reemplazar a casi cualquier
circuito integrado, en esta ocasión haremos que le propio AVR sea como el CI.7447,
para esto debemos saber que para sacar el numero 3 por ejemplo, debemos calcular el
numero decimal que hace que se enciendan los segmentos correctos del display, esto se
hace de la siguiente forma.
Como debemos encender los segmentos a, b, c, d y g. revisamos los pintes del AVR que
les corresponde y estos son: B0, B1, B2, B3 y B6, respectivamente, estos debemos
ponerlos en cero lógicos para que los segmentos se enciendan (recuerde que el display
es ánodo común), y los demás 1 lógico para que permanezcan apagados:
Octavo Electrónica 2009 – 2010
FISEI - UTA
31
DECLARACIÓN LOOKUP
Sirve para obtener un valor constante de una tabla, esto lo hace según el número de
veces que repita el FOR…NEXT, por ejemplo la primera vez toma el dato que se
encuentra en el lugar 0, la segunda vez, toma el dato del lugar 1 y así sucesivamente.
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Dim I As Byte
Prog:
For I = 0 To 5
Portd = Lookup(i , Secuencia)
Waitms 500
Next
Goto Prog
End
Secuencia:
Data &B1000000 , &B1111001 , &B0100100 , &B0110000 , &B0011001 , &B0010010
FISEI
MANEJO DE 4 DISPLAY DE7 SEGMENTOS CON EL
CI.7447
El siguiente proyecto debe encender 4 display para poder mostrar cualquier numero de 0
hasta el 9999, esto lo conseguimos gracias al transistor tipo PNP, que nos ayudara a
multiplexar cada uno de los displays, el funcionamiento es bastante sencillo, debemos
conectar los 4 bits mas altos a cada transistor y los cuatro bits mas bajos al CI 7447, si
por ejemplo queremos sacar el numero 6874, primero habilitamos el cuarto transistor, el
de la derecha y enviamos el número 4, el CI 7447 se encargara de formar el numero 4
en el display, luego pasamos a cero lógico el segundo transistor y los demás los
mantenemos en nivel alto, al mismo tiempo sacamos el numero 7 por los bits menos
significativos del puerto B, y así consecutivamente, el tiempo que debemos mantener
Octavo Electrónica 2009 – 2010
FISEI - UTA
32
activado cada transistor no puede ser mayor que 5 mili segundos, es decir que los
cambios son tan rápidos que el ojo humano ve todos los display encendidos al mismo
tiempo, cuando en realidad solo se encienden uno a la vez.
FISEI
Ejemplo: para sacar el número 8 en las centenas debemos sacar (176 + 8), es decir el
número 184 porque si analizamos en código binario, tenemos que los bits mas bajos
entran al CI 7447, y los bits mas altos, son los encargados de encender el display que le
corresponden a las centenas.
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Visualizar:
' activo transistor de unidades y presento el 1
Portd = 224 + 1
Waitms 5
' activo transistor de decenas y presento el 2
Portd = 208 + 2
Waitms 5
' activo transistor de centenas y presento el 3
Portd = 176 + 3
Waitms 5
' activo transistor de miles y presento el 4
Portd = 112 + 4
Waitms 5
Goto Visualizar
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
33
CONTADOR DECIMAL DE 4 DIGITOS CON EL CI.7447
Es hora de hacer un proyecto de considerable tamaño, una vez entendido como
multiplexar 4 displays, y entendido el ejercicio del contador, pues el siguiente proyecto
consta en hacer un contador decimal que incremente su valor cada vez que se pulsa el
botón A, si pulsamos el botón B se encera y se apaga la chicharra, y si pulsamos la tecla
C, presenta el numero al cual va a comparar, si el numero a contar es igual a 24, activa
un aviso auditivo, este buzzer trabaja a 12 Voltios, lo que diferencia de los parlantes
comunes es que no necesita ser activado con una frecuencia, sino basta con alimentarle
con 12 voltios para que suene.
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Ddrc.0 = 1
Portc.0 = 0
Ddrc.1 = 0
Portc.1 = 1
Ddrc.2 = 0
Portc.2 = 1
Ddrc.3 = 0
Portc.3 = 1
Dim Unid As Byte
Dim Dece As Byte
Dim Cent As Byte
Dim Mile As Byte
Octavo Electrónica 2009 – 2010
FISEI - UTA
34
FISEI
Dim Setunid As Byte
Dim SetDece As Byte
Dim SetCent As Byte
Dim Setmile As Byte
Setunid = 4
Setdece = 2
Setcent = 0
Setmile = 0
Dim Activar As Bit
' chicha Portc.0
' Contar Portc.1
' Encerar Portc.2
' visualizar Portc.3
Portc.0 = 1
Waitms 200
Encerar:
Unid = 0
Dece = 0
Cent = 0
Mile = 0
Portc.0 = 0
Visualizar:
Portd = 224 + Unid
Waitms 5
Portd = 208 + Dece
Waitms 5
Portd = 176 + Cent
Waitms 5
Portd = 112 + Mile
Waitms 5
Gosub Teclas
Goto Visualizar
Teclas:
If Pinc.1 = 0 Then Gosub Sumar
If Pinc.2 = 0 Then Gosub Encerar
If Pinc.3 = 0 Then Gosub Visualizar2
Activar = 1
Return
Sumar:
If Activar = 0 Then Return
Activar = 0
Unid = Unid + 1
If Unid < 10 Then Goto Comparar
Unid = 0
Dece = Dece + 1
If Dece < 10 Then Goto Comparar
Dece = 0
Cent = Cent + 1
If Cent < 10 Then Goto Comparar
Cent = 0
Mile = Mile + 1
If Mile < 10 Then Goto Comparar
Mile = 0
Return
Visualizar2:
Portd = 224 + Setunid
Waitms 5
Portd = 208 + setDece
Waitms 5
Portd = 176 + setCent
Waitms 5
Portd = 112 + setMile
Waitms 5
Return
Comparar:
If Unid = Setunid And Dece = Setdece And Cent = Setcent And Mile = Setmile Then
Portc.0 = 1
Else
Return
End If
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
35
MANEJO DE 4 DISPLAYS DE 7 SEGMENTOS SIN EL
CI.7447 (ROTULACIÓN)
Es posible hacer un contador decimal igual que el del proyecto anterior y sin ayuda del
CI, 7447, pero en esta ocasión haremos mas que eso, como vieron la ventaja de conectar
el display directamente al AVR es la de poder sacar casi la mayoría de las letras del
alfabeto, pues bien este proyecto consiste en sacar la palabra HOLA a través de los 4
displays.
' %1011 activa el siguiente display
Portd = 11
' forma la letra O
Portb = 64
Waitms 5
' %0111 activa el siguiente display
Portd = 7
' forma la letra H
Portb = 9
Waitms 5
Goto Texto
End
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Config Portb = Output
Texto:
' %1110 activa el display de la derecha
Portd = 14
' forma la letra A
Portb = 8
Waitms 5
' %1101 activa el siguiente display
Portd = 13
' forma la letra L
Portb = 71
Waitms 5
Octavo Electrónica 2009 – 2010
FISEI - UTA
36
MANEJO DE 4 DISPLAYS CON ROTULO EN
MOVIMIENTO
Para hacerlo mas interesante el proyecto anterior, le añadiremos movimiento, con esto
podemos ingresar frases completas como “HOLA LUIS”, pero para no alargar mucho el
programa solo utilizaremos la palabra HOLA, moviéndose continuamente de derecha a
izquierda y con un espacio por palabra.
La variable x es la que regula la velocidad con que se desplazan las letras, para
comprobarlo modifique el valor de todas las repeticiones de 1 TO 20 al doble 1 TO 40,
y vera como se desplaza las letras mas lentamente.
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Config Portb = Output
Dim X As Byte
Texto:
For X = 1 To 20
Portd = 14 : Portb = 8
Waitms 5
Portd = 13 : Portb = 71
Waitms 5
Portd = 11 : Portb = 64
Waitms 5
Portd = 7 : Portb = 9
Waitms 5
Next
For X = 1 To 20
Portd = 14 : Portb = 127
Waitms 5
Portd = 13 : Portb = 8
Waitms 5
Portd = 11 : Portb = 71
Waitms 5
Portd = 7 : Portb = 64
Waitms 5
Next
FISEI
For X = 1 To 20
Portd = 14 : Portb = 9
Waitms 5
Portd = 13 : Portb = 127
Waitms 5
Portd = 11 : Portb = 8
Waitms 5
Portd = 7 : Portb = 71
Waitms 5
Next
Octavo Electrónica 2009 – 2010
FISEI - UTA
37
For X = 1 To 20
Portd = 14 : Portb = 64
Waitms 5
Portd = 13 : Portb = 9
Waitms 5
Portd = 11 : Portb = 127
Waitms 5
Portd = 7 : Portb = 8
Waitms 5
Next
For X = 1 To 20
Portd = 14 : Portb = 71
Waitms 5
Portd = 13 : Portb = 64
Waitms 5
Portd = 11 : Portb = 9
Waitms 5
Portd = 7 : Portb = 127
Waitms 5
Next
Goto Texto
End
MANEJO DE UN MODULO LCD
Los módulos LCD (Display de Cristal Líquidos), son utilizados para mostrar mensajes
que indican al operario es estado de la maquina, o para dar instrucciones de manejo,
Mostar valores, etc. El LCD permite la comunicación entre las maquinas y los humanos,
este puede mostrar cualquier carácter ASCII, y consume mucho menos que los display
de 7 segmentos, existe de varias presentaciones por ejemplo de 2 líneas por 8 caracteres,
2x16, 2x20, 4x20, 4x40, etc. Sin backlight (14 pines) o con backlight (16 pines,
iluminado de pantalla), el LCD más popular es el 2x16, 2 líneas de 16 caracteres cada
una.
FISEI
Fotografía de un LCD 2x16
Octavo Electrónica 2009 – 2010
FISEI - UTA
38
Pin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Simb
Vss
Vdd
Vo
RS
R/W
E
D0
D1
D2
D3
D4
D5
D6
D7
A
K
Descripción
Tierra de alimentación GND
Alimentación de +5V CC
Ajuste de contraste del cristal liquido (0 a +5V)
Selección del registro control/datos RS=0 reg. Control RS=1 reg. Datos
Lectura/Escritura en LCD R/W = 0 escritura (write) R/W = 1 lectura (read)
Habilitación E = 0 módulo desconectado E = 1 módulo conectado
Bit menos significativo (bus de datos bidireccional)
Bit masmenos significativo (bus de datos bidireccional)
Alimentación del backlight +3.5V o +5 Vcc (según especificaciones técnicas)
Tierra GND del backlight
Bascom puede manejar los dos tipos principales de pantallas de cristal líquido:
alfanuméricos y gráficos. Por el momento, vamos a preocuparnos por el tipo más común
alfanuméricos. Este tipo de pantalla LCD puede mostrar los caracteres, números y
caracteres especiales. El tipo más común de LCD alfanumérico utiliza un Hitachi
HD44780 como controlador de pantalla. Cuando usted no está seguro acerca de qué tipo
de pantalla que están sosteniendo en sus manos, sólo tiene que mirar a las
denominaciones de chips en la espalda. Si uno de estos dice HD44780 estás a salvo.
FISEI
Bascom tiene una configuración por defecto para la conexión de la pantalla LCD.
Options / Compiler / LCD
Octavo Electrónica 2009 – 2010
FISEI - UTA
39
FISEI
Afortunadamente, el predeterminado es de tipo LCD de 16 * 2. Esta es la pantalla LCD
más común con dos líneas y 16 caracteres por línea. HD44780 tipo LCD tienen ocho
datalines, pero pueden ser controlados de una manera más económica mediante el uso
de los cuatro líneas. Esto ahorra cuatro Pins I / O en el controlador. Esta es la
predeterminada (modo de 4 bit bus) en la ventana de opciones. El envío de datos se lo
hace en modo 4-bit bus de curso tiene dos escrituras de cada 8-bits a enviar Si realmente
necesitas la pantalla LCD para ser lo más rápido posible (y rara vez lo hacen), tendrá
que elegir el modo 8-bit bus.
El modo de datos es el pin por defecto. Esto significa que los pines individuales se
pueden seleccionar para cada pin LCD. Esta opción proporciona la mayor flexibilidad
en la elección de la i / o de configuración de su controlador. La opción de «bus» se
puede utilizar en la clásica configuración de microprocesador de autobuses donde un
montón de I / O está conectado a un bus y la decodificación de dirección debe ser
utilizado para hacer frente a cada dispositivo por separado en el autobús.
En el 'pin' opción, puede especificar cómo las clavijas de seis LCD está conectado a su
controlador. El pin de activación es usada por la pantalla LCD para ver si tiene para leer
/ escribir datos en las cuatro I / O Pins. Mientras el pin de activación es bajo, la pantalla
no "escuchar" a los cambios en los cuatro pines de datos (lo que también puede ser
utilizado para otros fines, por el AT90S2313 que también se utilizan para el MOSI,
miso y CLK). El pin RS se utiliza para que la pantalla LCD sepa si los datos que están
en los pines de datos tienen que ver con una presentación en la pantalla o con un
comando, como un restablecimiento de pantalla o un cambio del cursor
La pantalla LCD tiene un séptimo séptimo pin llamado R / W para contar la pantalla
LCD si queremos leer los datos, o escribir en la pantalla LCD. Bascom supone que este
pin está permanentemente conectado a tierra, de modo que la pantalla LCD siempre está
en modo de lectura. Sin embargo, para ver si la pantalla LCD está preparada para recibir
datos, se debe leer la memoria de ocupación.
Esto implicaría el envío de un comando de verificación de ocupado, cambiar la pantalla
a modo de escritura, la lectura del valor de un byte del registro del pabellón ocupado y
se determina el valor del bit de ocupado. Como no podemos hacer eso, Bascom debe
utilizar bucles de espera después de cada escritura. Los bucles de espera son
determinados por la velocidad de reloj. Esto es entre otras cosas por la especificación de
la velocidad de reloj en las opciones / Compilador / ventana de comunicación o con la
palabra clave de cristal $ es importante. Tenga en cuenta que si ha especificado un reloj
de 4 MHz y luego cambiar el cristal en un modelo de 10MHz, el controlador se
ejecutará 2,5 veces más rápido, pero los circuitos de espera del cristal líquido son
probablemente demasiado corto. Esto puede resultar en que la pantalla LCD no
funciona en absoluto o actúe de manera extraña.
Al igual que con la especificación del tipo de controlador y de cristal, las conexiones de
pin LCD se puede especificar en el origen de Bascom en lugar de utilizar Opciones /
Compiler / LCD:
La pantalla LCD está conectada al controlador de la siguiente manera
Octavo Electrónica 2009 – 2010
FISEI - UTA
40
Config Lcd = 16 * 2
Config lcdpin = PIN, DB4 = PORTB.1, DB5 = PORTB.2, DB6 = PORTB.3,
DB7 = PORTB.4, E = PORTB.5, RS = PORTB.6
Lcd Mode Config = Puerto
FISEI
La pantalla LCD alfanumérico estándar tiene 14 pins. Pin número 1 es la tierra. Pin
número 5 es R / W y también está conectado a tierra. Pin número 2 es Vcc, va a +5 V.
Algunos LCD no tolerará una fuente de alimentación con tensión de salida de un lento
aumento. Pin número 3 es para el contraste del LCD. Con la mayoría de las pantallas se
puede conectar el pin de contraste a tierra. Por un contraste óptimo, en algunas pantallas
se necesita una tensión ligeramente positiva en este pin. Uso de un potenciómetro entre
+5 V y tierra debe dar una configuración óptima para la mayoría de las pantallas. Los
números de PIN 4 (RS), 6 (E) y 11, 12, 13 y 14 están conectados a la controladora como
se muestra en el esquema. PIN números 7, 8, 9 y 10 se puede quedar desconectados.
Tenga en cuenta que D5, D6 y D7 son compartidos con MOSI, miso y SCK. Si usted
tiene una pantalla LCD con backlight LED que puede tener un 16 pines en el PCB del
LCD. Pins 15 y 16 son para la luz de fondo. Si estos pines no tienen otras indicaciones,
intente una alimentación de +5 V con un resistor limitador de corriente de unos pocos
cientos de ohmios para averiguar cuál es el cátodo y el ánodo. A veces la luz de fondo
LED tiene un conector separado de los otros 14 pines.
Octavo Electrónica 2009 – 2010
FISEI - UTA
41
$regfile = "m8def.dat"
$crystal = 1000000
Dim Count As Integer
$sim
Config Lcd = 16 * 2
Config lcdpin = PIN, DB4 = PORTB.1, DB5 = PORTB.2, DB6 = PORTB.3,
DB7 = PORTB.4, E = PORTB.5, RS = PORTB.6
Config Lcdmode = Port
Do
' borrar la pantalla
Cls
' Presento en la lcd HELLO
Lcd "Hello " ; Count
Count = Count + 1
Wait 1
Loop
End
Compile el programa, y luego Program / Simulate
FISEI
LCD de carácter conjunto.
El conjunto de LCD de caracteres estándar se muestra en la siguiente tabla:
Octavo Electrónica 2009 – 2010
FISEI - UTA
42
Los caracteres especiales en esta tabla se pueden enviar a la pantalla utilizando el
charactercode decimal. Por ejemplo, utilice:
LCD chr (228)
Para enviar el símbolo μ. (1110.0100 binario es 228 en decimal)
FISEI
Se debe entender que existe un cursor que aunque no lo vemos, pues es este el que
indica donde aparecerá la siguiente letra, para poder entender haremos un ejercicio
completo, así podrán aprender más del LCD y las funciones de cada uno de los
comandos. Primero que nada haremos visible el cursor y luego pondremos Wait para
poder ver el funcionamiento.
El siguiente programa muestra algunos de los comandos que pueden ser utilizados con
la pantalla LCD.
Octavo Electrónica 2009 – 2010
FISEI - UTA
43
$regfile = "m8def.dat"
$crystal = 1000000
' proporción del baud
$baud = 19200
' uso 32 predefinido para la pila del hardware
$hwstack = 32
' so 10 predefinido para la pila de SW
$swstack = 10
' uso 40 predefinido para el espacio del marco
$framesize = 40
Wait 1
Cls
'apaga el despliegue
Display Off
Wait 1
'encender el despliegue
Display On
Wait 1
Goto Programa
End
FISEI
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 , Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 , Rs = Portb.6
Dim A As Byte
Config Lcd = 16 * 2
Programa:
Cls
Lcd "Hola mundo"
Wait 1
Lowerline
Wait 1
Lcd "Como estas"
Wait 1
For A = 1 To 10
Shiftlcd Right
Wait 1
Next
For A = 1 To 10
'cambio el texto a la izquierda
Shiftlcd Left
Wait 1
Next
Cls
' fijar posicion del cursor
Locate 2 , 1
Lcd "*"
Wait 1
Cls
'cambio el texto a la derecha
Shiftcursor Right
Lcd "@"
Wait 1
Cls
' seleccionar linea 1 y retornar a casa
Home Upper
Lcd "Remplazar."
Wait 1
Cls
'esconda el cursor
Cursor Off Noblink
Wait 1
' mostar el cursor
Cursor On Blink
Octavo Electrónica 2009 – 2010
FISEI - UTA
44
DEFINA SUS PROPIOS PERSONAJES LCD
La LCD con el controlador HD44780 tiene espacio para ocho caracteres adicionales que
se pueden definir. Usted podría utilizar caracteres especiales que de origen a:
Hacer una pantalla de barras de un metro o S-VU-meter
Una pelota para pasar el tiempo del usuario, mientras que el controlador está
haciendo algo mucho tiempo.
Un objeto en rotación o saltar al hombre para que el usuario sepa que el
controlador está aún en marcha.
Situé el cursor en Tools / LCD designer
Dar el un clic en cualquier cuadro para que este se haga negro, o clic en un cuadro negra
para que se haga blanco. Hacer un símbolo de la cruz
FISEI
Haga clic en Aceptar. Colocar el cursor en el origen del programa y aparecerá el
siguiente texto.
Deflcdchar ?,32,4,4,31,4,4,32,32' replace ? with number (0-7)
Cambiar el "?" por el número "0" y eliminar el comentario después del carácter '
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
Octavo Electrónica 2009 – 2010
FISEI - UTA
45
Mover el cursor de texto a la siguiente línea vacía, rehacer Tools / LCD designer,
realizar el siguiente grafico.
Deflcdchar ?,32,2,20,14,5,8,32,32' replace ? with number (0-7)
Cambiar el "?" por el número "1" y eliminar el comentario después del carácter '
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Repita este proceso otras cuatro veces (usa tu imaginación) hasta que su programa es el
siguiente:
$regfile = "m8def.dat"
$crystal = 1000000
' proporción del baud
$baud = 19200
' uso 32 predefinido para la pila del hardware
$hwstack = 32
' so 10 predefinido para la pila de SW
$swstack = 10
' uso 40 predefinido para el espacio del marco
$framesize = 40
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 , Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 , Rs = Portb.6
Dim Star As Byte
Config Lcd = 16 * 2
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Deflcdchar 2 , 32 , 2 , 26 , 4 , 11 , 8 , 32 , 32
Deflcdchar 3 , 32 , 17 , 10 , 4 , 10 , 17 , 32 , 32
Deflcdchar 4 , 32 , 8 , 11 , 4 , 26 , 2 , 32 , 32
Deflcdchar 5 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32
FISEI
Cls
Do
For Star = 0 To 5 Step 1
Locate 1 , 16
Lcd Chr(star)
Next Star
Loop
End
Compilar y Simulación. El resultado es una estrella de rotación rápida en la posición
más a la derecha de la línea de LCD de la primera fila.
Octavo Electrónica 2009 – 2010
FISEI - UTA
46
CONTADOR DE PULSOS CON LCD
Este proyecto, consiste en contar el numero de pulsos que ingresan por un pin en un
determinado periodo, este a su vez visualiza en un LCD, si la cantidad de este supera a
los 120 pulsos por segundo es decir 120Hz, se encenderá una alarma visual (un led
rojo), y si la cantidad de pulsos baja a menos de 100Hz, este encenderá un led Verde, si
la frecuencia se mantiene entre estos 2 rangos, no se encenderá ningún led.
Para esta practica utilizaremos el C.I 555 que nos ayuda a generar un tren de pulsos
variable, el cual lo conectamos al AVR para su posterior conteo.
DECLARACIÓN PULSEIN. Sirve para contar el número de pulsos que ingresan por
un pin en un determinado tiempo, este a su vez lo guarda en una variable para su
posterior procesamiento, la manera de utilizarlo es la siguiente.
var
PINX
PIN
STATE
Una palabra variable que se asigna con el resultado
Puero a usar
Pin del Puerto con el que se contar
Podria ser 0 or 1.
0 Medio de muestreo. Transición 0 to 1.
1 Medio de muestreo. Transición 1 to 0.
Algo muy importante de conocer, es como conocer verdaderamente la cantidad de
pulsos que el AVR esta detectando en la entrada, para ello debemos primeramente
tomar en cuenta que clase de variable es la que esta almacenado el conteo. La cantidad
de pulsos del conteo obtengo dividiendo la cantidad máxima que puede almacenar dicha
variable para el dato almacenado de conteo.
FISEI
Pulsos = 26315 / Variable
Uso variable Word = 26315 = 2 bytes
Octavo Electrónica 2009 – 2010
FISEI - UTA
47
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
' Configuro todo el puerto D.2, D.3 como salida
Ddrd.2 = 1
' led rojo
Portd.2 = 0
Ddrd.3 = 1
' led verde
Portd.3 = 0
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 , Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 , Rs = Portb.6
Dim Puls As Word
Config Lcd = 16 * 2
Prog:
' escondo el cursor
Cursor Off Noblink
Pulsein Puls , Pind , 0 , 1
Puls = 26315 / Puls
Cls
Lcd " Frecuencia"
' localizo al cursos fila 2 columna 6
Locate 2 , 6
Octavo Electrónica 2009 – 2010
FISEI - UTA
48
Lcd Puls
Locate 2 , 10
Lcd "Hz"
If Puls > 120 Then Goto Alarmah
If Puls < 100 Then Goto Alarmal
Pind.2 = 0 : Pind.3 = 0
Goto Prog
Alarmah:
Pind.2 = 1 : Pind.3 = 0
Goto Prog
Alarmal:
Pind.3 = 1 : Pind.2 = 0
Goto Prog
End
GENERACIÓN DE SONIDO
El software Bascom es capaz de sacar las frecuencias especificadas por un pin del AVR,
para esto aprenderemos la declaración SOUND.
LA DECLARACIÓN SOUND. Saca lo o las frecuencias especificadas por un pin del
micro, estas pueden ser de 0 a 32767 Hz, su utilización es de la siguiente forma.
SOUND pin, pulsos, duración
Sound Portb.0 ,65635 , 10000
FISEI
Quiere decir sacar una frecuencia de 65635 ciclos durante 10 segundos por el puerto
B.0.
En esta práctica lo utilizaremos para generar un sonido a través de un piezoeléctrico o
por medio de un parlante.
Octavo Electrónica 2009 – 2010
FISEI - UTA
49
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
' Configuro todo el puerto C.0 como salida
Ddrc.0 = 1
' led rojo
Portc.0 = 0
Speaker Alias Portc.0
Do
Sound Speaker , 1000 , 2
Wait 2
Loop
end
UNA SIRENA POLICIAL
FISEI
Esta practica consiste en sacar por un parlante el sonido característico de una sirena
policial, para esto emplearemos la ayuda de la declaración vista anteriormente.
' Configuro todo el puerto C.0 como salida
Ddrc.0 = 1
' led rojo
Portc.0 = 0
Speaker Alias Portc.0
Do
Sound Speaker , 100 , 10
Sound Speaker , 50 , 10
Wait 2
Loop
Octavo Electrónica 2009 – 2010
FISEI - UTA
50
Esto quiere decir sacar dos tonos por el puerto C.0, el primer tono es 100 que equivale a
(7874 Hz) con una duración de 10 milisegundos y luego un tono de 50 (3937 Hz) con
una duración de 10 milisegundos también.
En cuanto al diagrama y materiales son los mismos de la práctica anterior.
GENERACIÓN DE UN TIMBRE DE TELÉFONO
CELULAR
Esta practica consiste en sacar por un parlante el sonido característico de un teléfono
celular, para esto emplearemos la ayuda de la declaración SOUND.
En cuando al diagrama de conexión y materiales, podemos utilizar el mismo de la
práctica anterior.
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
' Configuro todo el puerto C.0 como salida
Ddrc.0 = 1
' led rojo
Portc.0 = 0
Speaker Alias Portc.0
Do
Sound Speaker , 125 , 4
Sound Speaker , 123 , 5
Wait 2
Loop
Pruebe con algunas combinaciones de tonos, así como también con diferentes tiempos y
verá que bien pude componer una melodía.
LLAMADA TELEFÓNICA DTMF
FISEI
Esta practica tiene como objetivo generar tonos DTMF (Dual tono Multifrecuency) a
través de un AVR, como los que genera cualquier teléfono fijo o celular, estos tonos no
son nada mas que el envió de dos frecuencias especificas asignadas a cada tecla, estas
frecuencias podemos ver en la figura siguiente, lo que sucede cuando pulsamos una
tecla, es que envía una frecuencia baja y luego una segunda frecuencia del grupo alto,
esto podríamos hacerlo con la declaración PULSEOUT.
Octavo Electrónica 2009 – 2010
FISEI - UTA
51
LA DECLARACIÓN DTMFOUT
FISEI
Esta genera automáticamente los tonos duales correspondientes a cada tecla y los envía
cada una con intervalos de 50 milisegundos, aunque estos los podemos cambiar.
Para nuestro caso, para saber que puerto es el que envía la señal DTMF, debemos acudir
a la hoja de dados del ATMEGA8 y buscamos el puerto con características OC1, para
nuestro AVR es el pin B.1.
Octavo Electrónica 2009 – 2010
FISEI - UTA
52
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Config Portb = Output
' creo una cadenan de caracteres
Dim Numero As String * 9
' numero a marcar
Numero = "123456789"
Do
' duracion de 50ms por cada digito
Dtmfout Numero , 50
Waitms 500
Loop
FISEI
En la figura siguiente se muestra el diagrama básico de conexión para poder hacer una
llamada telefónica:
La resistencia de 560Ohm a 1 vatio paralela a la red telefónica, sirve para simular la
carga de un teléfono normal, y con esto podremos tener el tono de marcado necesario
para hacer la llamada, además notarán que esta resistencia empieza a disipar calor en
el momento que se une a la red telefónica, esto debido a la cantidad de voltaje que
circula (60 voltios).
El relé hace la conexión y desconexión de la red telefónica, que en este caso sería
como el auricular que cuelga y descuelga el teléfono.
El filtro de 1 uF a 100 voltios, sirve para poder mejorar la onda que sale del AVR y
además como protección para el AVR. Es importante indicar que la red telefónica
suministra alrededor de 60 voltios en DC, por lo que el capacitor debe pasar de 60
voltios y además el lado positivo de la red telefónica debe ir a tierra del AVR y el
negativo hacía el pin del AVR, por lo que necesitaremos la ayuda de un voltímetro
para poder identificar la polaridad de la red.
Octavo Electrónica 2009 – 2010
FISEI - UTA
53
Para solucionar este inconveniente se propone el diagrama de la figura, este es un
diagrama más completo en el que la polaridad de la línea no es un problema, puesto que
dispone un puente de diodos en donde el lado positivo ya está unido a tierra y el lado
negativo va a través del filtro hacia el AVR.
Este proyecto es muy utilizado en sistemas de seguridad, se puede hacer una alarma, la
cual en el momento de violar su seguridad, este realice automáticamente una llamada al
propietario, el propietario en el momento de contestar escuchará una sirena, señal
suficiente para saber que alguien ha activado la alarma, este mismo principio utilizan las
centrales de monitoreo, con la diferencia que en vez de generar un sonido de sirena, se
envía datos en forma serial como: Zona de apertura, hora, estado de batería, etc.
LECTURA DE UN TECLADO DE 16 PULSADORES CON
DISPLAY DED 7 SEGMENTOS
FISEI
La mayoría de las aplicaciones de Controlador pequeñas utilizar uno o más botones o
interruptores de entrada del usuario. Cuando las cosas van un poco más complicadas, un
pequeño teclado puede ser una buena solución. Estos teclados vienen en 3x4 o 4x4
variantes, más a menudo el keyswitches están dispuestos en una matriz.
Octavo Electrónica 2009 – 2010
FISEI - UTA
54
FISEI
La matriz se utiliza, ya que minimiza el número de conexiones desde el teclado al
controlador. Un teclado 4x4 tiene 16 keyswitches. Usted podría cablear los 16
keyswitches al controlador, pero una solución más inteligente es el de organizar las
claves en una matriz y luego conectar las cuatro columnas y filas al controlador.
Los teclados matriciales son muy útiles para ingresar datos, un ejemplo es el teclado del
computador, el teclado de una alarma que nos permite armar y desarmar un sistema de
seguridad, el teclado de una caja fuerte, el de una cerradura eléctrica, etc. Para
introducirnos en el manejo de un teclado, haremos un proyecto para aprender a
identificar filas y columnas que lo componen un teclado hexadecimal de 16 pulsadores,
y su correspondiente barrido de teclas, luego se visualizara en un display de 7
segmentos el número de la tecla presionado.
Octavo Electrónica 2009 – 2010
FISEI - UTA
55
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
' configuro puertos como salida
Ddrb = &B00001111
Portb = &B00001111
Config Portc = Output
A Alias Portb.0
B Alias Portb.1
C Alias Portb.2
D Alias Portb.3
Uno Alias Pinb.4
Dos Alias Pinb.5
Tres Alias Pinb.6
Cuatro Alias Pinb.7
Barrido:
A=0
If Uno = 0 Then Portc = 1
If Dos = 0 Then Portc = 2
If Tres = 0 Then Portc = 3
If Cuatro = 0 Then Portc = 10
A=1
B=0
If Uno = 0 Then Portc = 4
If Dos = 0 Then Portc = 5
If Tres = 0 Then Portc = 6
If Cuatro = 0 Then Portc = 11
B=1
C=0
If Uno = 0 Then Portc = 7
If Dos = 0 Then Portc = 8
If Tres = 0 Then Portc = 9
If Cuatro = 0 Then Portc = 12
C=1
D=0
If Uno = 0 Then Portc = 14
If Dos = 0 Then Portc = 0
If Tres = 0 Then Portc = 15
If Cuatro = 0 Then Portc = 13
D=1
Waitms 10
Goto Barrido
End
Como se puede ver este programa es un poco largo pero el uso de memoria es mínima
en el AVR.
El funcionamiento es sencillo, solo debemos fijarnos cual fila es la que esta en nivel
bajo y esta es la fila que se esta barriendo, si una de las condiciones encuentra la
igualdad, pues esta es la tecla pulsada.
Ejemplo: Si pulsamos la tecla 6, en algún momento se pondrá en bajo la fila B y
detectara un cambio de estado de 1 a 0 en la columna 3, por lo que:
A=0
If Tres = 0 Then Portc = 3
Octavo Electrónica 2009 – 2010
FISEI - UTA
56
Debemos considerar que un persona requiere como mínimo 100 milisegundos para
presionar una tecla, en este tiempo el AVR realiza 10 barridos, por lo que de seguro
detectara inmediatamente la tecla pulsada.
Para el caso de utilizar un teclado de 12 pulsadores, debemos eliminar una columna, las
que corresponden a la tecla A, B, C y D, es decir eliminar las siguientes líneas de
programa.
If Cuatro = 0 Then Portc = 10
If Cuatro = 0 Then Portc = 11
If Cuatro = 0 Then Portc = 12
If Cuatro = 0 Then Portc = 13
En este caso quedaría un teclado con pulsadores del 0 al 9 y dos teclas de propósito
especial, la tecla asterisco (*) y la tecla numeral (#).
CERRADURA ELECTRÓNICA CON CLAVE EN
MEMORIA FLASH
FISEI
Este es un proyecto aplicable en seguridad, se trata de una cerradura electrónica en la
cual al ingresar los 4 dígitos correctamente en su teclado, el AVR energiza un relé, pero
si la clave es incorrecta el AVR emite 3 pitos indicando que ingreso una clave errónea y
por supuesto que el relé no se conectara, para hacerlo mas interesante se le agregado
sonido a las teclas en el momento de ser pulsadas, esto sirve para que el usuario sepa
que el AVR reconoció la pulsación, también tiene un programa antirrebote de tecla para
asegurarse que ingrese una sola tecla a la vez.
El único inconveniente es que la clave no puede ser cambiada, ya que el numero de la
combinación (1, 2, 3, 4) se la grabó en el programa del AVR por lo que reside en la
memoria FLASH, mas adelante en los próximos proyectos la memoria podrá ser
cambiada a gusto del usuario, en tal caso este proyecto sirve para poder identificar y
diferenciar las 3 memorias que dispone el AVR.
Octavo Electrónica 2009 – 2010
FISEI - UTA
57
$regfile = "m8def.dat"
$crystal = 4000000
' configuro puertos como salida
Dim Numero As Byte
Dim R As Byte
Config Portc = Output
Ddrb = &B00001111
Portb = &B00001111
Config Portc = Output
A Alias Portb.0
B Alias Portb.1
C Alias Portb.2
D Alias Portb.3
Uno Alias Pinb.4
Dos Alias Pinb.5
Tres Alias Pinb.6
Cuatro Alias Pinb.7
Bip Alias Portc.0
Led Alias Portc.1
Door Alias Portc.2
FISEI
Iniciando:
Led = 1 : Bip = 1
Waitms 500
Led = 0 : Bip = 0
Goto Teclauno
Barrido:
A=0
If Uno = 0 Then Numero = 1 : Return
If Dos = 0 Then Numero = 2 : Return
If Tres = 0 Then Numero = 3 : Return
If Cuatro = 0 Then Numero = 10 :
Return
A=1
B=0
Octavo Electrónica 2009 – 2010
If Uno = 0 Then Numero = 4 : Return
If Dos = 0 Then Numero = 5 : Return
If Tres = 0 Then Numero = 6 : Return
If Cuatro = 0 Then Numero = 11 :
Return
B=1
C=0
If Uno = 0 Then Numero = 7 : Return
If Dos = 0 Then Numero = 8 : Return
If Tres = 0 Then Numero = 9 : Return
If Cuatro = 0 Then Numero = 12 :
Return
C=1
D=0
If Uno = 0 Then Numero = 14 :
Return
If Dos = 0 Then Numero = 0 : Return
If Tres = 0 Then Numero = 15 :
Return
If Cuatro = 0 Then Numero = 13 :
Return
D=1
Waitms 10
Goto Barrido
Ptecla:
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Espacio:
If Uno = 0 Then Goto Espacio
If Dos = 0 Then Goto Espacio
If Tres = 0 Then Goto Espacio
If Cuatro = 0 Then Goto Espacio
Waitms 25
Return
FISEI - UTA
58
Teclauno:
Gosub Barrido
Gosub Ptecla
If Numero = 1 Then Goto Teclados
Goto Falso
Teclados:
Gosub Barrido : Gosub Ptecla
If Numero = 2 Then Goto Teclatres
Goto Falso1
Teclatres:
Gosub Barrido : Gosub Ptecla
If Numero = 3 Then Goto Teclacuatro
Goto Falso2
Teclacuatro:
Gosub Barrido : Gosub Ptecla
If Numero = 4 Then Goto Openge
Goto Falso3
Openge:
For R = 1 To 2
Waitms 100
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Next
Door = 1
Wait 1
Door = 0
Goto Teclauno
FISEI
Falso:
Gosub Barrido : Gosub Ptecla
Falso1:
Gosub Barrido : Gosub Ptecla
Falso2:
Gosub Barrido : Gosub Ptecla
Falso3:
For R = 1 To 3
Wait 1
Led = 1 : Bip = 1
Wait 1
Led = 0 : Bip = 0
Next
Goto Teclauno
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
59
CERRADURA ELECTRÓNICA CON CLAVE EN
MEMORIA RAM Y CAMBIO DE CLAVE
FISEI
Este proyecto es muy similar al anterior con la diferencia que este se le puede cambiar
la clave predefinida (1, 2, 3, 4) por cualquier otra combinación de teclas, la clave
original será cargada en cuatro variables y existirá una manera de cambiar los valores de
estas variables lo cual se lo hace de la siguiente manera: después de haber colocado la
clave original, debemos mantener presionado la tecla D durante 2 segundos, para ser
más exactos en el momento que el relé se conecta después de 1 segundo hay una
pregunta si la tecla D es presionada ir a grabar, si no presionamos la tecla D a tiempo,
perderemos la oportunidad de cambiar la clave y tendremos que volver a repetir el
proceso, en el momento que ingresa al programa de cambio de clave se encenderá el led
y permanecerá encendido esperando a que ingresemos los 4 nuevos dígitos.
Es importante saber que la nueva clave se almacenara en las variables SETPRIME,
SETSEGUN, SETERCER y SETCUART, estas variables ocupan espacio de 224
BYTES, por lo tanto solo están activadas mientras el AVR se encuentra alimentado, una
vez que se corta la alimentación al AVR esta memoria de borra, por consiguiente al
momento de volver a prender el micro AVR, la nueva clave se nos habrá perdido y en
su lugar se encontrara la clave original (1, 2, 3, 4), esto debido a que esta clave se
encuentra en la memoria FLASH y en el momento de correr el programa lo carga
nuevamente en la memoria RAM para desde aquí poder ser modificada.
En cuanto a los materiales y el diagrama de conexión, son los mismos que se utilizaron
en el ejercicio anterior.
$regfile = "m8def.dat"
$crystal = 4000000
' configuro puertos como salida
Dim Numero As Byte
Dim R As Byte
Config Portc = Output
Ddrb = &B00001111
Portb = &B00001111
Config Portc = Output
A Alias Portb.0
B Alias Portb.1
C Alias Portb.2
D Alias Portb.3
Uno Alias Pinb.4
Dos Alias Pinb.5
Tres Alias Pinb.6
Cuatro Alias Pinb.7
Bip Alias Portc.0
Led Alias Portc.1
Door Alias Portc.2
Dim Setprime As Byte
Dim Setsegu As Byte
Dim Setercer As Byte
Dim Setcuart As Byte
Setprime = 1
Octavo Electrónica 2009 – 2010
Setsegu = 2
Setercer = 3
Setcuart = 4
niciando:
Led = 1 : Bip = 1
Waitms 500
Led = 0 : Bip = 0
Goto Teclauno
Grabauno:
Gosub Ptecla : Led = 1
Gosub Barrido : Gosub Ptecla
Led = 1
Setprime = Numero
Grabados:
Gosub Barrido : Gosub Ptecla
Led = 1
Setsegu = Numero
Grabatres:
Gosub Barrido : Gosub Ptecla
Led = 1
Setercer = Numero
FISEI - UTA
60
Grabacuatro:
Gosub Barrido : Gosub Ptecla
Led = 1
Setcuart = Numero
Goto Iniciando
Barrido:
A=0
If Uno = 0 Then Numero = 1 : Return
If Dos = 0 Then Numero = 2 : Return
If Tres = 0 Then Numero = 3 : Return
If Cuatro = 0 Then Numero = 10 :
Return
A=1
B=0
If Uno = 0 Then Numero = 4 : Return
If Dos = 0 Then Numero = 5 : Return
If Tres = 0 Then Numero = 6 : Return
If Cuatro = 0 Then Numero = 11 :
Return
B=1
C=0
If Uno = 0 Then Numero = 7 : Return
If Dos = 0 Then Numero = 8 : Return
If Tres = 0 Then Numero = 9 : Return
If Cuatro = 0 Then Numero = 12 :
Return
C=1
D=0
If Uno = 0 Then Numero = 14 :
Return
If Dos = 0 Then Numero = 0 : Return
If Tres = 0 Then Numero = 15 :
Return
If Cuatro = 0 Then Numero = 13 :
Return
D=1
Waitms 10
Goto Barrido
Ptecla:
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Teclados:
Gosub Barrido : Gosub Ptecla
If Numero = Setsegu Then Goto
Teclatres
Goto Falso1
Teclatres:
Gosub Barrido : Gosub Ptecla
If Numero = Setercer Then Goto
Teclacuatro
Goto Falso2
Teclacuatro:
Gosub Barrido : Gosub Ptecla
If Numero = Setcuart Then Goto
Openge
Goto Falso3
Openge:
For R = 1 To 2
Waitms 100
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Next
Door = 1
Wait 1
Door = 0
A=1:B=1:C=1:D=1
If Cuatro = 0 Then Goto Grabauno
Goto Teclauno
Falso:
Gosub Barrido : Gosub Ptecla
Falso1:
Gosub Barrido : Gosub Ptecla
Falso2:
Gosub Barrido : Gosub Ptecla
Falso3:
For R = 1 To 3
Wait 1
Led = 1 : Bip = 1
Wait 1
Led = 0 : Bip = 0
Next
Goto Teclauno
End
FISEI
Espacio:
If Uno = 0 Then Goto Espacio
If Dos = 0 Then Goto Espacio
If Tres = 0 Then Goto Espacio
If Cuatro = 0 Then Goto Espacio
Waitms 25
Return
Teclauno:
Gosub Barrido
Gosub Ptecla
If Numero = Setprime Then Goto
Teclados
Goto Falso
Octavo Electrónica 2009 – 2010
FISEI - UTA
61
CERRADURA ELECTRÓNICA CON CLAVE EN
MEMORIA EEPROM Y CAMBIO DE CLAVE
Una vez aprendido acerca de las 2 memoria anteriores, es el momento de aprender a
utilizar la memoria EEPROM (Electrical Erasable Programable Read Only Memory), o
memoria de lectura de programación y borrado eléctrico, que a diferencia de la memoria
RAM, esta no es volátil y tiene capacidad para 128 Bytes, lo que quiere decir que si al
AVR se le corta la alimentación, los datos almacenados en la memoria EEPROM,
permanecen según su fabricante por un periodo de 40 años a 100 años.
Este proyecto cumple todas las expectativas de un estudiante de micros, tiene la
posibilidad de cambiar la clave y no borrarse, si se digita una clave errónea el teclado se
bloquea y únicamente lo desbloqueamos presionando al mismo tiempo las teclas 7 y C
por 2 segundos, así mismo para cambiar la clave procedemos como en el proyecto
anterior, presionando la tecla D.
Algo importante es que si nos olvidamos la clave, la única manera de recuperarlo es
leyendo el contenido del AVR a través de un programador.
En cuanto a los materiales y el diagrama de conexión, son los mismos que se utilizaron
en el proyecto anterior.
LA DECLARACIÓN WRITEEEPROM Y READEEPROM
WRITEEEPROM: escribe un contenido variable en DATA EEPROM.
SINTAXIS: WRITEEEPROM variable, dirección
WRITEEEPROM 137, 8 quiere decir guardar en la dirección 8 de la memoria
EEPROM el número 137, si existiera un dato anterior en esta dirección, se borrara.
READEEPROM: lee el contenido de la EEPROM y lo almacena en una variable
SINTAXIS: READEEPROM variable, dirección
FISEI
READEEPROM pepe, 5 quiere decir leer la dirección 5 de la memoria EEPROM y
guardar en la variable pepe, por consiguiente pepe se carga con el dato que esta
almacenado en la dirección.
Octavo Electrónica 2009 – 2010
FISEI - UTA
62
FISEI
$regfile = "m8def.dat"
$crystal = 4000000
$eeprom
' configuro puertos como salida
Dim Numero As Byte
Dim R As Byte
Config Portc = Output
Ddrb = &B00001111
Portb = &B00001111
Config Portc = Output
A Alias Portb.0
B Alias Portb.1
C Alias Portb.2
D Alias Portb.3
Uno Alias Pinb.4
Dos Alias Pinb.5
Tres Alias Pinb.6
Cuatro Alias Pinb.7
Bip Alias Portc.0
Led Alias Portc.1
Door Alias Portc.2
Dim Setprime As Byte
Dim Setsegu As Byte
Dim Setercer As Byte
Dim Setcuart As Byte
Setprime = 1
Setsegu = 2
Setercer = 3
Setcuart = 4
Dim Eeprom1 As Byte
Dim Eeprom2 As Byte
Dim Eeprom3 As Byte
Dim Eeprom4 As Byte
Eeprom1 = 1
Eeprom2 = 2
Eeprom3 = 3
Eeprom4 = 4
Iniciando:
For R = 1 To 2
Led = 1 : Bip = 1
Waitms 500
Led = 0 : Bip = 0
Waitms 150
Next
Writeeeprom Eeprom1 , 0
Writeeeprom Eeprom2 , 1
Writeeeprom Eeprom3 , 2
Writeeeprom Eeprom4 , 3
Reseteo:
For R = 1 To 3
Led = 1 : Bip = 1
Waitms 50
Led = 0 : Bip = 0
Waitms 50
If Cuatro = 0 And Uno = 0 Then Goto
Reseteo
Next
Octavo Electrónica 2009 – 2010
Readeeprom Setprime , 0
Readeeprom Setsegu , 1
Readeeprom Setercer , 2
Readeeprom Setcuart , 3
Goto Teclauno
Grabauno:
Gosub Ptecla : Led = 1
Gosub Barrido : Gosub Ptecla
Led = 1
Writeeeprom Numero , 0
Grabados:
Gosub Barrido : Gosub Ptecla
Led = 1
Writeeeprom Numero , 1
Grabatres:
Gosub Barrido : Gosub Ptecla
Led = 1
Writeeeprom Numero , 2
Grabacuatro:
Gosub Barrido : Gosub Ptecla
Led = 1
Writeeeprom Numero , 3
Goto Reseteo
Barrido:
A=0
If Uno = 0 Then Numero = 1 : Return
If Dos = 0 Then Numero = 2 : Return
If Tres = 0 Then Numero = 3 : Return
If Cuatro = 0 Then Numero = 10 :
Return
A=1
B=0
If Uno = 0 Then Numero = 4 : Return
If Dos = 0 Then Numero = 5 : Return
If Tres = 0 Then Numero = 6 : Return
If Cuatro = 0 Then Numero = 11 :
Return
B=1
C=0
If Uno = 0 Then Numero = 7 : Return
If Dos = 0 Then Numero = 8 : Return
If Tres = 0 Then Numero = 9 : Return
If Cuatro = 0 Then Numero = 12 :
Return
C=1
D=0
If Uno = 0 Then Numero = 14 :
Return
If Dos = 0 Then Numero = 0 : Return
If Tres = 0 Then Numero = 15 :
Return
If Cuatro = 0 Then Numero = 13 :
FISEI - UTA
63
Return
D=1
Waitms 10
Goto Barrido
Ptecla:
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Espacio:
If Uno = 0 Then Goto Espacio
If Dos = 0 Then Goto Espacio
If Tres = 0 Then Goto Espacio
If Cuatro = 0 Then Goto Espacio
Waitms 25
Return
Teclauno:
Gosub Barrido
Gosub Ptecla
If Numero = Setprime Then Goto
Teclados
Goto Falso
Teclados:
Gosub Barrido : Gosub Ptecla
If Numero = Setsegu Then Goto
Teclatres
Goto Falso1
Falso:
Gosub Barrido : Gosub Ptecla
Falso1:
Gosub Barrido : Gosub Ptecla
Falso2:
Gosub Barrido : Gosub Ptecla
Falso3:
For R = 1 To 3
Waitms 150
Led = 1 : Bip = 1
Waitms 15
Led = 0 : Bip = 0
A=1:B=1:C=1:D=1
If Cuatro = 0 And Uno = 0 Then Goto
Reseteo
Next
Panico:
Led = 1
Waitms 500
Led = 0
Waitms 500
A=1:B=1:C=1:D=1
If Cuatro = 0 And Uno = 0 Then Goto
Reseteo
Goto Panico
End
Teclatres:
Gosub Barrido : Gosub Ptecla
If Numero = Setercer Then Goto
Teclacuatro
Goto Falso2
Teclacuatro:
Gosub Barrido : Gosub Ptecla
If Numero = Setcuart Then Goto
Openge
Goto Falso3
FISEI
Openge:
For R = 1 To 2
Waitms 100
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Next
Door = 1
Wait 1
Door = 0
A=1:B=1:C=1:D=1
If Cuatro = 0 Then Goto Grabauno
Goto Teclauno
Octavo Electrónica 2009 – 2010
FISEI - UTA
64
MOTORES PASO A PASO
¿QUÉ ES UN MOTOR PASO A PASO?
Como todo motor, es en esencia un conversor electromecánico, que transforma la
energía eléctrica en mecánica; pero de un modo tan peculiar que constituye en la
actualidad una categoría aparte. En efecto, mientras que un motor convencional gira
libremente al aplicar una tensión comprendida dentro de ciertos límites (que se
corresponden de un lado al par mínimo capaz de vencer su propia inercia mecánica, y de
otro a sus propias limitaciones de potencia); el motor paso a paso está concebido de tal
manera que gira un determinado ángulo proporcional a la "codificación" de tensiones
aplicadas a sus entradas (4, 6, etc.). La posibilidad de controlar en todo momento esta
codificación permite realizar desplazamientos angulares lo suficientemente precisos,
dependiendo el ángulo de paso (o resolución angular) del tipo de motor (puede ser tan
pequeño como 1,80º hasta unos 15º). De este modo, si por ejemplo el número de grados
por paso es de 1,80º, para completar una vuelta serán necesarios 200 pasos.
De la misma manera que se puede posicionar el eje del motor, es posible controlar la
velocidad del mismo, la cual será función directa de la frecuencia de variación de las
codificaciones en las entradas. De ello se deduce que el motor paso a paso presenta una
precisión y repetitividad que lo habilita para trabajar en sistemas abiertos sin
realimentación.
FISEI
MOTORES PASO A PASO BIPOLARES
En el esquema de la figura 4 aparece uno de estos motores con dos estatores, sobre cada
uno de los cuales se ha devanado una bobina (1 y U), las cuales se encuentran
conectadas directamente a unos conmutadores de control que, como se verá más
adelante, podrán ser sustituidos por las líneas de entrada y salida de nuestro ordenador
debidamente programadas. Como las bobinas se encuentran distribuidas simétricamente
en torno al estator, el campo magnético creado dependerá en magnitud de la intensidad
de corriente por cada fase, y en polaridad magnética, del sentido de la corriente que
circule por cada bobina. De este modo el estator adquiere la magnetización
correspondiente, orientándose el rotor según ella (fig. 4a). Si el interruptor 1.1 se
Octavo Electrónica 2009 – 2010
FISEI - UTA
65
FISEI
conmuta a su segunda posición (fig. 4b), se invierte el sentido de la corriente que circula
por T y por tanto la polaridad magnética, volviéndose a reorientar el rotor (el campo ha
sufrido una rotación de 90º en sentido antihorario, haciendo girar el rotor 90º en ese
mismo sentido). Con esto se llega a la conclusión de que para dar una vuelta completa
serían necesarios cuatro pasos de 90º cada uno (el ciclo completo se puede seguir en la
figura 4a,b,c,d).Ahora bien, este tipo de motores también puede funcionar de un modo
menos "ortodoxo", pero que nos va a permitir doblar el número de pasos, si bien a costa
de la regularidad del par. Esto se consigue de la siguiente manera: en principio, al igual
que en el anterior fondo de funcionamiento, por los devanados T y U se hace circular
una corriente, de tal modo que el estator adquiere la magnetización correspondiente y
por lo tanto el rotor se orienta según ella. Ahora bien, al contrario que en el caso
anterior, antes de conmutar el interruptor I.1 a su segunda posición, se desconectará el
devanado T, reorientándose por consiguiente el rotor, pero la mitad de un paso (45º).
Octavo Electrónica 2009 – 2010
FISEI - UTA
66
MOTORES PASO A PASO UNIPOLARES
FISEI
Los motores paso a paso unipolares, en cuanto a construcción son muy similares a los
anteriormente descritos excepto en el devanado de su estator (fig. 5). En efecto, cada
bobina del estator se encuentra dividida en dos mediante una derivación central
conectada a un terminal de alimentación. De este modo, el sentido de la corriente que
circula a través de la bobina y por consiguiente la polaridad magnética del estator viene
determinada por el terminal al que se conecta la otra línea de la alimentación, a través
de un dispositivo de conmutación. Por consiguiente las medias bobinas de conmutación
hacen que se inviertan los polos magnéticos del estator, en la forma apropiada. Nótese
que en vez de invertir la polaridad de la corriente como se hacía en los M.P.P. bipolares
se conmuta la bobina por donde circula dicha corriente.
Octavo Electrónica 2009 – 2010
FISEI - UTA
67
FISEI
Al igual que los M.P.P. bipolares, es posible tener resoluciones de giro correspondientes
a un semipaso. Ahora bien, dado que las características constructivas de estos motores
unipolares son idénticas a las de los bipolares, se puede deducir que los devanados tanto
en uno como otro caso ocuparán el mismo espacio, y por tanto es evidente que por cada
fase tendremos menos vueltas o bien el hilo de cobre será de una sección menor. En
cualquiera de los dos casos se deduce la disminución de la relación de amperios/vuelta.
Por tanto, a igualdad de tamaño los motores bipolares ofrecen un mayor par.
Octavo Electrónica 2009 – 2010
FISEI - UTA
68
SECUENCIA DEL CIRCUITO DE CONTROL
Existen dos formas básicas de hacer funcional los motores paso a paso atendiendo al
avance del rotor bajo cada impulso de excitación:
Paso completo (full step): El rotor avanza un paso completo por cada pulso de
excitación y para ello su secuencia ha de ser la correspondiente a la expuesta
anteriormente, para un motor como el de la Figura 2, y que se presentada de forma
resumida en la Tabla 1 para ambos sentidos de giro, las X indican los interruptores que
deben estar cerrados (interruptores en ON), mientras que la ausencia de X indica
interruptor abierto (interruptores en OFF).
FISEI
Medio paso (Half step): Con este modo de funcionamiento el rotor avanza medio paso
por cada pulso de excitación, presentando como principal ventaja una mayor resolución
de paso, ya que disminuye el avance angular (la mitad que en el modo de paso
completo). Para conseguir tal cometido, el modo de excitación consiste en hacerlo
alternativamente sobre dos bobinas y sobre una sola de ellas, según se muestra en la
Tabla siguiente para ambos sentidos de giro.
Octavo Electrónica 2009 – 2010
FISEI - UTA
69
MANEJO DE UN MOTOR PASO A PASO EN SECUENCIA
WAVE DRIVE
For X = 1 To 12
Portc = &B1000
Gosub Pausa
Portc = &B0100
Gosub Pausa
Portc = &B0010
Gosub Pausa
Portc = &B0010
Gosub Pausa
Next
Wait 1
Goto Antihorario
Pausa:
Waitms 100
Return
End
FISEI
$regfile = "m8def.dat"
$crystal = 4000000
$eeprom
Dim X As Byte
Config Portc = Output
Antihorario:
For X = 1 To 12
Portc = &B0001
Gosub Pausa
Portc = &B0010
Gosub Pausa
Portc = &B0100
Gosub Pausa
Portc = &B1000
Gosub Pausa
Next
Wait 1
Octavo Electrónica 2009 – 2010
FISEI - UTA
MANEJO DE UN MOTOR PASO A PASO EN SECUENCIA
FULL STEP
$regfile = "m8def.dat"
$crystal = 4000000
$eeprom
Dim X As Byte
Config Portc = Output
Antihorario:
For X = 1 To 12
Portc = &B0011
Gosub Pausa
Portc = &B0110
Gosub Pausa
Portc = &B1100
Gosub Pausa
Portc = &B1001
Gosub Pausa
Next
Goto Antihorario
Pausa:
Waitms 100
Return
End
FISEI
MANEJO DE UN MOTOR PASO A PASO EN SECUENCIA
HALF STEP
$regfile = "m8def.dat"
$crystal = 4000000
$eeprom
Dim X As Byte
Config Portc = Output
Antihorario:
For X = 1 To 12
Portc = &B0001
Gosub Pausa
Portc = &B0011
Gosub Pausa
Portc = &B0010
Gosub Pausa
Portc = &B0110
Gosub Pausa
Portc = &B0100
Gosub Pausa
Portc = &B1100
Octavo Electrónica 2009 – 2010
Gosub Pausa
Portc = &B1000
Gosub Pausa
Portc = &B1100
Gosub Pausa
Portc = &B1000
Gosub Pausa
Portc = &B1001
Gosub Pausa
Next
Goto Antihorario
Pausa:
Waitms 100
Return
End
FISEI - UTA
70
COMUNICACIÓN
QUE ES LA COMUNICACIÓN SERIAL?
RS-232 es hoy en día un estándar de comunicación antiguo. Es sorprendente que una
norma, definida en los años sesenta, es aún ampliamente utilizado hoy en día.
Formalmente no obstante, el nombre de RS-232 no es aplicable a una norma. Una
organización estadounidense, ahora conocida como la Asociación de Industrias
Electrónicas, propuso una forma de comunicación entre grandes ordenadores centrales y
periféricos tales como terminales La propuesta se llama un nivel recomendado y 232 no
era más que un número de identificación. Mucho más tarde esto se convirtió en una
norma oficial, la EIA-232. En 1991, la versión más reciente, la EIA-232E fue publicado.
Sin embargo, el nombre de RS-232 es aún ampliamente utilizado.
Una tensión entre -3 y -25 voltios es una lógica de un (1)
Una tensión entre 3 y 25 voltios es una lógica de cero (0)
UART
FISEI
UART medio receptor asíncrono de transmisor universal. Es el final de hardware en
ambos lados de un puerto RS-232 enlace de comunicación. En el PC o cualquier otro
equipo que es un chip en la placa base, bajo el control de la CPU. En el controlador de
AVR es una pequeña área en el chip dedicada a esta función.
En el ATMEGA8 el UART está conectado al pin 2 (RXD) y 3 (TXD). Como estos
pines también funcionan como de propósito general de E / S PortD.0 y PortD.1, tendrá
que sacrificar algunas de E / S si usted necesita el UART. Un UART se encarga de
enviar y recibir bits. Cuando se recibe, se determina cuándo se muestra el RxD PIN para
determinar si se recibe cero o uno. Cuando se transmite, la UART lee un byte del búfer
de transmisión y envía los bits que corresponden con el momento apropiado para el RS232 de velocidad seleccionada.
Octavo Electrónica 2009 – 2010
FISEI - UTA
71
72
Un convertidor de nivel genera las tensiones necesarias para cumplir con los niveles Del
RS-232. También se invierte la lógica de los niveles. El MAX232 usa interiormente,
convertidores de conmutación y dobladores de voltaje para generar niveles de alrededor
de -9 y 9 voltios. Estas tensiones se encuentran claramente dentro del rango requerido.
MODOS DE TRANSMISIÓN DE DATOS
Simplex: se dice a la transmisión que puede ocurrir en un solo sentido, sea sólo para
recibir o sólo para transmitir. Una ubicación pude ser un transmisor o un receptor, pero
no ambos a la vez, un ejemplo claro es la radiodifusión, en donde la estación es el
transmisor y los radios son los receptores.
FISEI
Half-duplex: se refiere a la transmisión que puede ocurrir en ambos sentidos, pero no al
mismo tiempo, en donde una ubicación puede ser transmisor o un receptor, pero no los
dos al mismo tiempo, un ejemplo son los llamados radios WALKING TALKING, en
donde un operador presiona el botón y habla, luego suelta el botón y el otro usuario
presiona el botón para contestar.
Full-duplex: se dice a la transmisión que puede ocurrir en ambos sentidos y al mismo
tiempo, también se lo conoce con el nombre de líneas simultaneas de doble sentido, una
ubicación puede transmitir y recibir simultáneamente, siempre y cuando la estación a la
que está transmitiendo también sea la estación de la cual está recibiendo, un ejemplo es
la telefonía móvil.
Octavo Electrónica 2009 – 2010
FISEI - UTA
73
Full/full-duplex: con este modo de transmisión es posible transmitir y recibir
simultáneamente, pero no necesariamente entre las dos ubicaciones, es decir una
estación puede transmitir a una segunda estación y recibir ded una tercera estación al
mismo tiempo. Esta transmisión se utiliza exclusivamente con circuitos de
comunicación de datos.
COMUNICACIÓN SERIAL AVR A PC
Una vez comprendido la teoría de la comunicación serial y su protocolo RS232,
haremos un ejercicio de comunicación serial asincrónico modo simplex, que consiste en
enviar datos, mas específicamente los caracteres ASCII de la palabra “DOG”, a través
de un cable y directamente desde el AVR al PC, a 2400 bits/seg, a 8 bits de datos, sin
paridad, y 1 bit de parada. Como sabemos el computador tiene al menos un puerto
serial, como la norma RS232, por lo tanto debemos simular esos voltajes desde el AVR,
esto lo conseguimos enviando 0 para representar el 1 lógico y 5V para representar el 0
lógico, para esto existe la declaración PRINT.
Print “D” envía el carácter ASCII “D” por el puerto de comunicación serial del AVR.
$baud = 19200 Digo que trabajare a 19200 bits/segundo.
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 96000
Config Portb = Output
Inicio:
Portb.0 = 1
Wait 1
Portb.0 = 0
Waitms 500
' envio datos en forma serial
Print "DOG"
Goto Inicio
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
74
BASCOM nos ofrece una herramienta para poder simular la comunicación serial, para
ello nos vamos a Tools / Terminal Emulator
FISEI
Debemos configurar el terminal, para ello damos un clic en Terminal y se presentara la
siguiente ventana de configuración. Terminal / Setting
Octavo Electrónica 2009 – 2010
FISEI - UTA
75
COMUNICACIÓN SERIAL PC A AVR
Si usted tubo problemas con el envió de datos del AVR al PC, este proyecto de seguro
le funcionara, se trata de enviar datos desde el PC al AVR, por lo que es de suponerse
los voltajes serán desde -10V hasta +10V y la distancia podemos extenderlo hasta 15
metros sin ningún problema, como la conexión es directamente al AVR debemos
colocar una resistencia de 22K para no dañar el puerto del AVR. En este caso el AVR es
un receptor por lo que debemos permanecer en espera del bit de inicio, para esto
tenemos la declaración SERIN.
DECLARACIÓN SERIN: esta declaración sirve para recibir datos seriales en un
formato estándar asíncrono.
FISEI
Mybaud = 19200
Serin S , 0 , D , 0 , Mybaud , 0 , 8 , 1
'
^ 1 stop bit
'
^---- 8 data bits
'
^------ even parity (0=N, 1 = E, 2=O)
'
^-------------- baud rate
'
^-------------------- pin number
'
^----------------------- port so PORTd.0 and PORTd.1 son usados
'
^--------------------------- for strings pass 0
'
^-------------------------------- variable
Octavo Electrónica 2009 – 2010
FISEI - UTA
76
$regfile = "m8def.dat"
$crystal = 1000000
Dim Dat As Byte
Dim Mybaud As Integer
Mybaud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 ,
Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 ,
Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 ,
Rs = Portb.6
Config Lcdmode = Port
' borrar la pantalla
Cls
' Presento en la lcd
Lcd " LCD listo"
Wait 1
Cls
Inicio:
Serin Dat , 0 , D , 0 , Mybaud , 0 , 8 ,
1
Lcd "Dat"
Goto Inicio
COMUNICACIÓN I²C
FISEI
I²C significa Inter-IC. e trata de un desarrollo de Philips, que comenzó en los años
ochenta. En aquellos días la electrónica de consumo, como televisores y la radio pasó
por una fase rápida de conseguir más y más usuarios. Lotes de circuitos integrados se
han añadido a estos productos como consecuencia de cableado más complicado en un
circuito impreso de hacinamiento. Philips considera que un bus serie simple era una
solución posible. En lugar de buses de acoplamiento en paralelo IC, todos estos LED's
se conectan a un bus de dos hilos. El bus de dos hilos tiene un cable de datos y de un
reloj, llaman SDA y SCL, respectivamente.
En 1992, el estándar I²C utiliza un esquema de siete bits para el direccionamiento,
permitiendo 128 CI a ser conectados a un bús.
Octavo Electrónica 2009 – 2010
FISEI - UTA
77
Direccion I²C
El número de CI en un bus I²C está limitado a 128, ya que cada IC necesita únicos siete
bits de dirección.
Estándar I²C
La norma original especifica una velocidad máxima en el bus de 100 kHz. En 1992, se
añadió un modo rápido con una velocidad máxima de 400 kHz. En 1998, una versión 2
fue lanzado. Esta versión tiene un modo de alta velocidad con un máximo de 3.4Mbit/s.
Mas sobre I²C
FISEI
Philips tiene la patente en la I²C eso significa que otros fabricantes de chips que quieren
hacer IC I²C tienen que pagar regalías y deben firmar un acuerdo que indique que se
adhieren a los estándares I²C.
La mayoría de los controladores de AVR de Atmel tiene una interfaz de dos hilos, por
lo menos eso es lo que dice la documentación. Esto es por supuesto una interfaz I²C.
La norma I²C prescribe resistencias en SDA y la línea SCL. Este es uno de los errores
más comunes de la primera vez que utiliza una interfaz de I²C. Olvídese de los "pushpull y su interfaz no funcionará.
Octavo Electrónica 2009 – 2010
FISEI - UTA
78
La longitud máxima de los cables de bus I²C no está en la norma. Sólo dice que para la
variante de 100 kHz, la capacidad total del cableado de bus y los dispositivos
conectados no debe exceder 400pF.
COMUNICACIÓN I²C CON UNA MEMORIA SERIAL 24L04B
Esta es una practica muy básica para aprender sobre la interfaz I²C, consiste en guardar
datos es las cuatro primeras direcciones de la memoria serial, estas son utilizadas para el
almacenamiento de datos que pueden ser necesitados más adelante. Para el caso de la
memoria 24LC04B tiene un espacio de memoria de 4Kbytes, luego de almacenarlos los
volveremos a leer y mostrar en la pantalla LCD.
Referencia
FISEI
24LC01B
24LC02B
24LC04B
24LC08B
24LC016B
Capacida
d
Ciclos de
E/W
Bloques
Internos
Dirección
A0
A1
1K bits
2 K bits
4 K bits
8 K bits
16 K bits
1000000
1000000
1000000
1000000
1000000
1
1
2
4
8
1-0
1-0
x
x
x
1-0
1-0
1-0
x
x
A2
Cantidad
de
disposit.
En el bus
Voltaje de
operación
1-0
1-0
1-0
1-0
x
8
8
4
2
1
2.5-5.5V
2.5-5.5V
2.5-5.5V
2.5-5.5V
2.5-5.5V
El principio de funcionamiento es el siguiente: primero se envía el star (bit de arranque)
cada palabra puesta en el bus SDA debe tener 8 bits, la primera palabra transferida debe
contener la dirección del esclavo seleccionado, en este caso se envía el código de la
memoria 1010 (este dato lo suministra el fabricante), luego la dirección del dispositivo
(A2, A1, A0), y un bit 0 indicando que se debe escribir en la memoria (1 = lectura),
luego de todo esto la memoria, debe enviar un reconocimiento para informar al
microcontrolador que recibió la información, este acuse de recibo se denomina ACK
(acknowledge).
Octavo Electrónica 2009 – 2010
FISEI - UTA
79
Luego el master lee el ACK, si vale 0 (enviado por el esclavo), el proceso de
transferencia continúa. Si vale 1, esto indica que el circuito direccionado no valida la
comunicación, entonces es Master genera un bit de stop para liberar el bus I²C, en la
cual las líneas SDA y SCL pasan a un estado alto, vamos a suponer que el ACK es 0,
entonces el microcontrolador envía los 8 bits correspondientes a la posición de memoria
que se desea escribir a leer, nuevamente la memoria envía un reconocimiento,
finalmente se envía el dato a ser almacenado y se espera la respuesta de la memoria
indicando que el dato llegó correctamente, finalmente se debe enviar el bit de parada.
DECLARACIÓN
I2CSTART genera una condición de inicio.
I2CSTOP genera una condición de parada
I2CRBYTE recibe un byte de un dispositivo.
FISEI
I2CWBYTE envía un byte a un dispositivo.
Octavo Electrónica 2009 – 2010
FISEI - UTA
80
En este casi vamos a escribir y leer en la memoria, por lo que el pin WP debe estar
colocado en estado bajo, una vez que se haya grabado se podrá colocar este pin en
estado alto para proteger la memoria de futuras escrituras, los datos almacenados en esta
memoria permanece aun si se le corta la alimentación al CI, el acceso a estos datos se lo
realiza las veces deseadas, recuerde que la memoria serial soporta 1000000 de ciclos de
borrado y escritura, por lo tanto se debe tener cuidado de no ejecutar un programa que
almacene una y otra vez el mismo dato.
FISEI
Config Sda = Portb.5
Dim Dato As Byte
Dim Dato1 As Byte
Dato = 2
Dato1 = 0
Wait 5
Do
Cursor Off Noblink
' escribo en la memoria
' genere inicio
I2cstart
' direccion del esclavo
I2cwbyte &B10100000
' direccion de eeprom
I2cwbyte 0
' valor a escribir
I2cwbyte Dato
' genere parada
I2cstop
Waitms 10
' leo la memoria
I2cstart
I2cwbyte &B1010_0000
I2crbyte Dato1 , Nack
I2cstop
Cls
Lcd " DATO " ; Dato1
Wait 2
Cls
Loop
Octavo Electrónica 2009 – 2010
FISEI - UTA
81
INTERRUPCIONES
Suponga que tiene un programa de Bascom que se encuentra en un bucle haciendo algo
complicado y requiere mucho tiempo. Usted quiere ser capaz de detener esta tarea y
cambiar el programa para hacer algo más. La solución de hardware obvia es añadir un
botón STOP para su AVR.
FISEI
Normalmente, se pulsa el botón con el siguiente fragmento de programa:
...
Config Pind.2 as Input
... ...
Do
... ...
...someting complicated... ...
... ...
If Pind.2 = 0 Then
Lcd "Stop!"
Goto Othertask
End If
Loop
... ...
OtherTask:
... ...
Octavo Electrónica 2009 – 2010
FISEI - UTA
82
El problema fundamental de este ejemplo es que podemos pasar tanto tiempo haciendo
la tarea complicada, que al pulsar el botón STOP a menudo no se detecta cuando se
pulso el Boton de stop. Obviamente necesitamos otro mecanismo para reaccionar a
pulsar el botón STOP de manera independiente del programa principal. Las
interrupciones son para cambiar el flujo del programa para responder a externos, así
como eventos de controlador interno
$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 10
$framesize = 40
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 , Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 , Rs = Portb.6
Config Lcdmode = Port
Config Pind.6 = Output
Config Pind.2 = Input
Config Int0 = Falling
Dim Wtime As Byte
On Int0 Stopbutton
Cls
Wtime = 255
Enable Interrupts
Enable Int0
FISEI
Do
Set Portd.6
Waitms Wtime
Reset Portd.6
Waitms Wtime
Loop
Stopbutton:
Lcd "stop!"
Wait 1
Cls
Return
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
83
SLEEP Y WAKE-UP, WATCH DOG
Se utilizan normalmente en aplicaciones de batería cuando el controlador no tiene nada
que hacer y desea ahorrar energía.
El ATMEGA8 puede hacer el SLEEP de dos maneras:
La declaración de inactividad se detiene el reloj del controlador, pero la UART,
las interrupciones externas y el temporizador / contador de interrupciones seguir
funcionando. Todas estas interrupciones pueden despertar el controlador.
Wake-up detiene el reloj del controlador, pero las interrupciones externas se
mantienen funcionando y puede despertar el controlador,
$regfile = "m8def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 ,
Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 ,
Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 ,
Rs = Portb.6
Config Lcdmode = Port
Config Pind.6 = Output
Config Int0 = Low Level
FISEI
On Int0 Button
Enable Interrupts
Enable Int0
Do
Set Portd.6
Wait 1
Reset Portd.6
Cls
Lcd "power apagado"
Lowerline
Lcd "push boton"
Powerdown
Loop
Button:
Cls
Lcd "despierta!"
Wait 1
Return
End
Después de parpadear el LED y escribir un mensaje a la pantalla LCD,
Desmantelamiento "se utiliza para detener el reloj del controlado. Al pulsar el botón se
despierta el controlador
Octavo Electrónica 2009 – 2010
FISEI - UTA
84
WATCHDOG
Bascom puede proporcionar una función de vigilancia. n vigilante es un truco para
restablecer su control si el programa de alguna manera se atasca o "cuelga". Un
vigilante es un contador de tiempo que tendrá que ponerse a cero de vez en cuando. Si
se bloquea el programa, no será capaz de restablecer la vigilancia y cuando los tiempos
de vigilancia a cabo, se restablecerá el controlador. Esto a menudo se utiliza en
aplicaciones críticas donde tiene que estar seguro de que el controlador se reiniciará
pase lo que pase. Un programa decente debe lidiar con un tiempo de vigilancia en una
forma sensata. El tiempo de espera vigilante es una situación muy grave, tal vez causada
por un error de diseño de hardware o de software. En cualquier caso, cuando se utilizan
perros guardianes, siempre incluyen algún tipo de mecanismo de información, o bien
nunca se sabrá acerca de estos posibles errores.
Un organismo de control tiene que estar configurado para un tiempo de espera
específicas:
Config Watchdog 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048
que van desde 16 hasta 2048 milisegundos.
El organismo de control tiene que ponerse a cero antes del tiempo de espera.
Reset Watchdog
Para evitar un reinicio del controlador.
El organismo de control puede ser iniciado y se detuvo con un
FISEI
Start Watchdog
Stop Watchdog
$regfile = "m8def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 ,
Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 ,
Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 ,
Rs = Portb.6
Config Lcdmode = Port
Config Pind.6 = Output
Config Watchdog = 2048
Do
Cls
Set Portd.6
Wait 2
Reset Portd.6
Lcd "WD correr"
Lowerline
Lcd "wait 2 secs..."
Start Watchdog
Idle
Loop
End
Octavo Electrónica 2009 – 2010
FISEI - UTA
85
Después de que el perro guardián de inicio, el controlador se pone en Idle, detener el
reloj del controlador. Como el organismo de control se ejecuta en un reloj
independiente, se puede y se restablecerá el controlador después de app dos segundos.
CIRCUITO PROGRAMADOR DE AVR
PROGRAMADOR ISP
FISEI
BASCOM soporta al STK200, STK200+ y STK300 programador ISP de Atmel.
Éste es un programador de puerto de impresora paralelo muy fiable. La mayoría de los
programas se probó con el STK200.
Para aquéllos que no tienen este equipo programador les muestro el esquema siguiente
de cómo hacer su propio programador.
Octavo Electrónica 2009 – 2010
FISEI - UTA
86
El PG302 es un programador serial. Funciona y se visualiza exactamente como el
software PG302.
Seleccione el programador en Opciones de menú del Programador, o clic derecho en el
botón
o en las opciones del programa en el menú.
EJEMPLO DEL CABLE DE PROGRAMACIÓN
Este programador es muy simple y usted puede hacer dentro de 30 minutos. Lo que
necesitas es un terminal DB25 (conector macho), cable, conectores.
Las conexiones que se debe realizar son las siguientes.
La numeración del pin MCU son para los 8535 y 8515.
Usted puede usar una resistencia pequeña de 100-220 ohm en serie con la linea D0, D2
y D3 evitando un corto circuito que sus LPT ponen a babor en el evento cuando los
pines de MCU son altos. Se probó sin estas resistencias y ningún problema ocurrió.
FISEI
El siguiente grafico muestra las conexiones a realizar:
Octavo Electrónica 2009 – 2010
FISEI - UTA
87
FISEI
Octavo Electrónica 2009 – 2010
FISEI - UTA
88
FISEI
CHIPS
Octavo Electrónica 2009 – 2010
FISEI - UTA
AT86RF401
Se muestra el entorno de distribución de pines, si desea información adicional se debe
buscar los Datasheet de los Chips en www.datasheetcatalog.com
FISEI
AT90S1200
Octavo Electrónica 2009 – 2010
FISEI - UTA
89
AT90S2313
FISEI
AT90S2323
Octavo Electrónica 2009 – 2010
FISEI - UTA
90
AT90S2333
AT90S2343
FISEI
Cuando usas el AT90S2343 con Bascom-AVR y el STK200, el jumper del
programador debe estar en ext-clk.
Octavo Electrónica 2009 – 2010
FISEI - UTA
91
AT90S4414
FISEI
AT90S4433
Octavo Electrónica 2009 – 2010
FISEI - UTA
92
AT90S4434
FISEI
AT90S8515
Octavo Electrónica 2009 – 2010
FISEI - UTA
93
AT90S8535
FISEI
AT90PWM2-3
Octavo Electrónica 2009 – 2010
FISEI - UTA
94
FISEI
AT90CAN128
Octavo Electrónica 2009 – 2010
FISEI - UTA
95
AT90USB162
ATtiny12
FISEI
ATtiny13
Octavo Electrónica 2009 – 2010
FISEI - UTA
96
ATtiny15
ATtiny22
ATtiny24
FISEI
ATtiny25
Octavo Electrónica 2009 – 2010
FISEI - UTA
97
ATtiny26
ATtiny44
FISEI
ATtiny45
Octavo Electrónica 2009 – 2010
FISEI - UTA
98
ATtiny48
ATtiny84
FISEI
ATtiny85
Octavo Electrónica 2009 – 2010
FISEI - UTA
99
ATtiny88
FISEI
ATtiny261
Octavo Electrónica 2009 – 2010
FISEI - UTA
100
ATtiny861
ATtiny2313
FISEI
ATMEGA8
Octavo Electrónica 2009 – 2010
FISEI - UTA
101
ATMEGA16
FISEI
ATMEGA32
Octavo Electrónica 2009 – 2010
FISEI - UTA
102
ATMEGA32U
FISEI
ATMEGA48
Octavo Electrónica 2009 – 2010
FISEI - UTA
103
ATMEGA48P
FISEI
ATMEGA88
Octavo Electrónica 2009 – 2010
FISEI - UTA
104
FISEI
ATMEGA88P
Octavo Electrónica 2009 – 2010
FISEI - UTA
105
FISEI
ATMEGA64
Octavo Electrónica 2009 – 2010
FISEI - UTA
106
FISEI
ATMEGA103
Octavo Electrónica 2009 – 2010
FISEI - UTA
107
ATMEGA128
FISEI
ATMEGA1284P
Octavo Electrónica 2009 – 2010
FISEI - UTA
108
ATMEGA161
FISEI
ATMEGA162
Octavo Electrónica 2009 – 2010
FISEI - UTA
109
ATMEGA163
FISEI
ATMEGA164P
Octavo Electrónica 2009 – 2010
FISEI - UTA
110
ATMEGA165
FISEI
ATMEGA168
Octavo Electrónica 2009 – 2010
FISEI - UTA
111
ATMEGA168P
FISEI
ATMEGA169
Octavo Electrónica 2009 – 2010
FISEI - UTA
112
ATMEGA323
FISEI
ATMEGA324P
Octavo Electrónica 2009 – 2010
FISEI - UTA
113
ATMEGA325
FISEI
ATMEGA328P
Octavo Electrónica 2009 – 2010
FISEI - UTA
114
ATMEGA329
FISEI
ATMEGA406
Octavo Electrónica 2009 – 2010
FISEI - UTA
115
FISEI
ATMEGA603
Octavo Electrónica 2009 – 2010
FISEI - UTA
116
FISEI
ATMEGA640
Octavo Electrónica 2009 – 2010
FISEI - UTA
117
ATMEGA644P
FISEI
ATMEGA645
Octavo Electrónica 2009 – 2010
FISEI - UTA
118
FISEI
ATMEGA649
Octavo Electrónica 2009 – 2010
FISEI - UTA
119
FISEI
ATMEGA2560
Octavo Electrónica 2009 – 2010
FISEI - UTA
120
FISEI
ATMEGA2561
Octavo Electrónica 2009 – 2010
FISEI - UTA
121
ATMEGA8515
FISEI
ATMEGA8535
Octavo Electrónica 2009 – 2010
FISEI - UTA
122
FISEI
ATXMEGA128A1
Octavo Electrónica 2009 – 2010
FISEI - UTA
123
FISEI
Octavo Electrónica 2009 – 2010
FISEI - UTA