- Широчинно импулсна модулация:
- Необходим материал
- Електрическа схема
- Код и обяснение
- Контрол на скоростта на DC мотор с помощта на Arduino
Двигателят с постоянен ток е най-използваният двигател в проекти по роботика и електроника. За управление на скоростта на постояннотоковия двигател имаме различни методи, като скоростта може да се контролира автоматично въз основа на температурата, но в този проект ще се използва ШИМ метод за контрол на скоростта на постояннотоковия двигател. Тук в този проект за контрол на скоростта на двигателя Arduino скоростта може да се контролира чрез завъртане на копчето на потенциометъра.
Широчинно импулсна модулация:
Какво е ШИМ? ШИМ е техника, чрез която можем да контролираме напрежението или мощността. За да го разберете по-просто, ако прилагате 5 волта за задвижване на мотор, тогава двигателят ще се движи с известна скорост, сега, ако намалим приложеното напрежение с 2 средства, прилагаме 3 волта към двигателя, тогава скоростта на двигателя също намалява. Тази концепция се използва в проекта за управление на напрежението чрез ШИМ. В тази статия обяснихме подробно ШИМ. Също така проверете тази схема, където се използва ШИМ за контрол на яркостта на светодиода: 1 вата LED димер.
% Работен цикъл = (TON / (TON + TOFF)) * 100 Къде, T ON = ВИСОКО време на квадратната вълна T OFF = НИСКО време на квадратната вълна
Сега, ако превключвателят на фигурата е затворен непрекъснато за определен период от време, тогава двигателят непрекъснато ще се включва през това време. Ако превключвателят е затворен за 8 ms и отворен за 2 ms за цикъл от 10 ms, тогава двигателят ще бъде включен само за 8 ms време. Сега средният терминал през целия период от 10ms = Включване на времето / (Включване на времето + Изключване на времето), това се нарича работен цикъл и е от 80% (8 / (8 + 2)), така че средната стойност изходното напрежение ще бъде 80% от напрежението на батерията. Сега човешкото око не може да види, че двигателят е включен за 8ms и изключен за 2ms, така че ще изглежда така, сякаш DC двигателят се върти с 80% скорост.
Във втория случай превключвателят е затворен за 5ms и отворен за 5ms за период от 10ms, така че средното напрежение на изхода на изхода ще бъде 50% от напрежението на батерията. Кажете, ако напрежението на батерията е 5V, а работният цикъл е 50% и така средното напрежение на терминала ще бъде 2.5V.
В третия случай работният цикъл е 20%, а средното напрежение на клемата е 20% от напрежението на акумулатора.
Използвали сме ШИМ с Arduino в много от нашите проекти:
- LED димер, базиран на Arduino, използващ ШИМ
- Вентилатор с контролирана температура с помощта на Arduino
- DC управление на двигателя с помощта на Arduino
- Контрол на скоростта на вентилатора с помощта на Arduino и TRIAC
Можете да научите повече за ШИМ, като преминете през различни проекти, базирани на ШИМ.
Необходим материал
- Arduino UNO
- DC мотор
- Транзистор 2N2222
- Потенциометър 100k ома
- Кондензатор 0.1uF
- Макет
- Скачащи проводници
Електрическа схема
Схема за контрол на скоростта на двигателя на Arduino DC чрез ШИМ е дадена по-долу:
Код и обяснение
Пълният код за Arduino DC Motor Control с помощта на потенциометър е даден в края.
В кода по-долу сме инициализирали променливите c1 и c2 и сме присвоили аналогов щифт A0 за изхода на потенциометъра и 12 -ти Pin за 'pwm'.
int pwmPin = 12; int пот = A0; int c1 = 0; int c2 = 0;
Сега, в кода по-долу, задайте пин A0 като вход и 12 (който е PWM щифт) като изход.
void setup () { pinMode (pwmPin, OUTPUT); // декларира пин 12 като изход pinMode (пот, INPUT); // декларира щифт A0 като вход }
Сега, в void loop (), ние четем аналоговата стойност (от A0), използвайки analogRead (pot) и я запазваме в променлива c2. След това извадете стойността на c2 от 1024 и запишете резултата в c1. След това направете PWM щифта 12 -ти на Arduino HIGH и след това след забавяне на стойност c1 направете този щифт LOW. Отново след забавяне на стойност c2 цикълът продължава.
Причината за изваждане на аналоговата стойност от 1024 е, че Arduino Uno ADC е с 10-битова разделителна способност (така че целочислените стойности от 0 - 2 ^ 10 = 1024 стойности). Това означава, че ще преобразува входните напрежения между 0 и 5 волта в целочислени стойности между 0 и 1024. Така че, ако умножим входното anlogValue на (5/1024), тогава получаваме цифровата стойност на входното напрежение. Научете тук как да използвате ADC въвеждане в Arduino.
цикъл void () { c2 = analogRead (пот); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // задава щифт 12 HIGH delayMicroseconds (c1); // изчаква c1 uS (високо време) digitalWrite (pwmPin, LOW); // задава щифт 12 LOW delayMicroseconds (c2); // чака c2 uS (ниско време) }
Контрол на скоростта на DC мотор с помощта на Arduino
В тази схема за управление на скоростта на постояннотоков двигател използваме потенциометър 100K ома, за да променим работния цикъл на ШИМ сигнала. Потенциометърът от 100K ома е свързан към аналоговия входен щифт A0 на Arduino UNO, а постояннотоковият двигател е свързан към 12 -ия щифт на Arduino (който е PWM щифтът). Работата на програмата Arduino е много проста, тъй като отчита напрежението от аналоговия щифт A0. Напрежението на аналоговия щифт се променя с помощта на потенциометъра. След извършване на някои необходими изчисления, работният цикъл се регулира според него.
Например, ако подадем 256 стойност към аналоговия вход, тогава ВИСОКОТО време ще бъде 768ms (1024-256) и LOW времето ще бъде 256ms. Следователно това просто означава, че работният цикъл е 75%. Очите ни не могат да видят толкова високочестотни трептения и изглежда, че двигателят е непрекъснато ВКЛЮЧЕН със 75% от скоростта. Така че можем да изпълняваме контрол на скоростта на двигателя с помощта на Arduino.