ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ ﻣﻘﺎوﻣﺘﻬﺎي Pull-up (ﻣﻘﺎوﻣﺖ ﺑﺎﻻﮐﺸﻨﺪه)
اﺳﺘﻔﺎده از ﻣﻘﺎوﻣﺘﻬﺎي Pull-up ﯾﺎ ﻣﻘﺎوﻣﺖ ﺑﺎﻻﮐﺸﻨﺪه ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮﻫﺎ (MCU ﻫﺎ) ﯾﺎ ﻫﺮ ﻗﻄﻌﻪ ﻣﻨﻄﻘﯽ-دﯾﺠﯿﺘﺎﻟﯽ دﯾﮕﺮ ﺑﺴﯿﺎر راﯾﺞ اﺳﺖ. در اﯾﻦ آﻣﻮزش ﺗﻮﺿﯿﺢ ﻣﯽدﻫﯿﻢ ﮐﻪ ﭼﻪ زﻣﺎﻧﯽ و ﮐﺠﺎ ﺑﺎﯾﺪ از ﻣﻘﺎوﻣﺘﻬﺎي Pull-up اﺳﺘﻔﺎده ﮐﻨﯿﻢ، ﺳﭙﺲ ﯾﮏ ﺳﺮي ﻣﺤﺎﺳﺒﺎت ﺳﺎده اﻧﺠﺎم ﺧﻮاﻫﯿﻢ داد ﺗﺎ ﻧﺸﺎن دﻫﯿﻢ ﮐﻪ ﭼﺮا اﺳﺘﻔﺎده از ﻣﻘﺎوﻣﺘﻬﺎي Pull-up ﻣﻬﻢ ﻫﺴﺘﻨﺪ.
ﻣﻘﺎوﻣﺖ Pull-up ﭼﯿﺴﺖ؟
فرض ﮐﻨﯿﺪ ﯾﮏ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ دارﯾﻢ ﮐﻪ ﯾﮏ ﭘﯿﻦ آن ﺑﻪ ﺻﻮرت ورودي ﭘﯿﮑﺮﺑﻨﺪي (ﺗﻨﻈﯿﻢ) ﺷﺪه اﺳﺖ. اﮔﺮ ﭼﯿﺰي ﺑﻪ ﭘﯿﻦ وﺻﻞ ﻧﺸﺪه ﺑﺎﺷﺪ و ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ وﺿﻌﯿﺖ ﭘﯿﻦ را ﺑﺨﻮاﻧﺪ، آﯾﺎ اﯾﻦ وﺿﻌﯿﺖ در ﺳﻄﺢ ﻣﻨﻄﻘﯽ High ﺧﻮاﻫﺪ ﺑﻮد (ﺳﻄﺢ VCC) ﯾﺎ Low (ﯾﺎ ﺳﻄﺢ GND)؟ دﺷﻮار اﺳﺖ ﮐﻪ در اﯾﻦ ﻣﻮرد ﭼﯿﺰي ﺑﮕﻮﯾﯿﺪ. اﯾﻦ ﯾﮏ ﭘﺪﯾﺪه ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ. ﺑﺮاي ﺟﻠﻮﮔﯿﺮي از اﯾﻦ وﺿﻌﯿﺖ ﻧﺎﺷﻨﺎﺧﺘﻪ، از ﯾﮏ ﻣﻘﺎوﻣﺖ Pull-up ﯾﺎ Pull-down اﺳﺘﻔﺎده ﻣﯽﺷﻮد ﺗﺎ ﻣﻄﻤﺌﻦ ﺑﺎﺷﯿﻢ در ﺳﻄﺢ ﻣﻨﻄﻘﯽ High ﯾﺎ Low ﻫﺴﺘﯿﻢ.
ﺑﺮاي ﺳﺎدﮔﯽ، ﻣﺎ ﺑﺮ روي ﻣﻘﺎوﻣﺖ Pull-up (ﻣﺘﺼﻞ ﺑﻪ ﺳﻄﺢ high) ﻣﺘﻤﺮﮐﺰ ﺧﻮاﻫﯿﻢ ﺷﺪ زﯾﺮا راﯾﺠﺘﺮ از ﻣﻘﺎوﻣﺘﻬﺎي Pull-down اﺳﺖ. ﻧﺤﻮه ﻋﻤﻠﮑﺮد ﻣﻘﺎوﻣﺘﻬﺎي Pull-down ﻧﯿﺰ دﻗﯿﻘﺎً ﻣﺸﺎﺑﻪ ﻣﻘﺎوﻣﺘﻬﺎي Pull-up
اﺳﺖ ﺑﺎ اﯾﻦ ﺗﻔﺎوت ﮐﻪ ﺑﻪ ﺟﺎي ﻣﺘﺼﻞ ﺷﺪن ﺑﻪ ﺳﻄﻮح High (ﻣﻌﻤﻮﻻ 3,3 ﯾﺎ 5 وﻟﺖ اﺳﺖ و اﻏﻠﺐ ﺑﻪ ﻋﻨﻮان VCC ﺷﻨﺎﺧﺘﻪ ﻣﯽ ﺷﻮد( ﺑﻪ ﺳﻄﺢ GND) Low) ﻣﺘﺼﻞ ﻣﯿﺸﻮﻧﺪ. ﻋﻤﻞ Pull-up و Pull-down ﻣﻌﻤﻮﻻً ﺑﺎ دﮐﻤﻪ ﻫﺎ و ﺳﻮﺋﯿﭻ ﻫﺎ اﻧﺠﺎم ﻣﯽ ﺷﻮد.
ﺑﻪ ﺷﮑﻞ 1 دﻗﺖ ﮐﻨﯿﺪ، ﺑﺎ ﯾﮏ ﻣﻘﺎوﻣﺖ Pull-up، ﭘﯿﻦ ورودي ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮده ﻧﺸﺪه، وﺿﻌﯿﺖ high
ﻣﺘﺼﻞ ﺷﺪه اﺳﺖ. ﺑﻪ ﻋﺒﺎرت دﯾﮕﺮ، ﻣﻘﺪار ﮐﻤﯽ ﺟﺮﯾﺎن ﺑﯿﻦ VCC و ﭘﯿﻦ ورودي، ﺟﺮﯾﺎن دارد، در ﻧﺘﯿﺠﻪ ﺳﻄﺢ وﻟﺘﺎژ ﭘﯿﻦ ورودي ﺑﻪ ﺳﻄﺢ وﻟﺘﺎژ VCC ﻧﺰدﯾﮏ اﺳﺖ. ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮده ﻣﯽ ﺷﻮد، ﭘﯿﻦ ورودي ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﯿﻢ ﺑﻪ زﻣﯿﻦ وﺻﻞ ﻣﯽ ﺷﻮد و در اﯾﻦ ﺣﺎﻟﺖ در ﺳﻄﺢ ﻣﻨﻄﻘﯽ Low ﻗﺮار ﻣﯿﮕﯿﺮد. ﺑﺎﯾﺴﺘﯽ ﺗﻮﺟﻪ داﺷﺖ، ﮐﻪ اﮔﺮ ﻣﻘﺎوﻣﺖ در ﻣﺴﯿﺮ زﻣﯿﻦ ﺷﺪن ﭘﯿﻦ وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ، ﺑﺎ وﺻﻞ ﮐﺮدن ﮐﻠﯿﺪ، ﺷﻤﺎ VCC را ﺑﻪ زﻣﯿﻦ ﻣﺘﺼﻞ ﻣﯿﮑﻨﯿﺪ، ﮐﻪ ﺑﺴﯿﺎر ﺑﺪ اﺳﺖ و اﯾﻦ ﮐﺎر ﺑﻪ ﻋﻨﻮان ﯾﮏ اﺗﺼﺎل ﮐﻮﺗﺎه ﺷﻨﺎﺧﺘﻪ ﻣﯽ ﺷﻮد. ﺑﻨﺎﺑﺮاﯾﻦ ﭼﻪ ﻣﻘﺪار ﻣﻘﺎوﻣﺖ ﺑﺮاي Pull-up ﺑﺎﯾﺪ اﻧﺘﺨﺎب ﮐﻨﯿﺪ؟ ﭘﺎﺳﺦ ﮐﻮﺗﺎه و آﺳﺎن اﯾﻦ اﺳﺖ ﮐﻪ ﺷﻤﺎ ﻣﯿﺘﻮاﻧﯿﺪ از ﯾﮏ ﻣﻘﺎوﻣﺖ 10 ﮐﯿﻠﻮاﻫﻤﯽ اﺳﺘﻔﺎده ﮐﻨﯿﺪ.
شکل 1
در ﺻﻮرت اﺳﺘﻔﺎده از ﯾﮏ ﻣﻘﺎوﻣﺖ ﮐﻮﭼﮏ، ﺑﻪ اﺻﻄﻼح ﯾﮏ Pull-up ﻗﻮي (ﺟﺮﯾﺎن زﯾﺎد ﺟﺎري ﻣﯿﺸﻮد) ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد، و در ﺻﻮرت اﺳﺘﻔﺎده از ﯾﮏ ﻣﻘﺎوﻣﺖ ﺑﺰرگ ﺑﺮاي Pull-up ﺑﻪ اﺻﻄﻼح ﯾﮏ Pull-up ﺿﻌﯿﻒ (ﺟﺮﯾﺎن ﮐﻤﯽ ﺟﺎري ﻣﯿﺸﻮد) ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد.
ﺑﺮاي ﺗﻌﯿﯿﻦ ﻣﻘﺪار ﻣﻘﺎوﻣﺖ Pull-up ﺑﺎﯾﺴﺘﯽ دو ﺷﺮط زﯾﺮ ﺑﺮآورد ﺷﻮد:
1- ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮده ﻣﯽ ﺷﻮد، ﭘﯿﻦ ورودي ﺑﻪ ﺳﻄﺢ Low وﺻﻞ ﺷﻮد. ﻣﻘﺪار ﻣﻘﺎوﻣﺖ R1 ﺑﺎﯾﺴﺘﯽ
ﺟﺮﯾﺎن ﺟﺎري ﺷﺪه از VCC ﺑﻪ زﻣﯿﻦ را ﮐﻨﺘﺮل ﮐﻨﺪ.
2- ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮده ﻧﻤﯽ ﺷﻮد، ﭘﯿﻦ ورودي ﺑﻪ ﺳﻄﺢ High وﺻﻞ ﺷﻮد. ﻣﻘﺪار ﻣﻘﺎوﻣﺖ -Pullup ﺑﺎﯾﺴﺘﯽ ﻣﻘﺪار وﻟﺘﺎژي ﮐﻪ ﺑﺮ روي ﭘﯿﻦ ورودي ﻣﯽاﻓﺘﺪ را ﮐﻨﺘﺮل ﻣﯽ ﮐﻨﺪ (اﻓﺖ وﻟﺘﺎژ ﮐﻢ ﺑﺎﺷﺪ).
ﺑﺮاي ارﺿﺎي ﺷﺮط 1، ﻣﻘﺎوﻣﺖ ﺷﻤﺎ ﻧﺒﺎﯾﺪ ﺧﯿﻠﯽ ﮐﻮﭼﮏ ﺑﺎﺷﺪ. ﻣﻘﺎوﻣﺖ ﮐﻮﭼﮑﺘﺮ ﺑﻪ ﻣﻌﻨﺎي ﺟﺎري ﺷﺪن ﺟﺮﯾﺎن ﺑﺰرﮔﺘﺮ از VCC ﺑﻪ GND اﺳﺖ ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮد ﻣﯽ ﺷﻮد. ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ ﻣﻌﻤﻮﻻ ﯾﮏ ﻣﻘﺪار ﺑﺰرگ ﺑﺮاي ﻣﻘﺎوﻣﺖ (10 ﮐﯿﻠﻮاﻫﻢ)را در ﻧﻈﺮ ﻣﯿﮕﯿﺮﯾﻢ، اﻣﺎ ﺑﺎﯾﺴﺘﯽ در ﻧﻈﺮ داﺷﺖ ﮐﻪ ﻣﻘﺎوﻣﺖ ﺧﯿﻠﯽ ﻫﻢ ﺑﺰرگ ﻧﺒﺎﺷﺪ ﺗﺎ ﺷﺮط 2 از دﺳﺖ ﺑﺮود. ﺑﻌﻨﻮان ﻣﺜﺎل ﯾﮏ ﻣﻘﺎوﻣﺖ 4 ﻣﮕﺎ اﻫﻤﯽ را ﻧﯿﺰ ﻣﯿﺘﻮان ﺑﻌﻨﻮان ﯾﮏ ﻣﻘﺎوﻣﺖ pull-up، درﻧﻈﺮ ﮔﺮﻓﺖ اﻣﺎ در اﯾﻦ ﺻﻮرت ﻣﺎ ﯾﮏ pull-up ﺿﻌﯿﻒ دارﯾﻢ ﮐﻪ از ﮐﺎرﮐﺮد 100% آن ﻣﻄﻤﺌﻦ ﻧﺨﻮاﻫﯿﻢ ﺑﻮد.
ﻗﺎﻋﺪه ﮐﻠﯽ ﺑﺮاي ﺑﺮآورده ﮐﺮدن ﺷﺮط 2 اﯾﻦ اﺳﺖ ﮐﻪ از ﯾﮏ ﻣﻘﺎوﻣﺖ R1) pull-up)اﺳﺘﻔﺎده ﺷﻮد ﮐﻪ ﺣﺪود ﯾﮏ دﻫﻢ(و ﮐﻮﭼﺘﮑﺘﺮ)ﺑﺮاﺑﺮ ﻣﻘﺎوﻣﺖ اﻣﭙﺪاﻧﺲ ورودي(R2) ﭘﯿﻦ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ (ﯾﺎ ﻗﻄﻌﻪ ﻣﻮرد اﺳﺘﻔﺎده) ﺑﺎﺷﺪ. ﻣﻘﺎوﻣﺖ ورودي ﭘﯿﻦ ﯾﮏ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ ﻣﯿﺘﻮاﻧﺪ از 100 ﮐﯿﻠﻮاﻫﻢ ﺗﺎ 1 ﻣﮕﺎاﻫﻢ ﻣﺘﻐﯿﺮ ﺑﺎﺷﺪ. اﯾﻦ اﻧﺘﺨﺎب ﺑﻪ اﯾﻦ دﻟﯿﻞ اﺳﺖ ﮐﻪ ﻫﻨﮕﺎﻣﯿﮑﻪ دﮐﻤﻪ ﻓﺸﺮده ﻧﻤﯽ ﺷﻮد، ﺑﺮ ﻃﺒﻖ اﺻﻞ ﺗﻘﺴﯿﻢ ﻣﻘﺎوﻣﺘﯽ ﺗﻘﺮﯾﺒﺎ ﺗﻤﺎم وﻟﺘﺎژ VCC روي ﭘﯿﻦ ورودي (R2) ﻗﺮار ﺑﮕﯿﺮد. ﻓﺮض ﮐﻨﯿﺪ ﻣﻘﺎوﻣﺖ ورودي ﭘﯿﻦ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ ﺑﺮاﺑﺮ 1 ﻣﮕﺎ اﻫﻢ ﺑﺎﺷﺪ و ﻣﺎ اﮔﺮ از ﯾﮏ ﻣﻘﺎوﻣﺖ ﺑﺰرگ ﻣﺎﻧﻨﺪ 1 ﻣﮕﺎ اﻫﻢ ﺑﺮاي ﻣﻘﺎوﻣﺖ pull-up (ﻣﻘﺎوﻣﺖ R1)اﺳﺘﻔﺎده ﮐﻨﯿﻢ ﻃﺒﻖ اﺻﻞ ﺗﻘﺴﯿﻢ ﻣﻘﺎوﻣﺘﯽ ﻧﺼﻒ وﻟﺘﺎژ VCC روي ﭘﯿﻦ ﻗﺮار ﻣﯿﮕﯿﺮد ﮐﻪ ﯾﮏ وﺿﻌﯿﺖ وﻟﺘﺎژي ﺗﻘﺮﯾﺒﺎ ﻧﺎﻣﺸﺨﺺ ﺧﻮاﻫﺪ ﺑﻮد. در ﺷﮑﻞ 2 ﻣﻘﺎوﻣﺖ ورودي ﭘﯿﻦ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ ﺑﺎ R2 ﻧﺸﺎن داده ﺷﺪه اﺳﺖ
از آﻧﺠﺎﯾﯿﮑﻪ ﻣﻘﺎوﻣﺖ ﻫﺎي pull-up ﻋﻤﻮﻣﺎ ﺑﺴﯿﺎر ﻣﻮرد ﻧﯿﺎز اﺳﺖ، ﺑﺴﯿﺎري از MCUﻫﺎ، ﻣﺎﻧﻨﺪ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ ATmega328 در ﭘﻠﺖ ﻓﺮم Arduino، داراي ﭘﻼﮔﯿﻦﻫﺎي داﺧﻠﯽ ﻫﺴﺘﻨﺪ ﮐﻪ ﻣﯿﺘﻮاﻧﻨﺪ ﻓﻌﺎل و ﻏﯿﺮﻓﻌﺎل ﺷﻮﻧﺪ. ﺑﺮاي ﻓﻌﺎل ﮐﺮدن ﭘﻼﮔﯿﻦﻫﺎي داﺧﻠﯽ در Arduino، ﻣﯽﺗﻮاﻧﯿﺪ از ﺧﻂ زﯾﺮ در ﺗﺎﺑﻊ ()setup اﺳﺘﻔﺎده ﮐﻨﯿد
ﯾﮑﯽ دﯾﮕﺮ از ﭼﯿﺰﻫﺎﯾﯽ ﮐﻪ ﺑﺎﯾﺪ اﺷﺎره ﮐﺮد اﯾﻦ اﺳﺖ ﮐﻪ ﻫﺮ ﭼﻪ ﻣﻘﺪار ﻣﻘﺎوﻣﺖ pull-up ﯾﺸﺘﺮ ﺷﻮد، ﭘﺎﺳﺦ ﭘﯿﻦ ﺑﻪ ﺗﻐﯿﯿﺮات وﻟﺘﺎژ ﮐﻨﺪﺗﺮ ﺧﻮاﻫﺪ ﺑﻮد. اﯾﻦ ﺑﺪﯾﻦ دﻟﯿﻞ اﺳﺖ ﮐﻪ ﺳﯿﺴﺘﻢ ﮐﻪ ﭘﯿﻦ ورودي را ﺗﻐﺬﯾﻪ ﻣﯽﮐﻨﺪ، اﺳﺎﺳﺎً ﯾﮏ ﺧﺎزن ﭘﺎرازﯾﺘﯽ ﺑﻪ ﻫﻤﺮاه ﯾﮏ ﻣﻘﺎوﻣﺖ pull-up اﺳﺖ، ﺑﻨﺎﺑﺮاﯾﻦ ﯾﮏ ﻓﯿﻠﺘﺮ RC اﯾﺠﺎد ﻣﯽﺷﻮد و ﻓﯿﻠﺘﺮﻫﺎي RC ﺑﺎ ﺛﺎﺑﺖ زﻣﺎﻧﯽ ﺑﺰرگ ﺑﺮاي ﺷﺎرژ و دﺷﺎرژ، زﻣﺎن زﯾﺎدي را ﺻﺮف ﻣﯽ ﮐﻨﻨﺪ. اﮔﺮ ﯾﮏ ﺳﯿﮕﻨﺎل واﻗﻌﺎً ﺳﺮﯾﻊ در ﺣﺎل ﺗﻐﯿﯿﺮ (ﻣﺜﻞ USB) دارﯾﺪ، ﯾﮏ رزوﻟﻮﺷﻦ ﺑﺎﻻ ﻧﯿﺎز دارﯾﺪ ﺗﺎ ﺑﻪ ﺳﺮﻋﺖ ﺑﺘﻮاﻧﺪ ﺑﻪ ﺗﻐﯿﯿﺮات ﺳﻄﻮح وﻟﺘﺎژ ﭘﺎﺳﺦ دﻫﺪ. ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ اﺳﺖ ﮐﻪ ﺷﻤﺎ اﻏﻠﺐ ﻣﻘﺎوﻣﺘﻬﺎي 1 ﮐﯿﻠﻮ ﺗﺎ 4,7 ﮐﯿﻠﻮاﻫﻤﯽ در ﺧﻄﻮط ﺳﯿﮕﻨﺎل USB ﻣﺸﺎﻫﺪه ﺧﻮاﻫﯿﺪ ﮐﺮد. ﺗﻤﺎم اﯾﻦ ﻋﻮاﻣﻞ ﻧﺎم ﺑﺮده در ﺗﺼﻤﯿﻢ ﮔﯿﺮي ﺑﺮاي اﻧﺘﺨﺎب ﻣﻘﺎوﻣﺖ pull-up ﺗﺎﺛﯿﺮﮔﺬار ﺧﻮاﻫﺪ ﺑﻮد.
ﻣﺜﺎﻟﯽ ﺳﺎده از ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ ﻣﻘﺎوﻣﺖ pull-up:
ﻓﺮض ﮐﻨﯿﺪ ﺷﻤﺎ ﻣﯽ ﺧﻮاﻫﯿﺪ ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ در ﻣﺪار ﺷﮑﻞ 1 ﻓﺸﺎر داده ﻣﯿﺸﻮد ﺟﺮﯾﺎن را ﺑﻪ ﺣﺪود 1 ﻣﯿﻠﯽ آﻣﭙﺮ ﻣﺤﺪود ﮐﻨﯿﺪ و ﻓﺮض ﮐﻨﯿﺪ در اﯾﻨﺠﺎ Vcc = 5V اﺳﺖ. از ﭼﻪ ﻣﻘﺎوﻣﺘﯽ ﺑﺎﯾﺪ اﺳﺘﻔﺎده ﮐﻨﯿﻢ
ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ ﺑﺴﯿﺎر آﺳﺎن اﺳﺖ و از ﻗﺎﻧﻮن اﻫﻢ اﺳﺘﻔﺎده ﻣﯿﺸﻮد:
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺷﮑﻞ 1 ﻗﺎﻧﻮن اﻫﻢ ﺑﻪ ﺻﻮرت زﯾﺮ در ﻣﯽآﯾﺪ:
ﺑﺎ ﺟﺎﯾﮕﺬاري ﻣﻘﺎدﯾﺮ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه دارﯾﻢ:
اﺳﺘﻔﺎده از ﻣﻘﺎوﻣﺘﻬﺎي Pull-up ﯾﺎ ﻣﻘﺎوﻣﺖ ﺑﺎﻻﮐﺸﻨﺪه ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮﻫﺎ (MCU ﻫﺎ) ﯾﺎ ﻫﺮ ﻗﻄﻌﻪ ﻣﻨﻄﻘﯽ-دﯾﺠﯿﺘﺎﻟﯽ دﯾﮕﺮ ﺑﺴﯿﺎر راﯾﺞ اﺳﺖ. در اﯾﻦ آﻣﻮزش ﺗﻮﺿﯿﺢ ﻣﯽدﻫﯿﻢ ﮐﻪ ﭼﻪ زﻣﺎﻧﯽ و ﮐﺠﺎ ﺑﺎﯾﺪ از ﻣﻘﺎوﻣﺘﻬﺎي Pull-up اﺳﺘﻔﺎده ﮐﻨﯿﻢ، ﺳﭙﺲ ﯾﮏ ﺳﺮي ﻣﺤﺎﺳﺒﺎت ﺳﺎده اﻧﺠﺎم ﺧﻮاﻫﯿﻢ داد ﺗﺎ ﻧﺸﺎن دﻫﯿﻢ ﮐﻪ ﭼﺮا اﺳﺘﻔﺎده از ﻣﻘﺎوﻣﺘﻬﺎي Pull-up ﻣﻬﻢ ﻫﺴﺘﻨﺪ.
ﻣﻘﺎوﻣﺖ Pull-up ﭼﯿﺴﺖ؟
فرض ﮐﻨﯿﺪ ﯾﮏ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ دارﯾﻢ ﮐﻪ ﯾﮏ ﭘﯿﻦ آن ﺑﻪ ﺻﻮرت ورودي ﭘﯿﮑﺮﺑﻨﺪي (ﺗﻨﻈﯿﻢ) ﺷﺪه اﺳﺖ. اﮔﺮ ﭼﯿﺰي ﺑﻪ ﭘﯿﻦ وﺻﻞ ﻧﺸﺪه ﺑﺎﺷﺪ و ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ وﺿﻌﯿﺖ ﭘﯿﻦ را ﺑﺨﻮاﻧﺪ، آﯾﺎ اﯾﻦ وﺿﻌﯿﺖ در ﺳﻄﺢ ﻣﻨﻄﻘﯽ High ﺧﻮاﻫﺪ ﺑﻮد (ﺳﻄﺢ VCC) ﯾﺎ Low (ﯾﺎ ﺳﻄﺢ GND)؟ دﺷﻮار اﺳﺖ ﮐﻪ در اﯾﻦ ﻣﻮرد ﭼﯿﺰي ﺑﮕﻮﯾﯿﺪ. اﯾﻦ ﯾﮏ ﭘﺪﯾﺪه ﺷﻨﺎﺧﺘﻪ ﺷﺪه اﺳﺖ. ﺑﺮاي ﺟﻠﻮﮔﯿﺮي از اﯾﻦ وﺿﻌﯿﺖ ﻧﺎﺷﻨﺎﺧﺘﻪ، از ﯾﮏ ﻣﻘﺎوﻣﺖ Pull-up ﯾﺎ Pull-down اﺳﺘﻔﺎده ﻣﯽﺷﻮد ﺗﺎ ﻣﻄﻤﺌﻦ ﺑﺎﺷﯿﻢ در ﺳﻄﺢ ﻣﻨﻄﻘﯽ High ﯾﺎ Low ﻫﺴﺘﯿﻢ.
ﺑﺮاي ﺳﺎدﮔﯽ، ﻣﺎ ﺑﺮ روي ﻣﻘﺎوﻣﺖ Pull-up (ﻣﺘﺼﻞ ﺑﻪ ﺳﻄﺢ high) ﻣﺘﻤﺮﮐﺰ ﺧﻮاﻫﯿﻢ ﺷﺪ زﯾﺮا راﯾﺠﺘﺮ از ﻣﻘﺎوﻣﺘﻬﺎي Pull-down اﺳﺖ. ﻧﺤﻮه ﻋﻤﻠﮑﺮد ﻣﻘﺎوﻣﺘﻬﺎي Pull-down ﻧﯿﺰ دﻗﯿﻘﺎً ﻣﺸﺎﺑﻪ ﻣﻘﺎوﻣﺘﻬﺎي Pull-up
اﺳﺖ ﺑﺎ اﯾﻦ ﺗﻔﺎوت ﮐﻪ ﺑﻪ ﺟﺎي ﻣﺘﺼﻞ ﺷﺪن ﺑﻪ ﺳﻄﻮح High (ﻣﻌﻤﻮﻻ 3,3 ﯾﺎ 5 وﻟﺖ اﺳﺖ و اﻏﻠﺐ ﺑﻪ ﻋﻨﻮان VCC ﺷﻨﺎﺧﺘﻪ ﻣﯽ ﺷﻮد( ﺑﻪ ﺳﻄﺢ GND) Low) ﻣﺘﺼﻞ ﻣﯿﺸﻮﻧﺪ. ﻋﻤﻞ Pull-up و Pull-down ﻣﻌﻤﻮﻻً ﺑﺎ دﮐﻤﻪ ﻫﺎ و ﺳﻮﺋﯿﭻ ﻫﺎ اﻧﺠﺎم ﻣﯽ ﺷﻮد.
ﺑﻪ ﺷﮑﻞ 1 دﻗﺖ ﮐﻨﯿﺪ، ﺑﺎ ﯾﮏ ﻣﻘﺎوﻣﺖ Pull-up، ﭘﯿﻦ ورودي ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮده ﻧﺸﺪه، وﺿﻌﯿﺖ high
ﻣﺘﺼﻞ ﺷﺪه اﺳﺖ. ﺑﻪ ﻋﺒﺎرت دﯾﮕﺮ، ﻣﻘﺪار ﮐﻤﯽ ﺟﺮﯾﺎن ﺑﯿﻦ VCC و ﭘﯿﻦ ورودي، ﺟﺮﯾﺎن دارد، در ﻧﺘﯿﺠﻪ ﺳﻄﺢ وﻟﺘﺎژ ﭘﯿﻦ ورودي ﺑﻪ ﺳﻄﺢ وﻟﺘﺎژ VCC ﻧﺰدﯾﮏ اﺳﺖ. ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮده ﻣﯽ ﺷﻮد، ﭘﯿﻦ ورودي ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﯿﻢ ﺑﻪ زﻣﯿﻦ وﺻﻞ ﻣﯽ ﺷﻮد و در اﯾﻦ ﺣﺎﻟﺖ در ﺳﻄﺢ ﻣﻨﻄﻘﯽ Low ﻗﺮار ﻣﯿﮕﯿﺮد. ﺑﺎﯾﺴﺘﯽ ﺗﻮﺟﻪ داﺷﺖ، ﮐﻪ اﮔﺮ ﻣﻘﺎوﻣﺖ در ﻣﺴﯿﺮ زﻣﯿﻦ ﺷﺪن ﭘﯿﻦ وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ، ﺑﺎ وﺻﻞ ﮐﺮدن ﮐﻠﯿﺪ، ﺷﻤﺎ VCC را ﺑﻪ زﻣﯿﻦ ﻣﺘﺼﻞ ﻣﯿﮑﻨﯿﺪ، ﮐﻪ ﺑﺴﯿﺎر ﺑﺪ اﺳﺖ و اﯾﻦ ﮐﺎر ﺑﻪ ﻋﻨﻮان ﯾﮏ اﺗﺼﺎل ﮐﻮﺗﺎه ﺷﻨﺎﺧﺘﻪ ﻣﯽ ﺷﻮد. ﺑﻨﺎﺑﺮاﯾﻦ ﭼﻪ ﻣﻘﺪار ﻣﻘﺎوﻣﺖ ﺑﺮاي Pull-up ﺑﺎﯾﺪ اﻧﺘﺨﺎب ﮐﻨﯿﺪ؟ ﭘﺎﺳﺦ ﮐﻮﺗﺎه و آﺳﺎن اﯾﻦ اﺳﺖ ﮐﻪ ﺷﻤﺎ ﻣﯿﺘﻮاﻧﯿﺪ از ﯾﮏ ﻣﻘﺎوﻣﺖ 10 ﮐﯿﻠﻮاﻫﻤﯽ اﺳﺘﻔﺎده ﮐﻨﯿﺪ.
برای دیدن تصاویر باید ثبت نام کنید
شکل 1
در ﺻﻮرت اﺳﺘﻔﺎده از ﯾﮏ ﻣﻘﺎوﻣﺖ ﮐﻮﭼﮏ، ﺑﻪ اﺻﻄﻼح ﯾﮏ Pull-up ﻗﻮي (ﺟﺮﯾﺎن زﯾﺎد ﺟﺎري ﻣﯿﺸﻮد) ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد، و در ﺻﻮرت اﺳﺘﻔﺎده از ﯾﮏ ﻣﻘﺎوﻣﺖ ﺑﺰرگ ﺑﺮاي Pull-up ﺑﻪ اﺻﻄﻼح ﯾﮏ Pull-up ﺿﻌﯿﻒ (ﺟﺮﯾﺎن ﮐﻤﯽ ﺟﺎري ﻣﯿﺸﻮد) ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد.
ﺑﺮاي ﺗﻌﯿﯿﻦ ﻣﻘﺪار ﻣﻘﺎوﻣﺖ Pull-up ﺑﺎﯾﺴﺘﯽ دو ﺷﺮط زﯾﺮ ﺑﺮآورد ﺷﻮد:
1- ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮده ﻣﯽ ﺷﻮد، ﭘﯿﻦ ورودي ﺑﻪ ﺳﻄﺢ Low وﺻﻞ ﺷﻮد. ﻣﻘﺪار ﻣﻘﺎوﻣﺖ R1 ﺑﺎﯾﺴﺘﯽ
ﺟﺮﯾﺎن ﺟﺎري ﺷﺪه از VCC ﺑﻪ زﻣﯿﻦ را ﮐﻨﺘﺮل ﮐﻨﺪ.
2- ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮده ﻧﻤﯽ ﺷﻮد، ﭘﯿﻦ ورودي ﺑﻪ ﺳﻄﺢ High وﺻﻞ ﺷﻮد. ﻣﻘﺪار ﻣﻘﺎوﻣﺖ -Pullup ﺑﺎﯾﺴﺘﯽ ﻣﻘﺪار وﻟﺘﺎژي ﮐﻪ ﺑﺮ روي ﭘﯿﻦ ورودي ﻣﯽاﻓﺘﺪ را ﮐﻨﺘﺮل ﻣﯽ ﮐﻨﺪ (اﻓﺖ وﻟﺘﺎژ ﮐﻢ ﺑﺎﺷﺪ).
ﺑﺮاي ارﺿﺎي ﺷﺮط 1، ﻣﻘﺎوﻣﺖ ﺷﻤﺎ ﻧﺒﺎﯾﺪ ﺧﯿﻠﯽ ﮐﻮﭼﮏ ﺑﺎﺷﺪ. ﻣﻘﺎوﻣﺖ ﮐﻮﭼﮑﺘﺮ ﺑﻪ ﻣﻌﻨﺎي ﺟﺎري ﺷﺪن ﺟﺮﯾﺎن ﺑﺰرﮔﺘﺮ از VCC ﺑﻪ GND اﺳﺖ ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ ﻓﺸﺮد ﻣﯽ ﺷﻮد. ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ ﻣﻌﻤﻮﻻ ﯾﮏ ﻣﻘﺪار ﺑﺰرگ ﺑﺮاي ﻣﻘﺎوﻣﺖ (10 ﮐﯿﻠﻮاﻫﻢ)را در ﻧﻈﺮ ﻣﯿﮕﯿﺮﯾﻢ، اﻣﺎ ﺑﺎﯾﺴﺘﯽ در ﻧﻈﺮ داﺷﺖ ﮐﻪ ﻣﻘﺎوﻣﺖ ﺧﯿﻠﯽ ﻫﻢ ﺑﺰرگ ﻧﺒﺎﺷﺪ ﺗﺎ ﺷﺮط 2 از دﺳﺖ ﺑﺮود. ﺑﻌﻨﻮان ﻣﺜﺎل ﯾﮏ ﻣﻘﺎوﻣﺖ 4 ﻣﮕﺎ اﻫﻤﯽ را ﻧﯿﺰ ﻣﯿﺘﻮان ﺑﻌﻨﻮان ﯾﮏ ﻣﻘﺎوﻣﺖ pull-up، درﻧﻈﺮ ﮔﺮﻓﺖ اﻣﺎ در اﯾﻦ ﺻﻮرت ﻣﺎ ﯾﮏ pull-up ﺿﻌﯿﻒ دارﯾﻢ ﮐﻪ از ﮐﺎرﮐﺮد 100% آن ﻣﻄﻤﺌﻦ ﻧﺨﻮاﻫﯿﻢ ﺑﻮد.
ﻗﺎﻋﺪه ﮐﻠﯽ ﺑﺮاي ﺑﺮآورده ﮐﺮدن ﺷﺮط 2 اﯾﻦ اﺳﺖ ﮐﻪ از ﯾﮏ ﻣﻘﺎوﻣﺖ R1) pull-up)اﺳﺘﻔﺎده ﺷﻮد ﮐﻪ ﺣﺪود ﯾﮏ دﻫﻢ(و ﮐﻮﭼﺘﮑﺘﺮ)ﺑﺮاﺑﺮ ﻣﻘﺎوﻣﺖ اﻣﭙﺪاﻧﺲ ورودي(R2) ﭘﯿﻦ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ (ﯾﺎ ﻗﻄﻌﻪ ﻣﻮرد اﺳﺘﻔﺎده) ﺑﺎﺷﺪ. ﻣﻘﺎوﻣﺖ ورودي ﭘﯿﻦ ﯾﮏ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ ﻣﯿﺘﻮاﻧﺪ از 100 ﮐﯿﻠﻮاﻫﻢ ﺗﺎ 1 ﻣﮕﺎاﻫﻢ ﻣﺘﻐﯿﺮ ﺑﺎﺷﺪ. اﯾﻦ اﻧﺘﺨﺎب ﺑﻪ اﯾﻦ دﻟﯿﻞ اﺳﺖ ﮐﻪ ﻫﻨﮕﺎﻣﯿﮑﻪ دﮐﻤﻪ ﻓﺸﺮده ﻧﻤﯽ ﺷﻮد، ﺑﺮ ﻃﺒﻖ اﺻﻞ ﺗﻘﺴﯿﻢ ﻣﻘﺎوﻣﺘﯽ ﺗﻘﺮﯾﺒﺎ ﺗﻤﺎم وﻟﺘﺎژ VCC روي ﭘﯿﻦ ورودي (R2) ﻗﺮار ﺑﮕﯿﺮد. ﻓﺮض ﮐﻨﯿﺪ ﻣﻘﺎوﻣﺖ ورودي ﭘﯿﻦ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ ﺑﺮاﺑﺮ 1 ﻣﮕﺎ اﻫﻢ ﺑﺎﺷﺪ و ﻣﺎ اﮔﺮ از ﯾﮏ ﻣﻘﺎوﻣﺖ ﺑﺰرگ ﻣﺎﻧﻨﺪ 1 ﻣﮕﺎ اﻫﻢ ﺑﺮاي ﻣﻘﺎوﻣﺖ pull-up (ﻣﻘﺎوﻣﺖ R1)اﺳﺘﻔﺎده ﮐﻨﯿﻢ ﻃﺒﻖ اﺻﻞ ﺗﻘﺴﯿﻢ ﻣﻘﺎوﻣﺘﯽ ﻧﺼﻒ وﻟﺘﺎژ VCC روي ﭘﯿﻦ ﻗﺮار ﻣﯿﮕﯿﺮد ﮐﻪ ﯾﮏ وﺿﻌﯿﺖ وﻟﺘﺎژي ﺗﻘﺮﯾﺒﺎ ﻧﺎﻣﺸﺨﺺ ﺧﻮاﻫﺪ ﺑﻮد. در ﺷﮑﻞ 2 ﻣﻘﺎوﻣﺖ ورودي ﭘﯿﻦ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ ﺑﺎ R2 ﻧﺸﺎن داده ﺷﺪه اﺳﺖ
برای دیدن تصاویر باید ثبت نام کنید
از آﻧﺠﺎﯾﯿﮑﻪ ﻣﻘﺎوﻣﺖ ﻫﺎي pull-up ﻋﻤﻮﻣﺎ ﺑﺴﯿﺎر ﻣﻮرد ﻧﯿﺎز اﺳﺖ، ﺑﺴﯿﺎري از MCUﻫﺎ، ﻣﺎﻧﻨﺪ ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮ ATmega328 در ﭘﻠﺖ ﻓﺮم Arduino، داراي ﭘﻼﮔﯿﻦﻫﺎي داﺧﻠﯽ ﻫﺴﺘﻨﺪ ﮐﻪ ﻣﯿﺘﻮاﻧﻨﺪ ﻓﻌﺎل و ﻏﯿﺮﻓﻌﺎل ﺷﻮﻧﺪ. ﺑﺮاي ﻓﻌﺎل ﮐﺮدن ﭘﻼﮔﯿﻦﻫﺎي داﺧﻠﯽ در Arduino، ﻣﯽﺗﻮاﻧﯿﺪ از ﺧﻂ زﯾﺮ در ﺗﺎﺑﻊ ()setup اﺳﺘﻔﺎده ﮐﻨﯿد
pinMode(5, INPUT_PULLUP); // Enable internal pull-up resistor on pin 5
ﯾﮑﯽ دﯾﮕﺮ از ﭼﯿﺰﻫﺎﯾﯽ ﮐﻪ ﺑﺎﯾﺪ اﺷﺎره ﮐﺮد اﯾﻦ اﺳﺖ ﮐﻪ ﻫﺮ ﭼﻪ ﻣﻘﺪار ﻣﻘﺎوﻣﺖ pull-up ﯾﺸﺘﺮ ﺷﻮد، ﭘﺎﺳﺦ ﭘﯿﻦ ﺑﻪ ﺗﻐﯿﯿﺮات وﻟﺘﺎژ ﮐﻨﺪﺗﺮ ﺧﻮاﻫﺪ ﺑﻮد. اﯾﻦ ﺑﺪﯾﻦ دﻟﯿﻞ اﺳﺖ ﮐﻪ ﺳﯿﺴﺘﻢ ﮐﻪ ﭘﯿﻦ ورودي را ﺗﻐﺬﯾﻪ ﻣﯽﮐﻨﺪ، اﺳﺎﺳﺎً ﯾﮏ ﺧﺎزن ﭘﺎرازﯾﺘﯽ ﺑﻪ ﻫﻤﺮاه ﯾﮏ ﻣﻘﺎوﻣﺖ pull-up اﺳﺖ، ﺑﻨﺎﺑﺮاﯾﻦ ﯾﮏ ﻓﯿﻠﺘﺮ RC اﯾﺠﺎد ﻣﯽﺷﻮد و ﻓﯿﻠﺘﺮﻫﺎي RC ﺑﺎ ﺛﺎﺑﺖ زﻣﺎﻧﯽ ﺑﺰرگ ﺑﺮاي ﺷﺎرژ و دﺷﺎرژ، زﻣﺎن زﯾﺎدي را ﺻﺮف ﻣﯽ ﮐﻨﻨﺪ. اﮔﺮ ﯾﮏ ﺳﯿﮕﻨﺎل واﻗﻌﺎً ﺳﺮﯾﻊ در ﺣﺎل ﺗﻐﯿﯿﺮ (ﻣﺜﻞ USB) دارﯾﺪ، ﯾﮏ رزوﻟﻮﺷﻦ ﺑﺎﻻ ﻧﯿﺎز دارﯾﺪ ﺗﺎ ﺑﻪ ﺳﺮﻋﺖ ﺑﺘﻮاﻧﺪ ﺑﻪ ﺗﻐﯿﯿﺮات ﺳﻄﻮح وﻟﺘﺎژ ﭘﺎﺳﺦ دﻫﺪ. ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ اﺳﺖ ﮐﻪ ﺷﻤﺎ اﻏﻠﺐ ﻣﻘﺎوﻣﺘﻬﺎي 1 ﮐﯿﻠﻮ ﺗﺎ 4,7 ﮐﯿﻠﻮاﻫﻤﯽ در ﺧﻄﻮط ﺳﯿﮕﻨﺎل USB ﻣﺸﺎﻫﺪه ﺧﻮاﻫﯿﺪ ﮐﺮد. ﺗﻤﺎم اﯾﻦ ﻋﻮاﻣﻞ ﻧﺎم ﺑﺮده در ﺗﺼﻤﯿﻢ ﮔﯿﺮي ﺑﺮاي اﻧﺘﺨﺎب ﻣﻘﺎوﻣﺖ pull-up ﺗﺎﺛﯿﺮﮔﺬار ﺧﻮاﻫﺪ ﺑﻮد.
ﻣﺜﺎﻟﯽ ﺳﺎده از ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ ﻣﻘﺎوﻣﺖ pull-up:
ﻓﺮض ﮐﻨﯿﺪ ﺷﻤﺎ ﻣﯽ ﺧﻮاﻫﯿﺪ ﻫﻨﮕﺎﻣﯽ ﮐﻪ دﮐﻤﻪ در ﻣﺪار ﺷﮑﻞ 1 ﻓﺸﺎر داده ﻣﯿﺸﻮد ﺟﺮﯾﺎن را ﺑﻪ ﺣﺪود 1 ﻣﯿﻠﯽ آﻣﭙﺮ ﻣﺤﺪود ﮐﻨﯿﺪ و ﻓﺮض ﮐﻨﯿﺪ در اﯾﻨﺠﺎ Vcc = 5V اﺳﺖ. از ﭼﻪ ﻣﻘﺎوﻣﺘﯽ ﺑﺎﯾﺪ اﺳﺘﻔﺎده ﮐﻨﯿﻢ
ﻧﺤﻮه ﻣﺤﺎﺳﺒﻪ ﺑﺴﯿﺎر آﺳﺎن اﺳﺖ و از ﻗﺎﻧﻮن اﻫﻢ اﺳﺘﻔﺎده ﻣﯿﺸﻮد:
برای دیدن تصاویر باید ثبت نام کنید
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺷﮑﻞ 1 ﻗﺎﻧﻮن اﻫﻢ ﺑﻪ ﺻﻮرت زﯾﺮ در ﻣﯽآﯾﺪ:
برای دیدن تصاویر باید ثبت نام کنید
ﺑﺎ ﺟﺎﯾﮕﺬاري ﻣﻘﺎدﯾﺮ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه دارﯾﻢ:
برای دیدن تصاویر باید ثبت نام کنید