Anda di halaman 1dari 21

Taller de Plataformas de desarrollo digital: Estructura y

funcionamiento
Evidencia da 20 de junio de 2016
Introduccin.
Las necesidades de control en muchos procesos se ha vuelto indispensable, por lo tanto
adquirir ese control nos remite a conocer las formas de poder lograrlo, es evidente que la
palabra sistema implica una serie de elementos bsicos, en sus inicios para lograr este
objetivo, por lo tanto, plataformas de desarrollo digital es un taller que nos ayudara a
conocer ese sistema que puede ser programado y personalizado para adaptarlo a una
gran variedad de necesidades de control. Es un sistema que sirve como base para hacer
funcionar determinados mdulos de hardware o de software. Antes de pasar al conocer
el funcionamiento y las aplicaciones una plataforma de desarrollo digital se hace
necesario establecer algunas definiciones importantes.
Definiciones:
Microcontrolador: es un circuito integrado digital que puede ser usado para muy
diversos propsitos debido a que es programable. Est compuesto por una unidad central
de proceso (CPU), memorias (ROM y RAM) y lneas de entrada y salida (perifricos).
Un microcontrolador tiene los mismos bloques de funcionamiento bsicos de una
computadora lo que nos permite tratarlo como un pequeo dispositivo de cmputo.
Un microcontrolador puede usarse para muchas aplicaciones algunas de ellas son: manejo
de sensores, controladores, juegos, calculadoras, agendas, avisos lumnicos, secuenciador
de luces, cerrojos electrnicos, control de motores, relojes, alarmas, robots, entre otros. El
lmite es la imaginacin.
Un microcontrolador es un conjunto de circuitos integrados (chips), a la vez, un circuito
integrado es una serie o conjunto de diodos o semiconductore y un semiconductor es un
dispositivo elemento base hecho de germanio o silicio. Son vitales en la manufactura de
aparatos tales como transistores, diodos, laser, sensores de calor y partes de
computadoras.
El trmino "semiconductor" puede mal interpretarse con facilidad. No son conductores a
medias como el nombre lo sugiere. Un semiconductor puro puede tener las caractersticas
de un conductor o de un aislante, dependiendo de su temperatura y de la f.e.m. aplicada.
El silicio puro, un material gris de apariencia metlica, es un semiconductor. A la
temperatura normal no tiene electrones libres. Todos sus electrones estn unidos a sus
respectivos tomos. El silicio puro a la temperatura normal es un aislante. Si su
temperatura se eleva hasta cierto valor crtico, se vuelve conductor.

Diodo: El diodo semiconductor es un dispositivo electrnico que puede estar polarizado en


directo o inverso. Su aplicacin ms comn es la de rectificador o sea convierte la
corriente alterna a corriente directa.
Los primeros diodos eran vlvulas o tubos de vaco, tambin llamados vlvulas
termoinicas constituidos por dos electrodos rodeados de vaco en un tubo de cristal, con
un aspecto similar al de las lmparas incandescentes.
Un diodo semiconductor est hecho de cristal semiconductor como el silicio con impurezas
en l para crear una regin que contenga portadores de carga negativa (electrones),
llamada semiconductor de tipo n, y una regin en el otro lado que contenga portadores de
carga positiva (huecos), llamada semiconductor tipo p. Las terminales del diodo se unen a
cada regin llamadole una unin PN. El cristal conduce una corriente de electrones del
lado n (llamado ctodo), pero no en la direccin opuesta; es decir, cuando una corriente
convencional fluye del nodo al ctodo (opuesto al flujo de los electrones).
Cuando se somete al diodo a una diferencia de tensin externa, se dice que el diodo est
polarizado, pudiendo ser la polarizacin directa o inversa.
Para que un diodo est polarizado directamente, se debe conectar el polo positivo
de la batera al nodo del diodo y el polo negativo al ctodo.

ANODO

CATODO

cin inversa del diodo PN.


En este caso, el polo negativo de la batera se conecta a la zona P y el polo positivo a la
zona N.

Existen varios tipos de diodos:


Diodos rectificadores. Convierte la corriente alterna en corriente directa.
Diodo Zener. Se utiliza como regulador de voltaje
Diodo de Silicio: semiconductor de tipo p (con huecos) en contacto con un semiconductor
de tipo n (electrones).
Diodo emisor de luz o LED: por sus siglas en ingls (light emitting diode)
Diodo pivote de Gato: Es un detector o dispositivo que consta de un alambre que hace
contacto con un cristal detector semiconductor.
Existen otros tipos de diodo que en su momento iremos definiendo.
Resumen del video Cmo se fabrican los diodos.
De una manera muy sinttica, el video nos explica cmo se fabrican las lminas de silicio,
llamadas tambin Obleas. Estas obleas son la base para la fabricacin de
semiconductores, el silicio es un semiconductor ya que el silicio puede bloquear o conducir
la corriente elctrica y sirve de soporte para los diminutos microprocesadores.
El silicio policristalino se obtiene de la arena y se calienta hasta una temperatura de 1420
C hasta fundirlo y ya en estado lquido se comienza a enfriar. Durante el enfriamiento se
introduce un cristal de silicio que sirve como semilla, este cristal se hace rotar y alrededor
de l se van agregando los ncleos cristalinos y de esa forma la semilla va creciendo hasta
que la solidificacin se lleva a cabo totalmente. Ya solidificada la barra en forma cilndrica
se cortan las obleas con un espesor de 2/3 de milmetro y con una pureza del 99.9999%.
Estas obleas se pulen para eliminarlas las rebabas y marcas debido al corte. Se pulen
hasta dejarlas como espejo con un mnimo de rugosidad.
Sobre la superficie de esta oblea se disean circuitos donde se colocaran hasta 1000
millones de transistores. Debido a que son circuitos muy pequeos del orden nano, una
partcula de polvo puede ocasionar problemas de cortocircuito o formar resistencia al paso
de la corriente elctrica por lo que es necesario trabajar en cuartos limpios en donde
circule aire limpio 1000 veces ms limpio que el aire de un quirfano. El trabajador debe
cubrirse con trajes especiales para no contaminar los circuitos y las obleas.

Los diseos de circuitos se imprimen en las lminas mediante un proceso llamado


fotolitografa, en este proceso se utilizan substancias qumicas que son fotosensibles a la
luz ultravioleta y cubren el silicio. Se hace pasar la luz ultravioleta a travs de la imagen
del diseo y un lente para miniaturizarla y un fundente sobre la lmina.
El proceso se repite capa por capa. Las lminas terminadas llevan hasta 1000 microchips
diferentes y ms de 4 billones de componentes de circuito.
Evidencia da 21 de junio de 2016.
Se nos muestra en el taller un dispositivo llamado Arduino. Las preguntas evidentes son:
Qu es? Cules son sus componentes? Cmo funciona? Cules son sus aplicaciones?
Iremos contestando cada una de estas preguntas conforme se avanza en el curso.
Qu es un arduino? Es una plataforma de desarrollo digital de cdigo abierto basada en
un hardware y un software listo a usarse mediante un lenguaje de programacin para ser
implementado al modo de uno. Tambin podemos decir
Cules son sus componentes? Es un microcontrolador que consta de un CPU, puertos de
comunicacin (Entradas y salidas), memoria. Un arduino tiene un sistema operativo y una
arquitectura especial y tiene un sistema operativo En un arduino se puede trabajar con
seales analgicas y digitales.
La siguiente imagen nos mostrara con mas detalles cuales son sus componentes:

Cmo funciona un microcontrolador? El microcontrolador puede ser programado en el


entorno de programacin Wiring para controlar toda clase de sensores y actuadores. Para

usar un microcontrolador se usa un software y travs de programas se indican las


