Electronica basica jason

Page 1

ELECTRONICA BASICA

MANUAL DE ELECTRONES EN ACCION: ELECTRONICA Y ARDUINOS PARA TUS PROPIOSS INVENTOS NOMBRE: JEYSON HUERA NIVEL: PRIMERO SISTEMAS DOCEMTE: ING. LUCIA SANDOVAL


INTRODUCCION / BIENBENIDA Vamos a presentarles el MOOC Electrones en acción, Electrónica básica y Arduino para tus propios inventos. A través de este curso queremos llevar la electrónica más allá de conocimientos básicos la función es ampliar esos conceptos que nosotros tenemos obviamente no nos aran unos expertos en electrónica pero si tendremos fundamentos de base para poder desarrollarlo proyectos teóricos como prácticos, mediante este MOOC vamos aprender lo siguiente. -Los componentes fundamentales de todo proyecto electrónico. -Los conceptos básicos de la electrónica analógica y digital. -A utilizar y programar la plataforma Arduino. -A entender y diseñar circuitos básicos para tus proyectos que puedes conectar al Arduino, y aplicar e integrar todos estos conceptos en el diseño de un proyecto electrónico medianamente complejo.


PRIMERA SEMANA El encuentro entre dos mundos: físicos y electrónicos MOTIVACION La motivación viene atreves del gusto de cada persona para mi punto de vista fue la motivación en la Uiversidad Uniandes Ibarra con la coordinación de la Ing. Lucia Sandoval y el curso de Robotica el cual esta conformado por alumnos de un nivel mas alto de conocimiento el cual mediante proyectos realizaron practicas desde hay surge el interés lo que mas me llamo la atención que no se conforman con lo que se a obtenido de logros atraves de sacrificios y desde allí viene la emoción de querer aprender sobre la electrónica obviamente el curso no me va a hacer un experto, no es un curso profundo de electrónica, no pretende serlo, nunca ha pretendido serlo. Estudiar electrónica requiere mucho tiempo y requiere un conjunto de disciplinas que hay que ir aprendiendo a lo largo del tiempo. En este curso vamos a dar una pequeña, primera pincelada a la electrónica tratando de ver cómo aplicarla en su forma más sencilla a proyectos electromecánicos que podamos tener y todo esto amparado por ejemplos. La idea es ver ejemplos de sensores, ejemplos de diferentes tipos de motores y formas de actuar sobre el mundo físico. El cual tenemos un proyecto muy satisfactorio si logramos cumplirlo el cual es armar un robot con

el objetivo en que nosotros podamos aplicar electrónica muy

sencilla en nuestros proyectos


DEL MUNDO FISICO AL ELECTRICO

Es un aprendizaje muy versátil que nos permite hacer un montón de cosas. Por ejemplo, podemos adquirir señales; podemos tomar señales del mundo físico y llevarlas al mundo electrónico, podemos procesar información. Nos permite, por supuesto, trabajar sobre esas señales que hemos adquirido. Y luego esas señales nos dejan realizar acciones sobre el mundo físico. Es un lazo que parte desde la adquisición, luego sigue con el procesamiento y continúa con la realización de acciones a través de señales.

Partes que componen un sistema electrónico.

Los sensores: Son los que nos permiten capturar señales del mundo físico; el procesador nos permite procesar estas señales y los actuadores son los que permiten actuar sobre el mundo físico. Sensores y transductores: Son los que nos permiten adquirir señales, y funcionan para diferentes variables. Ejemplos: temperatura, presión, sonido, luz, distancia, contacto, señales eléctricas, gas, partículas, etcétera.

aceleración,

ángulo,

Existen muchos tipos de sensores que nos permiten capturar señales desde el mundo físico. Luego tenemos el procesador que permite procesar información, tal como su nombre dice. Hay tipos, analógicos, digitales:


Dentro de los digitales, están programables o no programables, están los procesadores embebidos, que son parte de un sistema electrónico más complicado, que puede incluir sensores y actuadores. Existen procesadores de propósito general y, en general, estos procesadores nos permiten diversos niveles de prestaciones Actuadores y transductores: Nos permiten realizar acciones. Tipos de actuadores y transductores: -Sonido, por ejemplo, un parlante, que permite escuchar música o audios de videos. -Transductores de luz: por ejemplo, encender una luz que me indique algo, o pueden ser también una pantalla donde yo puedo mirar algo. -Actuadores de movimiento: por ejemplo, un motor que nos permite realizar acciones físicas. -Transductores de calor, por ejemplo, una estufa o una resistencia eléctrica.

QUE ES LA ELECTRICIDAD

La electricidad es una forma de energía que es fácil de generar, podemos generarla de diferentes maneras, por ejemplo, a través de un generador eléctrico, podemos generarla a través de una celda fotovoltaica. También lo podemos ver en torres de alta tensión que nos permiten recibir en un lugar remoto, energía eléctrica generada en otra región del país. Y lo otro es que es fácil de conducir en pequeñas cantidades y a gran velocidad y precisión. Además puede ser utilizada en muchas aplicaciones. Esto es ideal para aplicaciones de potencia, donde queremos hacer actuar un motor, por ejemplo, un calefactor o un parlante de muy alta potencia. Pero también es ideal para manejar señales e información: Hay dos tipos 1 Tipo realiza acciones 2 Tipo procesa información

¿De qué está hecha la electricidad?


Es el flujo de carga eléctrica a través de un material. La carga eléctrica es transportada por electrones y estos forman parte de todos los átomos, neutros nos permiten transportar electricidad. Los electrones, por convención, tienen carga eléctrica negativa y se mueven en respuesta a un campo eléctrico. La electricidad como flujo de carga eléctrica es el movimiento promedio de todos estos Típicamente la electricidad se produce por el movimiento de cargas negativas. La electricidad transportada por una corriente eléctrica va en la otra dirección. Entonces hablamos de que la corriente va en la dirección contraria al movimiento de los electrones. Por ende podríamos pensar que la electricidad es transportada por cargas positivas. Pero en la gran mayoría de los conductores, la electricidad es transportada por cargas negativas. ¿Qué es la electricidad? La electricidad es una forma de energía. Y además es el movimiento de cargas eléctricas a través de un circuito. Típicamente las variables físicas son traducidas a voltajes o corrientes en un circuito. Vamos a hablar siempre de voltajes o corrientes, hay un asunto de dualidad en esos términos. Qué es un circuito Es un conjunto de elementos conectados entre si por los que puede circular una corriente eléctrica. Recorrido cerrado y generalmente fijado con anterioridad que vuelve al punto de partida PREFIJOS

Giga, mega, kilo que son los más usados, para multiplicar un número por un factor. En estos casos son potencias de 10, 10 a la tres, 10 a la seis, 10 a la nueve. Entonces cada vez que hablemos de kilo, es 10 a la tres. De la misma forma que un kilogramo son 1.000 gramos, un kilovoltio, son 1.000 voltios, y un kiloamperio, son 1.000 amperios. Múltiplos mili, micro, nano, pico, femto, atto y hay más, pero esos son los que más usamos, y se relaciona con potencias de 10


INTRODUCCION A LAS SEÑALES ELECTRICAS Las señales eléctricas llevan información también llamados señales análogas pueden tener cualquier lectura dentro del rango y solo están limitadas por las características de los instrumentos e indicadores. En general las señales típicamente son de voltaje y no de corriente, varían en el tiempo. Las señales eléctricas no solamente nos permiten procesar información sino que además realizan acciones y pueden procesarse de dos maneras: haciéndolas pasar por artilugios semiconductores (del tipo de transistores) o convirtiéndolas en un haz de electrones, como en el caso de la formación de imagen en un televisor (que emplea también semiconductores).

HAY DOS TIPOS DE SEÑAL ELÉCTRICA SEÑAL ANALOGICA Las señales analógicas varían continuamente, en cuanto a voltaje o corriente, de acuerdo con las variaciones de la fuente de información primaria SEÑAL DIGITAL Forman códigos binarios que representan los números, letras y símbolos, que componen los datos informativos de entrada y las distintas instrucciones del programa. En el procesador central del ordenador, los códigos de datos se someten a procesos de aritmética binaria o se comparan entre sí para obtener los resultados exigidos por el programa. SEÑALES VARIAVLES


Las señales varían y tienen frecuencia y tienen período. Entonces las señales variables pueden ser descompuestas en una suma de señales fundamentales de diferentes frecuencias. PORTADORES Y VOLTAJES En un circuito eléctrico el voltaje 0 también es arbitrario. Y nosotros definimos el voltaje 0 donde más nos convenga y ese voltaje 0 le llamamos tierra. El voltaje entonces también se le llama tensión. A mayor voltaje en un punto, mayor energía tienen los portadores de carga en ese punto. Los portadores de carga con mayor energía pueden realizar más trabajo útil Cuando hay corriente los portadores van cambiando su nivel de energía, cambian de voltaje, es decir, cuando van circulando por un circuito con corriente pierden energía. De la misma forma. COMO FLUYE LA CORRIENTE La corriente fluye a través de conductores eléctricos, dispositivos electrónicos, motores, luces y objetos en general. DESCOMPISISION EN FRECUENCIAS DE SEÑALES En sus frecuencias fundamentales resulta sumamente útil para el análisis. Vemos que hay diferentes señales con diferentes frecuencias que están superpuestas. Hay señales que van lentamente entonces tiene una frecuencia pequeña, en cambio hay otras señales que van mucho más rápido y tiene una frecuencia alta. Y si sumamos todas esas señales nos da esta otra señal que tiene contenido de frecuencia llamada sinusoidal que podemos considerar como una función fundamental.


CUESTIONARIO: ACERCA DE LA ELECTRICIDAD

1. Selecciona las opciones correctas para terminar la frase: "La electricidad nos permite." (Puede haber más de una correcta)  Adquirir señales del mundo físico  Procesar información  Realizar acciones físicas 2. La corriente en un conductor eléctrico:  Es medida de manera absoluta, sin necesidad de una referencia arbitraria. Se mide en Volts. Es análoga a la altura de un estanque en un circuito hidráulico 3. El voltaje en un punto de un circuito:  Tiene que ver con la energía de los portadores de carga en ese punto del circuito. Se mide de manera absoluta en cualquier nodo del circuito. Es análogo al caudal de un circuito hidráulico. 4. ¿Qué es la electricidad? Puede haber más de una opción correcta.  Es una forma de energía. Es el resultado del desplazamiento de átomos en un conductor.  Es el flujo de portadores de carga a través de un material conductor.


ELECTRICIDAD Y SEÑALES ELECTRICAS ENERGIA Y POTENCIA

La energía en el circuito es una propiedad física que podemos medir, es cuantificable y que describe el estado de un sistema, o de un objeto, o de un circuito En un sistema eléctrico, mecánico, químico, nuclear, etcétera. Podremos observar energía con buenas vibras, la energía se puede medir y la energía es medible todo el tiempo. Existen diferentes formas de medir energía. La típica unidad que usamos es el joule. Pero hay otras formas. La energía puede ser transformada en otros tipos de energía y puede producir trabajo útil. PORTADORES EN CARGA DE ENERGIA

Tienes diferente nivel de energía; cuando un portador de carga circula por un circuito puede ganar o perder energía. Los portadores de carga tienen diferente nivel de energía. Cuando un portador de carga circula por un circuito puede ganar o perder energía. Entonces digamos una carga positiva que está circulando a través de este circuito. Cada vez que la carga pasa por esta ampolleta, pierde energía. No es que la pierda realmente, la carga está perdiendo energía, pero esa energía no es que se pierda en el mundo sino que se convierte en calor y, eventualmente, en luz. ALMACENAMIENTO DE ENERGIA


La energia electrica puede ser almacenada en baterias entre otros medios. La capacidad de una bateria se mide en mah y se comportan como fuente de voltaje y en las bateria hay diversas opciones como : alcalinas (-1.5v por celda) recargables de nim,nicd (-1.2 por celda) plomo-acido o get (tipicamente en 6v o 12v) Nunca conecten baterías en serie que tengan capacidades diferentes porque unas se van a descargar primero que otras y pueden provocar problemas. Nunca conecten en paralelo baterías que tengan voltajes diferentes porque van a provocar un cortocircuito LA POTENCIA Es la velocidad a la cual la energía va cambiando ya sea convirtiéndose desde un sistema a otro, transformándose entre diferentes formas de energía siendo consumida o generada.

¿TIENEN EJEMPLOS DE POTENCIA EN ALGÚN SISTEMA EN PARTICULAR? El motor del auto puede desarrollar una cierta potencia, por ejemplo 100 hp. Hp es una medida de potencia la medida que usamos en electricidad es el watt


ES POSIBLE CALCULAR LA POTENCIA DE UN COMPONENTE Es posible calcular la potencia de un componente de un circuito electrónico como el producto entre voltaje y corriente, es lo más general. La corriente en un componente por el voltaje en sus terminales, el producto entre ambos me da la potencia que está siendo consumida o entregada por ese componente y la energía es la acumulación de esa potencia en el tiempo. Entonces, la energía es la integral, en el tiempo, de una potencia. Por ejemplo, la potencia que acabamos de calcular como voltaje multiplicado por corriente.

ALIMENTACION Y SEÑALES DE UN CIRCUITO La fuente de alimentación suele ser una fuente de voltaje DC, aunque muchas veces es AC. ¿Tienen ejemplos de fuentes de voltajes AC? El ejemplo más típico de una fuente de voltaje AC es el enchufe. LOS CIRCUITOS REQUIEREN FUENTE DE ALIMENTACION La alimentación generalmente proviene de una fuente de alimentación también conocida como fuente de potencia o fuente de poder. La fuente de alimentación suele ser una fuente de voltaje: Puede ser voltaje AC y también puede ser DC SEÑALES ANALOGICAS Y POTENCIA Son las salidas de sensores analógicos, ejemplo: el de temperatura Pueden adoptar valores arbitrarios, generalmente entre los rieles correspondientes Su valor suele ser proporcional a algunas variables e igual pueden también llevar desnivel u offset Las señales analógicas pueden adoptar valores arbitrarios generalmente entre los rieles correspondientes. Por lo tanto, si es que estoy alimentando un sensor analógico con cinco Volts, por ejemplo, un sensor de presión, la salida va a ir entre cero y cinco Volts y va a tener relación con la presión que estoy midiendo. Señales de potencia que típicamente corresponden a salidas de amplificadores de potencia que alimentan parlantes, motores, ampolletas, antenas o circuitos que generalmente producen potencia o irradian potencia. Pueden adoptar valores discretos o continuos y suelen estar circunscritas a los rieles.


MEDICIONES DE SEÑALES: MULTIMETRO Y OSCILOSCOPIO MULTIMETRO Un multímetro, también denominado polímetro o tester, es un instrumento eléctrico portátil para medir directamente magnitudes eléctricas activas, como corrientes y potenciales (tensiones), o pasivas, como resistencias, capacidades y otras. Las medidas pueden realizarse para corriente continua o alterna y en varios márgenes de medida cada una. Los hay analógicos y posteriormente se han introducido los digitales cuya función es la misma, con alguna variante añadida.

Cuando uno conecta el multímetro para medir corriente con los terminales adecuados, el multímetro ofrece una pequeña resistencia al paso de la corriente por lo tanto la corriente circula por ahí sin perder mucho voltaje, no hay una caída de voltaje entonces los portadores de carga que vienen por aquí no pierden voltaje, no pierden mucha energía ni pierden mucho voltaje al circular a través del multímetro.

OSCILOSCOPIO El osciloscopio es un instrumento que nos permite visualizar señales, permite graficar una o más señales de voltaje en el tiempo, entonces el osciloscopio produce gráficos de voltaje versus tiempo. Existen osciloscopios digitales y existen osciloscopios analógicos VISUALIZACIONES DE SEÑALES Un osciloscopio permite graficar una o mas señales de voltaje en el tiempo Existen osciloscopios digitales y analógicos Existen osciloscopios sin pantalla (en el computador) La entrada de audio de un PC puede funcionar como osciloscopio pero solo para señales AC El osciloscopio es un instrumento que nos permite visualizar señales, permite graficar una o más señales de voltaje en el tiempo, entonces el osciloscopio produce gráficos de voltaje versus tiempo. Existen osciloscopios digitales y existen osciloscopios analógicos. En casos en un osciloscopio analógico. Existen osciloscopios que no tienen pantalla que uno puede conectarlos con usb a un computador y luego ver la salida o los gráficos en el computador. Y hay algo bien interesante, la entrada de audio de un computador puede funcionar como un osciloscopio.


CUESTIONARIO 1. La potencia es la tasa o velocidad de cambio (transferencia, transformación, consumo) de la energía. Selecciona si es verdadero o falso.  Verdadero Falso 2. Una batería almacena: Potencia Corriente. Voltaje.  Energía 3. ¿Cuál de las siguientes afirmaciones es falsa? No es recomendable conectar baterías de diferente capacidad en serie No es recomendable conectar baterías de diferente voltaje en paralelo  Las baterías en serie aumentan su capacidad, manteniendo el voltaje. 4. ¿Cuál de las siguientes afirmaciones es falsa?  Una fuente de voltaje certificada para 9V y 300mA no puede alimentar un circuito que requiere 9V y 100mA. Un LM7805 es capaz de producir un voltaje de 5V DC a partir de un voltaje de entrada de 9V DC. Típicamente los multímetros sirven para medir voltaje AC o DC, corriente AC o DC, y resistencia eléctrica 5. ¿Cuál de las siguientes preguntas es falsa?  Para medir voltajes, un multímetro debe ser conectado en serie con el voltaje que se quiere medir. Para medir corrientes, un multímetro ofrece una pequeña resistencia al paso de la corriente. Existen programas computacionales que permiten utilizar la entrada de la tarjeta de sonido de un computador como un osciloscopio precario. 6. ¿Cuántas horas demora en cargar una batería de 12V y 500mAh de capacidad, mediante un cargador que entrega 50mAh? Exprese su respuesta como el número de horas (por ejemplo, si demora 7 horas debe ingresar solamente el número 7). RESPUESTA 10 7. . ¿Aproximadamente cuántas horas dura una batería de 1Ah alimentando una carga que consume 100mA? RESPUESTA 10


