AnalogWrite не работает - при попытке контролировать скорость двигателя постоянного тока

Я пытаюсь контролировать скорость двигателя постоянного тока с помощью

  1. Ардуино R3
  2. Транзистор NPN (2N2222A331)
  3. Потенциометр 10k
  4. Резистор 2 МОм
  5. Диод

Я не использую L298N и L293D.

Двигатель постоянного тока работает, но скорость двигателя постоянного тока не меняется при изменении положения потенциометра. Цепь вроде бы в порядке, двигатель постоянного тока работает.

Код выглядит следующим образом

int potPin = A0;
int motorPin = 9;
int potValue = 0;
int motorValue = 0;

void setup() 
{
 Serial.begin(9600);
 pinMode(motorPin,OUTPUT);
}


void loop() 
{
 potValue = analogRead(potPin);  
 motorValue = map(potValue, 0, 1023, 0, 255);
 analogWrite(motorPin, motorValue);  
 delay(2);
 Serial.print("potentiometer = " );     
 Serial.print(potValue);
 Serial.print("t motor = ");
 Serial.println(motorValue); 
}

Всякий раз, когда я настраиваю потенциометр, я вижу относительные изменения от «Последовательного монитора» Arduino (как значения потенциометра, так и значения двигателя), но скорость, кажется, не меняется физически.

Что я пробовал

  1. испытывал различные комбинации резисторов (100,1k,10k,1M,2MОм), чтобы варьировать напряжение, подаваемое на двигатель постоянного тока.
  2. пытался проверить с помощью разных выходных контактов, таких как 3,5,9

Ничего не работает, скорость двигателя постоянного тока не меняется.

это наводит меня на мысль, что мой аналог не работает. пожалуйста, помогите мне понять, что я делаю неправильно?

Схема выглядит следующим образом

Схема

, 👍1

Обсуждение

установите значение с помощью AnalogWrite, только если оно изменилось. теперь вы перезапускаете PWM в каждом цикле, @Juraj


3 ответа


0

Ну и резистор 2М в базу? Если двигатель работает с этим, транзистор должен быть сломан (закорочен). Просто попробуйте проверить, работает ли двигатель с отключенной базой.

Вы также можете проверить выход ШИМ, подключив светодиод к резистору (нет, не 2 МОм, всего около 330 Ом). Для транзистора должно хватить 1к, может чуть меньше (зависит от тока двигателя и коэффициента усиления h21e).

Также есть версии 2N2222 с поменявшимися местами эмиттер и коллектор. А обратный транзистор имеет гораздо меньший коэффициент усиления тока.

И я надеюсь, что вы используете внешний источник питания, USB не очень хорошая идея. Пусковая мощность обычно слишком велика для защиты от перегрузки по току.

Во всяком случае, это работает для меня:

void setup() {
  pinMode(9, OUTPUT);
}

void loop() {
  analogWrite(9, map(analogRead(A0), 0, 1023, 0, 255));
  delay(100);
}

2N2222A + 1k + ВЕНТИЛЯТОР ПК + Блок питания вентилятора 12 В.

Соединения:
E -> Gnd,
C -> FAN-,
FAN+ -> 12 В,
12 В GND -> Arduino GND,
Контакт 9 -> 1к -> В

На стороне Arduino триммер 47k и USB

,

Спасибо за ответ !! .... но проблема остается !! Двигатель не работает с отключенной базой !! Я проверил выход ШИМ с помощью светодиода и резистора (уменьшая яркость светодиода) .... кажется, он работает в соответствии с ожиданиями. Пробовал поменять местами соединения эмиттера и коллектора ..... Двигатель постоянного тока работал, но не регулировал скорость adriuno dint powerup с батареей 9 В для цепи двигателя постоянного тока .... поэтому я использую USB в качестве источника питания !! У меня заканчиваются варианты, пожалуйста, помогите мне!, @Sharath Chandra

@SharathChandra у меня отлично работает с ПК FAN и внешним блоком питания 12 В. Даже с задержкой в 2 мс., @KIIV

А так же двигатель постоянного тока + антипараллельный шоттки работает (со своим БП), @KIIV

Можете ли вы изменить скорость обычного двигателя постоянного тока с помощью ШИМ? Я бы подумал, что импульсный постоянный ток будет играть с ним хаос, давая странные результаты. Я ожидаю, что понадобится RC-фильтр для преобразования импульсного выхода в довольно постоянный выход постоянного тока. Я знаю, что некоторые сервоприводы работают на постоянном токе, но обычный двигатель постоянного тока?, @Duncan C

@DuncanC Конечно, могу, но без нагрузки. Это небольшой двигатель постоянного тока от какого-то старого плейера. Однако, поскольку это двигатель постоянного тока с коммутатором, я не понимаю, почему он должен быть таким плохим, может быть, с большими электромагнитными помехами. А пики мощности дают дополнительный крутящий момент на низких оборотах., @KIIV


1

Две вещи, которые нужно проверить:

  1. Вы пытались поставить светодиод (и резистор для его защиты) вместо двигателя? Если яркость меняется, ваша установка (Arduino+транзистор) работает. Если нет, возможно, вы убили свой 2N2222, установив неправильный диод, или что-то еще не так.
  2. Вы пробовали уменьшить частоту ШИМ? Светодиод может реагировать на быстрое изменение, а двигатель — нет. Кроме того, реже включая-выключая двигатель, вы рассеиваете меньше энергии на транзисторе и диоде. Быстрый поиск дал мне следующее: это.
,

1

Ссылаясь на

,