instrucciones que el microcontrolador debe realizar. En una memoria se guardan los
programas y un elemento llamado CPU se encarga de procesar paso por paso las
instrucciones del programa. Para disear programas es necesario conocer los bloques
funcionales bsicos del microcontrolador, estos bloques son:
CPU (Unidad central de proceso)
Memoria ROM (Memoria de solo lectura)
Memoria RAM (Memoria de acceso aleatorio)
Lneas de entrada y salida (Perifricos)
La forma en la que interactan estos bloques depender de su arquitectura.
La CPU posee, de manera independiente, una memoria de acceso rpido para almacenar
datos denominada registros, si estos registros son de 8 bits se dice que el
microcontrolador es de 8 bits.
Para programar tareas a un sistema operativo tenemos que conocer los pines o
terminales. Tenemos terminales TX y RX que son puertos de comunicacin por donde
vamos a dar instrucciones y recibir resultados.
Estos pines TX y Rx estn reservados para la comunicacin serie y no deben ser usados,
ya que pondrn a Arduino en modo de espera hasta que se reciba una seal.
Tenemos pines con los que se trabajan las seales analgicas y con los que solo se pueden
leer y estos pines son A0, A1, A2, A3, A4 y A5.
Tambin hay pines digitales con los que se pueden meter y sacar informacin en sistema
binario, estos pines son del 0 al 13. El pin 13 que en otros dispositivos puede ser la letra L
nos indica si el sistema est muerto o no.
Algunas instrucciones o funciones.
Funcin digitalRead(pin)
Lee el valor desde un pin digital especfico. Devuelve un valor HIGH o LOW. El pin puede
ser especificado con una variable o una constante (0-13). Ej. v = digitalRead(Pin);
digitalRead(13); nos permite leer el estado del pin digital 13
La instruccin digitalRead(pin) lee el estado de un pin y devuelve HIGH si est a 5V o LOW
si hay 0V en l.
Para poder usar el valor del estado para algn fin se debe guardarlo en una variable:

Aunque LOW equivale siempre a 0V en una salida digital, en una entrada digital cualquier
valor entre 0V y 1.5V se considerar LOW en el comando digitalRead(). Del mismo modo
todos los valores entre 3.3V y 5v se considerarn como un valor HIGH.
Funcion digitalWrite(pin, valor)
Introduce un nivel alto (HIGH) o bajo (LOW) en el pin digital especificado. De nuevo, el pin
puede ser especificado con una variable o una constante 0-13. Ej. digitalWrite(pin, HIGH);
digitalWrite(13, HIGH) nos permite encender el led del pin 13.
Funcin analogRead(pin)
Lee el valor desde el pin analgico especificado con una resolucin de 10 bits. Esta funcin
solo funciona en los pines analgicos (0-5). El valor resultante es un entero de 0 a 1023.
Los pines analgicos, a diferencia de los digitales no necesitan declararse previamente
como INPUT OUTPUT.
Ejemplo: analogRead(A0); nos permite leer el estado del pin A0, o sea saber el estado del
pin A0
Funcin analogWrite(pin, valor)
Escribe un valor pseudo-analgico usando modulacin por ancho de pulso (PWM) en un pin
de salida marcado como PWM. Esta funcin est activa para los pines 3, 5, 6, 9, 10, 11.
Ejemplo: analogWrite(3, 127); escribe 13 en el pin 3 analgico. Puede especificarse un
valor de 0 - 255. Un valor 0 genera 0 V en el pin especificado y 255 genera 5 V. Para
valores de 0 a 255, el pin alterna rpidamente entre 0 V y 5 V, cuanto mayor sea el valor,
ms a menudo el pin se encuentra en HIGH (5 V). Por ejemplo, un valor de 64 ser 0 V tres
cuartas partes del tiempo y 5 V una cuarta parte. Un valor de 127 ser 0 V la mitad del
tiempo y 5 V la otra mitad. Un valor de 192 ser 0 V una cuarta parte del tiempo y 5 V tres
cuartas partes.
Resumen del video El transistor
El video habla sobre el transistor como un dispositivo semiconductor que se utiliza en
radios, televisores, videos, computadoras, telfonos celulares y dentro de los circuitos
integrados. Un transistor es un aparato para controlar corriente.
Se menciona a los laboratorios Bell y su relacin con el descubrimiento y aplicacin del
transistor. Debido a la necesidad de la compaa Bell de ampliar su seal de telfono para
tender lneas de larga distancia para poder comunicar los estados unidos de costa a costa.
La seal se perda debido a las distancias enormes que tena que recorrer la seal
telefnica en los cables. Para solucionar esto, los laboratorios de la compaa Bell decidi
hacer investigacin para encontrar una solucin al problema y poder amplificar su seal.
El trabajo se llev a cabo por John Bardeen, Walter Houser Brattain y William Shockley. El
lder de este grupo William Shockley intuyo como hacer un dispositivo que amplificara la

