Laboratorio: I2C y 1-Wire

Sitio: Facultad de Ingeniería U.Na.M.
Curso: Comunicaciones 2 ET544
Libro: Laboratorio: I2C y 1-Wire
Imprimido por: Invitado
Día: miércoles, 4 de diciembre de 2024, 22:58

1. Introducción

Marco teórico

Cuando dos dispositivos, conectados por un bus a puertos push-pull, desean transmitir simultáneamente símbolos opuestos se producirá una situación de baja impedancia entre Vcc y masa. Esto puede acarrear desde un reinicio de los dispositivos hasta el daño de los puertos o fuente de alimentación.

(Application Note Microchip Technology Inc. AN2658)

Por eso en protocolos en los que más de un dispositivo puede transmitir por el mismo bus (half-duplex) se suele utilizar el mecanismo de Open-drain / open-collector. En este tipo de configuración los dispositivos solo pueden poner el bus a 0. En el estado de reposo el bus toma un valor de Vcc a través de resistores pull-up. internos del dispositivo.

Si el bus presenta una capacitancia significativa los transitorios hasta que se establezca el nivel alto pueden perjudicar la transmisión.

Objetivo

Visualizar las tramas correspondientes a los protocolos serie I2C y 1-Wire, y comprender el
efecto de la longitud del conductor sobre la calidad de la señal.

Requisitos

  • Arduino Mega 2560
  • Sensor TMP101; MAX31820, DS18(B)20 u otro dispositivo 1-wire.
  • Arduino IDE
  • Librería para DS18B20 y TMP101
  • Osciloscopio RIGOL DS1102E / OWON DS 5032E o similar
  • Medidor RLC GWINSTEK.
  • Varios metros de cable par trenzado

Aclaración

En las versiones más nuevas de IDE se pueden instalar las librerías en cuestión directamente desde el administrador de librerías



2. I2C

Procedimiento


  1. Conectar el sensor de temperatura TMP101 a la placa Arduino Mega 2560 como indica la figura. Utilice cables de no más de 20 cm.




  2. Conectar la placa Arduino Mega 2560 a la PC/Notebook mediante un cable USB.
  3. Desde la IDE de Arduino cargar el Sketch ejemplo Multiplesensor.
  4. Utilizar la clase TI_TMP101 según se indica en la bibliografía.
  5. Configurar la dirección: 4A si el pin addr está conectado a vcc.
  6. Verificar en el Monitor Serial si el sensor TMP101 responde al llamado de alguna dirección.
    Registrar la dirección del TMP101.
  7. En la IDE de Arduino editar el Sketch para el TMP101.
  8. Cargar el programa y observar en el Monitor Serial si el sensor responde.
  9. Con el osciloscopio observar en un canal SDA y con el otro SCL.
  10. Configurar el disparo (trigger) en modo barrido único.
  11. Asegúrese de que el nivel de trigger esté entre 1 y 3 V.
  12. Utilizar “memoria profunda” para la captura con el osciloscopio.
  13. Fijar la escala de tiempo en 2 ms por división. Con esto nos aseguramos de capturar toda la trama.

Actividades

  1.  Compruebe la legibilidad de la forma de onda de la trama, midiendo el tiempo de subida (entre el 20 y el 80 %).
  2. Repita la experiencia utilizando cables de bus de 1 m, 2 m, 5 m y 10 m.
  3. Con los datos obtenidos confeccione una tabla y grafique.
  4. Instale resistores de pull-up de 4,7 kΩ.
  5. Reduzca gradualmente el valor de las resistores hasta 2 kΩ, midiendo el tiempo de subida.
  6. Con los datos obtenidos confeccione una tabla y grafique.
  7. Mida la capacidad del bus con un puente RLC.

3. 1-Wire

Llevar a cabo una actividad similar para el protocolo 1-wire. Utilizar un sensor de temperatura ambiente MAX31820 o DS18b20.

  1. Conecte el sensor DS18b20 al Arduino Mega 2560 teniendo en cuenta la distribución de terminales del sensor. Conecte el terminal DQ al pin 2. Utilice cables de no más de 20 cm.
  2. Conectar la placa Arduino Mega 2560 a la PC/Notebook mediante un cable USB.
  3. Utilizar el sketch multiple que se ofrece como ejemplo de la librería ds18b20
  4. Capturar y analizar la trama con el osciloscopio.
  5. Ensaye la comunicación con distintas longitudes de par trenzado, con y sin resistor de pull-up.

4. Cuestionario

  1. ¿Por qué la longitud de los cables afecta la integridad de la trama?
  2. ¿qué parámetro físico es el que más influye en la transmisión por par trenzado?
  3. ¿De qué modo los resistores pull-up mejoran el comportamiento del sistema?
  4. ¿por qué no puedo instalar resistores pull-up de menos de 2 kΩ?
  5. ¿por qué no puedo aumentar el espesor del aislante del cable?
  6. ¿qué otra característica constructiva puedo alterar en el par trenzado para mejorar las prestaciones del mismo?