1 / 69

Perifericos

Perifericos. Armando Mtz.R . ITNL Microcontroladores armando2k@gmail.com. Referencia de programación. • Se requiere (forzosamente) una función setup y una función loop • Setup es la preparación • Loop es la ejecución. Referencia de programación.

hedia
Download Presentation

Perifericos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Perifericos Armando Mtz.R. ITNL Microcontroladores armando2k@gmail.com

  2. Referencia de programación • • Se requiere (forzosamente) una función • setup y una función loop • • Setup es la preparación • • Loop es la ejecución

  3. Referencia de programación

  4. Además pueden hacerse las siguientes asignaciones: x ++. Lo mismo que x = x + 1. x --. Lo mismo que x = x - 1, ordecrements x by -1. x += y. Lo mismo que x = x + y, orincrements x by +y. x -= y. Lo mismo que x = x - y . x *= y. Lo mismo que x = x * y. x /= y. Lo mismo que x = x / y. Para su utilización en sentencias condicionales u otras funciones Arduino permite utilizar los siguientes operadores de comparación: x == y. x es igual a y. x != y. x no es igual a y. x < y, x > y, x <= y, x >= y. Y los siguientes operadores lógicos: Y lógico: if (x > 0 &#38;&#38; x < 5). Cierto si las dos expresiones lo son. O lógico: if (x > 0 || y > 0). Cierto si alguna expresión lo es. NO lógico: if (!x > 0). Cierto si la expresión es falsa.

  5. Modulación de ancho de pulso

  6. Programando pwm

  7. Ejemplo de diseño

  8. Ejemplo de diseño Usaremos el transistor 2N3904 (puede ser el 2N2222) deseamos encender 5 LED desde el arduino, de la hoja de datos del 2N3904 datasheet tenemos que: ICmax = 200mA (para propositos practicos usar solo la mitad), hFE= 100 to 300, VBEsaturate = 0.65 Volt, VCEsaturate = 0.2 Volt Para la mayoria de los transistores el VBE= 0.7 Volt (saturación) and VCE= 0 Volt. Usando 5 volt power supply (VCC) y asumiendo queVLED= 2 Volt, y corriente de 15 mA, hacemos los calculos siguientes:

  9. Diseño IC= 5 x 15 mA =75mA (0.075 A), Estacorriente la manejarabien el transistor 2N3904, asi: RC = (VCC – VLED) / IC= (5 – 2) / 0.075 =40 Ohm La potenciaquedisipara la resistencia RC es; P = (VCC – VLED) x IC= (5 – 2) x 0.075 =0.225 Watt Buscamos el valor comercial mas cercano, 47 Ohm,0.5 watt (usualmenteseleccionamospotencia del doblerequerida). Asumiendominimo 100 dehFE, la minima corrienterequeridapor la base sera: IC= hFEx IBIB= IC/ hFE= 0.075 / 100 =0.00075 A (0.75 mA)

  10. Diseño Estacorriente la manejaperfectamente la salida del microcontrolador, asi: RB = (VPORT – VBE) / IB Asumiendoque el minimovoltajepromedio(VPORT) con un “1”logicoes 4.2 volt RB = (4.2 – 0.7) / 0.00075 =4666.66 Ohm Y supotenciadisipada: P = (VPORT – VBE) x IB= (4.2 – 0.7) x 0.00075 =0.002625 Watt asi, usamos 4K7 Ohm,0.25W

  11. Otra alternativa.. Cuando requerimos mas de una salida

  12. Diseño simplificado

  13. Conexión con 2N2222

  14. Motores de corriente continua con escobillas Requieren de conmutadores rotativos para generar el campo magnético adecuado La velocidad depende generalmente de la tensión aplicada

  15. Inversión del sentido de giro y frenado en motores c.d. • Para invertir sentido el giro hay que invertir la polaridad • El motor puede tener frenado pasivo, reostático o regenerativo • Al desconectar un motor, colapsa el campo magnético de las bobinas y se produce un pico de tensión de polaridad opuesta • No debe cambiarse bruscamente el sentido de giro de un motor cargado, es mejor frenarlo primero

  16. El puente en H • Consiste en 4 interruptores conectados en parejas • Permite controlar la velocidad, invertir el giro y frenar el motor

  17. Puente en H de nuestro robot: el L293D Existen varios chips que pueden suministrar más o menos potencia, a la vez de tener otras características similares > Consta de dos puentes en H completos (4 medios puentes) > Incluye diodos para absorber la fcem al desconectar > Hasta 600mA continuos, 1.2A de pico > Transistores bipolares

  18. Uso del L293D • Consta de 4 entradas y 4 salidas + 2 ENABLE • Cada ENABLE activa uno de los puentes • Las entradas controlan las salidas según la siguiente tabla:

  19. Esquema de conexión

  20. Ejemplo con Arduino

  21. Ejemplo con Arduino: código • La función AnalogWrite de arduino no da valores puramente analógicos, sino PWM. • Vamos a aprovecharlo para controlar nuestro L293D. • Lo primero será activar el ENABLE del puente que vamos a utilizar • Después, pondremos una entrada a HIGH o a LOW y haremos PWM en la otra. Conmutaremos las funciones para cambiar de sentido de giro.

  22. Ejemplo en Arduino

  23. Ejemplo en Arduino Robot Movil Proximamente

  24. Simulando sensor

  25. A/D, lectura de potenciometro

  26. Entrada a partir de un potenciómetro En el siguiente código se emplea arduino para controlar la frecuencia de parpadeo de un LED. intpotPin = 0; // Pin de entrada para el potenciómetro intledPin = 13; // Pin de salida para el LED voidsetup() { pinMode(ledPin, OUTPUT); // Declara el pin del LED como de salida} voidloop() { digitalWrite(ledPin, HIGH); // Enciende el LED delay(analogRead(potPin));// Lee el valor del potenciómetro digitalWrite(ledPin, LOW); // Apaga el LED delay(analogRead(potPin)); }

  27. Sensores de Temperatura • ProporcionaVoutpropocional a la temperatura de medioambiente. • Concepto : cuando la temperaturaaumenta, el voltaje a traves de union p-n incrementa a unarazónconocida. (en estecasoVbe) • Voltage at Anlg.Pinin Volts = (lectura del ADC) * (5/1024)V • Temp. en gradoscentigrados= [(analog voltage in V) – 0.5] * 100

  28. Antes: de escribir codigo… • Revisar: • Como opera el LM35? • Leer datasheet del lm35. • Como conectarlo al arduino? • Que referencia voy a utilizar? • Que tipos de “Ruidos” estan presentes? • Que significa la entrada analogica?

  29. Datasheet of LM35

  30. Circuito y conexiones

  31. Codigo de sensor Temp. • Connect lm35 as per circuit diagram in 7. Temp Sensor folder. • UsaremosAREF as 3.3V para reducir ruido del LM35 y lograr lecturas mas exactas. • Cargar el codigo al Arduino y su salida se observara en el monitor serial.

  32. Escribir el codigo • Decida cual pin asignaras como variable global • En setup() { }, inicialize el puerto serial a9600 baud para envi o de datos a la PC. • En loop() { }, toma lectura analogica del pin y se almacena en variable tempfloat. • Multiplica la lectura por 5.0 y dividela entre 1024 para obtener la lectura del puerto . Almacenar esta variable (float variable) llamada volt. • Imprimir este valor en el puerto serie (hacia la PC).

  33. Escribir codigo • Para obtener la temperatura e grados centigrados, realiza la operación ; (volt – 0.5) * 100 • Envia el dato al puerto serie. • Para obtener grados fahrenheight, mult iplicar por 9 y dividir por 5 sumandole 32 para tener asi el resultado. Enviandolo al puerto serie.

  34. Mejoras? • Usa 3.3V comoreferenciaparaincrementarsuresolución en el datasheet mencionaobtendremos : lm35 ~ 10mV. • Soldar en circuitoimpresoparaevitarcambios de resistencia del protoboard. • No humedecerlo o hacercontacto con el agua. • Construyaunacubierta impermeable si la aplicaciónes en agua

  35. LDR fotoresistencia • Un LDR esunaresistenciaquevaria con la luz • Asi la intensidad de luz se convierte en un valor de resistenciaproporcional. • Tambienllamadaphotoceldaporqueconvierte la energialuminica a unaseñalelectrica. • Utilparaencender o apagardispositivos en función de obscuridad o luz.

  36. Como conectar un LDR • LDR esbasicamenteunaresistencia variable. • Necesitarasunaresistencia pull-down paraevitar un corto en el pin del arduino. • El circuitoes GND-10kohn-LDR-VCC. • Este circuitotrabajara entre 0-5VSi la luzesmuyintensa, se satura a 5V. • Colocando un potenciometro de 10k (en lugar de la resistenciafija) , permite regular la posiblesaturación del LDR.

  37. Valores tipicos

  38. Conexiones con arduino

  39. Escribiendo codigo! • Decide que pin usar coo entrada del LDR. • En setup(){ }, inicializapuertoserie a 9600 bauds. • En loop(){ }, primerohacer un analogueread(pin) y almacenarlo en variable intllamada reading. • Este valor representa la iluminacionenviadapor el LDR. • Enviardato al Serial Port. • Insertar un retardoparaque el ADC se estabilize.

  40. Aplicación 1 • Creaumbral y determina la brillantesdetectadapor el LDR y enviadapor el puertoserie. if (reading < 10) { Serial.println(" - Obscuro"); } else if (reading < 200) { Serial.println(" - Tenue"); } else if (reading < 500) { Serial.println(" - brillante"); } else if (reading < 800) { Serial.println(" – muybrillante"); } else { Serial.println(" - saturado"); }

  41. Aplicación 2 tarea • Tome unalecturasanalogicasutilizandocodigo del ejemplo blink, elabora un control on-off queencienda el led 13 cuando la luz se inferior a luztenue (<200).

  42. Otra Aplicación • Prueba la respuesta del LDR con 3 diferentes Leds; rojo, verde y azul. • Enciende el Led Rojo y observa el valor del LDR. • Enciende el Led Verde y observa el valor del LDR. • Enciende el Led Azul y observa el valor del LDR. • Con estos 3 valores podras determinar el color de la luz.

  43. Registrando datos de sensor en PC • Tomar lecturas de un sensor y graficarlas en una PC en labor sencilla usando un Arduino. • Envia datos continuamente por el puerto serie . • Los datos los recibe la Pc y los grafica con cualquier programa.

More Related