seal y despus de vario experimentos no pudo lograrlo, delegando esa funcin a sus
otros dos compaeros partiendo siempre de su idea original.
Bardeen y Houser toman el relevo y logran hacer el transistor basndose en dispositivos
semiconductoresya conocidos como el termistor y el varistor y basndose en una
propiedad de transresistencia que presentaba el dispositivo.
Se llevaron diversos experimentos sin resultado hasta que Houser y Bordeen observaron
que cuando dos contactos puntuales de oro eran amplificados a un cristal de Germanio se
logra una seal con una potencia de salida mayor que la entrada. Jhon Bordeen y Wallter
Houser patentaron el transistor cuyo nombre fue sugerido por Jhon R. Pierce.
Shockley se separa de los de la Compaa Bell por cuestiones egocas relacionadas con la
patente ya que este no fue tomado en cuenta y funda su propia compaa para la
fabricacin de circuitos integrados, el cual fracasa.
D0s de los colaboradores de Shockley se separan del grupo y fundan INTEL.
Finalmente se otorga el premio Nobel de Fsica en 1956 a Shockley, Bardeen y Brattain por
sus investigaciones y trabajos con los semiconductores.
Evidencias 22 de Junio de 2016
Estructura bsica de un programa
La estructura bsica de programacin de Arduino divide la ejecucin en dos partes: setup
y loop. Setup() constituye la preparacin del programa y loop() es la ejecucin. En la
funcin Setup() se incluye la declaracin de variables y se trata de la primera funcin que
se ejecuta en el programa. Esta funcin se ejecuta una nica vez y es empleada para
configurar el pinMode (p. ej. si un determinado pin digital es de entrada o salida) e
inicializar la comunicacin serie. La funcin loop() incluye el cdigo a ser ejecutado
continuamente (leyendo las entradas de la placa, salidas, etc.).
Void setup
Arduino lo primero que hace cuando arranca es mirar la void setup(). ste es uno de los
pasos esenciales del funcionamiento del programa. La void setup() es la parte que
inicializa las configuraciones de los diferentes elementos del programa de Arduino; por
ejemplo la configuracin de un pin o establecer la velocidad de comunicacin. La void
setup() slo se ejecuta una vez en el inicio y no se volver a ejecutar hasta que Arduino se
apagu y vuelva a arrancar o se resetea.
loop()
Despus de llamar a setup(), la funcin loop() hace precisamente lo que sugiere su
nombre, se ejecuta de forma cclica, lo que posibilita que el programa est respondiendo
continuamente ante los eventos que se produzcan en la placa.
Funciones

Una funcin es un bloque de cdigo que tiene un nombre y un conjunto de instrucciones


que son ejecutadas cuando se llama a la funcin. Son funciones setup() y loop() de las que
ya se ha hablado. Las funciones de usuario pueden ser escritas para realizar tareas
{} entre llaves.
La informacin o las instrucciones del programa se debe hacer entre las llaves del
parentesis
Las llaves sirven para definir el principio y el final de un bloque de instrucciones. Se
utilizan para los bloques de programacin setup(), loop(), if.., etc.
Ejemplo : type funcion() {instrucciones;}
Una llave de apertura { siempre debe ir seguida de una llave de cierre }, si no es as
el programa dar errores.
; Punto y coma
El punto y coma ; se utiliza para separar instrucciones en el lenguaje de programacin
de Arduino.
Ejemplo: int x = 13; /* declara la variable 'x' como tipo entero de valor 13 */
Nota: Olvidar poner ; al final de una lnea producir en un error de compilacin. Si se
produce un error raro y de difcil deteccin lo primero que debemos hacer es comprobar
que los puntos y comas estn colocados al final de las instrucciones. Es el error de mayor
incidencia al escribir un programa.
/* */ bloque de comentarios
Los bloques de comentarios, o comentarios multi-lnea son reas de texto ignorados por el
programa que se utilizan para las descripciones del cdigo o comentarios que ayudan a
comprender el programa. Comienzan con / * y terminan con * / y pueden abarcar varias
lneas.
Ejemplo: /* esto es un bloque de comentario no se debe olvidar cerrar los comentarios
estos deben estar equilibrados */
Debido a que los comentarios son ignorados por el compilador y no ocupan espacio en la
memoria de Arduino pueden ser utilizados con generosidad. Tambin pueden utilizarse
para "comentar" bloques de cdigo con el propsito de anotar informaciones para
depuracin y hacerlo mas comprensible para cualquiera.
Nota: Dentro de una misma lnea de un bloque de comentarios NO se puede escribir otro
bloque de comentarios (usando /*..*/).
// lnea de comentarios