SEÑALES Y LOGICA DIGITAL REPRESEETACIONES DIGITALES DE SEÑALES E INFORMACION Señales y lógica digital tiene dos clases Representacion digitalde señales e infromacion Los circuitos digitales son circuitos que procesan y almacenan información digital, o binaria. Permiten un gran nivel de integración, lo cual es sinónimo de hablar de muchas funciones en muy poco espacio físico. Y algunos de estos circuitos digitales son programables. En general, pueden interactuar con el mundo a través de circuitos conversores de datos, ¿Qué es la información digital? La información digital o la información binaria, está basada en bits. El bit es la unidad de información digital o binaria más pequeña. Un bit puede representar uno de dos estados, verdadero o falso, que llamamos uno lógico, o cero lógico. Entonces, un bit puede ser un uno, que significa verdadero, o un cero que significa falso. Un bit de información puede codificar información de diferente naturaleza. Por ejemplo, un bit de información puede significar si un circuito está encendido o apagado, o puede significar si aprobé o si reprobé un curso También puede ser si un pixel de una pantalla está encendido en blanco o está apagado en negro. Pero un bit puede representar solamente eso, encendido o apagado. Un bit puede ser representado por cualquier sistema o mecanismo que tenga solo dos estados posibles, por ejemplo luz verde o luz roja. ¿cómo representamos bits usando electrónica? En electrónica los bits son codificados en niveles de voltaje. Por ejemplo, si los rieles de alimentación de un circuito son cinco voltios y tierra, cinco voltios pueden significar un uno lógico, mientras que cero voltios pueden significar un cero lógico. Los bits pueden ser agrupados en palabras, por ejemplo una palabra de ocho bits se llama byte. Entonces, un byte equivale a ocho bits. La palabras digitales pueden representar números, letras, niveles de voltaje, instrucciones en un procesador, etc. Los bits son fáciles de procesar con circuitos digitales, y los bits son fáciles de transmitir porque son insensibles al ruido Existen diagramas de tiempo o temporización, que nos permiten representar las sincronizaciones entre diferentes señales de un circuito. Y esto está medido en ciclos. base y números binarios. Los terrícolas, generalmente, usan la base 10 para representar números y eso tiene que ver con que tenemos 10 dedos entre las dos manos. No todo el mundo lo usa, algunas tribus antiguas usaban base cinco, los mayas usaban base 20. La base 10 no es muy cómoda para representar señales en electrónica porque podemos representar algo que varía entre cero y cinco Volts, pero representar 10 voltajes entre cero y cinco no es tan fácil porque el ruido nos puede afectar. ¿Qué significa que algo sea a base 10?


Cada número es representado por varios dígitos, desde el dígito menos significativo, que está a la derecha, le llamamos LSB por least significant bit o bit menos significativo hasta el más significativo a la izquierda, que es el most significant bit o bit más significativo. Diferentes dígitos tienen pesos correspondientes a diferentes potencias de 10, en el caso de base 10. INFORMACION DIGITAL O BINARIA-EL BIT Un bit es la unidad de información digital mas pequeña puede representar uno de los estados verdadero o falso que llamamos 1 o 0 logico Un bit de información puede codificar información de diferente naturaleza: Encedido o apagado Aprobé o reprobé el curso Puede serrepresentado por cual quier sistemao mecanismo que tenga solo dos estados posibles

BITS 8 bits (8b) hace 1 byte 1024 bytes corresponde a 1kB 1024MB corresponde a 1MB

FUNDAMENTOS DE LA LÓGICA Y EL PROCESAMIENTO DIGITAL La lógica booleana en honor al matemático George Boole, establece la operatoria entre bits. Los bits son procesados y almacenados mediante compuertas lógicas, que son circuitos electrónicos muy sencillos. Un computador puede tener miles de millones de compuertas lógicas. Entonces la unidad circuital es la compuerta lógica que opera sobre bits. Tres compuertas lógicas fundamentales. La compuerta NOT La compuerta AND, que generalmente la expresamos con un signo por La compuerta OR. Y todas las demás compuertas que existen se hacen en base a estas tres compuertas lógicas. Un circuito digital es, en efecto, una interconexión entre compuertas lógicas. La operatoria entre bits puede ser expresada por tablas de verdad. Estas tablas indican la relación entre entradas y salidas de un circuito lógico.


La compuerta OR, lo que hace es decir un uno a la salida si A es uno o si B es uno. Basta con que uno de los dos sea un uno para que la salida sea un uno. Entonces la tabla de verdad es Cuando la entrada A es cero y la entrada B es cero, la salida es cero. Cualquier otro caso la salida es un uno. Hay una serie de reglas en el álgebra de Boole que están detalladas en estas tablas. Es importante tener en cuenta que existen reglas. El álgebra de Boole está bien establecida. Tiene reglas muy bien establecidas. Algunas obvias, por ejemplo si negamos dos veces, volvemos al bit original. CIRCUITOS DE BITS Existen circuitos que procesan bits Existen circuitos que guardan bits. Existe otra clase de circuitos, que son los que almacenan bits. Y se llaman circuitos secuenciales. Sus salidas dependen de sus entradas pero también dependen de las salidas anteriores. Entonces dependen de lo que hay en la entrada pero también depende de lo que está guardado en alguna memoria. Entonces son como una especie de memoria. Registros digitales Un registro es un circuito que puede almacenar información digital. Puede almacenar un bit. Para almacenar un byte necesitamos ocho registros de un bit. Y en general, los registros pueden ser leídos y pueden ser escritos. Cuando se escribe un registro, se esta grabando un bit en la memoria mientras que cuando se lee un registro, se esta recuperando un bit de la memoria. Los registros volátiles pierden la memoria al ser des energizados. Esto se basa a que si yo saco la batería de un circuito que tiene registros volátiles esa memoria se pierde.

CUESTIONARIO 1. ¿Cuál de las siguientes afirmaciones es falsa?  Un byte corresponde a una palabra digital de 16 bits. Existen circuitos digitales no programables. Un bit es la unidad de información digital más pequeña. 2. ¿Cuántos estados distintos es posible representar mediante una palabra de 4 bits? 16 3. ¿Cuántos bytes son necesarios para almacenar una imagen de un mega pixel (un millón de pixeles), codificando tres colores por pixel, cada uno a 8 bits, y sin compresión? 36000 4. ¿Cuál es la representación decimal del número binario 10101? 21 5. ¿Cuál es la representación de 25 (decimal) en binario?


011001 6. ¿Cuántas filas tendrá la tabla de verdad de una compuerta lógica de 3 entradas? 8 7. ¿Cuál de las siguientes afirmaciones es falsa? Un circuito secuencial puede almacenar información digital.

Un sumador digital puede ser implementado mediante circuitos combi nacionales  Los circuitos digitales son muy sensibles al ruido electrónico.

UN PORTAL ENTRE DOS MUNDOS: ANALOGICO Y DIGITAL CONVERSION A/D Y D/A El mundo es analógico pero el procesamiento es principalmente digital Existen circuitos llamados de forma genérica conversores de datos que permiten comunicar ambos mundos El mundo digital. Y la idea es procesar las señales físicas en el mundo digital. Y para ello necesitamos circuitos que se llaman de manera genérica conversores de datos, que nos permiten comunicar ambos mundos. Entonces, existen los conversores análogos digitales, o a veces que convierten datos analógicos al mundo digital. Y existen los conversores digital análogo o DAC's, que convierten datos digitales al mundo analógico. A veces los conversores análogos digitales, o a veces cumplen dos funciones que generalmente se consideran como parte de lo mismo. Muestrear la señal y cuantizar la señal, son dos funciones diferentes, pero generalmente están implementadas en un mismo circuito. ADC Los conversores analogicos-digitales (ADC) cumplen dos funciones: -Muestrean la señal a tasa de muestreo f es mapear el tiempo uniformemente en periodos t sub s, donde t sub s, es uno partido por f sub s, siendo f sub s la frecuencia de muestreo. -Cuantizan la señal a una resolución de B bits donde B es generalmente un entero. La entrada es analogía y la salida es digital

Los ADCs pueden muestrear millones de veces por segundo y cuantizar tipicamenten entre 8 y 24 bits


El ADC es simplemente un chip, que toma señales analógicas y las convierte a digitales. ARDUINO Los arduinos tienen conversores análogo digitales. Entonces, no necesitamos usar un conversor análogo digital externo, el arduino mismo ya trae incorporado conversores análogos digitales en el mismo chip.

COMPARADOR. El comparador es un conversor análogo digital de un solo bits. Compara dos voltajes analógicos. Compara un voltaje que viene por aquí, y otro voltaje que viene en otra parte. Comparador más típico que uno puede conseguir en el comercio es el LM311 que es un chip de ocho patas, FUNCIONA COMO COMPARADOR DE VOLTAJE

DACs Los DACs o conversores digital análogo cumplen dos funciones. Convierten el valor digital a un valor analógico de acuerdo a una referencia. Es mantener la salida analógica hasta que se reciba una nueva entrada digital, que eso es justo lo contrario a muestrear. Es una forma de muestreo también. La entrada es digital, mientras que la salida es analógica. Y vemos que el símbolo del DAC es prácticamente igual al simbolo del ADC, solo que la entrada es digital y la salida es analógica. Los DACs pueden funcionar nuevamente igual que los ADC, a tasas de millones de veces por segundo, y a resoluciones entre ocho y 24 bits.

ACONDICIONAMIENTO FILTRADO

DE

SEÑALES:

AMPLIFICACION

Y

¿Cómo muestreamos señales que son muy débiles, muy pequeñas? Diferencias de presión, que nos producen pequeñas variaciones de voltaje en un transductor. A veces queremos muestrear señales que son muy pequeñas, que tienen milésimas de volts, o incluso menos. En ese caso es necesario amplificarlas antes de conectarlas a la ADC. . Un amplificador de señales lo que logra es que una señal pequeña en amplitud pase a ser más grande en amplitud. Lo que hace es simplemente multiplicar el voltaje por alguna ganancia. Los amplificadores electrónicos en general son circuitos que aumentan la amplitud de una señal. Se caracterizan por una ganancia de señal A sub v y toman la energía de los rieles de alimentación, pueden amplificar diferencias de voltaje

AMPLIFICADORES ELECTRONICOS Aumentan la amplitud de la señal Se caracteriza por una ganacia de voltaje A Toman energia de los rieles de alimentacion


Pueden amplificar voltaje o diferencia de voltajes TEOREMA DE Nyquist Si yo muestreo a una frecuencia de muestreo menor que 2 veces la frecuencia máxima de la señal, entonces pierdo información cuando estoy muestreando. Por lo tanto, si queremos muestrear sin perder información, tienen que muestrear a una frecuencia F sub s ajustada de manera que sea al menos 2 veces la frecuencia máxima de la señal. ACONDICIONAMIENTO DE SEÑALES Cosiste en amplificar y filtrar las señales antes de convertirlas al dominio digital

Entonces todo lo que tiene que ver con filtrar y amplificar las señales antes de pasarlas por una ADC se llama acondicionamiento de señales.

CUESTIONARIO 1. ¿Cuál de las siguientes acciones no es realizada comúnmente por un ADC? Muestrear una señal analógica. Cuantizar una señal analógica.  Entregar como salida una señal analógica. 2. Un DAC de 8 bits puede entregar voltajes entre 0V y 5V. ¿Qué valor tienen los intervalos mínimos de voltaje (LSB), expresado en mV? 2^8/5000 5/2^8 2^8/5  5000/2^8

3. En relación a los conversores de datos, ¿cuál de las siguientes afirmaciones es falsa? Permiten comunicar el mundo físico, analógico, con el mundo electrónico digital.  Un comparador de voltaje es un DAC de un solo bit. La resolución de un ADC se mide en bits.


SEGUNDA SEMANA PRIMEROS PASOS CON ARDUINO MICROPROCESADORES Y LA PLATAFORMA ARDUINO ¿Y qué es un microprocesador? Es un dispositivo integrado que contiene algunas unidades de procesamiento digital, tiene registros, y tiene entradas y salidas. Entonces esto nos permite hacer una máquina secuencial. Y las entradas y salidas nos permiten comunicarnos con el exterior, que es el mundo real. Y normalmente, lo que a nosotros nos interesa, son programables ¿Cómo uso un microcontrolador? EL términos de hardware, yo necesito varias cosas. Por ejemplo, en esta placa acá tengo un microcontrolador y para poder usar ese microcontrolador necesito, por ejemplo, un oscilador. Ese oscilador tiene que conectarse con condensadores. Necesito un circuito para poder programarlo. Y ese circuito generalmente requiere algunas resistencias conectadas a la alimentación. Y por supuesto, también necesito alimentación, que eso está aquí regulada con reguladores de voltaje. Entonces en general, se requiere un cierto circuito para poder usar un microcontrolador lo que muchas veces no es muy sencillo si es que uno no tiene experiencia armando circuitos. En cuanto a software, también se requieren varias cosas porque uno hace un programa, normalmente en C, y después requiere algún tipo de compilador que usando headers y bibliotecas me genera un programa. Posteriormente yo necesito algo, que no vamos a entrar en mucho detalle, pero que usa más bibliotecas. Que en realidad tiene mucha información del procesador en sí. Y junta varios archivos, incluyendo mi código compilado para finalmente tener un programa que está listo para cargar. Y una vez que el programa está listo para cargar, yo además necesito un dispositivo programador que dependiendo del procesador que use puede no ser muy fácil encontrarlo, o puede ser un poco caro. Entonces, en general se requieren algunos conocimientos avanzados. Se requiere bastante software. Se requiere un programador y eso muchas veces puede ser un poco prohibitivo para alguien que no tiene la experiencia de trabajar con microcontroladores. PLATAFORMA EN ARDUINO Arduino es una plataforma de código abierto que está basada en hardware y software fácil de usar. Es una combinación de toda la plataforma que en conjunto, permite hacer todo el proceso que se llama el toolchain. Meda todas las herramientas que necesito para escribir un código con el software, cargarlo con un simple cable USB y tengo todo el hardware necesario en esto, que es una tarjeta de desarrollo. Hay una gran variedad de tarjetas de desarrollo y tienen todas diferentes funcionalidades y accesorios


PRIMEROS PASOS: SOFTWARE Es básicamente un editor de texto donde nosotros hacemos un programa que está escrito en lenguaje C. Aunque por la cantidad de funciones que se usan en Arduino, y esa es una de las ventajas que tiene, normalmente uno no tiene que preocuparse de todo lo que se preocuparía si programara en lenguaje C. Además hay una consola que nos muestra alguna información relevante como por ejemplo, el estado de la memoria y algunos errores que se puedan generar. Hay dos tipos de botones que se usan para verificar el programa, y para compilar y cargar el programa al microcontrolador. La plataforma de Arduino se le llama Sketch. Entonces veamos un poco la sintaxis. Es decir, no importa lo que yo ponga acá, el código no se va a ver afectado de ninguna manera. Lo mismo, las líneas que están después de un doble slash. ¿Cuál es la diferencia? Que el doble slash solo comenta la línea correspondiente mientras que slash asterisco comenta todo lo que esté encerrado entre este símbolo y este símbolo. Los dos son equivalente en cuanto a su utilidad. SETUP Y LOOP COMO FUNCIONA Secciones de códigos que son lo fundamental en el lenguaje Arduino. Setup se ejecuta primero. Cuando uno parte el programa lo primero que se ejecuta es el setup. Y después tenemos esta función loop que se repite infinitamente. Entonces, como su nombre lo dice, setup se usa para configuraciones iniciales. Se ejecuta una sola vez. Y después viene este loop que se ejecuta una vez, llega hasta el final y vuelve a empezar.

FUNCIONES Las funciones que necesitamos aprender para entender el siguiente código tenemos pin mode, que cambia el número pin, que yo lo entrego. Después está la función digital write, que cambia una salida digital, o sea necesito haber hecho esta función output para establecer un puerto como salida. Y luego uso la función digital write para cambiar ese mismo pin.

PRIMEROS PASOS: HARDWARE Para aprender sobre el hardware vamos a usar esta placa que es un microcontrolador Atmega que no son microcontroladores que funcionen solo con Arduinos. Uno puede usarlo de forma independiente. Pero, en general, las tarjetas de desarrollador Arduinos usan estos procesadores, que tienen bastantes buenas funcionalidades. Además, tenemos aquí un puerto para conectar alimentación que pasa por reguladores de voltaje. Y estos reguladores de voltaje permiten generan cinco volt y 3,3 volt. Cinco volt son los que se


