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.
ANODO
CATODO
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 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:
Frecuncia=
1
periodo
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);
}
void loop() {
digitalWrite(digPin, HIGH); // asigna el valor HIGH al pin
delay(500);
}
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%
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.
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)
{
instrucciones;
Variable++;
// incrementa la variable en 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;
}
/*