Una lnea de comentario empieza con // y terminan con la siguiente lnea de cdigo. Al
igual que los comentarios de bloque, los de lnea son ignoradas por el programa y no
ocupan espacio en la memoria.
Ejemplo: // esto es un comentario
Una lnea de comentario se utiliza a menudo despus de una instruccin, para
proporcionar ms informacin acerca de lo que hace sta o para recordarla ms adelante.
Como se observa en este bloque de cdigo cada instruccin acaba con ; y los comentarios
se indican con //. Al igual que en C se pueden introducir bloques de comentarios con /* ...
*/.
Variables
Una variable es una manera de nombrar y almacenar un valor numrico para su uso
posterior por el programa. Como su nombre indica, las variables son nmeros que se
pueden variar continuamente en contra de lo que ocurre con las constantes cuyo valor
nunca cambia. Una variable debe ser declarada y, opcionalmente, asignarle un valor.
Ejemplo: int ledpin=13
ledpin es la variable en s. La primera lnea declara que ser de tipo entero int. La
segunda lnea fija a la variable el valor correspondiente a la entrada igual a 13.
Declaracin de variables
Todas las variables tienen que declararse antes de que puedan ser utilizadas. Para
declarar una variable se comienza por definir su tipo como int (entero), long (largo), float
(coma flotante), etc, asignndoles siempre un nombre, y, opcionalmente, un valor inicial.
Esto slo debe hacerse una vez en un programa, pero el valor se puede cambiar en
cualquier momento usando aritmtica y reasignaciones diversas.
El siguiente ejemplo declara la variable 'entradaVariable' como una variable de tipo entero
int, y asignndole un valor inicial igual a cero. Esto se llama una asignacin.
int entradaVariable = 0;
Una variable puede ser declarada en una serie de lugares del programa y en funcin del
lugar en donde se lleve a cabo la definicin esto determinar en que partes del programa
se podr hacer uso de ella.
Utilizacin de una variable
Una variable puede ser declarada al inicio del programa antes de la parte de configuracin
setup(), a nivel local dentro de las funciones, y, a veces, dentro de un bloque, como para
los bucles del tipo if.. for.., etc. En funcin del lugar de declaracin de la variable as se
determinar el mbito de aplicacin, o la capacidad de ciertas partes de un programa para
hacer uso de ella.

Una variable global es aquella que puede ser vista y utilizada por cualquier funcin y
estamento de un programa. Esta variable se declara al comienzo del programa, antes de
setup().
Una variable local es aquella que se define dentro de una funcin o como parte de un
bucle. Slo es visible y slo puede utilizarse dentro de la funcin en la que se declar.
Por lo tanto, es posible tener dos o ms variables del mismo nombre en diferentes partes
del mismo programa que pueden contener valores diferentes. La garanta de que slo una
funcin tiene acceso a sus variables dentro del programa simplifica y reduce el potencial
de errores de programacin.
Qu se necesita para grabar un programa en el arduino?
Se necesita bsicamente tres cosas:
Una computadora
Software de programacin (incluyendo un compilador). Se baja de internet y es libre.
Un circuito programador
Y obviamente tambin se necesita un microcontrolador.
Un microcontrolador es un circuito integrado que en su interior contiene una unidad
central de procesamiento (CPU), unidades de memoria (RAM y ROM), puertos de entrada y
salida y perifricos. Estas partes estn interconectadas dentro del microcontrolador, y en
conjunto forman lo que se le conoce como microcomputadora.
La computadora, a travs del software de grabacin, se encarga de enviar el programa
que se desea grabar al microcontrolador por intermedio del circuito programador. El
software de grabacin es libre y se descarga de internet.
Para utilizar la placa arduino junto con la computadora y dar las instrucciones a la placa es
necesario bajar el software de internet. Despus se conecta el arduino en la conexin
serial de la computadora para que sta reconosca el hardware. Despus de reconocerla es
necesario ir a Administracin de dispositivos para localizar el dispositivo en la lista que
aparece.
Se elige el dispositivo arduino y se procede a cargar los drivers a la computadora en la
opcin manual, lo que implica buscar la carpeta de drivers para que la computadora los
descargue.
Por ltimo, abrimos el programa y elegimos el comando herramientas, hacemos click y
elegimos el puerto serial COM3 para comenzar la comunicacin con la placa a la cual la
computadora le designo el puerto de comunicacin 3.
Ejemplo de un programa sencillo que hace parpadear el LED 13 del pin digital de la placa
Arduino:

int ledPin = 13;