usan para alimentar mi microcontrolador, y toda la lógica de mi microcontrolador funciona con cinco volt. Los 3,3 volts se usan para alimentar algún circuito externo. Tambien usaremos un oscilador que cómo hablábamos en un principio, se necesita un oscilador para que le de las señales de reloj al microcontrolador, y eso es básicamente lo que controla el circuito secuencial. Tenemos un conector USB que nos permite programar el microcontrolador y además nos permite comunicarnos con él por puerto serial. Además tenemos salidas o entradas digitales Salidas o entradas analógicas y algunas salidas o entradas especiales, de las que vamos a hablar un poco más adelante, que son el puerto serial, las salidas PWM, etcétera. Además, tenemos un botón de reset para reiniciar el programa.

PROTOBOARDS FUNCION Los protoboards se usan para conectar componentes entre ellos. Por ejemplo, si yo tengo una resistencia que tiene dos terminales, estos terminales son básicamente unas patas como alambre yo puedo conectar estas patas usando estos hoyos. Entonces yo puedo poner una resistencia conectada aquí. Ahora, todos estos hoyos están conectados entre ellos. Y no están conectados con la siguiente fila. Por lo tanto, si yo quiero conectar algo a esa resistencia, por ejemplo, un cable, puedo poner el cable en este hoyo y esos dos puntos van a estar conectados. Todas estas líneas largas están unidas por un solo conductor. Normalmente en los protoboards más largos esta línea larga está separada en dos, Por lo tanto uno normalmente conecta este con este con un pequeño cable. ¿Y cómo funciona la conexión interna? Si nos fijamos en una de estas piezas vemos que tiene cinco ganchos. Y estos ganchos son los que permiten sujetar un componente. . EJEMPLO EN PROTOBOARD REAL

OTRO EJEMPLO Que consiste en prender el LED controlado por un botón. Entonces, el esquemático aquí no cambia el LED sigue estando en el mismo lugar conectado con un receptor de 220 Ohm en el pin 11 pero ahora vamos agregar un botón, a ver. Esto es un botón, y es, representa este componente, ¿cómo se llama este componente? Normalmente todos los, los botones de este tipo tienen 4 pines donde este pin y este pin son el mismo nodo, están siempre conectados y son dobles solamente por un tema mecánico y este pin y este pin también. Por lo tanto, lo que hace el botón es que cuando yo lo aprieto estos 2 nodos se conectan y cuando no está apretado, estos 2 nodos están desconectados, y por eso usamos este símbolo que básicamente cuando yo bajo esto, estos 2 nodos quedan conectados y cuando lo levanto, no están conectados. Entonces un lado del botón se conecta a 5 volt Y el otro lado del botón se conecta a, el pin 8. Además se le agrega este resistor a tierra, ¿por qué? Porque cuando el botón esta levantado yo quiero tener acá un 0 y cuando


el botón está abajo quiero tener un 1, y para garantizar que hay un 0 cuando el botón está levantado lo conecto con una, con un resistor a tierra y de esta manera al abrir este circuito este voltaje inmediatamente se va a 0. Armemos esto en un protoboard. Vamos a conectar este botón, lo ponemos primero en el protoboard. Normalmente se pone en el medio por un tema mecánico, y luego necesitamos revisar las conexiones. Un resistor de 10 kilo Ohm, lo conectamos a tierra, en este pin. Luego, hacemos una conexión de alimentación, que la vamos a dejar para toda esta línea, y conectamos a 5 volts. [AUDIO EN BLANCO] Entonces ahora que tenemos alimentación conectamos este pin, del botón, a la alimentación, y finalmente conectamos el otro pin del botón, al pin 8 del micro controlador. Y con esto tenemos un botón listo para usarlo. Volvamos al código, ¿cómo funciona esto? Voy a partir definiendo una variable llamada botón. Más adelante vamos a hablar en detalle sobre variables, por ahora solo nos vamos a preocupar que esta variable botón, pueda guardar un valor 0 o un valor 1 y yo puedo modificarlo.

ENTRADAS Y SALIDAS PUERTOS DIGITALES El microcontrolador como dijimos tiene entradas y salidas que llamamos puertos para comunicarse con el exterior. Generalmente estos puertos son digitales pero también algunos procesadores tienen puertos analógicos. Los digitales se pueden usar como entrada o como salida. Por supuesto que no vamos a usar ambas simultáneamente porque esto produciría un corto circuito. La entrada digital podemos decir que es un puerto que está de una forma mirando, mira este valor y si está cercano a cinco volts guarda un uno y si está cercano a cero volt guarda un cero. ¿Cómo hace esto? va a estar siempre mirando el valor de la entrada que yo puedo usar esa función cuando la necesite. FUNCIÓN PIN MODE Un número de pin y el modo en el que quiero que funcione ese pin. Inicialmente hablamos de dos modos que son input para usarlo como entrada, output para usarlo como salida, que ahora entendemos un poco más qué significa eso y además hay un modo adicional que puede servir, pueden verlo en algún código, no vamos a entrar mucho en detalle que es el módulo pull up, que es básicamente que utiliza un resistor conectado a vdd. ¿Para qué se hace eso? Para que igual que hicimos con el botón, para que cuando no haya nada conectado, este nodo inmediatamente quede en un uno lógico. Ahora vamos a hablar de la función digital write que ya la mencionamos anteriormente y ya sabemos que me sirve para decirle a un pin que previamente estaba configurado como salida, si yo quiero tener un valor uno lógico o un valor cero lógico. ¿Y ESTO CÓMO FUNCIONA? Si yo tengo un cero lógico estoy conectando mi salida a tierra, si tengo un uno lógico estoy conectando mi salida a VDD. Y es importante recordar que esto solo puede entregar o recibir hasta 40 miliamperes, ¿por qué entregar o recibir? Porque si está conectado como uno a lógico a VDD, la corriente va a ir en esta dirección y mi controlador está entregando corriente, si está conectado a tierra la corriente va a ir en esta dirección y está recibiendo corriente. COMUNICACIÓN DIGITAL La comunicación serial es un protocolo de comunicación digital muy usado en diferentes dispositivos, y la ventaja es que las tarjetas Arduino permiten usarlos en funciones sencillas. Y el software Arduino incluye un monitor serial que también permite realizar comunicaciones desde el computador. Por lo tanto desde la tarjeta lo puedo usarlo


fácilmente, desde el computador puedo usarlo fácilmente entonces tengo el sistema completo de comunicación y yo puedo digamos conversar con el procesador con funciones muy sencillas. ¿Cómo se hace esto? Tenemos dos pines que son especiales que están dedicados a la comunicación serial. Pueden hacer otras cosas pero tienen la ventaja de que tienen el hardware necesario para realizar comunicación cero y el pin uno y por eso la placa de desarrollo tiene normalmente estos símbolos, que son los símbolos de la comunicación serial.

CUESTIONARIO 1. ¿Que hace la función pinMode?  Configura un pin como entrada o salida Configura un pin como digital o analógico Cambia el estado de un pin a HIGH o LOW Lee el valor actual de un pin 2. ¿Cuáles son las funciones básicas de un sketch de Arduino? void load pin  loop  setup 3. ¿Qué hace la función digitalWrite? Lee el valor actual de un pin  Cambia el estado de un pin a HIGH o LOW Configura un pin como digital o analógico Configura un pin como entrada o salida 4. ¿Qué hace la función digitalRead?  Lee el valor actual de un pin Configura un pin como digital o analógico Cambia el estado de un pin a HIGH o LOW Configura un pin como entrada o salida 5. ¿Qué hace la función Serialprintln("contenido")? Inicia la comunicación serial y configura la tasa de datos


Envía solamente la palabra "contenido" por transmisión serial  Envía la palabra "contenido" y un cambio de línea por transmisión serial Espera hasta que el puerto serial reciba la palabra "contenido"

VARIABLLES Y OPERACIONES QUE ES UNA VARIABLE Una variable es un espacio de memoria para guardar un dato. Cualquier variable tiene asociada un nombre un tipo, y un valor. El nombre es el que yo le asigno a una variable. Yo quiero que una variable se llame botón, por ejemplo. El tipo de variable tiene que ver con cómo la interpreta el programa. Y el valor es el valor que también yo le asigno. TIPOS DEVARIABLES Yo podría tener una variable booleana, que puede tomar valor true o false, equivalente a uno o cero. Esta es una variable binaria. Se parece bastante a lo que es un bit. No es exactamente un bit pero se parece bastante. Y usa ocho bits de memoria. Después tenemos las variables tipo char. Las variables de tipo char se usan para almacenar caracteres. Y tiene un rango de valor que va de menos 128 a 127. Pero estos son números. ¿CÓMO ES ESTO DE UN CARACTER? Eso lo vamos a ver en unas diapositivas más cuando veamos cómo se hace esta conversión entre números y caracteres. Pero el programa, cuando yo tengo un char, sabe que tiene que ver el caracter y no el número. ¿Y POR QUÉ PUEDE TOMAR VALORES DE MENOS 128 A 127? Porque tiene ocho bits. Y como vimos en el módulo anterior, con ocho bits yo puedo tener dos elevado a ocho combinaciones. Entonces yo puedo ir de cero a 255 o de menos 128 a 127. Aquí están los char que no tienen signo, que van de cero a 255. Son similares a los char. En realidad se usan poco. Normalmente nosotros vamos a usar char, por lo tanto no es muy importante que nos preocupemos de este tipo de variables. CREAR UNA VARIABLE: DECLARACION ¿Cómo uso una variable? Primero yo tengo que crearla. Entonces, como decíamos, yo le doy el nombre y mi variable tiene un tipo. ¿Cómo yo declaro una variable? Digo el tipo de la variable, por ejemplo aquí digo int y el nombre. Entonces, por ejemplo, yo puedo tener int, como lo vimos antes, botón uno y ahí yo lo único que hice fue crear una variable que se llama botón uno. No le he asignado un valor. Por lo tanto tiene su valor por


defecto. Alternativamente, yo puedo declarar la variable inmediatamente sin darle un valor, que fue lo que hicimos en el ejemplo anterior. Por ejemplo, yo puedo decir int, btn uno igual cero. Entonces inmediatamente se crea esta variable, y por tanto yo puedo usar la variable btn uno en cualquier parte del código y tiene valor cero.

MODIFICAR VARIABLES Primero que nada, yo declaro mi variable en este caso es ledpin. Es el nombre de la variable. Es de tipo entero. Y no le asigno valor, solamente la declaro. Y es importante que la declaración se hace fuera del setup y fuera del loop. Porque si yo declaro la variable dentro de setup, por ejemplo, solo puedo usarla dentro de setup. Si la declaro dentro de loop, solo puedo usarla dentro de loop, pero la voy a estar declarando cada vez que el loop empiece de nuevo. Entonces, normalmente, las variables se van a declarar afuera de estas dos funciones. Entonces, declaro mi variable y no le asigno valor. En setup le asigno el valor cuatro y digo que el pin que está en ledpin, ledpin es cuatro, es una salida. Entonces esto es lo mismo que decir pinmode cuatro coma output. Son expresiones equivalentes porque ledpin vale cuatro. Y de la misma forma, después el loop puedo escribir el ledpin un valor uno, o puedo escribir el pin cuatro, un valor uno. Estas dos

TABLA ASCII La tabla ASCII. Yo tengo valores que van desde cero hasta 127. Pero si nos devolvemos, como vimos un poco antes, el char puede tener valores hasta de menos 128. Por lo tanto, todos los valores que van desde menos 128 hasta menos uno en realidad no nos sirven. Nosotros solo vamos a usar los valores que van desde cero a 127. Y podemos ver que, por ejemplo, el valor cero es equivalente al valor null o no asignado. O sea, un char por defecto tiene valor numérico cero que no equivale al caracter cero. Equivale a un caracter nulo. Después hay varios números que no tienen un caracter asignado. Acá hay algunos que nos pueden importar. El nueve es tab. El 10 y el 13 son estos comandos especiales que son line feed. Y este que es equivalente al enter. Después tenemos varios que no están asignados. Y después tenemos, por ejemplo espacio, algunos signos los números, y fíjense que el caracter cero no es equivalente al número cero.

El abecedario en mayúscula, el abecedario en minúscula y otros símbolos más. Entonces todo esto nos sirve para hacer la conversión entre el valor almacenado en la variable y cuál es el caracter que corresponde a ese valor. Primero inicializamos la comunicación serial, esto ya lo habíamos hecho antes, y mandamos la línea y empezamos. Por lo tanto, lo primero que vamos a ver en el terminal serial va a ser que empezamos. Después esto va a empezar a imprimir. Y, ¿qué va a imprimir de forma indefinida? Primero va a imprimir índice. A ver, aquí tenemos la variable índice. Pero, tiene acá adelante un int entre paréntesis. ¿Qué significa eso? Que yo quiero que imprima índice visto como número. Después, yo voy a imprimir el caracter tab. Porque tab es un chart y yo lo estoy imprimiendo directamente. Después voy a imprimir dos puntos, voy a imprimir otro caracter tab y después voy a imprimir el caracter que corresponde al número que tengo guardado en índice.


PORQUE USAR VARIABLES Modificar el valor solo una ves Orden de códigos Manejo de datos Usar un valor en muchas partes

ARREGLOS ¿QUÉ ES UN ARREGLO?

Un arreglo es una colección de variables que pueden ser accedidas mediante un índice. . Es una colección de variables que pueden ser accedidas mediante un índice y que tiene la utilidad de manejar una mayor cantidad de datos.

ATIPOS DE VARIABLES EN ARREGLO Se pueden hacer arreglos de cualquier tipo de variables,: int, char double, boolianas Pero, todas las variables de un arreglo tienen que ser del mismo tipo, no puedo mezclar diferentes tipos de variables. Y el largo del arreglo se define sólo una vez y esto es importante. Yo, al momento de crear el arreglo, tengo que saber qué largo de arreglo quiero y después no lo puedo cambiar. ¿CÓMO YO MODIFICO Y USO ARREGLOS? Supongamos que yo tengo un arreglo que se llama ledpin, tiene dimensión 4, y acá lo inicialicé y cómo lo inicialicé, a ver, declaro 4 valores y acá tengo un número 4, o sea, lo estoy inicializando declarando el largo explícitamente. Entonces tengo un arreglo que se llama ledpin del arreglo 4, del tipo int y que tiene estos 4 valores, que son valores arbitrarios. Se declaró, al igual que las variables, fuera del setup y del loop. Y después yo si es que quiero, por ejemplo, cambiar un valor, aquí en setup ¿qué hago? Ledpin, accedo al número 2 igual 13, ¿cómo lo hacía antes si es que ledpin era simplemente una variable? Yo hacía ledpin igual 13. En cambio, ahora, yo quiero decir


que la variable que está en el índice 2 de ledpin cambia a 13. ¿Cuál es la que está en el índice 2? Ésta está en el índice 0, ésta está en el índice 1, esta está en el índice 2, por lo tanto, mi arreglo después de esta línea va a valer 2, 276 13 y 1798. Entonces yo sólo modifiqué la variable que está en el índice 2. Y después digo pinmode, ledpin 2, output por lo tanto yo estoy diciendo que el pin que está en el índice 2 del arreglo ledpin, ¿cuál es ese?, 13. Entonces el pin 13 es output. De la misma manera que yo después puedo escribir llamando a ledpin 2 o llamando a 13, las expresiones son equivalentes. Siempre recordando que los índices válidos van desde 0 hasta el largo del arreglo menos 1 y que si yo intento acceder a un índice no válido me va a dar un valor incierto. ¿Por qué? Porque si yo accedo a un índice, si tengo un arreglo de largo 5 e intento acceder al índice 5, que no es válido porque llega hasta 5 menos 1, voy a acceder a un espacio de memoria que no corresponde a ese arreglo. Entonces, básicamente, no sé qué me va a devolver. PORQUE USAR ARREGLOS Permite agrupoar variables Manejo de gran cantidad de datos Eficiencia de códigos Uso de strings

El botón 1 y el botón 2 se asignan como input, se inicializa la comunicación serial y como siempre dejamos un pequeño delay para abrir el monitor serial. Después pasamos al loop. ¿Qué hacemos en el loop? Primero, al igual que en el ejemplo anterior, se leen los botones, entonces, si el botón 1 está apretado inc toma valor 1, si no está apretado toma valor 0 al igual dec. Y después el índice, igual índice, más inc, menos dec. ¿Qué significa esto? Que si inc vale 1 el índice va aumentar en 1, voy a tener índice igual, índice más 1 y si dec vale 1 voy a tener índice igual índice menos 1 y el índice va a disminuir en 1. Después, imprimo el índice, el índice es un número, por lo tanto, voy a ver el número actual del índice, el valor actual, después imprimo una flecha, sólo para separar. Y imprimo ¿qué estoy haciendo aquí? Arreglo, paréntesis cuadrado, índice. O sea, imprimo el char que corresponde al índice, si índice es 3 estoy imprimiendo el cuarto char del arreglo, si el índice es 3 estoy imprimiendo el 0, 1, 2 3. Estoy imprimiendo D, por lo tanto, yo debería empezar viendo que se imprime el caracter D hasta que yo apriete algún botón. Y se esperan después 500 milisegundos. Ahora que el programa cargó abrimos el monitor y vemos qué pasa. Entonces, al principio, como habíamos visto se imprime el índice 3 que corresponde a la letra D. A ver, vamos a mover esto un poco para poder ver nuestro arreglo inicial, que lo tenemos aquí. Entonces qué pasa si yo aumento en un, el índice apretando el botón, ahora yo estoy imprimiendo el carácter correspondiente al índice 4, ¿cuál es el índice 4? 0, 1, 2, 3, 4 es la E. Sigo aumentando, veo el índice 5, el índice 6, el índice 7, y, ¿qué pasa cuando paso al índice 8? El índice 8 está fuera de mi arreglo. Mi arreglo llega hasta índice 7 que


