Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de...

31
Índice de contenido Un circuito eléctrico básico............................................................................................................. 4 La Ley de OHM.......................................................................................................................... 5 Las Resistencias.......................................................................................................................... 6 Código de colores para resistencias................................................................................................. 7 Resistencias en Serie................................................................................................................... 8 Resistencias en Paralelo.............................................................................................................. 8 Condensadores (Capacitores).........................................................................................................11 El código Jis.............................................................................................................................. 16 Resumen de Capacitores........................................................................................................... 16 Fuente de alimentación para los proyectos electrónicos................................................................16 Conociendo algunos Símbolos Electrónicos..................................................................................18 Componentes electrónicos............................................................................................................. 21 Las pantallas o displays LCD....................................................................................................22 Bobinas o Inductancias.................................................................................................................. 24 Manejo del Multímetro (Tester).....................................................................................................26 Selección de Escalas y Rangos................................................................................................. 27 Tensión en DC...........................................................................................................................28 Medir Corriente en Continua.................................................................................................... 29 Medir Condensadores............................................................................................................... 29 Los Semiconductores..................................................................................................................... 30 Diodos....................................................................................................................................... 31 Funcionamiento teórico de un Transistor .......................................................................................32 Funcionamiento práctico de un Transistor .....................................................................................32 Repaso de configuraciones para transistores.............................................................................34 Conectando un relay a un pin del controlador ...........................................................................35 Transistores de Efecto de Campo (fet)...................................................................................... 36 Transistores de Potencia............................................................................................................37 Los IGBTS................................................................................................................................ 38 Repaso de Transistores..............................................................................................................38 Disipadores Térmicos................................................................................................................39 Tiristores........................................................................................................................................ 40 Conclusiones sobre Semiconductores....................................................................................... 41 Soldaduras con estaño....................................................................................................................41 Técnica de soldado.........................................................................................................................44 Lógica Digital................................................................................................................................ 47 Compuertas Lógicas...................................................................................................................... 48 Que es Arduino.............................................................................................................................. 51 Como trabajar con Arduino.......................................................................................................51 Arquitectura de un sketch..........................................................................................................51 Conceptos básicos para una programación exitosa...................................................................52 El microcontrolador del Arduino UNO.....................................................................................53 Circuito electrónico de la placa Arduino UNO..............................................................................54 La placa Arduino UNO..................................................................................................................56 Componentes de la placa Arduino UNO................................................................................... 56 Esquema lógico de Arduino...................................................................................................... 58 Puertos del Arduino UNO......................................................................................................... 59 Pines con entradas analógicas y el ADC...................................................................................61 Pines con control PWM............................................................................................................ 63

Transcript of Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de...

Page 1: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Índice de contenidoUn circuito eléctrico básico.............................................................................................................4

La Ley de OHM..........................................................................................................................5Las Resistencias..........................................................................................................................6

Código de colores para resistencias.................................................................................................7Resistencias en Serie...................................................................................................................8Resistencias en Paralelo..............................................................................................................8

Condensadores (Capacitores).........................................................................................................11El código Jis..............................................................................................................................16Resumen de Capacitores...........................................................................................................16

Fuente de alimentación para los proyectos electrónicos................................................................16Conociendo algunos Símbolos Electrónicos..................................................................................18Componentes electrónicos.............................................................................................................21

Las pantallas o displays LCD....................................................................................................22Bobinas o Inductancias..................................................................................................................24Manejo del Multímetro (Tester).....................................................................................................26

Selección de Escalas y Rangos.................................................................................................27Tensión en DC...........................................................................................................................28Medir Corriente en Continua....................................................................................................29Medir Condensadores...............................................................................................................29

Los Semiconductores.....................................................................................................................30Diodos.......................................................................................................................................31

Funcionamiento teórico de un Transistor.......................................................................................32Funcionamiento práctico de un Transistor.....................................................................................32

Repaso de configuraciones para transistores.............................................................................34Conectando un relay a un pin del controlador...........................................................................35Transistores de Efecto de Campo (fet)......................................................................................36Transistores de Potencia............................................................................................................37Los IGBTS................................................................................................................................38Repaso de Transistores..............................................................................................................38Disipadores Térmicos................................................................................................................39

Tiristores........................................................................................................................................40Conclusiones sobre Semiconductores.......................................................................................41

Soldaduras con estaño....................................................................................................................41Técnica de soldado.........................................................................................................................44Lógica Digital................................................................................................................................47Compuertas Lógicas......................................................................................................................48Que es Arduino..............................................................................................................................51

Como trabajar con Arduino.......................................................................................................51Arquitectura de un sketch..........................................................................................................51Conceptos básicos para una programación exitosa...................................................................52El microcontrolador del Arduino UNO.....................................................................................53

Circuito electrónico de la placa Arduino UNO..............................................................................54La placa Arduino UNO..................................................................................................................56

Componentes de la placa Arduino UNO...................................................................................56Esquema lógico de Arduino......................................................................................................58Puertos del Arduino UNO.........................................................................................................59Pines con entradas analógicas y el ADC...................................................................................61Pines con control PWM............................................................................................................63

Page 2: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

El sistema de memoria de Arduino...........................................................................................65El IDE de Arduino.........................................................................................................................67

El Booloader de Arduino...........................................................................................................68Librerías para Arduino...................................................................................................................69Programando Arduino UNO..........................................................................................................69

La función millis()....................................................................................................................70El bucle condicional for().........................................................................................................71Sacando binarios por el puerto B..............................................................................................73Contador de un dígito................................................................................................................75Contador de tres dígitos............................................................................................................77

El conversor analógico (ADC)......................................................................................................81Sensor LM35.............................................................................................................................84

Interrupciones con Arduino UNO..................................................................................................87Funcionamiento del Timer 1.....................................................................................................91INT0 y INT1.............................................................................................................................93

Uso de pantallas LCD....................................................................................................................96Midiendo con el ADC por cuatro canales...............................................................................101

Sensor de temperatura 1-wire DS18B20.....................................................................................104Obteniendo el ID de un sensor DS18x20................................................................................107

Medición de temperatura y humedad con DHT22.......................................................................110Medición de temperatura y humedad con HDC1000..................................................................112Sensor Barométrico LPS25HB....................................................................................................115Medición del índice de Radiación Ultravioleta...........................................................................117Reloj calendario DS3231.............................................................................................................119Scanner I2C..................................................................................................................................121Usando el puerto UART...............................................................................................................123Usando la EEPROM de Arduino.................................................................................................127Control de un Servo Motor..........................................................................................................128Control de un motor paso a paso.................................................................................................129Agregando Bluetooth a Arduino..................................................................................................131

Control del Puerto Arduino por Bluetooth..............................................................................134Control de un Servo Motor mediante Bluetooth.....................................................................135

Manejo de un teclado matricial....................................................................................................136Control de un sistema RFID........................................................................................................138

