ﺍﻟﺘﺤﻜﻢ ﺑﺎﺗﺠﺎﻩ ﻭﺳﺮﻋﺔ ﺩﻭﺭﺍﻥ ﻣﺤﺮﻙ : DC Motor
ﻓﻲ ﻫﺬﺍ ﺍﻟﺪﺭﺱ ﺳﺘﺘﻌﻠﻢ ﻛﻴﻔﻴﺔ ﺍﻟﺘﺤﻜﻢ ﺑﺴﺮﻋﺔ ﻭﺍﺗﺠﺎﻩ ﺣﺮﻛﺔ ﻣﺤﺮﻙ ﺍﻟﺘﻴﺎﺭ ﺍﻟﻤﺴﺘﻤﺮ ﺍﻟﺼﻐﻴﺮ
DC Motor ﻋﻦ ﻃﺮﻳﻖ ﺍﻷﺭﺩﻭﻳﻨﻮ ﻭﺭﻗﺎﻗﺔ ﺍﻟﺘﺤﻜﻢ ﺑﺎﻟﻤﺤﺮﻙ L293D .
ﻓﻲ ﻫﺬﻩ ﺍﻟﺘﺠﺮﺑﺔ ﺍﺳﺘﺨﺪﻣﻨﺎ ﺍﻟﻤﻘﺎﻭﻡ ﺍﻟﻤﺘﻐﻴﺮ ’pot‘ ﻟﻠﺘﺤﻜﻢ ﺑﺴﺮﻋﺔ ﺍﻟﻤﺤﺮﻙ ،
ﻛﻤﺎ ﺍﺳﺘﺨﺪﻣﻨﺎ ﺯﺭ push‘ ’button ﻟﻠﺘﺤﻜﻢ ﻓﻲ ﺍﺗﺠﺎﻩ ﺣﺮﻛﺔ ﺍﻟﻤﺤﺮﻙ .
ﻋﻠﻴﻨﺎ ﺍﺟﺮﺍﺀ ﺍﻟﺘﺠﺮﺑﺔ ﻣﻊ ﺭﻗﺎﻗﺔ ﺍﻟﺘﺤﻜﻢ ﺑﺎﻟﻤﺤﺮﻙ L293D ﻟﻠﺘﻌﺮﻑ ﻋﻠﻰ ﻃﺮﻳﻘﺔ ﻋﻤﻠﻬﺎ .
ﻛﻞ ﻣﺎﻋﻠﻴﻨﺎ ﻓﻌﻠﻪ ﻫﻮ ﺗﻮﻓﻴﺮ ﻃﺎﻗﺔ 5V ﻣﻦ ﺍﻷﺭﺩﻭﻳﻨﻮ ﻟﻠﻤﺤﺮﻙ ﺍﻟﺼﻐﻴﺮ .
ﻻﺣﻆ ﺍﺗﺠﺎﻩ ﺩﻭﺭﺍﻥ ﺍﻟﻤﺤﺮﻙ ، ﻳﻤﻜﻨﻚ ﻟﻤﺲ ﺍﻟﻤﺤﺮﻙ ﺑﺄﺻﺎﺑﻌﻚ ﻟﻤﻌﺮﻓﺔ ﺍﺗﺠﻬﺎ ﺍﻟﺤﺮﻛﻪ . ﻳﻤﻜﻨﻚ ﻋﻜﺲ ﺍﺗﺠﺎﻩ ﺣﺮﻛﺔ ﺍﻟﻤﺤﺮﻙ ﻋﺒﺮ ﻋﻜﺲ ﺗﻮﺻﻴﻼﺕ ﺍﻟﻤﺤﺮﻙ ( ﻗﻢ ﺑﺘﺒﺪﻳﻞ ﺗﻮﺻﻴﻠﺔ ﺍﻟـ 5V ﺑـ GND ، ﻛﺬﻟﻚ ﺍﻟﺤﺎﻝ ﻣﻊ ﺍﻟﺘﻮﺻﻴﻠﻪ ﺍﻷﺧﺮﻯ ) ﺑﺬﻟﻚ ﺳﺘﺮﻯ ﺍﻧﻌﻜﺎﺱ ﻻﺗﺠﺎﻩ ﺣﺮﻛﺔ ﺍﻟﺪﻭﺭﺍﻥ .
ﻭﻫﺬﺍ ﻫﻮ ﺩﻭﺭ ﺭﻗﺎﻗﺔ ﺍﻟﺘﺤﻜﻢ ﺑﺎﻟﻤﺤﺮﻙ L293D ، ﺗﻘﻮﻡ ﺑﺎﻟﺘﺤﻜﻢ ﺑﺎﻟﻤﻨﺎﻓﺬ ﺍﻟﺘﻲ ﺗﻮﻓﺮ ﺍﻟﻄﺎﻗﺔ ﻭﺍﻟﻤﺠﺎﻝ ﺍﻷﺭﺿﻲ GND ﻭﺑﺬﻟﻚ ﺗﺘﺤﻜﻢ ﺑﺎﺗﺠﺎﻩ ﺣﺮﻛﺔ ﺍﻟﺪﻭﺭﺍﻥ .
ﻗﻢ ﺑﺒﻨﺎﺀ ﻟﻮﺡ ﺍﻟﺘﺠﺎﺭﺏ ﻛﺎﻟﺘﺎﻟﻲ ، ﻻﺣﻆ ﺍﻥ ﺩﻭﺭ ﻣﺘﺤﻜﻢ ﺍﻷﺭﺩﻭﻳﻨﻮ ﻫﻨﺎ ﻫﻮ ﺗﻮﻓﻴﺮ ﺍﻟﻄﺎﻗﻪ ﻓﻘﻂ .
ﺍﻟﻤﻨﺎﻓﺬ ﺍﻟﺘﻲ ﺗﻬﻤﻨﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺮﻗﺎﻗﺔ ﺍﻟﺘﺤﻜﻢ ﺑﺎﻟﻤﺤﺮﻙ L293D ﻫﻲ ﺛﻼﺙ ﻣﻨﺎﻓﺬ ، ﻣﻨﻔﺬ( 1 Pin 1 (Enable ) ، ﻣﻨﻔﺬ) 2 Pin 2 (In1 ) ، ﻭﻣﻨﻔﺬ) 7 Pin 7 (In2 ) .
ﻭﻫﺬﻩ ﺗﻜﻦ ﻣﻮﺻﻮﻟﺔ ﺇﻣﺎ ﺑـ 5V ﺃﻭ GND ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺴﻠﻚ ﺍﻟﺒﻨﻔﺴﺠﻲ ، ﺃﻭ ﺍﻷﺻﻔﺮ ﺃﻭ ﺍﻟﺒﺮﺗﻘﺎﻟﻲ .
ﺍﺫﺍ ﻗﻤﺖ ﺑﺮﺑﻂ Pin 1 (Enable ) ﻟﻠـ GND ﺳﻴﺘﻮﻗﻒ ﺍﻟﻤﺤﺮﻙ، ﻣﻬﻤﺎ ﻓﻌﻠﺖ ﺑـ pin In1 ﻭ pin In2 . ﻳﻘﻮﻡ Enable ﺑﺎﻟﺘﺸﻐﻴﻞ ﺃﻭ ﺍﻹﻃﻔﺎﺀ . ﻫﺬﺍ ﻳﺠﻌﻠﻪ ﻣﻔﻴﺪ ﻻﺳﺘﺨﺪﺍﻡ ‘ PWM output ’ ﻟﻠﺘﺤﻜﻢ ﻓﻲ ﺳﺮﻋﺔ ﺍﻟﻤﺤﺮﻙ . ﻗﻢ ﺑﺘﻮﺻﻴﻞ Pin 1 ﺇﻟﻰ 5V ﻟﺘﺸﻐﻴﻞ ﺍﻟﻤﺤﺮﻙ ﻣﺮﻩ ﺃﺧﺮﻯ .
ﻭﺍﻻﻥ ﻗﻢ ﺑﺘﻐﻴﻴﺮ In1 (pin 2 , ﺃﺻﻔﺮ ) ﻣﻦ 5V ﺇﻟﻰ GND.
In1 ﻭ In2 ﺟﻤﻴﻌﻬﺎ ﻣﺮﺗﺒﻄﻪ ﺑـ GND ، ﻭﺑﺎﻟﺘﺎﻟﻲ ﺳﻴﺘﻮﻗﻒ ﺍﻟﻤﺤﺮﻙ ﻣﺮﻩ ﺃﺧﺮﻯ .
ﺗﻐﻴﻴﺮ In2 ﻣﻦ GND ﺇﻟﻰ 5V ﺳﻴﻌﻜﺲ ﺣﺮﻛﺔ ﺩﻭﺭﺍﻥ ﺍﻟﻤﺤﺮﻙ ( ﺍﻻﺗﺠﺎﻩ ﺍﻵﺧﺮ ) .
ﺃﺧﻴﺮﺍً ، ﺑﺘﻐﻴﻴﺮ In1 ﻭﺭﺑﻄﻪ ﻣﺮﻩ ﺃﺧﺮﻯ ﺑـ 5V ﺑﺎﻟﺘﺎﻟﻲ ﺳﻴﻜﻮﻥ In1 ﻭ In2 ﻣﺮﺗﺒﻄﻪ ﺑـ 5V ﺳﻴﻮﻗﻒ ﺍﻟﻤﺤﺮﻙ .
قم ﺑﺮﻓﻊ ﺍﻟﻜﻮﺩ ﺍﻟﺘﺎﻟﻲ ﻋﻠﻰ ﻣﺘﺤﻜﻢ ﺍﻷﺭﺩﻭﻳﻨﻮ :
int enablePin = 11; int in1Pin = 10;
int in2Pin = 9; int switchPin = 7; int potPin = 0;
void setup() {
pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(switchPin, INPUT_PULLUP); }
void loop() {
int speed = analogRead(potPin) / 4;
boolean reverse = digitalRead(switchPin);
setMotor(speed, reverse); }
void setMotor(int speed, boolean reverse) {
analogWrite(enablePin, speed);
digitalWrite(in1Pin, ! reverse);
digitalWrite(in2Pin, reverse); }
ﺩﺍﺧﻞ ﺩﺍﻟﺔ setup ﺗﻢ ﺗﻌﺮﻳﻒ ﺍﻟﻤﻨﺎﻓﺬ ﻭﺣﺎﻻﺗﻬﺎ .
ﺩﺍﺧﻞ ﺩﺍﻟﺔ loop ، ﻳﺘﻢ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ ﺍﻟﺴﺮﻋﺔ ﻟﻠﻤﺤﺮﻙ ﻋﺒﺮ ﺍﺧﺬ ﻗﺮﺍﺀﺓ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺘﻨﺎﻇﺮﻳﺔ ’analogRead‘ ﻣﻦ ﺍﻟﻤﻘﺎﻭﻡ ﺍﻟﻤﺘﻐﻴﺮ ’pot‘ ﻭﻗﺴﻤﺘﻪ ﻋﻠﻰ .4
ﺍﻟﺴﺒﺐ ﻭﺭﺍﺀ ﺍﻟﻘﺴﻤﺔ ﻋﻠﻰ 4 ﻫﻲ ﻷﻥ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﺴﺘﺨﺮﺟﺔ ﻣﻦ ﺍﻟﻘﺮﺍﺀﺓ ﺍﻟﺘﻨﺎﻇﺮﻳﺔ ’analogRead‘ ﺗﻜﻮﻥ ﻣﺎﺑﻴﻦ 0 ﻭ 1023 ﻭﻟﻜﻨﻬﺎ ﻳﺠﺐ ﺃﻥ ﺗﻜﻮﻥ ﺍﻟﻘﻴﻤﺔ ﺑﻲ 0 ﻭ .255
ﺍﺫﺍ ﺗﻢ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺍﻟﺰﺭ ، ﻓﺈﻥ ﺍﻟﻤﺤﺮﻙ ﺳﻴﺘﺤﺮﻙ ﻟﻸﻣﺎﻡ ، ﻭﺑﺎﻟﻀﻐﻂ ﻣﺮﻩ ﺃﺧﺮﻯ ﺳﻴﺘﺤﺮﻙ ﺑﻌﻜﺲ ﺍﻻﺗﺠﺎﻩ .
ﺍﻟﻘﻴﻤﺔ ﻟﻤﺘﻐﻴﺮ ’reverse‘ ﻳﺘﻢ ﺃﺧﺬﻩ ﻣﻦ ﻣﺘﻐﻴﺮ ’switchPin‘ ،ﻟﺬﺍ ﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺍﻟﺰﺭ ﺳﺘﻜﻮﻥ ﺍﻟﻘﻴﻤﺔ 0 ،ﻭﻋﻨﺪ ﺍﻟﻀﻐﻂ ﻣﺮﻩ ﺃﺧﻰ ﺳﺘﻜﻮﻥ ﺍﻟﻘﻴﻤﺔ 1 .
ﻗﻴﻤﺔ ﺍﻟﺴﺮﻋﺔ ﻭ ﺍﻻﻧﻌﻜﺎﺱ ’reverse‘ ﻳﺘﻢ ﺗﻤﺮﻳﺮﻫﺎ ﺇﻟﻰ ﺍﻟﺪﺍﻟﺔ ’setMotor‘ ﻭﺍﻟﺘﻲ ﺳﺘﺤﺪﺩ ﺍﻟﻤﻨﺎﻓﺬ ﻟﺮﻗﺎﻗﺔ ﺍﻟﺘﺤﻜﻢ ﺑﺎﻟﻤﺤﺮﻙ