era la letra H. Y después si es que yo sigo aumentando veo cualquier cosa, en este caso me han tocado puros caracteres vacíos, pero mire, ahora apareció un menos y ahora apareció un signo de comparación, ¿por qué? Porque yo estoy accediendo a valores de memoria que no corresponden a mi arreglo y me puede tocar cualquier cosa. Yo no sé con qué me voy a encontrar, no son necesariamente 0, puede ser cualquier cosa, y cuando vuelvo a mi arreglo yo sé qué me va a tocar porque yo definí mi arreglo desde el 0 hasta el 7 con letras que yo conozco. Entonces, siempre hay que tener cuidado cuando uno recorre un arreglo de mantenerse desde el 0 hasta el largo menos 1 en sus índices, lo mismo si paso hacia un valor negativo, estoy accediendo a un valor de memoria que no me corresponde y por lo tanto veo cualquier cosa

STRING Los strings son una variable que se usa para texto. Y en Arduino hay dos representaciones posibles para string. Yo puedo usar un arreglo de char como string. Por ejemplo, si yo tengo un conjunto de ocho letras puedo formar una palabra. O puedo usar la clase String que es con mayúscula, que es un tipo de dato que está definido en Arduino. O sea, este no es un tipo de dato sino que yo uso un arreglo de char, mientras que este String es un tipo de dato definido en Arduino ¿Qué era un char null? Era un char que no fue asignado o que fue asignado por su valor por defecto.

¿Cómo yo declaro y asigno un string? un arreglo de char. Tipo char, arreglo, y aquí tengo el nombre de mi variable. Entonces, si es que yo declaro un arreglo de char de esta forma me sirve para usarlo como string, porque veamos que el último la última variable, el último char, al igual que todo lo demás no es asignado. Por lo tanto tiene su valor por defecto. También yo puedo asignarlo directamente. ¿Cómo es esto? Tengo un arreglo tipo char, que tiene largo ocho, y tiene uno, dos, tres, cuatro, cinco, seis, siete caracteres. Y tiene largo ocho. ¿Está bien? Sí, porque yo necesito tener un caracter adicional que no esté inicializado, que es aquí el que me falta que no lo muestro explicitamente. Alternativamente, yo puedo mostrarlo explícitamente definiéndolo como el caracter nulo. Pero lo importante es que yo siempre la dimensión del arreglo, si es que yo hubiese usado un arreglo de chars tiene que terminar en un caracter nulo, que me sirve para marcar la delimitación.

CREAR UN STRING Se crea un String. Un String se puede crear de varias formas. Al igual que todos los demás tipos de variables, yo primero pongo el tipo de variable y después asigno un nombre. Y en este caso declaré el String pero no le asigné ningún valor. Alternativamente, al igual que como lo hacíamos con los enteros, por ejemplo yo puedo declarar mi variable. Aquí tengo el nombre el tipo, e inmediatamente le asigno un valor. En este caso el valor es este texto. Contenido que se entrega entre comillas. Las comillas no son parte del String que se guarda. Lo que se guarda es el String que está entre las comillas. Y la otra forma en la que yo puedo crear un String es usando la función String. Esto es un poco confuso por lo que mencionaba antes de que String es una clase pero lo único de lo que tienen que preocupa es de que hay una función String que me permite crear, de muchas formas, variables de tipo String. Me permite inicializarlas.


OPERACIONES ARITMETICAS Y FUNCIONES CON RETORNO Las operaciones aritméticas disponibles en Arduino son bastantes, las más típicas, algunas o las que me sirve como para asignar variables y por supuesto tengo disponible la suma, la resta, multiplicación y división.

Operadores compuestos que pueden ser un tanto extraños y no lo vamos a ver todos pero se los mostramos aquí para que por si se encuentran con alguno de estos operadores en un código, sepan qué son y puedan ir a la referencia de Arduino y ver exactamente qué hacen. Por ejemplo este A+=, qué pasa si ustedes ven en un código A += 3, eso significa A = A + 3 y en términos prácticos el resultado del mismo tiene algunas diferencias en cuanto a la eficiencia de código que nosotros no nos vamos a preocupar de eso, como les digo se los mostramos solo para que si lo ven en alguna parte sepan qué son. Lo que sí nos interesan son estos dos, que es el ++ y el --. Qué pasa si yo aquí tengo A ++, si tengo A++ eso es equivalente a decir A = A + 1, es decir A++ simplemente aumenta A en 1. Pero tiene una particularidad, que si es que yo lo uso en alguna parte del código por ejemplo si uso un digital write. Y pongo aquí A++, low

FUNCION CON RETORNO ¿Qué significa que tiene un retorno? La función además entrega una respuesta. Por lo tanto esta misma caja negra hace algo que todavía no sabemos cómo lo hace, sabemos qué hace pero además me entrega una respuesta y esta respuesta tiene un tipo definido, por ejemplo me entrega un número entero, me entrega un double, me entrega un string y puede ser asignado a una variable y por eso son de gran utilidad. ¿Cómo funciona esto? Tenemos un diagrama similar al que vimos antes, tenemos que la función está identificada por un nombre, recibe parámetros, yo tengo que conocer necesariamente el nombre de la función y qué parámetros darle y además ahora me entrega una respuesta, por lo tanto yo asigno esa respuesta a una variable y esta variable está definida previamente y tiene un tipo y este tipo tiene que ser consistente con el tipo que me entrega esta función. Entonces mi función si es una caja negra recibe parámetros, hace algo pero además entrega una respuesta


CONSIDERACION DE PROGRAMACION Al hacer operaciones hay que tener cuidado con los tipos de variables y su rango Si se usan enteros para cรกlculos con resultados no enteros el valor guardado se trunca

FUNCIONES MATEMATICOS Funciones me permiten hacer cรกlculos complicados pero hay que tener cuidado porque son mรกs lentas. Al hacer operaciones tenemos que tener algunas consideraciones particulares.

CUESTIONARIO


PROGRAMA Y CONTROL DE FLUJO VARIABLES Y LOGICA BOOLEANA REPRESENTACION EN DIFERENTES BASES Nosotros podemos tratar cualquier variable en una cierta base decimal o en la base binaria, o en otras bases que por ahora no nos vamos a iii mucho de esta otras bases pero sí vamos a hablar de una lógica decimal y binaria. Por ejemplo, si aquí yo estoy en el código y escribo el número 123, el código interpreta esto por defecto como un decimal, es decir yo tengo uno por 10 elevado a dos más dos por 10 elevado a uno más tres por 10 elevado a cero, esto me da el número 123 como nosotros lo conocemos. Pero lo guarda en el registro de manera binaria, entonces tiene que tener clara esa iii. ¿Qué pasa si yo quiero escribir un número de forma binaria? Tengo que anteponer una b, entonces yo escribo b, y por ejemplo si quiero escribir el número cinco, escribo uno cero uno cero cero cero cero cero, aquí tengo un, dos, tres, cuatro, cinco, seis, siete, ocho, ocho bits y antepongo el b alante. Entonces el código va a saber que esto que estoy haciendo aquí


equivale a un cinco en base decimal, y se guarda directamente así. ¿Por qué yo querría escribirlo de forma binaria en vez de escribirlo en forma decimal? Porque quizá a mi no me interesa la interpretación decimal, sino que me interesa trabajar bit por bit, aplicando operaciones por bit y eso es lo que vamos a ver a continuación. Ya vimos las operaciones lógicas fundamentales que aplican en la lógica booleana en el módulo anterior que son las compuertas, vimos la compuerta OR, la compuerta AND,

Hay operadores booleanos que son los mismos que hemos visto que son AND, OR, y NOT, pero tienen una sintaxis diferente que la vamos a ver ahora. ¿Y por qué nos interesa trabajar con variables booleanas? Porque hay muchas operaciones que tienen como retorno variables booleanas, por ejemplo el resultado de comparación, que si yo en el programa comparo por ejemplo, es a menor que b, la respuesta que me va a dar el programa va a ser true o false, equivalente a uno o cero, y esa es una variable booleana y esa es la variable que yo voy a manejar. Entonces por eso este tipo de variables es particularmente importantes en el código más que las operaciones de bit por bit.

¿Cuáles son las operaciones de comparación que podemos usar? Y veamos la sintaxis, comparación con igual, y aquí hay que notar que es diferente decir a igual uno por ejemplo, cuando yo estoy asignando el valor uno a la variable a, que si hago a igual igual uno donde aquí estoy comparando la variable con uno. El resultado de esto es que la variable va a tener el valor uno, el resultado de esto es que a es uno y yo obtengo true si a no es uno, y yo obtengo false. O sea hay que tener mucho cuidado de no confundir el igual con el doble igual. Después está el operador distinto, que es prácticamente lo contrario de comparar una igualdad. Si son distintos me da verdadero si son iguales me da falso. Después puedo comparar menor, mayor, menor o igual, mayor o igual.


Y esto se aplica todo de la misma manera, yo quiero hacer una comparación entonces comparo a por ejemplo menor o igual que uno y esto me va a devolver verdadero si es que a es menor o igual que uno, falso si es que a es mayor exclusivo que uno

CONDICIONES IF, ELSE

El comando if permite establecer una condición para ejecutar una porción de código. Entonces ¿cómo lo hacemos?

Esta es la sintaxis. If entre paréntesis una condición booleana. O sea una comparación, una variable booleana, algo que tiene como salida verdadero o falso. Y si esta condición es verdadera, entonces yo ejecuto, el programa ejecuta el código que está entre los corchetes Entonces, veamos. Supongamos que yo tengo una variable un número que vale tres y yo quiero decir si es que mi número es mayor que dos, entonces súmale uno. Pero si no, no le sumes nada. Ese es el tipo de cosas que se hacen con un if. Entonces, si la condición booleana es true, es cierta, ejecuto este código. Si es que no, me salto el código y sigo la instrucción que viene después.


El comando else. ¿Para qué sirve el comando else? El comando else permite incluir una sección de códigos para el caso en que no se cumple la condición del comando if. Entonces, nosotros, hasta ahora llegamos hasta acá. Si esta condición es verdadera, ejecuta el código uno. Eso era todo lo que podíamos hacer. Y si la condición era falsa, simplemente seguíamos de largo. Ahora lo que hacemos es agregar la posibilidad de que si la función es verdadera, ejecuta este código. Y si la condición es falsa, entonces ejecuta este otro código. Entonces ya tengo dos alternativas de códigos para ejecutar según la condición sea verdadera o sea falsa.

Vemos que tenemos el mismo contador. Inicializamos la comunicación serial, enviamos estas palabras ejemplo if, y empezamos. Por lo tanto, lo primero que vamos a ver es esto. Ejemplo if. Luego empezamos. Ahora vamos al loop. ¿Qué es lo que está pasando en el loop? Imprimo contador, igual que antes. Vamos viendo. Contador por ahora vale cero. Imprimo contador que vale cero. Ahora, ¿contador es igual a 10? No. Aumenta uno contador. Contador vale uno.


No entra este código. En cambio entra a este otro código. ¿Qué hice? Aumenta en uno. Entonces imprimo aumenta en uno. Luego, vuelvo para acá. Contador vale uno, hago mi comparación imprimo uno, etcétera. Esto se repite hasta que supongamos que contador vale nueve, igual que antes llego para acá. ¿Nueve es igual a 10? No. Esto es falso. Ahora contador cambia a 10, recuerden, siempre después de hacer la comparación. No entró este código. Entró este otro código. Y, finalmente, vuelvo a mi comparación. Contador vale 10. ¿Contador es igual a 10? Sí. Imprimimos antes 10. Contador vale 11. Y volvemos a empezar al igual que en el ejemplo anterior. Insisto que esto, en un principio es difícil. La única forma de entenderlo bien es con práctica. Este ejemplo está disponible en la página del curso. Así que bájenlo, modifíquenlo, jueguen, y vean cuáles son las respuestas que obtienen para que vayan entendiendo bien cómo pasa esto, y las diferentes comparaciones. Aquí tenemos el resultado. Vemos que coincide con lo que habíamos predicho. Hagan lo mismo ustedes. Cambien el código, traten de predecir el resultado. Y después abran el terminal para ver realmente qué es lo que está pasando. Además es posible combinar los comandos if y else para implementar una serie de condiciones excluyentes. Por ejemplo, yo puedo decir si se cumple la condición uno, ejecuta el código uno. Después vamos al comando else. Pero dentro del comando else agregamos otro if. Entonces, ¿qué significa esto? Si no se cumple la condición uno y se cumple la condición dos, ejecuta el código dos. Si no se cumple la condición uno y no se cumple la condición dos, ejecuta el código tres. Esto es parecido a lo que hacíamos antes con la combinación de diferentes operaciones booleanas solo que hecho como una concatenación de if y else. A veces ustedes se van a encontrar con algo de este tipo, que es equivalente pero se ve distinto porque se omiten algunos paréntesis. Si ven esto, no se asusten. Es lo mismo. Simplemente concatenar diferentes if y else, solo que se ahorra un poco de código. No es un comando nuevo, al menos no en C, el comando else if. No es más que una concatenación del comando else con un comando if


EJEMPLO IF 1


EJEMPLO IF 2


EJEMPLO IF 3


LOOPS: FOR Y WHILE

¿Qué es un loop? La función loop de arduino todo el tiempo y ¿que hace básicamente? Yo entro al loop, ejecuto el código dentro de los corchetes, Termino el corchete y vuelvo a empezar todo desde un principio. Voy a hacerles un loop. Cada uno de estas vueltas, lo denominamos uno de los ciclos Pero el loop no es tal. Como se ejecuta indefinidamente yo no puedo controlar cuántas veces se ejecuta, lo puedo controlar cuando termine. O sea, lo que vamos a aprender ahora es, vamos a hacer loops que podamos controlar. Lo podemos ejecutar un número definido de veces, por ejemplo, yo digo "haz ésto 10 veces". O lo puedo ejecutar según una condición, cuando algo cambia

Como funciona el loop while. Este loop se va a repetir indefinidamente mientras la condición impuesta sea cierta. Entonces es algo parecido al if Solo que cuando termina, vuelve a empezar. ¿Cómo es ésto? Esta es la sintaxis while y entre paréntesis, una condición. Entonces yo estoy ejecutando mi código, llego a este comando while; si esta condición es cierta ejecuto el código entre los corchetes y después, a diferencia del if, en vez de seguir vuelvo a validar la condición. Si la condición todavía es cierta, lo vuelvo a ejecutar. Y así indefinidamente, la condición sigue siendo cierta, lo vuelvo a ejecutar y mientras la condición no cambie, ésto se va a ejecutar infinitamente. Un poco como pasa con el loop. Pero si la condición pasa a ser falsa, yo vuelvo para acá, ahora la condición es falsa, entonces salgo del loop.

El loop for es practicamente útil porque permite ejecutar una sección de código un número definido de veces. Yo puedo previamente definir cuántas veces voy a ejecutar un cierto código, esa es la ventaja de éste loop en particular. Se pueden hacer otras cosas también. ¿Cómo funciona ésto? Esto se ejecuta según una regla establecida al principio.


El loop FOR en general se usa para ir aumentando de uno en uno y recorrer arreglos, o hacer cualquier iteración de ese tipo, en realidad es mucho más versátil que eso. Y ustedes podrían encontrarse con algo de este estilo, que en realidad es completamente distinto a lo que vimos en cierta forma porque yo inicializo un número cualquiera que no es cero mi condición es otra, y en vez de aumentar, resto. Y no resto uno sino que resto cuatro. También es válido. Yo puedo aplicar cualquier condición aquí cualquier valor inicial, y cualquier tipo de incremento. De hecho, puedo hacerlo paramétrico y empezar en algún K inicial definido antes del código. Comparar con algún K final, también definido antes del código. Y hacer un incremento, que también está definido antes del código. Puede ser positivo o negativo. En este caso es menos cuatro. Esta expresión es equivalente a la expresión de acá arriba. Ahora, es raro que se encuentren con algo así. Se los muestro porque puede pasar pero por ahora enfóquense en entender el loop FOR como lo vimos originalmente. Que nos sirve para recorrer, básicamente, arreglos o hacer alguna ejecución varias veces.


EJEMPLO WHILE


EJEMPLO FOR


CUESTIONARIO


FUNCIONES


Funciones en particular y después vamos a ver estos 2 tipos de funciones que son un poco especiales, que son las interrupciones, las funciones de interfaz analógica. ¿Qué es lo que hacen las funciones internamente? la llamamos función ejemplo, que es una caja negra. Recibe parámetros y tiene algún tipo de retorno. Y además puede hacer alguna acción. Entonces, ¿cómo yo la llamo? Yo la llamo por el nombre función ejemplo, le entrego estos 2 parámetros, pueden ser más, puede no recibir parámetros, y la función me entrega un retorno, que yo asigno a una variable, que tiene que ser consistente con el tipo. SITAXIS