Frecuencias en distintos países................................................................................................138Cantidad de información almacenada en una etiqueta de RFID.............................................139Etiquetas de lectura y lectura/escritura...................................................................................139Etiquetas pasiva y etiquetas activas........................................................................................139Usando tags de solo lectura.....................................................................................................139Control de acceso para una puerta..........................................................................................142

Page 3: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Ley de Ohm

Las Resistencias.Las resistencias son el componente electrónico más omnipresente. Son unapieza crítica en casi todos los circuitos. Y juegan un rol muy importante ennuestra ecuación preferida, la Ley de Ohm.Las resistencias son componentes electrónicos que tienen una resistividad eléctrica específica que nunca cambia. La resistividad de la resistencia

limita el flujo de electrones en un circuito. Son componentes pasivos, lo que significa que ellos solo consumen energía (y no lapueden generar). Las resistencias generalmente se agregan a loscircuitos como complemento de los componentes activos tales como lo amplificadores operacionales, microcontroladores y otroscircuitos integrados. Generalmente las resistencias se ocupan paralimitar la corriente, dividir los voltajes, y como resistencias pull-up en las líneas de entrada y salida (I/O).En esencia eso es lo único que puede hacer una resistencia sin importar el tipo que sea, de todos los componentes pasivos es sin duda la resistencia el más simple de todos, ya que no tiene polaridad para respetar y su implementación solo está condicionada por dos variables, el valor propio de la resistencia y su potencia. La potencia de una resistencia determina su tamaño físico, a mayor potencia más grande será la resistencia en su aspecto, necesita mayor superficie para disipar el calorde su superficie.El instrumento para medir resistencias es el óhmetro y se simboliza con la letra griega omega rodeado por una circunferencia. Siempre que se mida una resistencia esta debe estar con al menos uno de sus pines desconectado del circuito electrónico.De acuerdo a lo visto podemos entonces decir lo siguiente:

La resistencia es la oposición que presentan los cuerpos al paso de la corriente eléctrica.

Page 4: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Hay una gran variedad de otras resistencias de propósitos especiales. Las resistencias pueden venir en paquetes pre conectados de cinco o más resistencias. Las resistencias en estos conjuntos pueden tener un pin común o estar puestas como divisor de voltaje. Las resistencias no tienen que ser estáticas. Las resistencias variables conocidas como reóstato, son resistencias que se pueden ajustardentro de un rango específico de valores. Parecido al reóstato es el potenciómetro, lospotenciómetros son una resistencia con un patíno contacto que recorre toda esta resistenciacreando un divisor de voltaje ajustable entre elpin central y cualquiera de sus extremos. Estas resistencias variables generalmente seocupan en entradas, como perillas de volumen.Un conjunto de potenciómetros.

Del extremo superior izquierdo, en sentido de las agujas del reloj, un potenciómetro de ajuste (trimpot), un joystick de 2 ejes, un potenciómetro de membrana (softpot), un potenciómetro deslizante (slide pot), un potenciómetro clásico de ángulo recto, y un potenciómetro de ajusto apto para protoboard.Se los utiliza como controles de volumen, control tono, control de fuerza y control de luminosidad.Para medir un potenciómetro con un tester colocamos el

instrumento entre punta y punta del potenciómetro y medimos su resistencia total luego colocando el multímetro en su punto medio podemos medir la resistencia entre el cursor y los extremos.

Decodificar Resistencias de Montaje en Superficie.Las resistencias de montaje en superficie como las 0603 o las 0805, tienen su propia forma de mostrar su valor. Hay algunos métodos comunes para marcas estas resistencias. Generalmente tienen tres o cuatro caracteres, ya sean números o letras, impresas en la parte superior de la carcasa.Si los tres caracteres que ves son todos números, probablemente está viendo una resistencia con marcas E24. Estas marcas comparten similitudes con el sistema de color que se usa en las resistencias de agujeros pasantes. Los primeros dos números representan los dígitos más significativos del valor, el número final representa la magnitud.

En el ejemplo superior, las resistencias son marcadas 104, 105, 205, 751, y 754. La resistencia marcada con 104 debería ser de 100kΩ (10×104),105 seria 1MΩ (10×105), y 205 es de 2MΩ (20×105). 751 es de 750Ω (75×101), y 754 es de 750kΩ (75×104).

Otro sistema de codificación común es el E96, y es el más críptico de todos. Las resistencias E96

Page 5: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Cuando se trabaja con microcontroladores contar con una buena y confiable fuente de alimentación es tan relevante que define el correcto funcionamiento del proyecto bajo prueba.Funcionamientos erráticos producto de falsos contactos, interferencias en líneas de alimentación sonalgunos de los muchos inconvenientes que podemos encontrar si no prestamos atención a la fuente de alimentación.La fuente de alimentación debe ser regulada y estabilizada, (nunca utilice un cargador de baterías para celular o cargadores en general). Los reguladores monolíticos como el popularLM7805 son muy prácticos de usar, todos los 78XXson reguladores positivos, la entrada al regulador serásiempre sobre el borne positivo de la fuente.XX es el voltaje de salida siendo el LM7805 unregulador para entregar 5 voltios en la salida, LM7809entregará 9 voltios, LM7812 para 12 voltios, etc.Estos reguladores pueden manejar hasta 1 Amper decarga máxima. (Superado los 400 miliamperes se debecolocar sobre un disipador de aluminio).El siguiente es un ejemplo simple de una fuenteensamblada con estos reguladores.

Alguna fuente en desuso de algún módem o router de internet en desuso pueden ser una excelente opción, ya vienen preparados para alimentar circuitos electrónicos con microcontroladores y procesos digitales.Si contamos con una placa que funciona con 5 y/o 3 Voltios, necesitamos alimentar la placa con unafuente que entregue un voltaje superior a 5 Voltios.Es común leer en las especificaciones que se pueden usar fuentes con rangos de 7 a 15 Voltios, si necesita obtener solo 5 voltios el excedente se disipa en forma de temperatura, alimentar todo con una fuente de 9 Voltios es lo ideal y los reguladores de voltaje trabajaran sin sobrecargas.Si necesitamos una fuente que además de estabilizada sea variable, el LM317 resuelve el problema.Observe el siguiente circuito electrónico.

Page 6: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

componentes electromecánicos. Este tipo de elementos son importantes porque permiten que los sistemas electrónicos se puedan comunicar entre sí o con el hombre.Los componentes electrónicos vienen en una gran familia de formas, tamaños, presentaciones, características, etc., dependiendo de su aplicación específica. Sin embargo, dentro de cada tipo, todos cumplen la misma función básica. Esta función se representa mediante un símbolo gráfico.

El uso de símbolos para representar componentes permite construir diagramas esquemáticos. Un diagrama es una representación gráfica de la forma como están conectados o relacionados entre sí los componentes de un circuito, prescindiendo de su forma y características constructivas.

