Actividad 3. PWM, servo y relay

Temas

  • Hardware PWM
  • Servo signal
  • Relays (acople, cuidados)

Precauciones

  • Antes de conectar el arduino y sus pines a un circuito externo (especialmente señales que entran al arduino) el Arduino debe haber sido programado al menos una vez inicialmente antes de ser conectado a este circuito.

Instrucciones generales

  1. Lea completamente todos los pasos de la guía de esta actividad
  2. Anote, responda y agregue al reporte todas las preguntas e instrucciones que se realicen en la guía. Dichas preguntas e instrucciones se pueden denotar al estar enumeradas con el siguiente formato: “1) Anote el puerto asignado a su dispositivo Arduino”
  3. Debe realizar una descripción de lo logrado a lo largo de la actividad, incluyendo las dificultades que se presentaron. Una bitácora de lo sucedido es lo mejor. (Anote no solo lo que usted ejecutó sino también el resultado de lo que ejecuta)
  4. El reporte debe ser entregado mediante correo electrónico al asistente con copia al profesor del curso mediante correo electrónico. Debe utilizar formato PDF.
  5. El correo electrónico del reporte debe llevar el siguiente formato en el “subject”: “IE0624 - Reporte N”, donde N es el número de la actividad realizada.

Evaluación

El reporte debe incluir las siguientes secciones (se incluye el porcentaje de nota de cada sección)

  1. Portada (curso, semestre, año, fecha, número y nombre de práctica, integrantes). 2%
  2. Bitácora de trabajo describiendo el resultado de todos los pasos seguidos de la guía incluyendo dificultades y/o situaciones inesperadas. 30%
  3. Capturas o fotografías de puntos importantes realizadas durante la actividad (el circuito ensamblado, resultados observables en el osciloscopio, etc) 20%
  4. Respuestas al cuestionario de la guía. 20% (deben estar claramente identificadas con el número de pregunta, sin confundirse con otra númeración en el reporte)
  5. Todo el código fuente de todos los programas utilizados a lo largo de la actividad. Debe agregar al inicio del código una descripción sobre dicho código (a qué parte de la práctica corresponde, la función que cumple dicho código). 20%
  6. Referencias utilizadas en caso de acceder a alguna fuente de información de Internet o bibliográfica durante la realización de la actividad. 8%

Guía de laboratorio

Parte 1. PWM

  • Conecte un LED con una resistencia de 1k en el pin D9 del arduino
  • Ejecute el siguiente código
  #define ledPin 13
  #define pwmout 9 
 
  void setup()
  {
    pinMode(ledPin, OUTPUT);
    pinMode(pwmout, OUTPUT);
 
    // initialize timer1  
    noInterrupts();           // disable all interrupts
    TCCR1A = 0;
    TCCR1B = 0;
    TCCR1A = (1 << COM1A0) | (1 << COM1A1)  | (1 << WGM10) | (1 << WGM11);
    TCCR1B = (1 << WGM12);
    TCNT1  = 0;
 
    OCR1A = 511;            // compare match register
    TCCR1B |= (1 << CS12) | (1<< CS10); 
    TIMSK1 |= (1 << OCIE1A);  // enable timer compare interrupt
    TIMSK1 |= (1 << TOIE1);   // enable timer overflow interrupt
    interrupts();             // enable all interrupts
  }
 
  ISR(TIMER1_COMPA_vect)          // timer compare interrupt service routine
  {
    digitalWrite(ledPin, digitalRead(ledPin) ^ 1);   // toggle LED pin
  }
 
  ISR(TIMER1_OVF_vect)        // interrupt service routine that wraps a user   defined function supplied by attachInterrupt
  {
    TCNT1 = 0;            // preload timer
    digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
  }
 
  void loop()
  {
 
  }
  • 1) Qué modo de operación está utilizando el timer 1?
  • 2) Cuál es el ciclo de trabajo del LED en el programa arriba?
  • Cambie el programa de arriba para configurar el PWM a 10%. Observe, corrobore y anote la salida con un osciloscopio.
  • Cambie el programa de arriba para configurar el PWM a 90%. Observe, corrobore y anote la salida con un osciloscopio.
  • Cambie el programa para que utilice PWM phase and frequency correct
  • Cambie el programa para que utilice el comando analogWrite() de arduino

Parte 2. Servo

  • Configure el programa anterior para garantizar un funcionamiento correcto del servo (Cumplir con los requerimientos de temporización de la señal de un servo) (No puede utilizar analogWrite)
  • Cambie el valor del PWM de 0% a 100% cada 2 segundos (desde la función loop). Observe el servo moverse del máximo al mínimo de posición. Capture ambos casos con el osciloscopio.

Parte 3. Serial

  • Realice un programa que reciba datos del puerto serial y los vuelva a enviar de vuelta a la PC. En la PC utilice el comando minicom

Parte 4. Relay

  • Reciba un comando de ON y otro de OFF del puerto serial desde minicom y con estos encienda y apague un relay conectado al pin D6. El LED integrado del Arduino debe seguir el estado del relay

Referencias

  • teaching/ie0624/actividad_pwm_servo_relay.txt
  • Last modified: 2018/08/15 22:37
  • by dgarcia