domingo, 8 de diciembre de 2019

Laboratorio 16 - Matriz de LED´S con Arduino

Registros de desplazamiento

Muchas veces corremos con el problema de no contar con suficientes salidas o entradas digitales en nuestros proyectos y recurrimos a utilizar otros micro controladores de apoyo en una configuración maestro-esclavo. La verdad es que manejar más de 13 Leds (sin PWM) debería sonar como algo fácil, y en realidad lo es.
Los registros de desplazamiento (shifter registers) permiten expandir nuestra capacidad de entradas y de salidas digitales, basándose en el desplazamiento de una secuencia de bytes que se envía o recibe desde estos circuitos integrados.
Las dos variantes más populares de registros de desplazamiento son los de entrada en serie y los de entrada en paralelo.
Un registro de desplazamiento es un circuito digital secuencial (es decir, que los valores de sus salidas dependen de sus entradas y de los valores anteriores) consistente en una serie de biestables, generalmente de tipo D, conectados en cascada , que basculan de forma sincrónica con la misma señal de reloj. Según las conexiones entre los biestables, se tiene un desplazamiento a la izquierda o a la derecha de la información almacenada. Es de señalar que un desplazamiento a la izquierda de un conjunto de bits, multiplica por 2, mientras que uno a la derecha, divide entre 2. Existen registros de desplazamiento bidireccionales, que pueden funcionar en ambos sentidos. Los registros universales, además de bidireccionales permiten la carga en paralelo.

¿Como hicimos el proyecto?

Primero hicimos como en una tabla 8x8(por los leds de la matriz), colocamos la letra de como quisieramos que se viera y ese condigo binario que saliera convertirlo a hexadecimal y colocarlo como parte de la programacion de Arduino.
A continuacion las imagenes para formar el codigo para leer EDGAR.






Codigo Arduino(Modificado)