void setup(){
digitalWrite(ledPin,OUTPUT);
}
void loop(){
digitalWrite(ledPin,HIGH);
delay(1000);
digitalWrite(ledPin,LOW);
delay(1000);}
void setup()
El setup es la primera funcin en ejecutarse dentro de un programa en Arduino. Es,
bsicamente, donde se setean las funciones que llevar a cabo el microcontrolador.
Aqu es donde establecemos algunos criterios que requieren una ejecucin nica. Por
ejemplo, si nuestro programa va a usar comunicacin serial, en el setup establecemos el
comando Serial.begin para indicarle al programa que vamos a iniciar la comunicacin
serial.
Si vamos a utilizar un pin determinado como salida de voltaje, usamos el pinMode para
indicarle a Arduino que determinado pin funcionar como salida, usando el parmetro
OUTPUT.
SE coloca aquello que debemos ejecutar una sola vez. No es bueno colocar el Serial.begin
en el loop donde se va a hacer lo mismo una y otra vez. Aquello es algo que, con que
suceda una sola vez, es suficiente.
PWm (Pulse Width Modulation) o modulacin del ancho de pulso, representa al ancho (en
tiempo) del pulso.
- length/period (periodo), o ciclo , es el tiempo total que dura la seal.
La frecuencia se define como la cantidad de pulsos (estado on/off) por segundo y su
expresin matemtica es la inversa del periodo, como muestra la siguiente ecuacin.

Frecuncia=

1
periodo

El periodo se mide en segundos, de este modo la unidad en la cual se mide la frecuencia


(hertz) es la inversa a la unidad de tiempo (segundos).

Existe otro parmetro asociado o que define a la seal PWM, denominado "Duty cycle",
Ciclo de Trabajo, el cual determina el porcentaje de tiempo que el pulso (o voltaje
aplicado) est en estado activo (on) durante un ciclo.
Por ejemplo, si una seal tiene un periodo de 10 ms y sus pulsos son de ancho
(PW) 2ms, dicha seal tiene un ciclo de trabajo (duty cycle) de 20% (20% on y
80% off). El siguiente grfico muestra tres seales PWM con diferentes "duty
cycles".

La seal PWM se utiliza como tcnica para controlar circuitos analgicos. El periodo y el
ciclo de trabajo (duty cycle) del tren de pulsos puede determinar la tensin entregada a
dicho circuito. Si, por ejemplo, tenemos un voltaje de 5v y lo modulamos con un duty cycle
del 10%, obtenemos 0.5V de seal analgica de salida.
Las seales PWM son comnmente usadas para el control de velocidad de motores DC (si
decrementas el ciclo de trabajo sobre la seal de control del circuito de potencia que acta
sobre el motor el motor se mueve ms lentamente), ajustar la intensidad de brillo de un
LED, etc.
En Arduino, con ATmega168 o ATmega328, la seal de salida PWM (pines 3,5,6,9,10, y 11)
es una seal de frecuencia 490 Hz aproximadamente y que slo nos permite cambiar el
"duty cycle" o el tiempo que el pulso est activo (on) o inactivo (off), utilizando
la funcin analogWrite().
Otra forma de generar seales PWM es utilizando la capacidad del microprocesador. La
seal de salida obtenida de un microprocesador es una seal digital de 0 Voltios (LOW) y
de 5 voltios (HIGH).

Con el siguiente cdigo y con slo realizar modificaciones en los intervalos de tiempo que
el pin seleccionado tenga valor HIGH o LOW, a travs de la funcin digitalWrite (),
generamos la seal PWM.
/* seal PWM */
int digPin = 10; // pin digital 10
void setup()
{
pinMode(digPin, OUTPUT);

// pin en modo salida

}
void loop() {
digitalWrite(digPin, HIGH); // asigna el valor HIGH al pin
delay(500);

// espera medio segundo

digitalWrite(digPin, LOW); // asigna el valor LOW al pin


delay(500);

// espera medio segundo

}
El programa pone el pin 10 a HIGH una vez por segundo durante medio segundo
(ciclo de trabajo 50%), la frecuencia que se genera en dicho pin es de 1 pulso
por segundo o 1 Hz de frecuencia (periodo de 1 segundo). Cambiando la
temporizacin del programa, podremos cambiar el ciclo de trabajo de la seal.
Por ejemplo, si cambiamos las dos lneas con delay(500) por delay(250) y
delay(750), modificamos el ciclo de trabajo a 25%; ahora, el programa pone el
pin 10 a HIGH una vez por segundo durante 1/4 de segundo y la frecuencia sigue
siendo de 1 Hz.
Utilizando la funcin analogWrite(pin,value) podemos obtener la misma seal a una
frecuencia de 490 Hz aproximadamente. Para una seal PWM con ciclo de trabajo 50% hay
que poner en el parmetro value, de la funcin analogWrite(pin,value), el valor de 127.
/* seal PWM en el pin 10 de ciclo de trabajo 50%*/
int digPin = 10; // pin digital 10
void setup() {
// no se declara el modo del pin
//como salida analgica

}
void loop() {
analogWrite(digPin,127); // Seal PWM a 50% en el PIN 10
}
De forma que cambiando el valor del parmetro value en la funcin
analogWrite(pin,value), podemos obtener distintos ciclos de trabajo:
value
Ciclo de trabajo
0

