¡Descarga Microprocesadores y Microcontroladores: Guía Práctica para el Desarrollo de Aplicaciones y más Apuntes en PDF de Microprocesadores solo en Docsity!
Microprocesadores y
Microcontroladores
Oscar Alberto Jaramillo Alzate
ECBTI/ZOCC/CEAD Medellín Medellín 2020
Desarrollo del componente práctico
1. El desarrollo del componente práctico se va a desarrollar de forma individual o grupal según lo que
indique el tutor asignado de componente práctico de la zona (Por favor estar atento a las indicaciones
del tutor asignado para verificar si se va a desarrollar individual o grupal)
2. Se va a utilizar el software de programación Arduino o Python
3. Se va a utilizar el software de simulación Proteus
4. Se van a desarrollar los 3 laboratorios a continuación de forma virtual
5. Cada una de las prácticas se desarrollan de forma independiente, se debe entregar video de
sustentación de la práctica junto con su respectivo informe, tengan en cuenta que al final son 3
informes con el desarrollo de cada una de las prácticas con sus vídeos de sustentación respectivos
6. La sustentación la realizan por medio de un video enlazado a la plataforma Youtube, con una duración
mínima de 5 minutos explicando el código generado en Arduino o Python y el funcionamiento del
circuito simulado en Proteus
7. Van a entregar el informe teniendo en cuenta las siguientes indicaciones, tenga en cuenta que dentro
del informe debe estar el link del video de sustentación de la práctica desarrollada
Portada
Nombre – Código, Universidad, Escuela, Programa Académico, Fecha
Introducción
Temas a tratar y finalidad del documento
Resumen
Desarrollo, metodología, y conclusiones
Objetivos
Objetivos Acorde a los propósitos de las actividades a desarrollar
Marco Metodológico
Descripción paso a paso del desarrollo de la actividad. Se anexan imágenes, tablas, graficas, libros, links, videos, blogs, etc.
Conclusiones
Una conclusión es un aspecto importante y relevante que observaron en el desarrollo de la actividad, como: aspectos de diseño, metodología, equivocaciones, distintos métodos para llegar a un fin, y demás ítems relevantes que se encontraron
Bibliografía
Normas APA
Recomendaciones
Propuestas por el estudiante después de observar cómo se puede mejorar la actividad y las describe en el documento UNICAMENTE: para aquellos estudiantes que deseen realizar las prácticas utilizando las tarjetas de desarrollo Arduino, Raspberry Pi o ST de forma física, lo pueden hacer y no necesitan realizar simulación, en cambio presentan el video donde se observa el funcionamiento y desarrollo de la práctica con los elementos propuestos de cada una, y como bonificación no presentan el informe, en cambio realizan un ensayo máximo de una página donde explican el funcionamiento junto con los nombres y datos de los estudiantes
https://es.wikipedia.org/wiki/Algoritmo_divide_y_vencer%C3%A1s
Algoritmo divide y vencerás
En la cultura popular, divide y vencerás hace referencia a un refrán que implica resolver
un problema difícil, dividiéndolo en partes más simples tantas veces como sea
necesario, hasta que la resolución de las partes se torna obvia. La solución del
problema principal se construye con las soluciones encontradas.
En las ciencias de la computación, el término divide y vencerás (DYV) hace referencia a
uno de los más importantes paradigmas de diseño algorítmico. El método está basado
en la resolución recursiva de un problema dividiéndolo en dos o más subproblemas de
igual tipo o similar. El proceso continúa hasta que éstos llegan a ser lo suficientemente
sencillos como para que se resuelvan directamente. Al final, las soluciones a cada uno
de los subproblemas se combinan para dar una solución al problema original.
Se debe diseñar un contador (asumimos n = n + 1;) utilizando 2 displays de 7
segmentos (es indiferente, la programación es igual solo cambia si activo en alto o
en bajo las salidas), (El grupo escoge si es de ánodo o cátodo común) (cambia la
configuración física del hardware), para presentar el valor desde 0.0 hasta 9.9
(rango de conteo) cada número del reloj (depende del tiempo, se usa un
temporizador) es un display de 7 segmentos, debe tener un botón de inicio y parada
(puede prestarse a ambigüedad, dado que no hay mas indicaciones; asumimos 2
pulsadores; inicialmente mínimo “dos” estados).
Desglose del planteamiento del problema
1. Display 7 segmentos Hardware y Conexiones
2. Conteo “decimal” incremental de dos dígitos circular: 0.0 → 9.9 → 0.0 → 9.
3. Temporizador Contador (incremento)
4. Temporizador Displays 7 segmentos
5. Leer pulsadores
6. Determinar estado del sistema
Pasos a seguir
Digit Display abcdefg a b c d e f g 0 0 0x7E on on on on on on 1 1 0x30 on on 2 2 0x6D on on on on on 3 3 0x79 on on on on on 4 4 0x33 on on on on 5 5 0x5B on on on on on 6 6 0x5F on on on on on on 7 7 0x70 on on on 8 8 0x7F on on on on on on on 9 9 0x7B on on on on on on
Distribución de los
segmentos
Representación numérica en el display de 7 segmentos
Ánodo Común Cátodo Común
Seleccionamos Cátodo Común para trabajar con lógica positiva; trabajar con lógica invertida – negativa- o
mixta ya sea en Hardware o Software, puede complicar innecesariamente el problema, más aún cuando
no se tiene experiencia con este tipo de lógicas (Recordar simplificaciones NAND o NOR en Digitales).
NOTA: todos los pines del 7 segmentos [A:G] deben llevar una resistencia limitadora de corriente.
𝑽𝒄𝒄 = 𝟓𝑽𝑫𝑪 𝑰𝑳𝑬𝑫 =^ 𝟏𝟎𝒎𝑨
D0 D1 D2 D
Método de visualización por multiplexación para displays 7 segmentos
A. Valor que representa un numero decimal para visualizar por el display 7 segmentos
B. Digito activo (muestra el numero, todos los demás están apagados)
C. Tiempo que debe permanecer activo el display 7 segmentos para ser visible (*)
A B C
(*) Persistencia de la visión: https://es.wikipedia.org/wiki/Persistencia_de_la_visi%C3%B3n
Persistence of visión: https://en.wikipedia.org/wiki/Persistence_of_vision
Incremento de D1 (unidades) e incremento de D0 (decenas), verificación de limites D1 (recirculación/reinicio)
C Online Compiler: https://repl.it/languages/c
Verificación de limites D0 (recirculación/reinicio) Emulación del ciclo infinito loop() de Arduino Envió a los Displays 7 segments
- Python online editor, IDE, compiler, interpreter, and REPL https://repl.it/languages/python
Blink Without Delay: https://www.arduino.cc/en/Tutorial/BuiltInExamples/BlinkWithoutDelay
const int ledPin = LED_BUILTIN; // the number of the LED pin int ledState = LOW; // ledState used to set the LED unsigned long previousMillis = 0; // will store last time LED was updated const long interval = 1000; // interval at which to blink (milliseconds) void setup() { pinMode(ledPin, OUTPUT); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; // save the last time you blinked the LED if (ledState == LOW) { // if the LED is off turn it on and vice-versa: ledState = HIGH; } else { ledState = LOW; } digitalWrite(ledPin, ledState); // set the LED with the ledState of the variable: } }
Generalización de retardos de tiempos diferentes utilizando millis()
Embed With Elliot: Debounce Your Noisy Buttons, Part I
https://hackaday.com/2015/12/09/embed-with-elliot-debounce-your-noisy-buttons-part-i/
“Cuando presiona físicamente un botón
pulsador normal, dos piezas de metal entran
en contacto entre sí. Si estas dos pequeñas
láminas de metal no están perfectamente
planas o perfectamente alineadas (y no lo
están), entonces pueden hacer y romper el
contacto unas cuantas veces antes de estar lo
suficientemente apretadas juntas como para
que siempre estén conduciendo.”
“Para un microcontrolador, el botón parece que se presiona muchas veces durante períodos
extremadamente breves, cuando cree que lo acaba de presionar una vez. La eliminación de rebotes se
trata de asegurarse de que usted y el microcontrolador estén de acuerdo sobre cuándo ocurrió un evento
de pulsación o liberación de un botón.”
Graficas de osciloscopio que muestran la señal de entrada a un
microcontrolador debido a un pulsador siendo presionando y
soltando.