Actividad 3. PWM, servo y relay
Temas
Precauciones
Instrucciones generales
Lea completamente todos los pasos de la guía de esta actividad
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”
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)
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.
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)
Portada (curso, semestre, año, fecha, número y nombre de práctica, integrantes). 2%
Bitácora de trabajo describiendo el resultado de todos los pasos seguidos de la guía incluyendo dificultades y/o situaciones inesperadas. 30%
Capturas o fotografías de puntos importantes realizadas durante la actividad (el circuito ensamblado, resultados observables en el osciloscopio, etc) 20%
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)
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%
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
#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
Parte 4. Relay
Referencias