Potentiometer (ADC)

Lab 3: Potentiometer (ADC) β€” ΰΈ­ΰΉˆΰΈ²ΰΈ™ΰΈ„ΰΉˆΰΈ² Analog

ΰΈ§ΰΈ±ΰΈ•ΰΈ–ΰΈΈΰΈ›ΰΈ£ΰΈ°ΰΈͺΰΈ‡ΰΈ„ΰΉŒ

  • Analog Input: ΰΈ­ΰΉˆΰΈ²ΰΈ™ΰΈ„ΰΉˆΰΈ²ΰΉΰΈšΰΈš Analog (ΰΉ„ΰΈ‘ΰΉˆΰΉƒΰΈŠΰΉˆΰΉΰΈ„ΰΉˆ 0/1)

  • ADC: ΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈˆΰΈ«ΰΈ₯ักการแปΰΈ₯ΰΈ‡ Analog β†’ Digital

  • Scaling: แปΰΈ₯ΰΈ‡ΰΈ„ΰΉˆΰΈ² ADC ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ΰΈ«ΰΈ™ΰΉˆΰΈ§ΰΈ’ΰΈ—ΰΈ΅ΰΉˆΰΉ€ΰΈ‚ΰΉ‰ΰΈ²ΰΉƒΰΈˆΰΉ„ΰΈ”ΰΉ‰

ΰΈˆΰΈ°ΰΉ„ΰΈ”ΰΉ‰ΰΉ€ΰΈ£ΰΈ΅ΰΈ’ΰΈ™ΰΈ£ΰΈΉΰΉ‰ΰΈ­ΰΈ°ΰΉ„ΰΈ£

  • ADC Concept: 12-bit resolution (0-4095)

  • Unit Conversion: ADC counts β†’ millivolts β†’ percentage

  • Periodic Reading: ΰΈ­ΰΉˆΰΈ²ΰΈ™ΰΈ„ΰΉˆΰΈ²ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ΰΈŠΰΉˆΰΈ§ΰΈ‡ΰΉ€ΰΈ§ΰΈ₯ΰΈ²


ΰΈ«ΰΈ₯ักการ ADC

   Analog Input        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”        Digital Output         
   (0 - 1.8V)    ────► β”‚   ADC   β”‚ ────►  (0 - 4095)             
                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        12-bit      

Analog Input (0V - 1.8V)     ADC     Digital Output (0 - 4095)
         β”‚                    β”‚              β”‚
    1.8V β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β†’ 4095
    0.9V β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β†’ 2048
    0.0V β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β†’ 0

Resolution 12-bit: 2^12 = 4096 ΰΈ£ΰΈ°ΰΈ”ΰΈ±ΰΈš

ΰΈͺูตรแปΰΈ₯ΰΈ‡ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ mV:

mV=ADC_countΓ—VREF_mV4096mV = \frac{ADC\_count \times VREF\_mV}{4096}

Hardware Info

Component
Pin
ΰΈ«ΰΈ‘ΰΈ²ΰΈ’ΰΉ€ΰΈ«ΰΈ•ΰΈΈ

Potentiometer (POT)

P15_1

0-1800mV range

ADC Reference

Internal

1.8V


Lab 3.1 : แก้ไข Macros ΰΉ€ΰΈ”ΰΈ΄ΰΈ‘ΰΈˆΰΈ²ΰΈ

ΰΉ€ΰΈ›ΰΉ‡ΰΈ™ Macros ΰΉƒΰΈ«ΰΈ‘ΰΉˆ , ΰΉ€ΰΈžΰΈ΄ΰΉˆΰΈ‘ Variables แΰΈ₯ΰΈ° ΰΈŠΰΈ·ΰΉˆΰΈ­ΰΈŸΰΈ±ΰΈ‡ΰΈΰΉŒΰΈŠΰΈ±ΰΈ™ΰΉ€ΰΈžΰΈ΄ΰΉˆΰΈ‘ΰΉ€ΰΈ•ΰΈ΄ΰΈ‘ ΰΈ”ΰΈ±ΰΈ‡ΰΈ™ΰΈ΅ΰΉ‰

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ΰΈŸΰΈ±ΰΈ‡ΰΈΰΉŒΰΈŠΰΈ±ΰΈ™ init_adc()

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ΰΈŸΰΈ±ΰΈ‡ΰΈΰΉŒΰΈŠΰΈ±ΰΈ™ read_potentiometer_mv()

ΰΈͺΰΈ£ΰΉ‰ΰΈ²ΰΈ‡ΰΈŸΰΈ±ΰΈ‡ΰΈΰΉŒΰΈŠΰΈ±ΰΈ™ get_pot_percentage()

ΰΈ›ΰΈ£ΰΈ±ΰΈšΰΈ›ΰΈ£ΰΈΈΰΈ‡ main() ΰΉƒΰΈ«ΰΈ‘ΰΉˆ

ΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡ Output ΰΈšΰΈ™ Serial Terminal

ADC Potentiometer Flowcharts

Overall Program Flow and init_adc() Flowchart


read_potentiometer_mv() Flowchart


get_pot_percentage() Flowchart


ADC Conversion Diagram


Program Code ΰΈ—ΰΈ±ΰΉ‰ΰΈ‡ΰΈ«ΰΈ‘ΰΈ”


✍️ Exercise

  1. LED Brightness Indicator : ΰΉƒΰΈŠΰΉ‰ POT ΰΈ„ΰΈ§ΰΈšΰΈ„ΰΈΈΰΈ‘ΰΈ„ΰΈ§ΰΈ²ΰΈ‘ΰΉ€ΰΈ£ΰΉ‡ΰΈ§ΰΈΰΈ²ΰΈ£ΰΈΰΈ£ΰΈ°ΰΈžΰΈ£ΰΈ΄ΰΈš (Blink Rate) ΰΈ‚ΰΈ­ΰΈ‡ LED

  • 0-25%: Blink Rate --> 1000 ms

  • 25-50%: Blink Rate --> 500 ms

  • 50-75%: Blink Rate --> 250 ms

  • 75-100%: Blink Rate --> 100 ms

circle-info

Hint

ΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡

  1. Threshold Alert : ΰΉΰΈˆΰΉ‰ΰΈ‡ΰΉ€ΰΈ•ΰΈ·ΰΈ­ΰΈ™ΰΉ€ΰΈ‘ΰΈ·ΰΉˆΰΈ­ POT เกิน threshold ΰΈ—ΰΈ΅ΰΉˆΰΈΰΈ³ΰΈ«ΰΈ™ΰΈ”

circle-info

Hint

ΰΈ•ΰΈ±ΰΈ§ΰΈ­ΰΈ’ΰΉˆΰΈ²ΰΈ‡


Last updated

Was this helpful?