¿CÓMO CREO UNA FUNCIÓN? La función no es nada más que una porción de códigos encerrados entre 2 corchetes. O sea, yo solamente tengo que declarar la función y dentro de esa función yo hago algo. Esta declaración que está acá, se escribe fuera del loop y el setup. Sino que se escribe fuera de cualquier otra función. ¿Y cómo funciona? Yo tengo que asignar un tipo. ¿Recuerdan que la función tiene un retorno y ese retorno tiene un tipo? Bueno, ese tipo está declarado acá. Esta función ejemplo tiene un retorno que puede ser un int, un stream, cualquiera, y además recibe parámetros, por ejemplo, esta función recibe 2 parámetros, pero no cualquier parámetro. Los parámetros tienen un tipo que también está determinado y está determinado en el momento en que yo declaro la función, al igual que su retorno. Por tanto, si volvemos atrás, nosotros llamamos a una función, conocemos su


nombre, le damos 2 parámetros, esos 2 parámetros tienen que ser del tipo que la función tiene determinado en su declaración. EJEMPLO DE FUNCION

INTERRUPCION La interrupción es una alerta que se activa cuando ocurre un determinado evento, eso es importante. El evento está previamente determinado y esto genera una alerta. Esto es lo que hay que tener en consideración. Entonces al activarse esta alerta, el procesador deja de ejecutar el programa principal. Ejecuta una rutina ligada a esta alerta. Entonces estoy ejecutando mi programa, paso a paso, y de repente se generó una alerta, que también muchas veces se llama una flag, o bandera. Se levanta la bandera, entonces el programa inmediatamente guarda la posición y ejecuta una rutina, a parte, que está ligada a esta alerta. Entonces yo ejecuto mi rutina, cuando termino mi rutina, el programa vuelve al punto que estaba y sigue ejecutando en el mismo orden, entre comillas, como si


nada hubiera pasado, o sea, el programa no se va a perder. El programa detiene la línea principal, se encarga de esta rutina, y después sigue ejecutando el programa. ¿Qué es esta rutina? Esta rutina es básicamente una función, es muy parecida a una función. Pero tiene algunas particularidades que vamos a ver en algunas diapositivas más. ¿CUÁL ES LA VENTAJA DE ESTA ALERTA EXTERNA? Que la plataforma Arduino incluye funciones de fácil uso para usarlas, que son las que vamos a ver ahora. Entonces la mayoría de las tarjetas Arduino tienen 2 pines disponibles para hacer interrupciones externas. Es decir, hay 2 pines con la capacidad de activar alertas. Y uno puede usar cualquier pin para activar una alerta. Normalmente en las tarjetas que vamos a usar nosotros, están en el pin 2 y en el pin 3 y se distinguen por un número, interrupción 0 e interrupción 1. Interrupción 0 corresponde al pin 2. Interrupción 1 corresponde al pin 3. Entonces para inicializar una interrupción, se usa la función attach Interrupt. Esta función es la que establece cuándo se activa una alerta y qué rutina se ejecuta cuando se activa esa alerta. Veámoslo en más detalle

MODIFICACION DE VARIABLES DE INTERRUPCION Modifican variables dentro de la interrupción. Esto ya tiene más que ver con programación en C. No vamos a ahondar mucho en esto pero si quieren saber bien qué es lo que sucede pueden, como siempre, ir a la referencia en la página de Arduino.

EJEMPLO DE INTERRUPCION



EJEMPLO ISR


FUNCIONES DE INTERFAZ ANALOGICO

Los procesadores pueden incluir conversores digital análogo, lo que permite tener salidas analógicas. La plataforma Arduino permite implementar fácilmente dos funcionalidades. Una es leer una entrada analógica, es decir los procesadores Arduino tienen un ADC integrado. O más de uno. Y la segunda es generar una salida pseudo-analógica. No es una salida analógica en el sentido de lo que no hay un DAC, pero sí nos permite generar algo que se parece bastante a una salida analógica. Ya vamos a ver exactamente qué es. Partamos por la entrada analógica. Las tarjetas Arduino normalmente tienen entre seis y ocho pines que permiten leer valores analógicos. La tarjeta Arduino uno, por ejemplo, que es la que nosotros hemos usado tiene seis, que se enumeran del cero al cinco. internamente, cada una cada uno de estos pines, cada uno de estos puertos analógicos tienen un ADC. ¿Cómo funciona esto? Yo uso la función analog read de la misma forma en que usábamos la función digital read, con la diferencia de que ahora en vez de entregarme un valor cero o uno, me entrega un valor que puede ir desde cero hasta 1.023. Entonces yo le asigno un pin, que puede ser de cero a cinco en el caso de que tenga seis entradas analógicas. El conversor interno de Arduino tiene 10 bits,y tiene una referencia de cinco volt. Por lo tanto, si hacemos el cálculo, cada bit. O sea, el bit menos significativo es equivalente a aproximadamente 4.9 milivoltios. Es un poco menos, es algo así como 4.88, algo más. No es un número cerrado pero 4.9 milivoltios es una aproximación bastante buena. Cada conversión se demora 100 microsegundos. Por lo tanto, la tasa de lectura es decir, la frecuencia de muestreo de la que hablábamos en el módulo uno, está limitada a 10 kilo hertz.

Además, la referencia del conversor se puede modificar usando la función analogRef.


Sensores, actuadores y bibliotecas. Eso es lo que vamos a ver en el módulo cuatro. Principalmente nos vamos a centrar en aprender a usar sensores, actuadores y cómo comunicarnos con ellos y leer sus valores, ya sean analógicos o digitales. Esto lo vamos a hacer más que nada a través de ejemplos prácticos. En estos mismos ejemplos vamos a ver un poco del uso de biblioteca. ¿Qué es esto de biblioteca? Nosotros ya hemos vistos como usar funciones. Y existen muchísimas funciones más. La cantidad de funciones que ustedes encontrar para Arduino es enorme, porque básicamente cualquier persona puede hacer una función. Y puede ser un grupo de funciones. Y una vez que tu tienes un grupo de funciones las puedes juntar en una biblioteca y compartirlas. Es decir, tu puedes tomar funciones que otros han hecho, importarlas a tu código y usarlas. Entonces, básicamente uno tiene a su disposición funciones para todo. Entonces, uno no tiene la necesidad de entender absolutamente todo lo que está pasando. Si uno quiere usar por ejemplo un módulo de bluetooth puede usar una biblioteca diseñada especialmente para el módulo de bluetooth y necesita saber que es lo que está pasando a bajo nivel. De la misma forma uno puede comunicarse por wifi, uno puede controlar algunos motores.

EJEMPLO POTENCIOMETRO


EJEMPLO LEDTOP


CUESTIONARIO


TERCERA SEMANA

ANALISIS DE CIRCUITOS CIRCUITOS, MALLAS, NODOS Y TIERRA ¿QUÉ ES UN CIRCUITO ELÉCTRICO?

Es una red eléctrica que contiene al menos una trayectoria cerrada. Tenemos nuestro ejemplo de la batería mas ampolleta. Esto es un circuito, por aquí circula corriente. Si la trayectoria estuviera abierta no podrían circular portadores de carga, porque no, no pueden terminar acumulándose en un terminal. Por lo tanto, tiene que estar cerrado para que circule corriente y es parecido a esta analogía que habiamos hecho, de una montaña rusa en que un motor que haría el equivalente a una batería eleva la energía de un carro y ese carro después cae y cuando cae pierde su energía en el agua, y ese agua salpica para todas partes, que es más o menos análogo a lo que ocurre con una ampolleta, a través de la cual un portador de carga pierde energia y esa energía se convierte en calor.

CIRCUITO ABIERTO

Circuito abierto en este caso. Si, podemos abrir un circuito empleando un switch. Al abrir un circuito, el circuito deja de estar cerrado, por lo tanto deja de haber una trayectoria cerrada. Deja de ser un circuito, no circula corriente. Podemos cerrar ese circuito y al cerrar el circuito los portadores de carga siguen este camino, desde la batería, pasando


por la ampolleta y luego regresando al otro terminal de la batería, y funcionando normalmente. Si llegamos a conectar los 2 terminales de la batería con un cable, lo que sucede es lo siguiente. Están saliendo aquí los portadores de carga y ven 2 caminos, un camino corto y un camino largo. Los portadores de carga prefieren el camino corto, por lo tanto, se van a ir por aquí en su mayoría. Muy pocos portadores se van a ir por acá. La ampolleta no se va a encender y va a pasar mucha corriente por aquí. Lo que sucede ahí es que este camino corto ofrece una resistencia pequeña al paso de la corriente y esa resistencia pequeña hace que la mayoría de los portadores de carga se vayan por ahí. Por este circuito, que es mucho más corto que el circuito que había originalmente. Este es un circuito largo y se acortó. Esto fue un corto circuito.

QUE ES UNA MALLA Una malla independiente es cualquier camino cerrado en un circuito, que no contiene otras mallas. Por ejemplo, miramos este circuito y vemos 1 camino, 2 caminos, 3 caminos. A cada uno de estos caminos se le asigna una corriente y esto se llama corriente de malla. Las ramas son los caminos que pueden seguir QUE ES UN NODO Un nodo es un punto de unión en un circuito en el que convergen los terminales de 2 o mas elementos circuitales. En todos los puntos de un cable, el voltaje es el mismo. Por lo tanto todos los puntos de un nodo tienen el mismo voltaje, y 2 nodos diferentes, por lo general, tienen voltajes diferentes. QUE ES TIERRA

Tierra es un nodo al que arbitrariamente le asignamos voltaje

LEYES CIRCUITALES ¿Cómo pierden energía los electrones? Los electrones pierden energía al circular por un material. ¿De acuerdo? Todos los materiales eléctricos tienen una propiedad física, de la cual ya hemos mencionado un par de cosas, pero ahora la definiremos un poco mejor. Es una propiedad que tiene que ver con cuánto se opone el material al flujo de la corriente, cuánto se resiste el material al flujo de la corriente, ajá, dije resiste. Tiene que ver con resistencia. Entonces, la resistencia eléctrica es, cuánto se opone el material al flujo de la corriente y la analogía hidráulica LEY DE OHM.


Esta es la primera ley circuital y es de gran importancia en el análisis de circuito y análisis orientado al diseño, así que vamos a verla en esta lámina. Al circular, la corriente calienta un conductor, siempre que hay circulación de corriente, a menos que estemos hablando de un superconductor, la corriente va a calentar el conductor. Y el conductor se resiste al flujo de corriente y eso produce, a su vez, una caída en el potencial. ECUACION

I:V/R

V: I.R

R: V/I

Entonces, V igual I por R. ¿Cómo es la potencia disipada? Conociendo la resistencia del voltaje o la corriente, es posible calcular la potencia disipada por la resistencia. P igual I por V, esa es una fórmula que nos permite calcular potencia Potencia es voltaje por corriente RESISTENCIA ¿cómo se ve una resistencia en un circuito eléctrico? Las resistencias tienen, aquí saqué una foto, tienen más o menos esta forma, estas son resistencias de un cuarto watt. El tamaño del, de la resistencia tiene que ver con la potencia que son capaces de disipar. Estas de aquí son de un cuarto watt. Y las resistencias son, son chicas en general, son bastante chicas, entonces no, no tienen un número donde uno pueda leer el valor de la resistencia en Ohm, sino que más bien tienen un código de colores y ese código de colores está representado en esta tabla. LECTURA DE RESISTENCIA Típicamente el código de colores consiste en 3 bandas más una banda que puede ser dorada o plateada, en este caso, lo más típico es tener 3 bandas más una plateada, la plateada significa que tiene que ver con la tolerancia de la resistencia. Entonces, lo que, la forma en que se lee una resistencia es la siguiente, partiendo por la banda más alejada de la banda plateada o dorada, las primeras 2 bandas indican el tamaño. Por ejemplo, si este café es negro, café es 1, negro es 0, entonces está resistencia es de 10. ¿10 qué? Hay que mirar la última banda y la última banda indica el multiplicador 100, entonces esta es 10 por 100 Ohm y eso me da 10 por 100, 1000 Ohm, que es lo mismo que 1 kilo Ohm. LEY DE VOLTAJES La ley de voltajes dice que la suma de los voltajes en una malla es 0. ¿Cómo funciona esto? Tomamos cada elemento circuital y le asignamos un voltaje. Este elemento tiene voltaje de 1, a este elemento le asignamos voltaje de R 1 y a este elemento le asignamos voltaje de R 2. Lo que dice la ley de voltajes es que si medimos la suma de voltajes, si calculamos la suma de voltajes en torno a un malla, esa suma es 0. Es super fácil equivocarse así, en en este tipo de de análisis cuando uno lo hace por primera vez, así que vamos a tener harto cuidado. ¿CÓMO SE RESUELVE UN CIRCUITO? Resolver un circuito es encontrar todas las corrientes de malla y todos los voltajes de nodo. Matemáticamente se reduce a esto, a invertir y multiplicar matrices y hay programas que permiten resolver circuitos fácilmente.


METODOS DE MALLAS Mediante el método de las mallas es posible resolver circuitos con varias mallas y fuentes. Consiste en plantear las corrientes de cada malla como su intensidad por su resistencia y sumar o restar las intensidades por las resistencias relacionadas con mallas adyacentes.

1) Se asigna un sentido arbitrario de circulación de corriente a cada malla (las que se quieren calcular). El sentido no tiene porqué ser el real (de hecho antes de calcularlo no se lo conoce). Si se obtiene como resultado alguna corriente negativa, el sentido real de la misma es al revés del utilizado para esa malla.

2)

Se plantea a la suma de las fuentes de cada malla como I por R de la malla y se le restan las ramas comunes con otras mallas. El signo que se les pone a las fuentes depende del sentido de circulación elegido para la corriente. Si se pasa a través de la fuente de negativo a positivo con el sentido elegido, se utiliza (+), de lo contrario (­). Malla 1

Malla

2


+ V2 = I2 (R2 + R3 + R4) – I1 (R2) – I3 (R4) Malla ­

V3

=

I3

(R4

+

3

R5)

I2

(R4)

3) Los valores de resistencias y de tensiones se conocen, por lo tanto quedan 3 ecuaciones con 3 incógnitas (para 3 mallas interiores) en donde cada incógnita es la corriente de malla. Resolviendo el sistema se obtienen las corrientes. Si se obtiene alguna corriente negativa quiere decir que el sentido real es al revés del elegido.

METODO DE NODO


El análisis de nodos es posible cuando todos los nodos tienen conductancia. Este método produce un sistema de ecuaciones que puede resolverse a mano si es pequeño, o también puede resolverse rápidamente usando álgebra lineal en un computador. Por el hecho de que forme ecuaciones muy sencillas, este método es una base para muchos programas de simulación de circuitos (por ejemplo, SPICE). Cuando los elementos del circuito no tienen conductancia, se puede usar una extensión más general del análisis de nodos: el análisis de nodos modificado.

CUESTIONARIO


COMPONENTES Y CIRCUITOS LINEALES CAPACITANCIA E INDUCTANCIA

INDUCTOR

Hay componentes y elementos circuitales dispositivos que son capaces de almacenar energía, los capacitores y los inductores. Ambos almacenan energía de alguna forma; los capacitores en forma de campo eléctrico, y los inductores en forma de campo magnético.

La propiedad del capacitor es la capacitancia y se mide en Farad. Mientras que la propiedad de un inductor es la inductancia y se mide en Henry. Ya vamos a aprender con más detalle qué significa todo eso. La ecuación que modela el comportamiento de un capacitor es la que aparece aquí. La corriente es la capacitancia multiplicada por la derivada temporal del voltaje.


Eso significa que ya no hay una relación estática entre corriente y voltaje, sino que hay una relación que pasa por un término de derivado. Y eso ya mete entre medio ecuaciones diferenciales. Necesariamente el resultado de un análisis sobre la corriente y voltaje de un capacitor, va a pasar por una ecuación diferencial.

Los capacitores es como unca bateria regenerable lo que q haces es obtener energía y después puede pasarla mediante circuitos

Cuando conectamos un inductor en un circuito, el inductor va aparecer un circuito abierto, y luego de mucho tiempo aparece un corto circuito. Esto es exactamente lo contrario a lo que pasaba en el caso del capacitor. El inductor es un corto circuito a baja frecuencia, mientras que un circuito abierto a alta frecuencia. De alguna forma aumenta su, podríamos decir, resistencia al paso de la corriente a medida que aumenta la frecuencia. O sea es como una especie de resistencia que depende de la frecuencia, igual que el capacitor; solo que una crece con la frecuencia, en el caso de la inductancia; en el caso de la capacitancia disminuye pues la frecuencia. Y su función de transferencia del circuito, que a su vez, como tiene, como el circuito tiene memoria, puede depender y va a depender de condiciones pasadas.


ESTATICO

REGIMEN SINUSOIDAL PERMANENTE Forma rectangular o en cuadratura La forma rectangular o en cuadratura se representa a continuación:  A y B son constantes 

es la pulsación o frecuencia angular (en rad/s).


3. Forma polar La forma polar es:  Fm es positivo e indica la amplitud o magnitud pico. 

: es el argumento o fase (en radianes).

La relación entre la forma rectangular y la polar se puede ver a continuación. Como:

De esta forma nos quedan las relaciones:

4. Periodicidad Una función es periódica, de periodo T, si se cumple la relación:

5. Representación A continuación veremos una representación para aclarar las relaciones que acabamos de ver:


 Eje abcisas: el coeficiente del  Eje ordenaas: el coeficiente del

6. Suma de funciones senoidales

con de forma que:

. cambiado de signo.