0%

63

25%

127

50%

190

75%

255

100%

Arduino PWM: Modulacin por ancho de pulsos


Antes de explicar lo que es el PWM (Pulse width modulation, modulacin por ancho de
pulsos), vamos a ver primero como se ve una grfica de voltaje vs tiempo.
Cuando se trabaja con corriente directa el signo del voltaje permanece invariable en el
tiempo, es decir, no cambia de signo como es el caso de la corriente alterna. O se
mantiene positivo o se mantiene negativo. Cuando el voltaje directo se ha regulado,
obtenemos un valor invariable en el tiempo. En el caso de Arduino el voltaje es 5 voltios
en los pines digitales. Cuando programamos un Output, la grfica de voltaje vs tiempo
luce as:

El voltaje permanece constante. No vara en el tiempo.


Sin embargo, es posible dividir esa onda en ciclos de trabajo. Los ciclos de trabajo duran
un tiempo determinado, por lo que una onda de voltaje puede ser dividida en cuadrados.

El dividir el voltaje en ciclos de trabajo ofrece muchas ventajas. La informacin puede ser
transmitida modulando la duracin y la prolongacin del voltaje en un ciclo de trabajo. De
igual forma se puede regular la energa que se entrega a una determinada carga. Esta es
la funcin que nos interesa en este post ya que con Arduino podemos modular el ancho de
los pulsos de una seal.
Esto quiere decir que podemos reducir en determinado porcentaje la prolongacin del
voltaje en cada ciclo de trabajo. Digamos que decidimos enviar un pulso de 5 voltios en un
50% del ciclo de trabajo. El resultado ser el siguiente:

Cabe destacar que es posible trabajar a diferentes porcentajes del total del ciclo de
trabajo. As podramos por ejemplo reducir la luminosidad de un LED en un porcentaje de
su luminosidad total.

Evidencias del 23 de Julio de 2016


Comunicacin serial utilizando los pins TX Y RX
Este mtodo es conocido como Comunicacin Serial, implica cambiar el voltaje de la
conexion elctrica entre el Transmisor y el Receptor a una velocidad especifica. Cada
Intervalo de tiempo representa un bit de informacin. El transmisor cambia el voltaje para
enviar un valor de entre 0 y 1 el cual representa el bit en cuestion y el receptor lee si el
voltaje es high o low.
Este ejemplo se basa en el Asynchronous Serial Communication, donde la velocidad de
intercambio de bits es acordada de forma mutua y cronometrada de forma independiente
entre el Transmisor y el Receptor.
El cdigo que se muestra a continuacin debe instalarse uno en el arduino transmisor y el
otro en el receptor. ( Antes de subir al cdigo al controlador es necesario desconectar los
pins rx y tx de los contrario no nos permitira instalar el programa).
//Transmisor:
int Value5;
int val5;
void setup() {

// inicia puerto serial


Serial.begin(9600);
}
void loop() {
// lee el pin analogo 5 con un potenciometro
Value5 = analogRead(5);
// remap 0 / 255 de la variable Value5
val5 = map(Value5, 0, 1023, 0, 255);
// envia el valor al puerto serial
Serial.println(val5, BYTE);
}
Algunos conceptos importantes y necesarios
Bit es el acrnimo de Binary digit. (dgito binario). Un bit es un dgito del sistema de
numeracin binario.
El bit es la unidad mnima de informacin empleada en informtica. Con l, podemos
representar dos valores cuales quiera, basta con asignar uno de esos valores al estado de
"apagado" (0), y el otro al estado de "encendido" (1).
El byte es la unidad de capacidad de almacenamiento estndar. Con esta unidad de
medida se mide desde el almacenamiento de datos hasta la capacidad de memoria de un
ordenador. Representa un carcter (un nmero, una letra, un espacio, o cualquier otro
signo) y est constituido por 8 bits consecutivos, de modo tal que un byte equivaldra a
8 bits.
Hay 256 combinaciones de 8 bits posibles, por lo que hay 256 caracteres.
Debido a que es una medida de capacidad mnima (si bien como hemos dicho la ms
pequea es el bit), existen otras magnitudes que se utilizan para capacidades superiores y
que son mltiplos del byte (Mltiplos de 8).
El baudio (en ingls baud) es una unidad de medida utilizada en telecomunicaciones, que
representa el nmero de smbolos por segundo en un medio de transmisin digital. Cada
smbolo puede codificar 1 o ms bits, dependiendo del esquema de modulacin.
En el contexto de la informtica, una palabra es una cadena finita de bits que son
manejados como un conjunto por la mquina. El tamao o longitud de una palabra hace
referencia al nmero de bits contenidos en ella, y es un aspecto muy importante al
momento de disear una arquitectura de ordenadores.