Las pantallas o displays LCD.Son dispositivos que convierten señales eléctricas en información visual, incluyendo imágenes, letras, números, etc. Los principales tipos de visualizadores utilizados en electrónica son los los displays LED y los displays de cristal líquido o LCD.

En la imagen anterior se puede ver una pantalla de 16x2 caracteres, un clásico en en el mundo Arduino. Este tipo de displays no emiten luz, sino que controlan la luz incidente. Están basados en las propiedades de ciertos materiales, llamados precisamente cristales líquidos, de absorber o reflejar luz dependiendo de la aplicación de señales eléctricas con determinadas características. Son muy utilizados en relojes, calculadoras, computadoras, multímetros,etc.En los últimos tiempos donde la conectividad es parte importante de todos los sistemas electrónicos,

Page 7: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

El uso de opto-acopladores en microcontroladores es de vital importancia por dos motivos fundamentales.

• Aíslan interferencias y ruidos eléctricos que pueden afectar a los sistemas de control.• Aísla al propio usuario de potenciales eléctricos peligrosos convirtiendo el uso de equipos

de potencia seguros desde el punto de vista del riesgo eléctrico.

Lamentablemente el uso de opto-acopladores no es práctica común en el mundo del aficionado a la electrónica. Imagino porque los circuitos electrónicos parecen funcionar bien sin ellos, remarco el “parecen”. No debe olvidar el lector que no es lo mismo hacer funcionar un aparato electrónico en el taller o la mesa de trabajo que colocarlo dentro del motor de un automóvil o el gabinete eléctrico de una fábrica, los ruidos e interferencias eléctricas están presentes en esas condiciones y no en el laboratorio.Por ejemplo imagine que está ensamblando un sistema de alarma simple donde un sensor de movimiento será cableado hasta su sistema de control y para eso necesita 10 metros de cable, en unapunta esta su central de control y en la otra su sensor y en el medio 10 metros de antena dispuesta a recibir todas las posibles señales eléctricas, un simple relámpago en un día de tormenta dispara su alarma. Si colocamos un opto-acoplador a la entrada del sistema de control una interferencia transitoria no alcanzará a encender el led interno y el opto-acoplador funciona como un filtro eliminando los ruidos eléctricos que se imprimen en los 10 metros de cable.Otro ejemplo de uso podría ser el control de una carga sobre la red eléctrica con una señal que proviene de un controlador con 5Voltios como máximo.

Este tipo de montajes son muy seguros porque “separan” al usuario que opera el equipo de control de las potencias que se manejan. Desde el punto de seguridad son montajes casi de uso obligatorio.

Bobinas o Inductancias.

Almacenan energía eléctrica en forma de campo magnético. Físicamente están formados por un alambre esmaltado, el cual se encuentra enrollado sobre una forma de núcleo que puede ser de plástico, ferrita o metal.Su unidad de medida es el henryo, los submúltiplos son: el milihenryo (mH) el microhenryo (uH).

Page 8: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Sabemos que como voltímetro se conecta en paralelo con el componente a medir, de tal manera que indique la diferencia de potencial entre las puntas. Donde indica 200m el máximo es 200 milivolts (0,2 V), el resto se comprende tal cual están expresados por sus cifras. Por lo tanto para medir tensiones de batería del automóvil debemos elegirla de 20V. Si se está buscando caídas de tensión en terminales o conductores, podemos elegir una escala con un máximo más pequeño, luego de arrancar con un rango más elevado y así tener una lectura aproximada. Siempre hay que empezar por un rango alto, para ir bajando y así obtener mayor precisión. Cuando el valor a medir supere el máximo elegido, también indicará “1”en el lado izquierdo del display.

Medir Corriente en Continua.

Para medir esta magnitud, hay que tener mucha precaución porque como amperímetro el tester se conecta en serie. Por lo tanto toda la corriente a medir se pasará por su interior, con el riesgo de quemar el instrumento. En el manual de uso el fabricante aconseja no solo el máximo de corriente que puede soportar sino además el tiempo en segundos (por ejemplo 15seg.).

Donde la escala indica el rango: 2m es 2mA (0,002 A); 20m es 20mA (0,02 A); 200m es 200mA (0,2 A) y por lo tanto 20 es 20 A.

Medir Condensadores.

Utilizamos la escala indicada como CX y su zócalo:

CX quiere decir “capacidad por”, según el rango selecionado con la llave (3): 20 u es 20 uf resultando uf la unidad microfaradio (1uf= 1f x 10-6), es decir el uf es la millonésima parte del faradio.(20uf son 0,00002 faradios). Por lo tanto el rango 20u es el máximo, es decir la mayor capacidad que puede medir este tester.

2u es 2uf (2f x 10-6 = 0,000002 f). Además en otros multímetros podemos encontrar:

200n es 200 nanofaradios (1nf= 1f x 10-9 f) o sea 200nf = 0,0000002 f. 20n es 20 nanofaradios o sea 20nf= 0,00000002 f. 2000 p es 2000 pf (2000 picofaradios), teniendo en cuenta que 1pf= 1 f x 10-12 entonces

2000pf = 0,000000002 f.

IMPOTANTE!!Siempre los capacitores deben estar descargados, antes de conectarlos al zócalo.

Page 9: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Observe que la señal de control tiene 5 voltios y el relay está conectado a 12V. Estono presenta problemas en tanto no olvide conectar la resistencia de 10K en la base del transistor.

Transistores de Efecto de Campo (fet).Su principal ventaja en el uso de estos transistores como llaves esque prácticamente no toma corriente desde el elemento de controlque los comanda, es decir que se los puede conectar directamente alos pines del puerto de un microcontrolador sin necesitar unaresistencia atenuadora en su pin de control que en este caso se llama Compuerta en lugar de Base.Existen de dos tipos, los de Canal N y Canal P.Y todos tienen tres terminales.

• Gate (compuerta).• Drain (drenaje).• Sourse (fuente).

El BS170 es unos de los transistores de uso común para comandar “cosas” conectadas en los pines del controlador, si bien es cierto que tienen costos un poco mas altos que los transistores convencionales su uso es muy recomendable.Son muy rápidos, estables y su funcionamiento en general se parece mucho a los viejos tubos de vacío usados en otro tiempo.

Divisores de Tensión.Son circuitos formados por resistencias en serie, que permiten obtener cualquier valor de tensión comprendido entre cero volts y el voltaje máximo

Page 10: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

La grasa siliconada para disipadores esta especialmente diseñada para este fin.

Tiristores. Un tiristor es uno de los tipos más importantes de losdispositivos semiconductores de potencia y control. Se puede ver el tiristor como un simple diodo controlado,cuando aparece un pulso de disparo en la compuerta, el tiristorconduce y como diodo su funcionamiento primario estaasignado a corrientes continuas, para muchas aplicaciones sepuede suponer que los Tiristores son interruptores oconmutadores ideales con limitaciones.Triac (Triodo de Corriente Alterna).Se puede definir como un tiristor que conduce en ambos sentidos en forma controlada, lo que permite funcionar en circuitos de corriente alterna y controlar dispositivos en alterna dejando pasar ambos semiciclos de la fase alterna. Si bien la compuerta del triac se podría conectar directamente alos pines del controlador, es prudente no conectar estos dispositivos directamente a los pines de los microcontroladores, para esto existen los opto-acopladores (MOC30xx) que sirven de aislantes o separadores entre la lógica de control y la etapa de potencia.