RESPUESTAS TRANSIENTES Respuesta transiente y respuesta en estado estacionario. Lo que vimos al final de la clase anterior es un diagrama de Bode. Y se estudia en electricidad todo el tiempo. es importante que ustedes sepan que existe. De la misma forma, así como hay una respuesta estacionaria también hay una respuesta transiente. Y es la parte de la respuesta de un circuito que decae en el tiempo. Después de un tiempo la respuesta transiente desaparece. En general, el cálculo requiere la resolución de una ecuación diferencial. El ejemplo es la ecuación diferencial para un circuito RC. ¿De acuerdo? Un circuito RC tiene, eventualmente en alguna parte, una expresión que lleva un operador S.

El valor inicial es el primer valor que entra el circuito frente a un estímulo. Cuando yo enciendo el circuito, ese es el primer valor que hay. Y puede ser calculado como la respuesta del circuito cuando el capacitor es un cortocircuito, eso habíamos visto antes, o cuando el inductor es un circuito abierto. Es decir, el capacitor cortocircuitado le indica que es lo que pasa en el valor inicial. Por ejemplo, veamos este circuito.


Valor final es el valor al que tiende el circuito frente a un estímulo. Y puede ser calculado como la respuesta al circuito cuando el capacitor se comporta como un circuito abierto, o el inductor se comporta como un cortocircuito.

CONSTANTE

La constante de tiempo tau es cuánto demora en llegar al 63% del valor final. Ese 63% no es arbitrario. Ese 63% es lo que demora una constante de tiempo en un circuito, en una constante de tiempo en tender a un cierto valor. Digamos que va a quedar más claro después, pero para calcularla, es necesario calcular la resistencia equivalente que ve el elemento capacitivo o inductivo. Por ejemplo si es que el circuito tiene un capacitor, hay que calcular la resistencia equivalente que ve ese capacitor, y esa es tau. Esa es la constante de tiempo. Constante de tiempo. Entonces la idea es la siguiente. El establecimiento de un circuito de primer orden sigue un exponencial que conecta el valor inicial con el valor final.

FILTROS Un filtro pasaaltos deja pasar las señales de alta frecuencia, pero atenúa las señales de baja frecuencia. Las señales de muy baja frecuencia como DC, las elimina. En cambio un filtro pasabanda es un circuito que deja pasar una banda de frecuencia dentro de una banda de paso. Todas las frecuencias que están bajo esa banda de paso son atenuadas, todas las frecuencias que están sobre esa banda de paso son atenuadas. Solamente pasan las que están dentro de esa banda de paso. Una forma de visualizar el comportamiento de un filtro es mediante un diagrama de magnitud versus frecuencia.


Para hacer filtros hay que usar elementos reactivos, elementos que almacenan energía como capacitores e inductores. En un gráfico de magnitud versus frecuencia, la magnitud es expresada en decibelios. Es la respuesta, la razón entre salida y entrada, por ejemplo, es expresada en decibelios. Y una respuesta expresada en decibelios, una razón, por ejemplo, lo que hacemos cuando son señales es 20 por logaritmo en base 10 de la razón Vo partido por Vi. La magnitud es el módulo de la respuesta compleja expresada en decibelios. La frecuencia es expresada en escala logarítmica, es decir, en estos gráficos de aquí, esta frecuencia en realidad vale un eje logarítmico.

PASAALTOS O PASABAJO Una forma fácil para determinar si un filtro es pasabajos o pasaaltos consiste en evaluar su desempeño a baja y alta frecuencia A baja frecuencia los capacitores son circuitos abiertos y los inductores son cortocircuitos A alta frecuencia los capacitores son cortocircuitos y los inductores son circuitos abiertos


CUESTIONARIO

AMPLIFICADORES FUENTES DEPENDIENTES


Las fuentes dependientes son fuentes de voltaje o de corriente, cuya variable de salida es una función de otra variable del circuito. Las fuentes de corriente controladas por corriente, las fuentes de voltaje controladas por corriente y las fuentes de corriente controladas por voltaje. Y estas siglas extrañas tienen que ver con la sigla en inglés. Esto es voltage controlled voltage source, o fuente de voltaje controlada por voltaje. Esto sería current controlled current source, o fuente de corriente controlada por corriente, y así sucesivamente. Entonces esta es una forma de tener una fuente que tiene una respuesta que depende de otra variable del circuito. Una fuente controlada por voltaje tiene que medir de alguna forma el voltaje de control. Esa medición lo ideal es que no tome energía del voltaje de control. Porque si toma energía del voltaje de control entonces va a representar una carga para ese voltaje de control, y no queremos que eso ocurra. Por lo tanto la medición debe ser realizada mediante una resistencia infinita, de manera que la potencia gastada en medir ese voltaje sea cero.

Una fuente controlada por corriente, en cambio, tiene que sensar una corriente de control. Y la idea es que esa medición, al medir esa corriente en otra parte del circuito no tome energía de la corriente de control. Por lo tanto, esa medición debe ser realizada mediante una resistencia nula de manera que la potencia gastada al medir esa corriente de control sea cero. Por lo tanto usamos una resistencia cero. En resumen, si queremos medir voltaje usamos una resistencia infinita. Si queremos medir corriente, usamos una resistencia cero. Por lo tanto una fuente Controlada por voltaje mide voltaje en una resistencia infinita. Una fuente controlada por corriente mide corriente en una resistencia cero


VCVS ejemplo

Por lo tanto, cuando el voltaje de entrada crece la caída de tensión en la resistencia hace que este voltaje sea menor que tierra. Y eso explica el término en contrafase. Esta lámina muestra un resumen de las fuentes dependientes que existen que son E, F, G y H. Es para el caso de una fuente de voltaje controlada por voltaje F es para el caso de una fuente de corriente controlado por corriente. Vemos ahí que el elemento que mide es un cortocircuito por lo tanto estamos midiendo corriente. G es para el caso de corriente controlado por voltaje y H es para el caso de una fuente de voltaje controlada por una corriente. Este mismo resumen aparece en esta lámina Con su impedancia ideales de entrada e impedancia ideales de salida. En este caso, la impedancia de entrada hace que no tome energía del elemento que está midiendo. Y la impedancia ideal de salida hace que no se vea cargada su salida cuando conectamos cualquier cosa a ese circuito.


TIPO Y USUS DE APLIFICADORES El concepto del amplificador operacional procede del campo de los computadores analógicos, en los que comenzaron a usarse técnicas operacionales en una época tan temprana como en los años 40. El nombre del amplificador operacional deriva del concepto de un amplificador dc (amplificador acoplado en continua) con una entrada diferencial y ganancia extremadamente alta, cuyas características de operación estaban determinadas por los elementos de realimentación utilizados. Cambiando los tipos y disposición de los elementos de realimentación, podían implementarse diferentes operaciones analógicas; en gran medida, las características globales del circuito estaban determinadas solo por estos elementos de realimentación. De esta forma, el mismo amplificador era capaz de realizar diversas operaciones y el desarrollo gradual de los amplificadores operacionales dio logar al nacimiento de una nueva era en los conceptos de diseño de circuitos. Los primeros amplificadores operacionales usaban el componente básico de su tiempo: la válvula de vacío. El uso generalizado de los amplificadores operacionales no comenzó realmente hasta los años 60, cuando empezaron a aplicarse las técnicas de estado sólido al diseño de circuitos amplificadores operacionales, fabricándose módulos que realizaban la circuiteria interna del amplificador operacional mediante el


diseño discreto de estado sólido. Entonces, a mediados de los 60, se introdujeron los primeros amplificadores operacionales de circuito integrado. En unos pocos años los amplificadores operacionales integrados se convirtieron en una herramienta estándar de diseño, abarcando aplicaciones mucho más allá del ámbito original de los computadores analógicos Los amplificadores son elementos circuitales que amplifican. Es decir, que aumentan el valor de una variable, ya sea de voltaje o de corriente. Tiene una entrada y una salida y provocan que la salida sea parecida a la entrada, pero amplificada, aumentada por una constante. Puede ser por volts por volts, amper por amper, volts por amper o amper por volts dependiendo qué tipo de, de amplificador estemos usando. Tienen impedancia de entrada e impedancia de salida. Entonces son como un caso especial de una fuente dependiente.

AMPLIFICADORES OPERACIONALES


Los amplificadores operacionales? Son amplificadores de uso general que constituyen el bloque fundamental en circuitos integrados analógicos y requieren un concepto, que no hemos conocido todavía, que se llama realimentación negativa para funcionar correctamente. Pueden ser configurados de diversa forma mediante elementos externos y y permiten implementar amplificadores de ganancia arbitraria, uno escoge la ganancia, sumadores de voltaje, restadores de voltaje, integradores, derivadores y/o practicamente cualquier función lineal. Aquí en esta figura hay un amplificador operacional y de esta forma se ve un amplificador operacional en un chip.

Es un chip que tiene ocho pines y hay un pin que no se conecta y los otros siete pines sirven para algo en el amplificador. Por ejemplo tenemos que el pin dos corresponde a la entrada inversora, pin tres corresponde a la entrada no inversora, el pin seis corresponde a la salida, pin siete es la alimentación y el pin cuatro es la alimentación negativa.


Operacionales single, que viene uno operacional en un chip como se muestra en esta figura. Existen otros que son dual y que vienen dos amplificadores operacionales en un mismo chip compartiendo la la alimentaciรณn y existen otros que son quad que vienen cuatro amplificadores en un sรณlo chip. Un ejemplo de quad es el TL084. Y el dual El amplificador operacional ideal, es un amplificador de voltaje, que tiene una ganancia A muy grande, idealmente, infinita.

CUESTIONARIO


DISPOSITIVOS ELECTRONICOS


DIODOS Y LEDs

El diodo es un dispositivo semiconductor de dos terminales que solamente permite el paso de corriente en una dirección, es una válvula de corriente. Tiene dos terminales el ánodo y el cátodo y la corriente va de ánodo a cátodo y no puede ir en sentido contrario. Estas son dos diodos comerciales y vemos que este diodo tiene una parte aquí que es clara, esa parte clara corresponde a esta rayita en el símbolo del diodo. Entonces la corriente va en esa dirección en este caso, va en esa dirección y aquí también va en esa dirección no puede ir al revés.

El modelo básico del diodo es que cuando está en polarización directa la corriente fluye en esa dirección y cuando está en polarización inversa, o sea, cuando yo quiero que la corriente fluya en la otra dirección no hay corriente, la corriente es cero. Ese es el modelo más básico del diodo.

Un rectificador de onda completa es capaz de rectificar voltaje convertir voltaje AC en voltaje DC.


Viene AC aquí y aquí viene un transformador, este es el símbolo para un transformador, y aquí v sub s, va a ser una especie de fuente de voltaje totalmente AC. Entonces durante la mitad del ciclo, esta fuente produce un voltaje positivo y durante la otra mitad del ciclo produce un voltaje negativo. Este circuito de cuatro diodos se llama puente rectificador, y lo que hace es convertir esta señal totalmente alterna en una señal que tiene una componente continua. ¿Cómo lo hace? Cuando el voltaje de esta fuente AC está en su semiciclo positivo, es positiva la corriente va en esta dirección y se enfrenta a esta, a esta disyuntiva ¿Por dónde se va la corriente? Bueno, este diodo está polarizado en forma inversa por tanto la corriente no puede ir en esa dirección, la corriente se va por aquí y fluye a través de esta carga, de esta resistencia de carga en esa dirección.

Los leds son diodos también, todos sabemos leds algunos tenemos o tienen televisor led, el led es simplemente un televisor que tiene una iluminación que funciona en base a diodos emisores de luz. Un led es un diodo que emite luz. Entonces como dice la lámina, hay diodos que emiten luz cuando están polarizados de manera directa. Los led tienen gran eficiencia, tienen miles de usos y cada led emite luz en un solo color. Por supuesto hay muchas opciones, aquí hay una foto este led produce luz infrarroja que no es visible a los humanos, este led produce luz roja, este produce luz verde y este produce luz blanca. El color de la luz no siempre tiene que ver con el color del encapsulado, a veces el encapsulado es transparente y la luz del led puede ser roja o verde, por ejemplo. El voltaje que requiere un led para operar, no es cero coma siete voltios como en el caso de un diodo rectificador, sino que tiene que ver con el color de la luz que emite.

TRANSISTORES MOS


El MOSFET, o transistor de efecto de campo, es un dispositivo que tiene 3 terminales, compuerta, dren y fuente. Compuerta G, dren con D y fuente por S. La corriente entre dren y fuente, este es el símbolo, la corriente entre dren y fuente depende del voltaje entre compuerta y fuente. Entonces, este voltaje controla esta corriente. Entonces, el transistor es una especie de válvula de corriente, que es capaz de controlar la corriente en función de un voltaje. Así es como se ve un transistor discreto que uno puede comprar en una tienda electrónica. Con este transistor uno puede hacer amplificadores o conmutadores. Esta es la estructura del MOSFET.

El MOSFET tiene una longitud de canal L, tiene un ancho de canal W, tiene como dije, 3 terminales, hay un cuarto del que no vamos a hablar mucho. Fuente, compuerta y dren. Y los portadores de carga circulan entre dren y fuente en función de un voltaje que aparece entre compuerta y fuente. El MOSFET tiene 3 regiones de operación. La región de corte, la región activa y la región de tríodo. El corte del MOSFET no deja pasar corriente, se comporta como un circuito abierto. En tríodo, el MOSFET deja pasar mucha corriente. Se comporta como una especie de resistencia pequeña. Y en región activa, el MOSFET opera más o menos como una fuente de corriente controlada por voltaje y eso nos permite hacer amplificadores.


Utilizar un MOSFET como amplificador y es posible utilizar un MOSFET como conmutador. Para usarlo como amplificador, se requiere configurar de una cierta forma. Vamos a ver algunos ejemplos. Como amplificador, permite aumentar la amplitud de un voltaje en una corriente. Existen muchas configuraciones y variantes posibles. Basadas en 3, principalmente. Nosotros vamos a mirar estas dos, esta ni siquiera la vamos a mirar. Este es el amplificador de fuente común con degeneración de fuente, que es una de las configuraciones más típicas de amplificadores CMOS.

Existen MOSFETS que uno puede comprar en casas de electrónica. El típico que venden en Chile es el 2N7000, que se ve de esta forma. Funciona para señales pequeñas y aplicaciones de baja potencia. Existen otros que sirven como MOSFETS de potencia. Es importante mencionar que los MOSFETS son circuitos que son muy sensibles a la estática y si tenemos electricidad estática en el cuerpo, podemos quemar un MOSFET fácilmente. Entonces, lo que tenemos que hacer antes de manipular cualquier transistor de efecto de campo es descargarnos, por ejemplo, tocando algún pedazo metálico o grande. Como por ejemplo, el marco de una ventana o el marco de una puerta que sea metálica, o por ejemplo, las patas de una silla que sean metálicas. Los MOSFETS son circuitos que son muy sensibles a la estática y si tenemos electricidad estática en el cuerpo, podemos quemar un MOSFET fácilmente. Entonces, lo que tenemos que hacer antes de manipular cualquier transistor de efecto de campo es descargarnos, por ejemplo, tocando algún pedazo metálico o grande. Como por ejemplo, el marco de una ventana o el marco de una puerta que sea metálica, o por ejemplo, las patas de una silla que sean metálicas. Con eso nos descargamos y evitamos quemar el transistor


TRANSISTORES BJT

BJT, o transistor de unión bipolar, es un dispositivo que tiene tres terminales. Base colector y emisor. Este es el símbolo de BJT y viene en dos sabores. Se llama uno NPN, y el otro se llama PNP. Ya van a entender por qué. Y la gracia del transistor bipolar, parecido al mosfet en funcionamiento Es que la corriente entre dos terminales, en este caso entre colector y emisor es controlada por el voltaje entre base y emisor. Entonces es una especie de fuente de corriente controlada por voltaje. Y así es como se ve un BJT en la práctica. Es prácticamente igual por fuera a un mosfet. El BJT presenta una estructura NPN, que es la forma en que están dopados los semiconductores que constituyen el BJT. Entonces hay uno que es NPN y hay otro que es PNP. Y la única diferencia entre ambos, en la práctica, es que requieren voltaje de signos diferentes.


El símbolo de un NPN y este es el símbolo de un PNP. En el caso del NPN tenemos colector, base y emisor. El emisor es el terminal que tiene la flecha y la flecha va saliendo del transistor. La corriente va en esa dirección. En el caso del PNP tenemos emisor, base, colector. El emisor va en el terminal de la flecha y la corriente va en esta dirección. El BJT tiene cuatro regiones de operación pero en realidad son tres las más importantes que son las que vamos a ver ahora. Están la región de corte en que no hay corriente. Está la región activa en que el BJT se comporta como una fuente de corriente controlada por voltaje. Y está la región de saturación en que el BJT se comporta más o menos como un switch.

también es usado como interruptor Las curvas estáticas de un BJT se presentan aquí en esta figura. Tenemos voltaje colectoremisor por un lado, y tenemos corriente de colector. Y vemos que las curvas crecen rápidamente hasta que se establecen. Y cuando se establecen son constantes. Y cada una de estas curvas depende de V BE. Este es V BE pequeño, y este es V BE grande.


Bjt en protoboards

CUESTIONARIO



CUARTA SEMANA SENSORES Y ACTUADORES SENSORES

