Lista de Problemas

MICROCONTROLADORES
EJERCICIOS PARA PRACTICAR
(SE INCLUYE ADC Y PUERTO SERIE)
SEMESTRE 2016-B
1. Para el movimiento de un servomotor se requiere de una señal PWM con un periodo de 20
mS, el servomotor se mantiene en 0o (extremo izquierdo) con un ancho de pulso de 0.9 mS y
en 180o (extremo derecho) si el ancho es de 2.1 mS. Considerando que el servomotor tiene un
comportamiento lineal, realice un circuito que mueva el servomotor de un extremo a otro, con
un potenciómetro conectado a una entrada analógica, como se muestra la figura:
En la gráfica se muestra el comportamiento esperado.
2. Digitalice una señal analógica para mostrarla en dos displays de 7 segmentos, escalando para
que con el valor analógico mínimo se muestre el 00 en la salida y con el máximo el número 99.
Actualice la información cada medio segundo y utilice al timer 1 para el manejo de este
periodo. Observe que, por las combinaciones en la salida, es suficiente con una resolución de 8
bits para el ADC.
3. Similar al problema anterior, pero ahora digitalice dos señales analógicas para mostrarlas
alternadamente en dos displays de 7 segmentos.
Actualice la información cada medio segundo y cada 2 segundos conmute entre uno u otro
canal, nuevamente haga uso del timer 1 para el manejo de los periodos de tiempo.
4. Realice un control proporcional de temperatura empleando 2 canales del ADC de un ATMega8.
En ADC0 se conectará un sensor de temperatura, acondicionado para proporcionar un
intervalo entre 0 y 50 oC (Treal). En ADC1 se conectará un potenciómetro para proporcionar un
voltaje analógico (Tref) escalado a un número entre 0 y 50 (manteniendo la representación en
punto flotante).
Se generará una señal PWM para el manejo de un ventilador de CD, bajo el siguiente
esquema:



Si Treal <= Tref el ventilador estará apagado.
Si Treal > Tref y Treal <= Tref + 3.0, la señal PWM será proporcional a Treal – Tref.
Considerando un comportamiento lineal para un ciclo útil entre 0 y 100 %.
Si Treal > Tref + 3.0 la señal PWM tendrá el 100 % de ciclo útil (ventilador encendido).
En la figura se muestra el comportamiento esperado en el sistema:
PWM
100 %
Treal
0%
Tref
Tref + 3.0
La señal PWM debe tener una frecuencia de 500 Hz.
5. Aproximando linealmente el intervalo de variación de la resistencia de un fotoresistor, entre
20 kΩ (sin luz) y 500 Ω (con luz). Con un ATMega328 genere un tono variable, de 100 Hz (sin
luz) y hasta 1.2 KHz (con luz).
Acondicione al fotoresistor conectando un resistor en serie y determine el intervalo de interés.
Con el circuito implementado, al tapar con la mano al fotoresistor se generará un tono grave y
en la medida en la mano que se aleja, el sonido se volverá agudo.
6. Con un microcontrolador ATMega328 digitalice 2 señales analógicas (V1 y V2) manteniendo la
resolución de 10 bits.
Si V1 > V2, genere una señal PWM en OC1A; en caso de que V1 < V2, la señal PWM se
generará en OC1B. Cuando V1 = V2, tanto en OC1A como en OC1B se tendrá una salida de 0 V
(o PWM con 0 %).
La señal PWM deberá tener una frecuencia de 50 Hz y un ancho de pulso proporcional a la
diferencia entre V1 y V2.
Note que la diferencia máxima se obtiene cuando V1 = 5 V y V2 = 0, o viceversa.
7. Considerando el sistema de la siguiente figura:
Desarrolle un programa mediante el que se muestre un parámetro analógico en el LCD,
digitalizándolo en un rango entre 0 y 99.9, actualizando la pantalla cada segundo (utilice el Timer 1
como base de tiempo).
Configure la USART para una comunicación a 1200 Baudios, datos de 8 bits, un bit de paro y sin
paridad. Configure la interrupción por recepción, de manera que cuando el micro reciba la letra:



‘E’ – Encienda el LED conectado en PD4.
‘A’ – Apague el LED conectado en PD4.
‘V’ – Envíe los 4 caracteres ASCII con el valor digitalizado.
El micro debe ignorar cualquier letra diferente recibida.
8. Se requiere manipular un servomotor a distancia, el MCU (1) debe obtener el valor digital de la
entrada analógica cada 200 ms y enviar la información por el puerto serie, pero sólo si detecta
un cambio con respecto a la lectura anterior. El MCU (2) en cualquier momento puede recibir
un entero de dos bytes, primero el byte menos significativo. Si el entero está entre 0 y 1023 lo
acondicionará para generar la salida PWM para el manejo del servomotor.
El MCU (2) responderá con 0x55 si el dato se recibió en el intervalo correcto y con 0xAA en
caso contrario. El MCU (1) esperará la respuesta y en caso de recibir 0xAA, enviará
nuevamente la información.