El uso de opto-acopladores para separar la etapa de potencia con la zona de control es casi de uso obligado para evitar riesgos eléctricos, el siguiente es un ejemplo de uso.

Page 11: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Técnica de soldado.Acercar los elementos a unir hasta que se toquen, si es necesario, utilizar unos alicates para sujetar

bien las partes.

Aplicar el soldador a las partes a soldar, de forma que se calienten ambas partes.Tener en cuenta que los alicates o pinzas absorben parte del calor del soldador.Las piezas empiezan a calentarse hasta que alcanzan la temperatura del soldador. Si la punta está limpia, esto suele tardar menos de 3 segundos. Este tiempo dependerá de si se usan alicates y de la masa de las piezas a calentar.

Sin quitar el soldador, aplicar el estaño (unos pocos milímetros) a la zona de la soldadura, evitando tocar directamente la punta.Cuando la zona a soldar es grande, se puede mover el punto de aplicación del estaño por la zona para ayudar a distribuirlo. La resina del estaño, al tocar las superficies calientes, alcanza el estado semilíquido y sale de las cavidades, distribuyéndose por la superficie de la soldadura. Esto facilita que el estaño fundido

Page 12: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Compuerta OR.Al igual que la anterior posee dos entradas como mínimo y la operación lógica, será una suma entre ambas... Bueno, todo va bien hasta que 1 + 1 = 1, el tema es que se trata de una compuerta O Inclusiva es como a y/o bEs decir, basta que una de ellas sea 1 para que su salida sea también 1.

Compuerta OR-EX o XOR.Es OR EXclusiva en este caso con dos entradas (puede tener mas, claro...!) y lo que hará con ellas será una suma lógica entre a por b invertida y a invertida por b.Al ser O Exclusiva su salida será 1 si una y sólo una de sus entradas es 1.

Compuertas Lógicas Combinadas.Al agregar una compuerta NOT a cada una de las compuertas anteriores, los resultados de sus respectivas tablas de verdad se invierten, y dan origen a tres nuevas compuertas llamadas NAND, NOR y NOR-EX... Veamos ahora como son y cual es el símbolo que las representa.

Compuerta NAND.Responde a la inversión del producto lógico de sus entradas, en su representación simbólica se reemplaza la compuerta NOT por un círculo a la salida de la compuerta AND.

Compuerta NOR.El resultado que se obtiene a la salida de esta compuerta resulta de la inversión de la operación lógica o inclusiva es como un no a y/o b. Igual que antes, solo agregas un círculo a la compuerta ORy ya tienes una NOR.

Page 13: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

En la primera sección se declaran todas las variables, funciones y bibliotecas. Se puede decir que enesta sección se informa al programa de todos los elementos que necesitará para construir el proyecto.Recuerde que no puede usar nada que no haya sido declarado previamente.La segunda sección contiene la configuración del Hardware, toda la electrónica que usará el proyecto se configura en esta sección.La sección tres contiene el bloque principal del programa, todo sucederá en esta sección, desde aquíel programa puede bifurcar a otras secciones y rutinas sin embargo siempre regresará a este “bucle”.Anteriormente se hablaba del Stack o pila, cuando el programa sale del bucle loop() a ejecutar código en otra función o en una interrupción, saca una “radiografía” del estado de algunos de sus registros para saber exactamente donde estaba y que estaba haciendo, lo guarda en el Stack para recuperarlo luego y así conocer donde y como tiene que regresar cuando este llamado fuera del loop() termine.

Conceptos básicos para una programación exitosa.Para minimizar los posibles problemas a la hora de programar Arduino es bueno tener claro algunosconceptos.

• Debe estar seguro que la fuente de alimentación no tiene problemas. El voltaje es el correcto, no hay falsos contactos ni cables sueltos. Si algo no funciona usted puede desconfiar de su código pero debe tener certeza que su electrónica funciona correctamente.

• El lenguaje de programación distingue mayúsculas de minúsculas, si escribe “Dato” y luego hace referencia a “dato” el compilador dará un error indicando que la variable no ha sido declarada o no sabe que es.

• No mezcle mayúsculas y minúsculas en un programa, es confuso y poco elegante.• No utilice nombres con espacios, es preferible agregar un “_” para representar un espacio.• No utilice nombres largos para variables o nombres de archivos.• Trabaje prolijo, cree una carpeta donde contener todos sus proyectos que a su vez tendrán

cada uno de ellos su propia carpeta individual. En estas carpetas podrá agregar notas

Page 14: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Hay que remarcar que el regulador de 3.3 Voltios saca energía del regulador de 5 Voltios por lo tanto la carga de 3,3 V se suma a la carga total del regulador de 5Voltios, si excede el amper de corriente el regulador se destruirá. Vigile la temperatura de este regulador.

La placa Arduino UNO.

En la placa se pueden ver los pines que corresponden a los puertos, el cristal de16 Mhz que fija la velocidad de operación, una pequeña fuente de alimentación, un botón de reset y algunos componentes periféricos necesarios para el correcto funcionamiento del microcontrolador.

Componentes de la placa Arduino UNO.• No necesita ningún puente USB para conectarse al MCU, en su lugar usa un MCU

ATMEGA16U2 especialmente programado para trabajar como conversor de USB a serie. • La alimentación puede ser vía USB, batería o adaptador AC/DC a 5V, seleccionado

automáticamente. Arduino puede trabajar entre 6 y 20V, pero es recomendado trabajar entre 7 y 12V por las características del regulador de tensión.

• Puerto Serie en los pines 0 y 1.

• Interrupciones externas en los pines 2 y 3.

• LED en el pin 13.

Page 15: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

como cadenas, estructuras inicializadas y variables globales.Las variables .bss son la memoria asignada para variables globales y estáticas no inicializadas.Heap es el área de memoria dinámica.La pila es el área de memoria ubicada al final de la RAM y crece hacia el área de datos. El área de pila se usa para almacenar el estado del microcontrolador al saltar a una subrutina y recuperarlo luego, valores de retorno en interrupciones, etc. Como ocurre con todos los microcontroladores el manejo inadecuado del Stack o pila puede traer problemas serios ya que si el Stack crece de manera descontrolada destruirá las otras variables del programa y todo el sistema colapsa.Es importante que siempre exista suficiente memoria libre entre el Stack y el bloque de memoria de datos del usuario. Cuando esta área es demasiado pequeña para las tareas requeridas o falta espacio para el Stack, el microcontrolador comienza a extraviarse o reiniciarse.Normalmente el programador no se preocupa por sus variables y donde se almacenan, esto lo resuelve el compilador, sin embargo como veremos mas adelante, si importa conocer la naturaleza de la variable que estamos usando para ayudar al compilador a un manejo mas eficiente de la memoria SRAM.En algunos microcontroladores es posible agregar memoria RAM externa de una manera similar a como lo hacemos con una PC. Por lo general, esto es costoso (unos pocos KB de RAM externos cuestan mas que el propio microcontrolador) y también requiere habilidades avanzadas de hardwarey software.

