Está en la página 1de 3

ESCUELA POLITÉCNICA NACIONAL

DEBERES Y TRABAJOS
SISTEMAS MICROPROCESADOS (IEAD522)

1.1 Indicaciones Generales:


202BA

• B
Para los siguientes ejercicios puede usar un Arduino uno o un mega.
Configure la comunicación serial para todos los ejercicios e imprimar en la
terminal las variables que se está usando (práctica para la evaluación).
• Presente capturas de pantalla de la simulación, el programa y un diagrama de
flujo (lo pueden realizar a mano alzada, tomarle una foto y pegarlo en el
documento).
• Recuerde que ahora solo puede usar los comandos de Arduino para la
comunicación serial, para todo lo demás, incluyendo retardos, interrupciones y
demás debe hacerlo usando los registros en C.

1.2 Ejercicio 1:

Implemente un programa que cumpla con los siguientes requerimientos:

o Investigue el funcionamiento de un sensor LM35.


o Ingrese la señal de salida del sensor por el pin ADC0, use una referencia de
voltaje externa de 1V.
o Presente en la terminal virtual:
▪ El valor leído por el conversor ADC
▪ El voltaje que corresponde al valor leído
▪ La temperatura que corresponde al voltaje anterior.
o Encienda un led verde cuando la temperatura se encuentre de 15 a 25 grados
o Un led naranja cuando la temperatura esté de 25 a 37 grados
o Un led rojo de 37 grados en adelante
o Un led azul para temperaturas inferiores a 15 grados.

1.3 Ejercicio 2:

Implemente un programa que cumpla con los siguientes requerimientos:

• Ingrese una señal analógica de 5 voltios por el pin ADC0.


• Utilice como referencia el voltaje interno del microcontrolador (AREF = AVCC = 5V).
• Genere dos ondas rápidas de 10 bits usando el Timer1, una de relación directa con
el puntero OC1A y otra de relación inversa con el puntero OC1B.
• Varíe los anchos de pulso de la PWM de acuerdo con la señal analógica ingresada.
• Configure la onda PWM para obtener una frecuencia dentro del rango de 20 a 100
Hz.

1.4 Ejercicio 3:

Implemente un programa que cumpla con los siguientes requerimientos:

• Ingrese una señal analógica de 1 voltio máximo por el pin ADC1.


• Utilice como referencia una fuente de dos voltios conectada al pin AREF.
• Realice un barrido de cuatro displays.
• Muestre en los displays el voltaje de entrada con tres decimales de precisión
• A continuación unas ayudas:
o La lectura que usted obtendrá es de 0 a 0V y 1023 a 2V
o Usted deberá realizar una regla de tres dentro del microcontrolador para
transformar el valor ingresado a voltaje.
o Como hacer el barrido de displays con decimales es más complicado que
con números enteros, haga las reglas de tres necesarias para que cuando
ingrese 0V la lectura sea 0 y cuando ingrese 1V la lectura sea 1000.
o Encienda el punto decimal del display de las unidades de mil, el número en
lugar de verse como 1000 se verá como 1.000 (que emula al número uno con
tres decimales de precisión)
o Ejemplo:
▪ Ingresa un voltaje de 0.876V.
▪ Dentro del micro eso se leería como: 0.876*1023/2 = 448
▪ Se transforma la lectura usando una regla de tres 448*2000/1023 = 0876
▪ Mande a barrer ese número y como va a encender el punto decimal,
se vería como 0.876.

1.5 Ejercicio 4:

Implemente un programa que cumpla con los siguientes requerimientos:

• Ingrese dos ondas analógicas por el puerto C, una por el pin ADC0 y otra por el pin
ADC1.
• Genere una onda PWM usando el puntero OC1A de fase y frecuencia correcta, con
un preescalador de 64, que tenga relación directa y que el tope sea el registro ICR1.
• El valor analógico ingresado por el ADC0 configurará el valor del registro ICR1, de
esta manera se variará el valor de la frecuencia de la PWM
• El valor analógico ingresado por el pin ADC1 configurará la relación de trabajo de
la PWM, tome en cuenta que usted deberá modular el valor leído por el ADC1 en
función de la frecuencia de la PWM, por ejemplo:
o Por el ADC0 se ingresa un valor de 4(V), este es interpretado dentro del micro
como 4*1023/5 = 818, luego usted va a guardar ese valor en el ICR1, por lo
que el valor de OC1A puede variar de 0 a 818 para modular el ancho de pulso
de la PWM.
o Tome en cuenta que el valor ingresado por el ADC1 también varía de 0 a 1023,
pero en este caso usted necesita que varíe únicamente de 0 a 818, por lo que
deberá multiplicar al valor que ingresa por 818/1023 = 0.7898 para poder
modular el ancho de pulso sin pasarse del valor máximo.

1.6 Ejercicio 5:

Implemente un programa que cumpla con los siguientes requerimientos:

o Conecte dos servos al microcontrolador, uno en la salida del OC1A y otro en


OC1B.
o Configure dos señales PWM de 50Hz para el manejo de los servos, el ancho de
pulso deberá variar de 1ms a 2ms.
o Recuerde que cuando el ancho de pulso sea de 1ms el servo se moverá a 0
grados y cuando sea de 2ms se moverá a 180 grados (por ejemplo en 1.5ms
se moverá a 90 grados y así sucesivamente).
o Conecte dos señales analógicas a partir de dos potenciómetros conectados
en los pines ADC0 y ADC1, use como referencia el voltaje interno de 5V del
microcontrolador.
o Varie le posición de los servomotores de acuerdo con el voltaje leído por los
pines analógicos (ADC0 ->OC1A y ADC1->OCB1B)
o Por ejemplo:
▪ El potenciómetro conectado a ADC0 configura un voltaje de 2V.
▪ El micro leerá un valor de 2*1023/5 = 409
▪ Se entiende que el ángulo será de: 409*180/1023 = 72 grados
▪ Para que se mueva a 72 grados, el tiempo que tiene que permanecer
el sistema en alto será 72/180*1ms+1ms = 1.4ms
▪ Por ejemplo, si el ICR1 es 4000 (no digo que este sea el valor necesario
para obtener 50Hz, es un ejemplo), el valor del OCR1A =
4000*1.4ms/20ms = 280.

También podría gustarte