Que es un sensor es muy difícil de explicarlo mas se lo puede acceder a conocer es en la práctica, cada sensor opera bajo algún alguna forma diferente, alguna física diferente y por lo general usan algún transductor. Un transductor convierte entre dos tipos de energía diferente, por ejemplo, puede convertir de energía térmica a energía eléctrica o de energía lumínica a energía eléctrica o de energía mecánica a energía eléctrica y así tenemos diferentes tipos. Aquí hay varios ejemplos, termómetro electrónico, sensor de presión, infrarrojo, sensor de fuerza, ultrasónico, de aceleración etcétera. Qué salida me entrega un transductor? Generalmente, como un transductor es un dispositivo que convierte entre tipos de energías, la salida suele ser analógica y generalmente pequeña, limitada en voltaje y limitada en ancho de banda y muchas veces ese voltaje no es ni siquiera proporcional a la variable que queremos medir. Y suele además tener bastante ruido. Entonces, lo que hace es utilizar circuitos que acondicionan la señal antes de conectarlo al microcontrolador. Esos circuitos incluyen amplificadores, filtros y conversores de dato


¿Cómo conectamos entonces un sensor cualquiera a un Arduino?

Hay diferentes opciones dependiendo del tipo de salida del sensor, por ejemplo los sensores que tienen salida analógica van conectados, pueden ser conectados directamente al Arduino, o a través de algún circuito de almacenamiento de señales. Hay sensores que tienen salidas digitales de un bit. ¿Cómo es la conexión analógica? Empleamos un pin de entrada analógica en el Arduino, cierto que el Arduino tiene varios pines que pueden leer voltaje o entradas analógicas, usamos uno de esos pines. Hay que asegurarse la compatibilidad de voltajes e impedancias. Y puede que requiramos en algún momento, algún sistema de acondicionamiento de señal. Y podemos usar, por supuesto, el ADC interno de Arduino o usamos un ADC externo si es que la conversión no es suficiente o si es que la tasa de conversión no es la adecuada

EJEMPLO SENSOR DISTANCIA



ACTUADORES

Los actuadores son dispositivos controlados eléctricamente. O sea, un Arduino puede producir una señal que activa uno de estos dispositivos y que produce una acción en el mundo físico, no solo en el mundo electrónico, en el mundo abstracto donde funcionan electrones para allá y electrones para allá, no. Aquí el mundo físico recibe una acción. ¿Qué emite fotones? Una luz, cualquier LED, ¿cierto? Cualquier LED me indica algo a través de emisión de fotones. O incluso un sonido a través de un parlante o un buzzer. Los actuadores suelen requerir de la potencia de una fuente de alimentación. El Arduino puede alimentar algunos actuadoores de muy baja potencia, pero lo ideal es que cuando hay cierta potencia en el actuador mejor usamos una fuente de alimentación externa ¿Cómo comandamos un actuador? Depende, depende de qué actuador es. Por ejemplo, si la entrada esa señal analógica, que está bien definida con especificaciones claras, podemos usar ciertos circuitos. Si la entrada es digital de un solo bit, basta con que un bit de salida del Arduino comande esa entrada digital del actuador. O bien, puede haber un actuador que tenga una señal digital que respete algún estándar de la industria, como los que vamos a ver más adelante. ¿Cómo conectamos entonces un actuador al Arduino? De manera analógica, de manera digital o a través de algunos de los estándares,De manera analógica a través de algún DAC, que puede ser explícito o puede ser a través de PWM. Digital directo a través de un pin o digital a través de un estándar.


¿cuando podemos conectar un Arduino a un DAC? Podemos conectarle a un DAC externo, hay chips que hacen eso, chips que son muy sencillos de usar, y luego la salida del DAC va a un acondicionador de señales o un amplificador o un filtro, que maneje el transductor. Y con eso ya tenemos la conexión analógica del Arduino al transductor. Por supuesto toda esta cadena se asegura de que la compatibilidad de voltaje e impedancias sea la correcta. Y esto puede requerir, eventualmente, un acondicionamiento de señal que esta aquí, ¿cierto? Te damos ejemplos. Ejemplo de actuadores analógicos controlados por Arduino. Fíjense que estos ¿qué será esto? Rojo, verde, azul. Probablemente en un encapsulado con cuatro pines. Esto es un LED RGB, un LED que tiene tres LED internamente, con diferentes colores, y nosotros podemos encender cada uno de estos LEDs de manera independientemente, usando tres pines del Arduino. ¿Qué pasa si yo quiero cambiar el tono del color? Puedo encender más fuerte el rojo, por ejemplo, y más débil el verde y el azul. Por ejemplo, ¿cómo lo hago si yo no puedo controlar el voltaje de la salida? Porque el voltaje de aquí es cinco Volts o cero Volts, dependiendo si el pin está arriba o abajo. Lo que se hace generalmente es usar PWM.

EJEMPLO SENSOR DE DISTANCIA + BUZZER



Acondicionamiento y potencia tipo de acondicionamiento DAC por ejemplo, un conversor digital análogo o algún tipo de filtro o como veremos en este caso, un amplificador. Entonces pasamos a la siguiente lámina, donde mostramos ¿qué vamos a hacer exactamente? Vamos a manejar un parlante a través del arduino, controlando el volumen a través de un potenciómetro que nos lleva a una entrada analógica, entrada analógica en el pin cero analógico. Y la salida va a ser comandada mediante un pin digital, salida digital D11. Entonces generalmente necesitamos algún tipo de acondicionamiento para que el parlante suene fuerte, si es que no hacemos ningún tipo de acondicionamiento el parlante no va a sonar muy fuerte. Entonces lo que vamos a hacer en este ejemplo, es usar un transistor, un BJT polarizado con esta resistencia de 330 ohms que calculamos para que nos de una corriente razonable, para que nos encienda y apague este parlante. Entonces cuando esta salida está en uno este transistor está encendido, cuando el transistor está encendido conecta nueve voltios en los terminales de este parlante y luego cuando esta salida está en cero, este transistor está apagado desconecta los nueve voltios y el parlante no recibe potencia. el potenciómetro cuya salida que es este pin que va en el medio, que es este pin que va aquí entrada analógica cero ¿de acuerdo? Aquí va. a la entrada analógica cero y vemos el parlante conectado a través del transistor. Este va al colector del transistor y va directo a una pila externa de nueve voltios que permite que suene fuerte. Vamos entonces con nuestro ejemplo en la práctica. En esta lámina vemos el código en que tenemos la entrada analógica mapeada al pin cero analógico, luego tenemos la salida digital al pin 11 digital y lo que hacemos luego es leer la


entrada analógica que es la entrada que nos va a indicar la PWM que vamos a arrojar a ese parlante y luego allí pasamos por una función map, que lo que hace es mapear la entrada analógica que es de 10 bits, que va entre cero y dos elevado a 10 menos uno que sería 1023. Eso la mapeamos a la salida analógica PWM que va entre cero y dos elevado a ocho menos uno eso es 255. Entonces luego escribimos esta función para que el parlante sea manejado con una PWM según este valor. La PWM según vemos en la pantalla, la PWM va a tener un ciclo de trabajo pequeño en cuyo el parlante va a sonar muy despacio o puede tener un ciclo de trabajo muy grande, en cuyo caso el parlante también va a sonar muy despacio, porque va a estar casi continuamente en un cierto nivel de voltaje. Van a ser muy pequeños los cambios o puede tener un ciclo de trabajo 50% en cuyo caso el volumen va a ser máximo. Entonces nosotros esperamos que el volumen sea máximo cuando estamos en la mitad del rango de operación. Por su parte el arduino procesa esa salida y luego la convierte en una salida digital que enciende o apaga ese led. Todo este tiempo he estado hablando y no he activado nada, porque nosotros regulamos la salida para que actúe solamente cuando alguien aplaude, que produzca algún impulso.

EJEMPLO PARLANTE


EJEMPLO MICROFONO


CUESTIONARIO


PERIFERCOS DIGITALES Estandar de la comunicaicon

Los periféricos digitales tienen interfaz codificada de acuerdo a un estándar. Existen muchos estándares. Algunos son más usados en la industria. Otros, no tanto. Y los típicos para Arduinos son el UART, el SPI, y el I2C. Estos tienen que ser conectados a las entradas de los Arduinos. Que sean capaces de procesar ese estándar porque, si bien uno podría conectarlos a cualquier entrada, uno tendría que hacer su propia biblioteca de software que permita procesar esos datos. Sin embargo, ya hay bibliotecas que emplean, por ejemplo, algún puerto del Arduino que hay dedicado para eso. Por lo tanto, hay que tener ojo ahí y aquí hay ejemplos. Tenemos el UART, tenemos el I2C y el SPI con diferentes periféricos digitales, que pueden ser entradas o salidas. Y tenemos transmisión y recepción. Aquí tenemos un montón de pines que emiten bits o reciben bits, no sabemos todavía. Y luego aquí tenemos otros más. Parece que uno es clock, el otro es dato. Vamos a ver durante esta clase. Por ejemplo, está el UART o USART. Universal Synchronous Asynchronous Receiver/Transmiter. La S indica síncrono. Sin la S es asíncrono. Tiene un formato y tasa configurable de acuerdo a un estándar cuyos detalles no vamos a ver. Es dúplex. Podemos transmitir y recibir. Y el modo asíncrono puede prescindir de un reloj.

El Arduino va a escuchar, y va a tomar alguna acción. Luego, podemos pasar al siguiente sensor actuador, lo que sea, apagando este y encendiendo este. Y ahora lo que hable el Arduino va a ser escuchado solamente por el esclavo dos y ese es el que va a responder. Entonces este tipo de interfaz requiere tres pines mínimo y un pin extra por cada periférico. Estamos hablando de tres más N pines. Luego tenemos el I2C, o Two Wire Interface Synchronous Serial Protocol que es muy usado en la industria.


EJEMPLOS COMUNICACIÓN BLUETOOTH Entonces dentro de este esquema, estamos yendo a comunicaciones. Ya habíamos visto en clases anteriores cómo comunicarse con el computador para mandar datos que luego podemos leer en la computadora a través del monitor serial. Y eso lo hacemos con las funciones serial.begin, serial.print y serial.printline. Aquí escribimos un contenido y aquí escribimos otro contenido y luego saltamos de línea. Nunca hemos hablado mucho de por qué estas funciones llevan un punto entre medio, ese punto tiene que ver con la programación. Vamos a hablar un poco más de eso en la lámina que viene, donde hablaremos más en general sobre la comunicación serial del arduino. El puerto serial del arduino recibe datos por un pin Rx y los almacena en un buffer, entonces el arduino tiene un pin Rx que utiliza para estos propósitos y existe sólo un pin en el arduino, que por hardware, es decir, por la implementación misma, es capaz de recibir datos seriales. Y así también hay un pin que transmite. Y es un único pin capaz de transmitir por hardware. Existen montón de funciones que nos permiten leer lo que estamos recibiendo en Rx lo que se lee en buffer, luego una serie de caracteres que viene en un string y luego controlar la comunicación. Entonces, en general, las funciones se refieren al puerto serial que es un objeto dentro de los objetos que puede manejar el arduino, y cuando seguimos el objeto por un punto, y luego ponemos el nombre de una función, sabemos que ésta función actúa sobre este objeto.

El puerto serial del arduino recibe datos por un pin Rx y los almacena en un buffer, entonces el arduino tiene un pin Rx que utiliza para estos propósitos y existe sólo un pin en el arduino, que por hardware, es decir, por la implementación misma, es capaz de recibir datos seriales. Y así también hay un pin que transmite. Y es un único pin capaz de transmitir por hardware. Existen montón de funciones que nos permiten leer lo que estamos recibiendo en Rx lo que se lee en buffer, luego una serie de caracteres que viene en un string y luego controlar la comunicación. Entonces, en general, las funciones se refieren al puerto serial Que es un objeto dentro de los objetos que puede manejar el arduino, y cuando seguimos el objeto por un punto, y luego ponemos el nombre de una función, sabemos que ésta función actúa sobre este objeto. Esto es lo que se llama en programación, programación orientada a objetos. Y es parte del curso de programación Este módulo bluetooth, puede ser un módulo esclavo. Lo cual significa que si estamos conectando, por ejemplo, un celular que va a hacer las veces de maestro, a diferentes otros aparatos todos estos aparatos son esclavos porque se comunican únicamente con un maestro. Como un celular, por ejemplo, podemos tener aquí el módulo de audífono bluetooth que va a ser un esclavo solamente se comunica con éste celular. Luego tenemos otro módulo parlante y otro un robot, por ejemplo. Este robot solo se comunica con este celular


EJEMPLO BLUETHOON




CUESTIONARIO


MOTORES MOTOR DC

La primera clase es del motor DC, la segunda clase del servo, y la tercera clase de hackear un servo . Entonces, ¿qué es un motor DC de imanes permanentes? Es un dispositivo electromecánico que tiene dos partes. Una es el estator, que es lo que está afuera. Esto es lo que no gira. Y luego viene el rotor, que es la parte que gira. El estator tiene imanes permanentes. Internamente aquí hay unos imanes que son permanentes, que producen un campo magnético más o menos constante. Y luego viene un rotor que tiene electroimanes, de esos que uno puede encender o apagar. Y a través de los cables de conexión del motor, uno puede energizar el rotor. Solo un electroimán de los que hay en el rotor es energizado a la vez. La alimentación es mediante unas escobillas. Cuando yo energizo desde afuera, este par de electroimanes van a tratar de alinearse con el campo magnético externo producido por estos imanes permanentes. Entonces se va a empezar a mover, y cuando se mueva, rápidamente un par de escobillas van a desconectarse de la alimentación de este electroimán, y va a pasar al siguiente electroimán. Y así sucesivamente, esto va a empezar a girar rápidamente. El torque va a ser máximo cuando yo estoy deteniendo el eje. Si yo detengo el eje, el torque es el máximo que puede entregar. Y la velocidad máxima va a ser proporcional al voltaje de alimentación.


En un motor DC controlado por un arduino. El circuito es muy sencillo. Tiene un potenciómetro aquí, que regula la potencia. Y esa potencia generada de alguna forma por un control del arduino, que opera con una señal PWM sobre este transistor. Y este transistor, que es de potencia, está actuando sobre este motor DC. Y este circuito así como está, como lo ven, funciona impecablemente.

SERVO

¿qué es un servo RC? RC por radiocontrol. Esto es un estándar de facto. No es un estándar que alguien haya planeado alguna vez. De hecho había varios estándares en el pasado, y finalmente terminaron en este estándar que vamos a mostrar ahora. Es un dispositivo electromecánico, que se ve de esta forma, cuyo eje, que está aquí, gira. O sea, estas aspas giran, lentamente, pero con mucho torque, para establecerse en un ángulo indicado por un comando eléctrico. Entonces, esto va conectado con algún cable. De alguna forma, ya vamos a ver cómo, le indico qué posición quiero que tenga este servo. Entonces, estas, este motor, o este eje, más bien, es en torno al cual estos brazos giran. Estos brazos se van a mover para llegar a esa posición. ¿Qué partes tiene un servo? Muy descriptivamente, tiene un motor DC, como el que vimos en la clase anterior, controlado por un puente H con PWM. Pero eso no, uno no tiene acceso a esa parte. Eso está dentro del servo. Entonces el servo tiene algo de electrónica. Esa electrónica tiene puente H, tiene controlador.


Tiene una caja reductora, el servo. Tiene engranajes que hacen que el motor aumente su torque o aumente el torque del eje que estamos moviendo, reduciendo la velocidad. Por lo tanto, se mueven lentamente. Pero se mueven con alto torque, y eso lo hace muy apropiado para aplicaciones de robótica. Los servos de radiocontrol que tienen esta forma requieren una alimentación de 4.8 a 6 volts. No lo alimenten con más, a menos que quieran comprar otro servo después de que vean el suyo emitiendo humo mágico. No quieren ver eso. Y el servo es comandado por una señal PPM, que no es PWM, aunque es parecida. La señal PPM típica de los servos es la siguiente. Y digo típica porque puede cambiar un poco. Emitimos unos pulsos de 5 volts en base a tierra, entonces estamos en tierra, emitimos 5 volts, y luego bajamos. El periodo entre pulsos T es del orden de 20 milisegundos. Si esperan mucho más, el servo no va a funcionar. Si esperan mucho menos, el servo se va a enredar. QUE ES UN SWITCH que tiene una resistencia pull down, de pull up, perdón. Por lo tanto cada vez que apretemos este switch, este voltaje se va a ir a 0. Y aquí vemos el diagrama de conexiones, que es exactamente lo que acabamos de mostrar aquí. Y luego tenemos este potenciómetro que es el que nos va a regular la posición del servo. Entonces la idea del programa es que, cuando apretamos el botón, lo lleva, por ejemplo, a 90 grados, el servo. Y cuando apretamos de nuevo el botón, el servo queda comandado por la posición dada por el potenciómetro. Eso es lo que vamos a hacer, entonces, con el código. IMPORTANTE El arduino lo único que está haciendo es indicarle al servo en qué posición tiene que estar. El arduino no está alimentando al servo. En este caso sí, pero lo típico es alimentar al servo con otra fuente de voltaje. El arduino solo indica dónde tiene que moverse. Como habíamos visto, el servo tiene una caja reductora que permite aumentar el torque, por lo tanto el torque aquí es bastante considerable. A diferencia de un motor, donde el torque es mucho más pequeño, aquí el motor pasa por una caja reductora que hace que el torque sea considerable