El IDE de Arduino.El IDE (Integrated Development Environment) es el entorno de desarrollo integrado o entorno de desarrollo interactivo. Es donde vamos a escribir los programas que finalmente terminan en la memoria FLASH del microcontrolador.

El IDE de arduino y todo lo necesario para trabajar se descarga desde su sitio en Internet, es libre y solo con descargarlo ya está listo para trabajar con el. Al momento de escribir estas líneas hay disponible para su descarga una versión que no necesita ser instalada, se descarga un archivo zip se descomprime y todas las herramientas quedan listas para su uso.El entorno de trabajo de Arduino es bastante austero si lo comparamos con otros entornos para otrasarquitecturas sin embargo es totalmente funcional. Se puede escribir un programa en el, depurarlo e incluso tiene todo lo necesario para programar la memoria del microcontrolador.Las placas Arduinos son reconocidas por el entorno de trabajo de manera automática si se trata de

Page 16: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

El bootloader de Arduino es una de las partes esenciales en las que reside la comodidad y sencillez de uso de Arduino (y por tanto de su éxito). En general el bootloader no presenta problemas sin embargo, hay varias circunstancias en las que necesitaremos ser capaces de modificar el bootloader de Arduino. Por ejemplo:

• Los usuarios avanzados pueden querer modificar y personalizar el proceso de arranque.• En proyectos grandes, podemos querer aprovechar el espacio ocupado por el bootloader.• Algunos fabricantes envían sus placas sin el bootloader precargado.• En alguna circunstancia el bootloader puede corromperse.

En cualquiera de los casos, no necesitamos disponer de un programador externo si no que podemos grabar el bootloader de un Arduino usando otro Arduino como programador.Al Arduino que actúa como programador se llamará master, y al que vamos a programar slave. La comunicación entre PC y master se realiza a través de puerto serie, mientras que el master se comunicará con el slave a través de SPI.

Librerías para Arduino.Una de las ventajas que ofrece Arduino es la gran cantidad de librerías existentes para el manejo de periféricos conectados a sus pines.Para instalar una librería podemos descargarla en nuestra computadora desde internet en formato zipy simplemente incluirla desde la correspondiente sección en el menú del IDE.

También se puede instalar directamente desde Internet en el apartado “Gestionar Librerías”.

Programando Arduino UNO.El clásico “Hola Mundo” en la programación de microcontroladores es lograr encender y apagar un LED conectado a un pin del controlador.En el caso de la placa Arduino UNO,ya tiene un LED conectado al pin 13 por lo tanto no necesitamos agregar nada de electrónica, solo escribir el sketch y programar la memoria de Flash.

/***************************************************************** Enciende y apaga un LED conectado en el pin 13 al ritmo de* un segundo.*****************************************************************/

