Ads

Mostrando entradas con la etiqueta programing. Mostrar todas las entradas
Mostrando entradas con la etiqueta programing. Mostrar todas las entradas

viernes, 3 de agosto de 2018

Controlar LEDS con el PIC16F84A


Configurando los puertos de entrada/salida digitales. El programa propuesto tomará las salidas  por el puerto A y mostrará la salida por la barra de leds conectado al puerto A, simulando las luces de una discoteca. También se realizarán algunas pruebas con operaciones en ensamblador, lectura de tablas y su simulación hasta alcanzar el principal objetivo de la práctica que es la implementación de la misma.

Objetivos:

  • Manipular el puertos A  para otorgar datos y utilizar esos datos en una tarea específica con impacto real.
  • Practicar de forma física con el PIC16F84A.
  • Utilizar retardos en el lenguaje ensamblador para evitar el rebote de los pulsadores.
  •  Hacer uso de la herramientas de simulación y diseño de circuitos para realizar una práctica más eficiente.

Materiales:



Procedimiento:
Planteamiento, asignación de salidas del puerto A:
Secuencia 1: Enciende en forma ascendente los 5 led conectados al puerto A.
El puerto A comienza apagado y se mueve a W el número que enciende el primer led del puerto A: B’00000001’ y se asigna un delay de 2s para que se observe el cambio en la salida, posteriormente se sigue cargando el numero que enciende el siguiente led hasta llegar a tener encendidos todos los bits del puerto A: B’00011111’.

Secuencia 2: Apaga en forma descendente los 5 led conectados al puerto A.
El puerto A comienza apagado y se mueve a W el número que apaga el primer led del puerto A B’00001111’ y se asigna un delay de 2s para que se observe el cambio en la salida, posteriormente se sigue cargando el numero que apaga el siguiente led hasta llegar a tener apagados todos los bits del puerto A: B’00000000’.

Secuencia 3: Realiza un secuencia ascendente y descendente solo con los bits pares (RA0, RA2 Y RA3).
El puerto A comienza apagado y se mueve a W el número que enciende el primer led del puerto A: B’00000001’ y se asigna un delay de 2s para que se observe el cambio en la salida, posteriormente se sigue cargando el numero que enciende el siguiente led par B’00000101’ hasta llegar a tener encendidos los siguientes bits del puerto A: B’00001101’ y por último se debe realizar la misma secuencia pero en sentido contrario apagando los leds hasta que todo el puerto de apague.

Repetir el ciclo.

Código:


Para realizar el programa se tuvo que crear una librería a la que se le asignó el nombre “RETARDO”, en la cual gracias a la ayuda del programa Delay Code Generator se crearon dos retardos, uno de dos segundos y otro de cinco segundos (DELAY2 y DELAY5 respectivamente).




Figura 1: Programa en ensamblador 



Simulación:
Se realizó una simulación en Proteus ISIS para verificar el correcto funcionamiento del programa y así poder implementarlo de manera física:


Figura 2: Simulación en proteus ISIS
Se cargó el programa  con el grabador MASTER PROG:


Figura 3. Grabador MASTER PROG.


Resultados:
Se ensamblo el circuito en un protoboard siguiendo el diagrama de simulación en proteus, se alimentó con una fuente variable GPS-3303 a 5v.



Figura 4: Implementación en un circuito físico.

Conclusiones:
Con base a los procedimientos realizados en esta práctica, nos fue posible llevar un correcto control y dirección del trabajo, aplicando los conceptos de implementación de software y hardware del microcontrolador previamente estudiados en el curso.
Los objetivos específicos de la práctica descritos en la introducción se cumplen satisfactoriamente; se implementaron de forma eficiente los diferentes programas de simulación y de grabación del PIC y asu vez, se hizo un uso correcto de los retardos dentro del programa principal del PIC, logrando de esta manera, que el microcontrolador realizara correctamente la tarea para la cual fue programado.

jueves, 26 de julio de 2018

How to simulate an Arduino project


Nowadays, there are many software to simulate Arduino or electronic projects, but today I am going to show a really easy one. Tinkercad is an online simulation software develop by Autodesk, because it is online, you don´t have to install anything on your device. It has a lot of components and it is totally free, you have to register and then you are ready to begin your simulation projects. Another think that you can do on Tinkercad, is to design 3D objects, I haven´t used yet, but I think it is really a basic program like the new 3D paint on windows.

Features:
  • Collaborative projects
  • Online and free
  • You can share projects with the community
  • Easy to use
  • On cloud storage
  • Interactive
  • Code by text or blocks



Now I am going to show you a little example, so you can know the basics.

Controlling a servo with a digital PIN on Arduino

In this example we are going to control a servomotor by using a digital pin on an Arduino board, we are basically to simulate a PWM signal changing states of a digital pin.
In the next image your going to see how a servo can move through different positions just changing the width of the HIGH state on a PWM signal frequency.
enter image description here

First, enter to Tinkercad website and register, once you are registered and have logged in, go to circuit on the main page and create a new Circuit.
Go to the right side and searh for a microverso, a pot and an Arduino board. Like in the image below.


Connect both components: 

Servo  Arduino
Red  5 v
Black  GND
Orange  pin 9 
POT
Center   A0
Left       5 v
Rigth     GND


To code our Arduino, we are going to click on the Code button and then click on Text. An IDE window will appear, we are going to put the next code, it is commented, so you can understand it.

//Define pins and variables
#define servo 9
int pot;

void setup()
{
//Setting up the Serial port, so we can see our variable velues
Serial.begin(9600);
//The pin to control our servo as OUTPUT
pinMode(servo, OUTPUT);

}

void loop()
{
 //Using the pot to change our pulse width on HIGH state
 pot= map(analogRead(A0), 0, 1023, 700, 2000);
 //Showing the actual value
 Serial.println(pot);
//Making out PWM pulse, changing from HIGH to LOW for specific periods digitalWrite(servo, HIGH);
 delayMicroseconds(pot);
 digitalWrite(servo, LOW);
 delayMicroseconds(1500-pot);

}

Once you have your code and all setting up, start the simulation. You will see how the servo is moving while you change the value on the potentiometer. Like in the next animation.



This is all, hope you like it and find this information useful.



Understanding I2C: The Versatile Communication Protocol for Connected Devices

In the fast-paced world of technology, seamless and efficient communication between electronic components is vital. As devices become increa...