Este codigo esta invertido la señal puesto que asi salio en la demostracion
byte E[] = {0x7C, 0x40, 0x40, 0x78, 0x78, 0x40, 0x40, 0x7C};
byte D[] = {0x70 ,0x48, 0x44, 0x44, 0x44, 0x44, 0x48, 0x70};
byte G[] = {0x42, 0x42, 0x42, 0x42, 0x42, 0x5A, 0x7E, 0x66};
byte A[] = {0x41, 0x41, 0x41, 0x7F, 0x41, 0x41, 0x22, 0x1C};
byte R[] = {0x46, 0x4C,0x58, 0x70, 0x78, 0x44, 0x44, 0x78};
byte dot[]={0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
byte sp[]= {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};


void setup() // Prog_36_1
    {   for (int j=2; j<19; j++)
              pinMode(j, OUTPUT);         
       Serial.begin(9600);
    }
void SetChar(char p) 
{    
     Clear();
     for (int fil = 0; fil <8 ; fil++)
        {
            digitalWrite( fil + 10 , LOW) ; // Activamos la fila para el barrido
            //byte F = N[fil] ;
            byte F = Selecciona( p, fil);
                         
            for (int col =7; col >= 0 ; col--)
                {  
                    digitalWrite(8-col, LOW);     //Bajamos la columna
                    bool b = GetBit(F, col)  ;
                    if (b)
                        digitalWrite( 9 - col  ,HIGH); //Levantamos la columna, con su pin
                    else
                        digitalWrite( 9 - col  ,LOW); // Si 0, apagamos

                 }                                    // Solo si b es 1
            digitalWrite( fil + 10 , HIGH) ;          // Apagamos fila antes de salir   
          }
}

bool GetBit( byte N, int pos)
{                              // pos = 7 6 5 4 3 2 1 0
    int b = N >> pos ;         // Shift bits
    b = b & 1 ;                // coger solo el ultimo bit
    return b ;
}
void Clear()
{
   for (int j=2; j<10; j++)  // Valores de los pines de columna
        digitalWrite(j, LOW); // Todos apagados
         
   for (int k= 10 ; k<18 ; k++)
        digitalWrite(k, HIGH); // Todas las filas cortadas
 }
 byte Selecciona( char c, byte fil)
{
  if ( c == 'E')         return(E[fil]) ;
  if ( c == 'D')         return( D[fil]) ;
  if ( c == 'G')         return(G[fil]);
  if (c == 'A')          return( A[fil]);
  if (c == 'R')          return( R[fil]);

  if (c == '.')          return( dot[fil]);
  if (c == ' ')          return( sp[fil]);
     
}

void loop()
{
String s = "EDGAR  " ;
  int l = s.length();      // Calcula la longitus de s
  for ( int n = 0; n< l; n++ )
    {
      long t = millis();
      char c = s[n];
      while ( millis()< t+ 400)
            SetChar(c);

    }
   
  }

 Video tutorial(En este video tutorial el codigo y la demostracion esta con la "E" minuscula)


Integrantes:

- Pumacayo Pinto, Antonio Valentin
-Quiñones Colque Adrian
-Chaucha Llacho Andrew


sábado, 7 de diciembre de 2019

Laboratorio 15 -  Contadores Digitales con Arduino

Programación con Arduino

La programación de Arduino es la programación de un microcontrolador. Esto era algo más de los ingenieros electrónicos, pero Arduino lo ha extendido a todo el público. Arduino ha socializado la tecnología.

Programar Arduino consiste en traducir a líneas de código las tareas automatizadas que queremos hacer leyendo de los sensores y en función de las condiciones del entorno programar la interacción con el mundo exterior mediante unos actuadores.

Arduino proporciona un entorno de programación sencillo y potente para programar, pero además incluye las herramientas necesarias para compilar el programa y “quemar” el programa ya compilado en la memoria flash del microcontrolador. Además el IDE nos ofrece un sistema de gestión de librerías y placas muy práctico. Como IDE es un software sencillo que carece de funciones avanzadas típicas de otros IDEs, pero suficiente para programar.

Ejercicio del laboratorio


Código completo para el aumento disminución de números con Arduino

int unidades=0;
int decenas=0;

void setup() 
{
DDRD = 0b00001111; //pines 0 al 3 SALIDAS y 4 al 7 ENTRADAS
DDRB = 0b00001111; // pines 8 al 11 SALIDAS y 12 al 13 ENTRADAS
PORTD = unidades; //Transferimos valor de variable a puerto B 
PORTB = decenas; //Transferimos valor de variable a puerto D 
}

void loop() 
{
if (digitalRead(7) == LOW)
  {
    unidades++;
    if (unidades>9)
      {
        unidades=0;
        decenas++;
      }
    PORTD=unidades;
    PORTB=decenas;
    delay(200);
  }
if (digitalRead(6) == LOW)
  {
    unidades--;
    if (unidades<0)
      {
        unidades=9;
        decenas--;
      }
    PORTD=unidades;
    PORTB=decenas;
    delay(200);
  }
}

Vídeo Tutorial sobre simulación en Proteus




Vídeo tutorial sobre el laboratorio de Circuitos




Lo que se aprendio con este laboratorio es la programacion basica en arduino para la elaboracion de un contador funcional con pulsador.

Integrantes:

- Pumacayo Pinto, Antonio Valentin
-Quiñones Colque Adrian
-Chaucha Llacho Andrew



sábado, 30 de noviembre de 2019

Laboratorio 14

Laboratorio 14 - Programación Gráfica de Arduino

Historia de Arduino


Arduino fue inventado en el año 2005 por el entonces estudiante del instituto IVRAE Massimo Banzi, quien, en un principio, pensaba en hacer Arduino por una necesidad de aprendizaje para los estudiantes de computación y electrónica del mismo instituto, ya que en ese entonces, adquirir una placa de micro controladores eran bastante caro y no ofrecían el soporte adecuado; no obstante, nunca se imaginó que esta herramienta se llegaría a convertir en años más adelante en el líder mundial de tecnologías DIY (Do It Yourself). Inicialmente fue un proyecto creado no solo para economizar la creación de proyectos escolares dentro del instituto, si no que además, Banzi tenía la intención de ayudar a su escuela a evitar la quiebra de la misma con las ganancias que produciría vendiendo sus placas dentro del campus a un precio accesible (1 euro por unidad).

El primer prototipo de Arduino fue fabricado en el instituto IVRAE. Inicialmente estaba basado en una simple placa de circuitos eléctricos, donde estaban conectados un micro controlador simple junto con resistencias de voltaje, además de que únicamente podían conectarse sensores simples como leds u otras resistencias, y es más, aún no contaba con el soporte de algún lenguaje de programación para manipularla.
Años más tarde, se integró al equipo de Arduino Hernando Barragán, un estudiante de la Universidad de Colombia que se encontraba haciendo su tesis, y tras enterarse de este proyecto, contribuyó al desarrollo de un entorno para la programación del procesador de esta placa: Wiring, en colaboración con David Mellis, otro integrante del mismo instituto que Banzi, quien más adelante, mejoraría la interfaz de software.
Tiempo después, se integro al "Team Arduino" el estudiante español David Cuartielles, experto en circuitos y computadoras, quien ayudó Banzi a mejorar la interfaz de hardware de esta placa, agregando los micro controladores necesarios para brindar soporte y memoria al lenguaje de programación para manipular esta plataforma.

Curiosidades

* Su nombre viene del nombre del bar Bar di Re Arduino donde Massimo Banzi pasaba algunas horas, el cual a su vez viene del nombre de un antiguo rey europeo allá por el año 1002.

* A la fecha se han vendido más de 250 mil placas en todo el mundo sin contar las versiones clones y compatibles.

Modelos Arduino

Los mas usados son

Arduino UNO

La placa tiene 14 pines digitales, 6 pines analógicos programables con el Arduino IDE (Entorno de desarrollo integrado) a través de un cable USB. Puede ser alimentado por el cable USB o por una batería externa de 9 voltios, aunque acepta voltajes entre 7 y 20 voltios

Arduino MEGA

El microcontrolador más potente de la familia Arduino. Con 54 pines digitales que funcionan como entrada y salida; 16 entradas analógicas, un cristal oscilador de 16 MHz, una conexión USB, un botón de reinicio y una entrada para la alimentación de la placa.


Vídeo Tutorial


Que he aprendido

Lo que se ha aprendido en este laboratorio fue la utilización y manipulación de un arduino y de sus programas compatibles tales como el mismo programa "Arduino" y "Mblock".

Se tuvo dificultad al momento de programar el ejercicio ya que los codigos no siempre son claros.

Integrantes:

- Pumacayo Pinto, Antonio Valentin
-Quiñones Colque Adrian
-Chaucha Llacho Andrew




Laboratorio 12 y 13 - Matriz de leds


Matriz de led´s 7x5

La matriz de led´s 7x5 significa que tendremos 7 filas ABCDEFG y 5 columnas 1,2,3,4,5 . Si nos fijamos en la matriz de leds de 7x5 vemos que las columnas controlan o activan las filas,esto quiere decir que para encender un led de las filas primero tiene que estar activada la columna correspondiente, cada columna controla 7 leds correspondientes al puerto B de los cuales nosotros decidimos que leds se prenden o que leds esten apagados. Por ejemplo para activar o encender el led central (D3) de la matriz tengo primero que activar la columna 3 mediante el pic por el puerto A lo siguiente (00100) y luego mandar por las filas del puerto B lo siguiente (0001000). Los bits que no se usan (B7) no interesan en este caso esten en 1 o 0. La idea para usar una matriz es la multiplexacion, para esto activamos una columna de la matriz por ejemplo la columna 1 que esta controlado,mediante un transistor conectado en el puerto A pin A6 y enviamos los leds que se quieran visualizar o encender del puerto B desde B0 hasta B6.



Contador de anillo 4017


Uno de los más componentes utilizados en proyectos de todos los tipos es el circuito integrado CMOS 4017. Este circuito integrado se puede utilizar como un secuenciador, el temporizador y los sistemas de automatización pequeñas más allá de codificación de control remoto. Dada la cantidad de solicitudes de los lectores que quieren saber todo sobre este componente, preparamos este interesante artículo que trata de desentrañar los secretos del principal 4017. No hay límites para lo que se puede hacer con el circuito integrado de 4017. Podemos hacer que cuente a cualquier número entre 2 y9 y en cascada con muchos de ellos se puede ir más allá. Podemos utilizarlo para medir el tiempo, la codificación, para generar formas de onda, efectos de luz y sonido y mucho más. Todo esto justifica la frecuencia con la que el lector encuentra los proyectos que se basan en este chip. Utilizar el circuito 4017 es simple, y una vez que el nuestro lector entienda esta técnica, puede hacer sus propios diseños usando este componente. Así, en las siguientes líneas vamos a mostrar cómo funciona el 4017 y cómo podemos utilizarlo de diversas maneras.

El circuito integrado 4017 pertenece familia lógica CMOS en el que los componentes pueden funcionar con tensiones de 3 a 15 voltios y tienen características que permiten su interconexión directa y otros componentes de la misma familia y otros tales como el 555.

Circuitos que utilizamos para encender la "E"

1.-


















2.-



















3.-



















Video Tutorial



Participantes:

  • Pumacayo Pinto, Antonio Valentin
  • Condori Ventura, Yeison Abraham
  • Cuba Quispe, Jorge Luis



miércoles, 20 de noviembre de 2019

Laboratorio 11 - Contador en Anillo y Matriz de Led´s

Matriz 7x5

Estos displays son muy utilizados para transmitir mensajes en bancos y instituciones de atención al publico, la ventaja de estos son la gran cantidad de caracteres que se pueden formar y el gran tamaño de los displays (desde 3 x 2 cm hasta 15 x 8cm). En la matriz 7x5 tenemos 7 filas denominadas ABCDEFG y 5 columnas desde 1,2,3,4,5. Si queremos encender el 2do led de la columna 2, debemos conectar el pin B a 5 V. y el pin 2 a Gnd. Si queremos encender el led del centro podemos conectar el pin D o el pin H a positivo (el pin H es auxiliar) y a tierra el pin 3 o el 6 ya que también tiene un auxiliar.
















Contador de anillo (4017)

El integrado 4017 es un contador johnson (un contador en anillo) esto quiere decir que la secuencia de Q0 a Q9 es reiniciada o "loopeada" (esto quiere decir que cuando llega a Q9 luego sigue con Q0 y así sucesivamente en forma de Loop). Esto puede ser modificado ya que el 4017 cuenta con un Reset, si el Reset se pone a GND la cuenta sera de Q0 a Q9 pero si se pone hacia alguna de sus salidas, este achicara el anillo del loop, es decir, si ponemos el Reset conectado a Q6 el 4017 solo contara hasta Q5, y cuando llegue a Q6 se reiniciara y comenzara nuevamente desde Q0. También posee un Carry out lo que permite concatenar estos integrados y poder generar anillos mas grandes.
Si bien no vamos a nombrar la inmensa cantidad de aplicaciones que posee este integrado, nombraremos las mas comunes.















Video Tutorial





Que se aprendió en el laboratorio

Lo que concierne en mi persona se logro identificar la matriz(normal o invertida), se logro loz¿calizar sus parte(que PIN tenia numero o letra), el armado de circuitos capaces de realizar numero en la matriz con la ayuda de la paquina web " 32x8 ", eso y ademas ver con claridad lo que se armo utilizando un clock o generador de pulsos para que se pueda avanzar y que se vea con claridad el numero.

Integrantes:

  • Pumacayo Pinto, Antonio Valentin
  • Condori Ventura, Yeison Abraham
  • Cuba Quispe, Jorge Luis















domingo, 3 de noviembre de 2019

Laboratorio 10 - Contador Johnson y divisor de Frecuencias


El contador Johnson

En un contador Johnson el complemento de la salida del último flip-flop se conecta a la entrada D del primer flip-flop (como es lógico se puede implementar con otro tipo de flip-flop), tal y como se muestra en la figura 3.22. Esta re-alimentación permite generar una secuencia de estados características. En general un contador Johnson generará un módulo de 2n, siendo n el número de etapas del contador.


Figure 3.22: Esquema de un contador Johnson de 4 bits.
\begin{figure}\centering
\epsfig{file=cont_johnson/johnson.eps,width=8cm}\end{figure}

Divisor de frecuencia 

Se dice divisor de frecuencia un circuito que recibe en entrada una señal de una frecuencia determinada f y da una señal de salida de frecuencia f/n donde n es un número entero. La necesidad de un divisor de frecuencia, ya que tiene tanto con una y la misma señal de clock debe conducir circuitos en diferentes frecuencias, y porque es más fácil para estabilizar por medio de un circuito en el cuarzo un circuito dado a una tasa superior y luego obtener una frecuencia más baja, que también se estabilizado, aunque no es un cristal de cuarzo a la frecuencia deseada.

Conectando en cascada múltiples flip flops de tipo T se puede obtener divisores de frecuencia múltiplos de 2 de acuerdo con la siguiente fórmula:

fn = f / 2n

Resultado de imagen para divisor de frecuencia

Ejercicios realizados en el laboratorio




Vídeo del Laboratorio

Conclusiones:
Mientras mas "lejos" se le ponia al graficador era mayor a la de la fuente eso se debia a que en cada salida de Q1, Q2, Q3, era siempre el doble del anterior

Participantes:

  • Pumacayo Pinto, Antonio Valentin
  • Condori Ventura, Yeison Abraham
  • Cuba Quispe, Jorge Luis


martes, 22 de octubre de 2019

Laboratorio 09 - Contador Sincrono de 4 y 6 Etapas

Un contador es un circuito secuencial el cual cambia de estado de acuerdo una secuencia establecida por el diseño. Un contador, está construido con base de Flip-Flops. El número de Flip-Flops utilizados indica el número de bits del contador, es decir, cada Flip-Flop representa un bit dentro de la secuencia de conteo.


Contadores Asincronos

El termino asíncrono indica que los eventos no poseen una relación temporal fija entre ellos y que no necesariamente ocurren en el mismo instante de tiempo. Esto indica que en un contador asíncrono los Flip-Flops no comparten la misma señal de reloj.

Resultado de imagen para contador asincrono


Contadores Sincronos

Un contador síncrono:
Incrementa/decrementa un valor de uno en uno (contador). 
Cada incremento se hace de acuerdo a un reloj (síncrono).
Un contador síncrono se realiza mediante el uso de biestables. Por ejemplo, biestables tipo T o JK.

Resultado de imagen para contador sincrono

Video Tutorial:


Conclusiones

  • Se dice que dos procesos son síncronos o están sincronizados cuando los procesos de ambos coinciden o están en sincronía.
  • Asincronía hace referencia al suceso que no tiene lugar en total correspondencia temporal con otro suceso


Participantes:

  • Pumacayo Pinto, Antonio Valentin
  • Condori Ventura, Yeison Abraham
  • Cuba Quispe, Jorge Luis