Los ordenadores modernos normalmente tienen un tamao de palabra de 16, 32 64 bits.


Muchos otros tamaos se han utilizado en el pasado, como 8, 9, 12, 18, 24, 36, 39, 40, 48
y 60 bits. El slab es uno de los ejemplos de uno de los primeros tamaos de palabra.
Algunos de los primeros ordenadores eran decimales en vez de binarios, tpicamente
teniendo un tamao de palabra de 10 12 dgitos decimales y algunos de los primeros
ordenadores no tenan una longitud de palabra fija.
Algunas veces, el tamao de una palabra se define para tener un valor particular por
compatibilidad con los ordenadores anteriores. Los microprocesadores utilizados en
ordenadores personales (por ejemplo, los Intel Pentium y los AMD Athlon) son un ejemplo
de esto. Su arquitectura IA-32 es una extensin del diseo original del Intel 8086 que tena
un tamao de palabra de 16 bits. Los procesadores IA-32 siguen soportando programas
del 8086 (x86), as que el significado de "word" en el contexto IA-32 sigue siendo el mismo
y se continua diciendo que son 16 bits, a pesar del hecho de que en la actualidad puede (y
especialmente cuando el tamao del operando por defecto es 32-bit) opera ms como una
mquina con un tamao de palabra de 32 bits. Similarmente en la nueva arquitectura x8664, una "palabra" sigue siendo 16 bits, aunque los operandos de 64-bit ("cuadruple
palabra") sean ms comunes.

while
Un bucle del tipo while es un bucle de ejecucin continua mientras se cumpla la expresin
colocada entre parntesis en la cabecera del bucle. La variable de prueba tendr que
cambiar para salir del bucle. La situacin podr cambiar a expensas de una expresin
dentro el cdigo del bucle o tambin por el cambio de un valor en una entrada de un
sensor.
while (Variable ?? valor)
{
ejecutarSentencias;
}
El siguiente ejemplo evala si la variable Variable es inferior a 200 y si es verdad, ejecuta
las declaraciones dentro de los corchetes y continuar ejecutando el bucle hasta que
Variable no sea inferior a 200.
while (unaVariable < 200)

// testea si es menor que 200

{
instrucciones;

// ejecuta las instrucciones


// entre llaves

Variable++;

// incrementa la variable en 1

Ejemplos desarrollados en el taller con la placa Arduino

Ejemplo 1. Mantener apagado el pin 13 despus de estar encendido


void setup() {
pinMode(13, OUTPUT);
}
void loop() {
int TH=0;
int TL=10000;
digitalWrite(13, HIGH);
delay(TH);
digitalWrite(13, LOW);
delay(TL);
TL=TL-1;
TH=TH+1;
}

Programa 2
Mantiene el encendido flasheando incrementando su intensidad luminosa
Variable global

void setup() {

pinMode(13, OUTPUT);
}
int TH=0;
int TL=10000;

void loop() {

digitalWrite(13, HIGH);
delay(TH);
digitalWrite(13, LOW);
delay(TL);
TL=TL-1;
TH=TH+1;
}

/*

Anda mungkin juga menyukai