CONFIGURACIÓN DEL HARDWARE void setup(){ pinMode(13, OUTPUT); // El pin 13 será una salida digital

Page 17: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

contador se pasará a la parte baja del puerto B y se mostrará en cuatro LED's conectados a los pines 8,9,10 y 11.

El circuito electrónico para el botón contador es el siguiente, observe que el estado de NO cuenta esun nivel alto en el pin provisto por la resistencia de 10K, esto enmascara las interferencias y ruidos eléctricos que podrían afectar el contador. Para contar se debe llevar el pin a nivel bajo mediante el botón.

/***************************************************************** Contador binario, muestra el estado de cuenta en 4 bit's por la* parte baja del puerto B.* El contador se incrementa en 1 cada vez que se oprime un botón* colocado en el pin 2 configurado como entrada. * * Placa Arduino: UNO R3* Arduino IDE: 1.8.5** www.firtec.com.ar*****************************************************************/byte contador = 0;unsigned char boton = 2; // Pin del botónunsigned char estado = 0; // Estado del botónunsigned char bandera = 0; // Bandera para contar de 1 en 1

Configura el Hardware void setup(){ pinMode(boton,INPUT_PULLUP); //Pulsador para contar// -- Configuración de los pines para los LED's DDRB = 0x0F; // Parta baja del puerto es salida PORTB = 0; // El puerto es puesto a cero}

Bucle principal del programavoid loop() { estado = digitalRead(boton); // Mira el estado del botón if (estado == LOW && bandera== 0) { contador++; if(contador > 15) contador = 0; PORTB = contador; // Coloca el binario por el puerto bandera = 1; } estado = digitalRead(boton); // Mira el estado del botón if (estado == HIGH) // Si el nivel es alto el botón se soltó bandera = 0; // y se prepara para contar otro número }/*************** Fin de Programa FIRTEC ARGENTINA ***************/

Page 18: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Muestra_Dato(contador);}

void loop(){ estado = digitalRead(boton); // Mira el estado del botón if (estado == LOW && bandera== 0) { contador++; if(contador == 10) contador =0; Muestra_Dato(contador); bandera = 1; } estado = digitalRead(boton); // Mira el estado del botón if (estado == HIGH) bandera = 0;}

Muestra el estado de cuentavoid Muestra_Dato(unsigned char number){ unsigned char pin = 2; for (unsigned char j=0; j < 7; j++) { digitalWrite(pin, num_array[number][j]); pin++; }}/*************** Fin de Programa FIRTEC ARGENTINA ***************/

Contador de tres dígitos.Para el siguiente ejemplo vamos a necesitar la siguiente electrónica conectada a nuestra placa Arduino.

Tres dígitos cátodo común controlados por tres transistores que forman un multiplexador serán los encargados de mostrar el estado de cuenta. En este caso el contador cuenta a su propio ritmo de manera automática no hay botón de cuenta. El lector lo puede agregar para contar objetos con un sensor, o contar paquetes en una cinta transportadora. Los tres dígitos se encuentran conectados en paralelo es decir segmento “a” de uno al segmento “a” del otro y así sucesivamente. Los pines usados para los segmentos son los mismos que en el ejemplo anterior, pines del 2 al 8.El contador es básicamente un registro, una posición de memoria que se incrementa, si la variable contador ha sido definida como unsigned char o byte solo puede contar hasta 255, esta cuenta se

Page 19: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

número anterior como si todavía estuviera presente en el visor y se forma la ilusión óptica que permite ver tres cifras distintas en lo que parece ser el mismo instante.Si la decena está en cero no se muestra lo mismo que la centena, no tiene sentido mostrar tres ceros generando el consumo de mas segmentos cuando no hay información útil para ver.

El conversor analógico (ADC).En muchos proyectos tenemos que tratar con las señales o información del mundo analógico, como la temperatura, presión, corriente, etc .Estas señales son analógicas de forma predeterminada y en la mayoría de los casos se utilizan sensores que convierten estas señales a analógico de tensión eléctrica que será presentada en un pindel microcontrolador para hacer algún trabajo. Por desgracia, los microcontroladores son digitales y no pueden hacer frente a las señales analógicas por lo que estas señales deben ser convertidas en señales digitales que sean comprensibles por el núcleo del microcontrolador. Básicamente digitalizar algo es simplemente convertirlo a una secuencia de números de tal forma que si hacemos el proceso inverso de leer esos números podemos reconstruir la información original.Para el siguiente ejemplo usaremos la electrónica que se muestra a continuación.

Pretendemos medir un voltaje variable mediante un potenciómetro conectado al pin AN0 de nuestra placa Arduino.El ADC de la placa Arduino tiene una resolución de 10 bits, como se dijo anteriormente, digitalizar algo es convertirlo a una secuencia de números, con 10 bits se pueden hacer 1024 números.Es decir que toda medición terminará en un número dentro de ese rango, si esta secuencia de números se convierten a hexadecimal el resultado serían números entre 000 y 3FF.El trabajo propuesto lee el voltaje presente en el punto medio del potenciómetro y lo muestra en hexadecimal en con tres dígitos controlados por un multiplexador de tres transistores.

/****************************************************************** Ejemplo de uso del conversor analógico digital. El ADC muestra* los datos en tres dígitos de siete segmentos. Tres transistores* MPSA13 se utilizan como multiplexador de los display tipo cátodo* El ADC mide el voltaje presente en AN0, el voltaje es generado* por un potenciómetro de 10K cuyos extremos se conectan entre +5* y GND. El punto medio del potenciómetro se conecta a AN0.* Los datos se muestran en hexadecimal de 000 a 3FFF

Page 20: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

unsigned char pin = 2; for (unsigned char j=0; j < 7; j++) { digitalWrite(pin, num_array[number][j]); pin++; }}/************** Fin de Programa FIRTEC ARGENTINA ***************/Recuerde que Arduino tiene A0, A1, A2, A3, A4 y A5, todos estos son canales analógicos y por cualquiera de ellos se pueden realizar mediciones incluso todos conectados a distintos sensores.Si bien el conversor del ATmega328 no es de los mas rápidos, es lo suficientemente ágil y preciso para la mayoría de los problemas a resolver con una placa Arduino.

Sensor LM35.El LM35 es la versión para grados centígrados de un legendario sensor que mide en grados Kelvin, el LM355.Ambos son parecidos solo que miden en escalas diferentes, no son reemplazo uno del otro.El LM35 tiene un funcionamiento muy sencillo y seguramente encontrará en la red incontables sitios que lo describen en profundidad. Solo diremos que por su salida envía un voltaje que es proporcional a los grados de temperatura a la está expuesta su cápsula.El voltaje de salida sube o baja a razón de 10 mV por cada grado, 0 mV son cero grados centígradosy 250 mV equivalen a 25 grados C.Como imaginará su uso con Arduino es bastante simple, solo debemos medir el voltaje que el sensor envía al ADC y hacer unos pequeños cálculos para conocer la temperatura.En el ejemplo propuesto necesitamos la siguiente electrónica conectada a la placa Arduino.

El condensador de 01 uF y la resistencia de 100 Ohms forman un filtro para eliminar las posibles interferencias que se pudieran captar entre la conexión del sensor y el pin A0 de la placa Arduino.Recuerde que básicamente está midiendo el voltaje que envía el sensor, si coloca un cable demasiado largo (varios metros) se provoca una caída de tensión en la línea y la medición no será fiable.El siguiente es el código de funcionamiento para el sensor LM35 y el ADC, básicamente es el mismo trabajo anterior solo se han agregado las rutinas para calcular la temperatura y se ha

Page 21: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Funcionamiento del Timer 1.Un temporizador es en esencia un contador que cuenta a la velocidad de CPU.Usando un resonador cerámico de 16Mhz como tiene la placa Arduino, el tiempo de CPU es 1/16 = 62,5 nS. Este es el tiempo de una instrucción de un solo ciclo por ejemplo la instrucción NOP.Y esta es la velocidad de cuenta de un Timer, es decir que cada cuanta toma 62,5 nS, conociendo esto podemos fácilmente calcular tiempos. Un Timer de 16 bits puede contar desde 0 a 65535 a la velocidad de 62,5 nS por cada número contado. Podemos usar un “modulo”, un registro que le dice al Timer desde donde iniciar la cuenta, no necesariamente tiene que ser siempre cero, se puede iniciar la cuenta desde cualquier numero y cuando el contador llegue al final (65535) y pase a cero nuevamente la interrupción se dispara para avisar que el tiempo se ha cumplido. También tenemos los divisores que pueden dividir el tiempo generado en un temporizador por números ya definidos por ejemplo 8, 64, 256 o 1024. Un detalle, los Timer's en la placa Arduino sonsiempre de conteo ascendente.Veamos un ejemplo, imaginemos que queremos generar una señal por un pin que corresponda a unafrecuencia de 50Hz. Recuerde que el Timer no es un generador de frecuencias, solo vamos hacer subir o bajar un pin y vamos a calcular todo para que el ritmo se corresponda a una señal de 50Hz. Como sabemos el período de 50Hz es 20 mili-segundos, es decir que durante 10 mS esta arriba y otros 10 mS abajo.Vamos pedirle al Tmer_1 que genere un tiempo equivalente al período de una señal de 100 Hz que corresponde a 1/100 = 10 mS, esto quiere decir que cada 10 mS el Timer_1 se interrumpirá, solo resta calcular los valores para ajustar el Timer.

16.000.000 / 256 = 62500 (256 es el divisor usado)62500 / 100 = 625 (100 es el período buscado)65535 – 625 = 64911 Módulo del Timer para obtener el período de una señal de 100Hz

Teniendo la interrupción ocurriendo cada 10 mS solo tenemos que subir y bajar un pin a ese ritmo para generar una señal de 50 Hz. La imagen siguiente muestra el tren de pulsos generado.

Para configurar el Timer_1 es necesario trabajar con tres registros.

• TCNT1 es el registro donde se debe escribir el módulo.

Page 22: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

El sensor se conecta al pin 2 de la placa Arduino, la pantalla LCD se conecta de la misma forma queen los ejemplos anteriores.El sketch para leer la temperatura desde el sensor es bastante simple, la librería resuelve prácticamente todo lo relacionado con las comunicaciones y conversión de los datos.

#include <OneWire.h> // Driver para el manejo del bus 1-Wire #include <DallasTemperature.h> // Driver para el sensorOneWire ourWire(2); // Se establece el pin 2 como pin 1-Wire

//Se crea una instancia del sensorDallasTemperature sensors(&ourWire);

#include "LiquidCrystal.h" // Librería del LCD#define ledPin 13

volatile char* buffn="";char buffer[4]="";LiquidCrystal lcd(8,9,4,5,6,7);void setup (){ lcd.begin(16,2); pinMode(ledPin, OUTPUT); // Pin del LED de la placa digitalWrite(13,LOW ); // LED inicia apagado sensors.begin(); //Se inicia el sensor DS18B20 lcd.setCursor(1,0); lcd.print("Temp en Grados"); // Muestra carteles iniciales lcd.setCursor(0,2); lcd.print("----[ ]----"); }

Page 23: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

El circuito electrónico es el mismo que el ejemplo anterior de 1-Wire, solo que ahora por el pin 2 conectamos el DHT22 en lugar del DS18B20.El siguiente es el código de funcionamiento para el sensor DHT22.

/****************************************************************** Descripción : Lee la Temperatura y Humedad desde un sensor ** DHT22, muestra los datos en pantalla 16x2. ** Target : Arduino UNO** ToolChain : Arduino IDE 1.8.5** www.firtec.com.ar*****************************************************************/#include <Adafruit_Sensor.h> // Librería Adafruit#include <DHT.h>#include <DHT_U.h>

#define DHTTYPE DHT22 // Tipo de sensorconst int DHTPin = 2; // Pin del sensorDHT dht(DHTPin, DHTTYPE); // Instancia del sensor#include "LiquidCrystal.h" // Manejo del LCD#define ledPin 13

// Variables del programastatic char Temperatura[5]="";static char Humedad[5]="";

// Pines del LCD RS E datosLiquidCrystal lcd(8,9,4,5,6,7); // Pines de Arduino

void setup (){ lcd.begin(16,2); pinMode(ledPin, OUTPUT); // Pin del LED de la placa digitalWrite(13,LOW ); // LED inicia apagado lcd.setCursor(0,0); lcd.print("Temperatura:"); // Carteles iniciales lcd.setCursor(0,1); lcd.print("Humedad: %"); dht.begin(); }

//------- BUCLE PRINCIPAL DEL PROGRAMA -------------------

Page 24: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

impresa construido por MikroElektronika y por su bajo costo no justifica construirla. (Sin embargo el fabricante de la placa brinda todos los diagramas de conexionado).Para el manejo de este sensor se ha usado la biblioteca de Arduino para este sensor.El sensor utiliza el formato de MikroBUS de Mikroelektronika y para facilitar su conexionado vamos a usar un Shield para Arduino UNO que da soporte a MikroBUS.

Si no se cuenta con este escudo para MikroBUS no es problema, el sensor utiliza el protocolo I2C por lo que solo hay que conectar los pines SDK y SCL que del Arduino al sensor. El sensor que probamos tiene una alimentación de 3.3V que tampoco es problema, lo alimentamos del pin 3V del Arduino y todo funciona perfecto.

En la imagen anterior se puede ver el escudo que da soporte a MikroBUS ya montado sobre la placaArduino UNO, también se encuentra montado sobre el escudo el propio sensor HDC1000.El código para el funcionamiento del sensor HDC1000 es el siguiente.

/****************************************************************** Descripción : Manejo del sensor HDC1000 para medir humedad ** y temperatura. El sensor se conecta al puerto** I2C de la placa Arduino. Pines SDA y SCL.

Page 25: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

El resultado del código anterior se puede ver en esta imagen. Temperatura y humedad son enviados por el puerto UART.

Sensor Barométrico LPS25HB.El LPS25HB es un sensor piezo-resistivo para medir presión absoluta que funciona como barómetro.El dispositivo se puede comunicar mediante el protocolo I2C o SPI, en la imagen siguiente se puedever el diagrama de bloques internos de este sensor.

Este sensor es de uso muy popular y se lo encuentra incluso en muchos de los actuales teléfonos celulares y tablets. Algunas de sus características mas relevantes son las siguientes:

• Rango de presión de 260 a 1260 hPa.• High-resolution mode: 0.01 hPa RMS• High overpressure capability: 20x full scale.• Embedded temperature compensation • 24-bit pressure data output • ODR from 1 Hz to 25 Hz

• SPI and I2 C interfaces • Embedded FIFO • Interrupt functions: Data Ready, FIFO flags, pressure thresholds

Page 26: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Serial.print("Luz Ultravioleta: "); Serial.println(UVindex); delay(1000);}//********* Fin del archivo Firtec Argentina ********************

En la imagen anterior se pude el resultado al ejecutar el programa, el sensor envía por la UART la cantidad de luz visible, cantidad de lux infrarroja y la luz ultravioleta detectada.

Reloj calendario DS3231.Un reloj de tiempo real (RTC) es un dispositivo electrónico que permite obtener la hora,minutos y segundos. También la fecha calendario. Los RTC normalmente están formados por un resonador de cristal integrado con la electrónica necesaria para contabilizar de forma correcta el paso del tiempo. La electrónica de estos relojes calendario tienen en cuenta las peculiaridades de nuestra forma de medir el tiempo, como por ejemplo el sistema sexagesimal, los meses con diferentes días, o los añosbisiestos.Los RTC aportan la ventaja de reducir el consumo de energía, aportar mayor precisión y liberar a Arduino de tener que realizar el control del tiempo. Además, frecuentemente los RTC incorporan algún tipo de batería que permite mantener los datos en caso de pérdida de alimentación.Dos son los RTC de uso habitual en domótica, el DS1307 y el DS3231, ambos fabricados por Maxim (anteriormente Dallas Semiconductor). El DS3231 tiene una precisión muy superior y puede considerarse sustituto del DS1307.En el modelo DS1307 las variaciones de temperatura que afectan a la medición del tiempo de los cristales resonadores se traducen en errores en un desfase acumulado. Esto hace que el DS1307 sufra de un desfase temporal, que puede llegar a ser 1 o 2 minutos al día.Para solucionarlo, el DS3231 incorpora medición y compensación de temperatura garantizando unaprecisión de alrededor de un segundos al mes.La comunicación en ambos modelos se realiza a través del bus I2C por lo que es sencillo obtener los datos. La tensión de alimentación es 4.5 a 5.5 para el DS1307, y 2.3 a 5.5V para el DS3231.En el caso del DS3231, la medición de temperatura también está disponible, aunque tiene una precisión baja ±3ºC, y el tiempo de adquisición puede durar hasta 1 segundo.También incorporan una batería CR2032 para mantener el dispositivo en hora al retirar la

Page 27: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

dato1 = 0; // Asegura que los vectores están limpios dato2 = 0;}

void loop(){ lcd.setCursor(6,0); lcd.print(EEPROM.read(Dir)); // Muestra los datos leídos lcd.setCursor(6,1); lcd.print(EEPROM.read(Dir + 1)); while(1); }/************** Fin de Programa FIRTEC ARGENTINA ***************/NOTA:La memoria EEPROM como todas las memorias de ese tipo son muy lentas, si necesita almacenar datos de manejo rápido no utilice memorias EEPROM son mas recomendables las memorias FLASH.

Control de un Servo Motor.Como ejemplo vamos a usar el servo motor 9gSG90 que tiene un movimiento que va desde 0 a 180grados. El control del movimiento se realiza mediante una señal PWM (Modulación de Potencia por Ancho de Pulso).

Se ha elegido este motor por ser de uso común en Arduino incluso viene como accesorio muchos delos Kits de Arduino.La señal PWM tiene un período total de 20mS y sobre esta frecuencia se ajusta el duty por lo que queda claro que el motor se puede mover cada 20mS. La biblioteca Servo.h se encarga del manejo del PWM a través de un pin asignado para eso, el pin 9 en nuestro ejemplo.El motor solo tiene tres conexiones, “+”, “-” y el pin de control, el siguiente es el sketch para el manejo del servo.

#include <Servo.h>Servo servoMotor; // Crea una instancia del servo

void setup() { servoMotor.attach(9); // Definimos el pin de control}

void loop() { servoMotor.write(0); // Desplaza a la posición 0º

Page 28: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

}//********* Fin del archivo Firtec Argentina ********************

Para evitar el uso del puerto UART nativo (pines “0” y “1”) que es usado por el propio sistema de programación de Arduino se ha creado un nuevo puerto por software asignando los pines “11” y “12” como pines de recepción y transmisión.

Control del Puerto Arduino por Bluetooth.Se han conectado tres LED's conectados a los pines 2, 3 y 4 del puerto Arduino y el desafío es encender/apagar estos LED's mediante comandos enviados por Bluetooth.Se han rotulado los botones M1, M2 y M3 como Led_1, Led_2 y Led_3 que serán los encargados de enviar los comandos a la placa Arduino para encender o apagar los LED's.

Los comandos son solamente los caracteres “1”, “2” y “3”. Cuando son recibidos y decodificados cambian de estado el pin que tienen asignados en el programa.El código completo es el siguiente.

/****************************************************************** Descripción : Control de tres led's conectados en los pines** 2, 3 y 4 mediante HC-05 Bluetooth ** Target : Arduino UNO** ToolChain : Arduino IDE 1.8.5** www.firtec.com.ar*****************************************************************/#include <SoftwareSerial.h>SoftwareSerial mySerial(11, 12); // RX, TXchar buffer[20];#define ledPin1 2 // Pines para los diodos led's#define ledPin2 3#define ledPin3 4void setup(){ pinMode(ledPin1, OUTPUT); // Pines como salida pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); digitalWrite(ledPin1, LOW); // Pines inician a nivel bajo digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); mySerial.begin(9600); // Puerto para conectar con HC-05 }

Page 29: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Serial.begin(9600);// Puerto UART nativo bluetooth.begin(9600);// Comunicación para el Bluetooth}void loop(){ if(bluetooth.available()> 0 ){ // Recibe los comandos Bluetooth int servopos = bluetooth.read(); Serial.println(servopos); // Muestra los comandos en consola myservo.write(servopos); // Mueve el motor con el comando }}

/************** Fin de Programa FIRTEC ARGENTINA ***************/

Manejo de un teclado matricial.Un teclado matricial es un dispositivo que agrupa varios botones y permite controlarlos mediante una matriz usando menos conductores que conectando botón por botón.

El teclado se organiza en filas y columnas que forman esta matriz, una de las desventajas de usar unteclado matricial es que pueden causar problemas cuando se pulsa más de una tecla en el mismo momento. El uso de estos teclados es muy común, computadoras, teléfonos, alarmas, etc. Existen incluido circuitos integrados diseñados específicamente apara el manejo de estos teclados.En la imagen siguiente e puede ver la matriz de un teclado de cuatro filas por tres columnas (12 teclas) como el usado en el ejemplo propuesto.

Se puede ver que el teclado está compuesto por 12 interruptores interconectados de tal forma que componen la matriz de filas y columnas.

Page 30: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Estos tag son de uso común para el acceso a edificios, cocheras, expendedoras de bebidas, y mil aplicaciones mas.Como receptor usaremos el una placa de Adafruit con el chip PN532. La ventaja de este chip es que no solo puede leer tag pasivos, también puede escribir los tag que admiten escritura.Para usar esta placa necesitamos descargar la librería de Adafruit para PN532.

Esta placa es muy versátil y con un costo muy razonable, puede funcionar de varias maneras, SPI, I2C, RS-232, el alcance de su receptor es bastante bueno lo que permite esconderla en una caja plástica para usarla en una aplicación real.Tiene dos puentes que se deben configurar para indicar si la conectamos por SPI o I2C, en el ejemplo funciona mediante I2. (No verificamos su funcionamiento por SPI).Solo son necesarias cinco conexiones a la placa Arduino, dos de alimentación (5V), SDA (A4), SCL(A5) y el pin IRQ que hemos conectado al pin 2.

#include <Wire.h> // Biblioteca para el I2C#include <Adafruit_PN532.h> // Librería de Adafruit#define PN532_IRQ (2)#define PN532_RESET (3) // No se conecta (no existe en la placa)

Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);

Page 31: Índice de contenidofirteconline.com.ar/Arduino/Uno/Demo_Arduino.pdf · Funcionamiento práctico de un Transistor.....32 Repaso de configuraciones para transistores ... Programando

Podemos ver en la siguiente imagen una captura de un tag de cuatro bytes, típico para control de acceso a edificios y control general de personas.

Control de acceso para una puerta.El proyecto tiene un lector RFID PN532, un beeper, un LED rojo y un LED verde.Se ha grabado un TAG de identificación y si ese TAG es presentado en el receptor, el sistema emite un pitido, apaga el LED rojo y enciende el LED verde durante un segundo cambiando el cartel en pantalla a “Habilitado”.Si el TAG no corresponde con el grabado el sistema emite una serie de pitidos y el LED rojo permanece encendido y en pantalla se muestra “Cerrado”.

/****************************************************************** Descripción : Lee los TAG presentados al sensor y según ** el o los TAG's habilitados permite la ** apertura de un pestillo eléctrico para puerta.** La pantalla LCD usada es 20*4. ** Target : Arduino UNO** ToolChain : Arduino IDE 1.8.5** www.firtec.com.ar*****************************************************************/#include <Wire.h>#include <Adafruit_PN532.h> // Biblioteca para PN532#include <LiquidCrystal.h> // Biblioteca para el LCDLiquidCrystal lcd(8,9,4,5,6,7);

#define PN532_IRQ (2)#define PN532_RESET (13) // No conectar (no existe en la placa)#define led_verde 10 // Conexión del led verde#define beeper 3 // Conexión del beeper#define led_rojo 11 // Conexión del led rojo

//-------------- ID del TAG habilitado------------uint8_t ID_1[] = {0xA6, 0x61, 0xA8, 0x5D, 0, 0, 0};