MODIFICACION DEL SERVO ¿Qué pasa si nosotros artificialmente abrimos el servo, y desconectamos esto, desconectamos el acoplamiento entre el sensor y el eje, y movemos el sensor de posición que quedó desconectado mecánicamente del eje del servo a la mitad? Entonces el sensor de posición siempre va a creer que está en la mitad. En, justo, justo en la mitad de la posición del servo, en 90 grados. Entonces le decimos, al servo está en 90 grados, de un rango entre 0 y 180. Entonces la posición medida va a estar fija en 90 grados. Si la posición deseada fuera 90 grados, ¿Qué pasa ahora, si es que nosotros le damos una posición deseada de 100 grados? El error de posición va a ser de 10 grados, y el servo va a tratar de llegar a esos 10 grados. Por lo tanto el motor se va a empezar a mover hasta que el eje se mueva a esos 100 grados de posición deseada. Y el eje se va a mover y va a pasar los 100 grados, pero el sensor de posición está clavado en 90. Por lo tanto el eje nunca va a llegar a mover el sensor de posición y va a girar, y va girar, y va a girar eternamente.

HAY EL EJE DEL MOTORO ESTE MUEVE ENGRENAJES Y ELLOS MISMO VAN MOVIENDO Y ASI LLEGAN Tenemos que desconectar el acoplamiento del eje


con el sensor de posición y tenemos que cortar la protuberancia que impide que se mueva libremente en 360 grados. Entonces, tomamos este y cuidadosamente sacamos los diferentes engranajes que hay, no olvidando su posición por supuesto. Lo ideal es sacar fotos a este proceso. Fíjense que los tornillos son súper largos, esos son los tornillos que sacamos para desconectar la parte de arriba del servo. Sacamos la parte de arriba, la parte de abajo no se toca. Los demás, en este servo en partícular no fue necesario sacarlos pero hay otros servos donde hay que sacar todos. Porque no es posible remover el principal sin remover otros. Luego si se fijan aquí está el engranaje principal, que es este mismo, que tiene ahí una protuberancia. Esa protuberancia se le corta, yo se la corte con un alicate cortante y con eso el servo puede moverse libremente y actuar como una rueda, esencialmente. Luego de cortar esa protuberancia, lo que tenemos que hacer es mover. Este es el sensor de posición, esto de aquí va a un potenciómetro interno que le dice al servo en qué posición está. Y lo que tenemos que hacer es lograr que ese sensor indique siempre 90 grados. Entonces para hacer eso hay que moverlo hasta que, hay que moverlo y utilizar un programa, por ejemplo en Arduino, que le indique al servo que se quede en 90 grados. Y lo movemos hasta que el motor no se mueva, y cuando el motor no se mueve significa que el servo, que este sensor del servo está alineado con los 90 grados que nosotros queremos que tenga el servo. Luego cortamos esa conexión mecánica de alguna forma. Hay diferentes formas, por ejemplo hay algunos en que hay un eje aquí, que entra a presión en el eje del servo. Y lo que hacemos en ese caso es perforar aquí para que no entre a presión, sino que quede sin ningún tipo de ajuste.

CUESTIONARIO


DISEÑO MECATRONICO DISEÑO TOP-DOWN

El diseño mecatrónico incluye 3 partes: el diseño mecánico, el diseño electrónico y el software. Y estas 3 van todas comunicadas, todas se llevan a cabo en paralelo porque, en general, todas interactúan, ¿cierto?. El diseño mecánico no existe si no sé exactamente qué electrónica voy a poner. De la misma forma, el software no tiene sentido si no sé qué electrónica voy a tener. Entonces, todo se lleva en paralelo. Las especificaciones entre todas estas interactúan, usamos mucho CAD (computer aided design, o diseño asistido por computador). Y, si hacemos simulaciones, hasta ahorran mucho dinero.

Este es el esquema diseño top-down en general. Este esquema se refiere a lo siguiente: comenzamos definiendo especificaciones en general. Lo más arriba posible, en la análisis del problema. Con ello, dividimos en problema en bloques más pequeños y conquistamos cada uno de ellos de manera independiente. También tenemos que definir cómo interactúan los bloques, lo cual veremos en la próxima iii Proseguimos con el diseño de cada bloque: de esta forma, analizamos sus requerimientos, diseñamos a nivel de sistema; luego, el diagrama de bloques de bajo nivel; luego, implementación y pruebas, integramos, implementamos y, si funciona bien, ¿Cómo no se diseña? No se diseña bottom-up que es justamente lo contrario. Yo parto con un motor y digo, a ver, ¿para qué me puede servir este motor? Y lo pongo en algo y veo si se mueve y si no se mueve no entiendo por qué. Y eso es lo que no hacemos, lo que hacemos es top-


down. La parte del diseño mecánico típicamente se realiza mediante CAD. Por ejemplo, el programa que yo utilizo bastante que se llama Google Sketchup, que nos permite diseñar piezas mecánicas en general. Y, luego, podemos fabricarlas a mano, de acuerdo a las especificaciones de este software. O mediante CNC o incluso podemos llevarlo a impimir a una impresora 3D. Este es el caso de una impresa 3D, que están muy de moda, y uno puede imprimir piezas con esta impresora. El diseño electrónico pasa por definir bloques: controlador, sensores, actuadores e interfaz, tal como lo vimos durante el resto de este MOOC, luego diseñamos cada bloque por separado, y lo conectamos según lo planificado en consideraciones que nos permiten crecer por software; por ejemplo, podemos agregar, o dejar disponibles, más puertos de manera que en el futuro esos puertos son conectados y los puertos nos permiten controlarlos.

PROTOTIPO ELECTRONICO

Función movimiento Cuyo objetivo es mover las ruedas del robot en función del estado. Entonces lo que hace la función movimiento es actuar sobre el servo izquierdo y actuar sobre el servo derecho con el dato ángulo izquierdo y ángulo derecho. ¿Y cómo define el ángulo izquierdo y ángulo derecho? Según el estado. Si el estado es 0, lo cual significa que el robot está quieto, ambos ángulos están en 90 grados, ambas ruedas están quietas. Si el estado es 1, significa que el robot va a avanzar ¿A qué velocidad? Yo tengo que definir la velocidad. Entonces, lo que definimos aquí fué que avance a una velocidad de 30. La rueda izquierda se mueve a 30 con ángulo de menos 30 respecto de el reposo, 90. Y la rueda derecha se mueve a un ángulo de más 30, respecto del reposo, 90. ¿Por qué se mueven en sentidos diferentes? Porque están apuntando en sentidos diferentes. La rueda izquierda apunta hacia la izquierda, la rueda derecha apunta hacia la derecha. Si la rueda izquierda se mueve en una dirección, la derecha tiene que moverse en la otra dirección para que el robot avance.

¿y cómo se define el argumento estado que entra a la función movimiento? Según una serie de condiciones. De partida la primera condición es de que está o no apagado. Si es que estaba apagado, no hace nada. Si es que no estaba apagado va a medir la distancia y va a sonar, independientemente de en que modo de operación esté eso es lo que va a hacer con esta función que está aquí. Si es que está en modo automático, es decir, que no esté siendo controlado por el bluetooth, lo que va a hacer es seguir una serie de condiciones. Por ejemplo, si el estado es 1, lo cual significa que está andando hacia adelante, y ve un obstáculo a una cierta distancia, va a ejecutar una serie de comandos para esquivar el obstáculo o para retroceder si es que está muy cerca del obstáculo. En cambio, si es que se encuentra en modo manual, controlado por bluetooth, lo que va a hacer es avanzar, retroceder, etcétera, exactamente o directamente según el estado que yo quiero enviado por el comando de bluetooth. Por ejemplo, si el comando de bluetooth es W, eso significa avanzar. Por lo tanto cambia el estado a 1. Si el


comando de bluetooth significa es A, significa virar izquierda, cambia a estado 3 y así sucesivamente. Y con eso se cierra el loop.

PROTOTIPO MECANICO Generalmente hacemos el prototipo mecánico mediante un CAD, configuration design o diseño asistido por computador. Que facilita el diseño de manera increíble. No es necesario que uno construya el dispositivo para ver si es que las piezas encajan. Si es que esto encaja con el servo, etcétera. Uno puede visualizarlo inmediatamente. Toma muy poco tiempo. Existen muchos software que hacen diseño mecánico. Google Sketchup es gratis, para instituciones académicas en general. Y nos permite grabar en diferentes formatos.

Resultado del diseño del robot en Sketchup.

Son diferentes partes mecánicas, que las diseñamos para que fueran fabricadas en madera, de tres milímetros de espesor que pudieran alojar dos servos que hacen las veces de ruedas, que pudiera tener esta rueda que gira libremente, para que pudiera moverse hacia la derecha e izquierda. Que pudiera alojar un arduino arriba, que pudiera alojar un pack de baterías atrás, y que adelante, bueno no está puesto, pero van a ir un par de sensores de distancia. ¿Cómo se fabrica esto? Existen muchas formas de fabricarlo, podemos fabricarlo a mano, directamente con una sierra, con mucho cuidado o usando una máquina CNC que fue el caso que adoptamos nosotros. Tomamos nuestro diseño, lo llevamos a una máquina CNC. Esta es una foto de cuando fue construido.


ESTE PROYECTO LO VAMOS A REALIZAR EN CLASE EN GRUPO Y VAMOS A PONER EN PRACTICA LOS DATOS O CONOCIMIENTOS QUE SE ADQUIRIDO COMO TANTO CON LA ING. LUCIA SANDOVAL E EL CURO EN ONLINE CODIGO DEL ROBOT /* El robot (Bluetooth)! */ /* En esta experiencia vamos a juntar lo aprendido en las experiencias * anteriores sobre el uso de motores servo, sensor de distancia y buzzers * con el objetivo de construir un pequeño robot que controlaremos con control * remoto (bluetooth) */ /* Se cargan las librerias necesarias */ #include <SoftwareSerial.h> //Librer+ia para asignar otros puertos seriales #include <Servo.h> //Para control de los motores servo /* Se definen los pines que vamos a usar */ int buzzPin = 8; // Pin del buzzer int button_pin = 7; // Pin donde se conecta el botón


int led_pin = 13; // Pin que avisarรก estados int sensorizqPin = 0; // Entrada analogica que lee al sensor de distancia ("ojo izquierdo") int sensorderPin = 1; // Entrada analogica que lee al sensor de distancia ("ojo derecho") int servoizqPin = 9; // Pin del servo izquierdo int servoderPin = 6; // Pin del servo derecho /* Se declaran variables para el manejo del robot */ // Variables que se envian a los servo para el movimiento int ang_izq = 90; int ang_der = 90; /* Variable para definir la direccion de movimiento. 0 -> Reposo 1 -> Avanzar 2 -> Retroceder 3 -> Virar izquierda 4 -> Virar derecha */ int estado = 0; boolean apagar = true; // Variable para controlar encendido y apagado (condiciรณn inicial) boolean modoauto = false; // Variable para controlar modo de funcionamiento char comando = 0; // Variable para almacenar el comando recibido por bluetooth


int button_read; // Variable Botรณn apagado/encendido // Mediciones del sensor int sensorizqRead; // Variable que almacena el voltaje leido en el sensor de la izquierda int sensorderRead; // Variable que almacena el voltaje leido en el sensor de la izquierda int dist_izq; // Variable para la distancia medida por el sensor de la izquierda int dist_der; // Variable para la distancia medida por el sensor de la derecha // Tolerancias de distancia. Las usaremos para decidir que hace el robot int tolerancia_sup = 18; int tolerancia_inf = 8; // Variables para manejo de tiempo. int intervalo; // Variable auxiliar (para comparar tiempos de sonido de buzzer) unsigned long tiempo_previo = 0; // Variable para medir tiempo (inicial) unsigned long tiempo_actual; //Variable para medir tiempo de ejecuciรณn del programa ( millis() ) // Creamos dos objetos de tipo Servo para manejar las ruedas Servo miServo_izq; // Servo de la rueda izquierda Servo miServo_der; // Servo de la rueda derecha // Creamos un puerto serial por software en los pines 4 y 2. SoftwareSerial BT1(4, 2); // RX, TX void setup() { miServo_izq.attach(servoizqPin); miServo_der.attach(servoderPin); pinMode(buzzPin, OUTPUT);


pinMode(led_pin, OUTPUT); pinMode(button_pin, INPUT); pinMode(servoizqPin, OUTPUT); pinMode(servoderPin, OUTPUT); BT1.begin(9600); //Comunicación con el módulo bluetooth /* Para efectos de este robot, el módulo se encuentra previamente configurado */ /* Debe contarse con un celular con una aplicación compatible, como Bluetooth SPP disponible * para Android, muy fácil e intuitiva de usar. Gran herramienta */ } void loop() { if (BT1.available()) { //Revisa si hay información desde el bluetooth. Funciona para el encendido inicial via bluetooth (espera un retorno de línea) comando = BT1.read(); BT1.flush(); } button_read = digitalRead(button_pin); //Leemos al botón // revisar si prende, apaga o cambia modo con BT o boton. // Actualiza estado de operacion // if (comando == 'o' || button_read == LOW) { //Apaga/Enciende apagar = !apagar; estado = 0;


comando = 0; digitalWrite(led_pin, !apagar); //Robot encendido, enciende luz tone(buzzPin, 2000,20); delay(200); //Delay para que notemos el cambio de modo } else if (comando == 'm') { //Cambio de modo auto/manual modoauto = !modoauto; estado = 0; comando = 0; tone(buzzPin, 2000,20); delay(200); //Delay para que notemos el cambio de modo } movimiento(estado); if (apagar == false) { /* Se ejecuta si el robot está encendido -> apagar = false */ // Mide distancia y suena Dist_Sensor_Buzzer(); /* ***Servos*** */ /* Modo auto */ if (modoauto == true) { // if .... // state = 1; // Valores utilizados fueron encontrados de forma empírica (acá usamos los parámetros de tolerancia)


// Estos parámetros se pueden variar para hacer que el robot haga acciones a determinadas distancias // Como tenemos 3 situaciones: avanzar, viraje y retroceder y 2 sensores de distancia, tenemos 3^2 posibles // situaciones que pueden ocurrir (con el conector AND(&&)). // Comentaremos lo que hará el Robot en cada una (lo que sería más lógico). // Se pueden agregar más condiciones si se quiere mejorar el algoritmo de movimiento(IA) // Con este simple algoritmo estamos haciendo que el robot busque siempre pasar obstáculos y buscar la zona que le permita avanzar mejor y más cómodo /* Condiciones de viraje de Servos */ if (dist_izq > tolerancia_sup && dist_der > tolerancia_sup) { // avanzar estado = 1; } else { if (dist_izq < tolerancia_inf || dist_der < tolerancia_inf) { //retrocede estado = 2; } else { if (dist_izq > dist_der) { //dobla izq estado = 3; movimiento(estado);


delay(random(500,1000)); } else { //dobla der estado = 4; movimiento(estado); delay(random(300,1000)); } } } delay(200); } /* Modo manual controlado por Bluetooth */ else { // Modo manual /* Definimos las letras siguientes por gusto*/ /* Si se cambian, no olvidar cambiarlas en la aplicaciรณn que controla al robot*/ if (comando == 'w') { //avanzar estado = 1; } else if (comando == 'a') { //Virar izquierda estado = 3;


} else if (comando == 'd') { //Virar derecha estado = 4; } else if (comando == 's') { //retrocede estado = 2; } else if (comando == 'f') { //Reposo estado = 0; } } } } /* Funciones utilizadas */ void movimiento(int estado){ if (estado == 0){ ang_izq = 90; ang_der = 90; } else if (estado == 1){


ang_izq = 60; ang_der = 120; } else if (estado == 2){ ang_izq = 110; ang_der = 70; } else if (estado == 3){ ang_izq = 100; ang_der = 100; } else if (estado == 4){ ang_izq = 80; ang_der = 80; } miServo_izq.write(ang_izq); miServo_der.write(ang_der); } /* Funcion que ejecuta la medicion de distancia y el sonido del buzzer. Es lo mismo que se hizo en un ejemplo anterior, pero ahora con dos sensores. */


void Dist_Sensor_Buzzer() { sensorizqRead = analogRead(sensorizqPin); //Lectura de la señal del sensor de la izquierda sensorderRead = analogRead(sensorderPin); //Lectura de la señal del sensor de la derecha dist_izq = pow(3027.4 / sensorizqRead, 1.2134); //Transformamos a distancia lo leído dist_der = pow(3027.4 / sensorderRead, 1.2134); //Transformamos a distancia lo leído tiempo_actual = millis(); //Tiempo de ejecución del programa intervalo = 18 * (dist_izq + dist_der) - 280 ; //Nuestra función para pitidos del buzzer según distancia /* Buzzer */ if (intervalo <= 50) { //Condición para evitar números negativos y el siseo del buzzer en pequeñas distancias intervalo = 50; } if (intervalo > 2500) { //Condición para evitar largos períodos de tiempo entre sonidos intervalo = 2500; } if (tiempo_actual - tiempo_previo >= intervalo) { //Controlar la rapidez de los pitidos del buzzer tiempo_previo = tiempo_actual; tone(buzzPin, 4000, 20); delay(20); /* Es necesario esperar con un delay debido a que la funcion servo interfiere con el funcionamiento


de la funcion tone. Esto se debe a que ambas usan el mismo timer, que es un recurso del microprocesador. */ } }

CUESTIONARIO


FINALIZACION




Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.