Bird
Raised Fist0
Embedded Cprogramming~5 mins

Duty cycle control for motor/LED in Embedded C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a duty cycle in the context of controlling a motor or LED?
Duty cycle is the percentage of time a signal is ON compared to the total time of one cycle. It controls how much power the motor or LED receives.
Click to reveal answer
beginner
How does changing the duty cycle affect an LED's brightness?
Increasing the duty cycle makes the LED brighter because it is ON for a longer time in each cycle. Decreasing it makes the LED dimmer.
Click to reveal answer
intermediate
What is PWM and why is it used for motor and LED control?
PWM (Pulse Width Modulation) is a technique that switches power ON and OFF rapidly. It controls power by adjusting the duty cycle, allowing smooth speed or brightness control.
Click to reveal answer
intermediate
In embedded C, which hardware feature is commonly used to generate PWM signals?
Timers or timer modules in microcontrollers are used to generate PWM signals by toggling output pins at set intervals.
Click to reveal answer
intermediate
Why is it better to use PWM for motor speed control instead of just changing voltage?
PWM efficiently controls motor speed without wasting power as heat, unlike changing voltage which can cause energy loss and unstable motor behavior.
Click to reveal answer
What does a 50% duty cycle mean for an LED?
ALED is ON half the time and OFF half the time
BLED is always ON
CLED is always OFF
DLED blinks twice as fast
Which embedded C feature is typically used to create PWM signals?
ATimers
BInterrupts
CSerial communication
DADC (Analog to Digital Converter)
What happens to motor speed if you increase the PWM duty cycle?
AMotor speed decreases
BMotor speed increases
CMotor stops
DMotor speed stays the same
Why is PWM preferred over varying voltage for LED brightness control?
AVarying voltage is faster
BVarying voltage is easier and better
CPWM is more energy efficient and provides smooth control
DPWM damages LEDs
If a PWM signal has a period of 10 ms and the ON time is 2 ms, what is the duty cycle?
A50%
B2%
C80%
D20%
Explain how PWM controls the brightness of an LED or the speed of a motor using duty cycle.
Think about how turning power ON and OFF quickly changes the average power.
You got /4 concepts.
    Describe how you would implement duty cycle control for a motor in embedded C using a timer.
    Consider how timers toggle output pins and how changing ON time affects the motor.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the duty cycle control in a motor or LED?
      easy
      A. The percentage of time the device is ON during each cycle
      B. The voltage supplied to the device
      C. The frequency of the power supply
      D. The temperature of the device

      Solution

      1. Step 1: Understand duty cycle meaning

        The duty cycle is the fraction of one period in which a signal or system is active.
      2. Step 2: Relate to motor/LED control

        For motors or LEDs, it controls how long the device is ON in each cycle, affecting speed or brightness.
      3. Final Answer:

        The percentage of time the device is ON during each cycle -> Option A
      4. Quick Check:

        Duty cycle = ON time percentage [OK]
      Hint: Duty cycle means ON time percentage per cycle [OK]
      Common Mistakes:
      • Confusing duty cycle with voltage
      • Thinking it controls frequency
      • Assuming it controls temperature
      2. Which of the following is the correct way to set a 50% duty cycle using a timer compare register in embedded C?
      easy
      A. OCR0 = 0; // Full OFF
      B. OCR0 = 255; // Full ON
      C. OCR0 = 128; // Assuming 8-bit timer with max 255
      D. OCR0 = 64; // 25% duty cycle

      Solution

      1. Step 1: Understand timer resolution

        An 8-bit timer counts from 0 to 255, so max value is 255.
      2. Step 2: Calculate 50% duty cycle value

        50% of 255 is approximately 128, so setting OCR0 to 128 sets 50% duty cycle.
      3. Final Answer:

        OCR0 = 128; // Assuming 8-bit timer with max 255 -> Option C
      4. Quick Check:

        50% of 255 = 128 [OK]
      Hint: Half of max timer value sets 50% duty cycle [OK]
      Common Mistakes:
      • Using max value for 50% duty cycle
      • Using zero for 50% duty cycle
      • Confusing 25% with 50%
      3. Given the code snippet below, what will be the duty cycle percentage set for the LED?
      unsigned char duty = 64;
      unsigned char max = 255;
      float dutyCycle = (duty / (float)max) * 100;
      
      medium
      A. 25%
      B. 50%
      C. 75%
      D. 64%

      Solution

      1. Step 1: Calculate duty/max ratio

        Divide duty (64) by max (255): 64 / 255 ≈ 0.25098.
      2. Step 2: Convert ratio to percentage

        Multiply by 100: 0.25098 * 100 ≈ 25.1%.
      3. Final Answer:

        25% -> Option A
      4. Quick Check:

        (64/255)*100 ≈ 25% [OK]
      Hint: Divide duty by max, multiply by 100 for percentage [OK]
      Common Mistakes:
      • Using integer division without casting
      • Confusing duty value with percentage
      • Rounding incorrectly
      4. Identify the error in the following code that attempts to set a 75% duty cycle on an 8-bit timer:
      unsigned char duty = 75;
      unsigned char max = 255;
      OCR0 = duty / max * 255;
      medium
      A. OCR0 register cannot be assigned directly
      B. Integer division causes duty/max to be zero
      C. max value should be 100, not 255
      D. Duty cycle calculation is correct

      Solution

      1. Step 1: Analyze division operation

        Both duty and max are unsigned char, so duty/max does integer division: 75/255 = 0 (integer).
      2. Step 2: Effect on OCR0 assignment

        Multiplying 0 by 255 results in 0, so OCR0 is set to 0, not 75% duty cycle.
      3. Final Answer:

        Integer division causes duty/max to be zero -> Option B
      4. Quick Check:

        Integer division truncates to zero [OK]
      Hint: Cast to float before division to avoid zero result [OK]
      Common Mistakes:
      • Ignoring integer division rules
      • Assuming OCR0 cannot be assigned
      • Using wrong max value
      5. You want to smoothly increase the brightness of an LED from 0% to 100% duty cycle using PWM on an 8-bit timer. Which approach is best to implement this in embedded C?
      hard
      A. Use a fixed OCR0 value of 128 for half brightness
      B. Set OCR0 to 255 once and leave it
      C. Toggle the LED pin ON and OFF manually without PWM
      D. Use a loop to increment OCR0 from 0 to 255 with a delay between steps

      Solution

      1. Step 1: Understand smooth brightness control

        Smooth brightness change requires gradually changing the duty cycle from 0 to max.
      2. Step 2: Implement gradual PWM change

        Increment OCR0 from 0 to 255 in a loop with delays to create smooth brightness ramp.
      3. Final Answer:

        Use a loop to increment OCR0 from 0 to 255 with a delay between steps -> Option D
      4. Quick Check:

        Gradual OCR0 change = smooth brightness [OK]
      Hint: Increment OCR0 gradually with delay for smooth fade [OK]
      Common Mistakes:
      • Setting OCR0 once for full brightness only
      • Using fixed mid value for all brightness
      • Not using PWM for brightness control
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard