Усиление ШИМ

cheeps
Offline
Зарегистрирован: 25.03.2018

Дано: arduino nano, ec-вентилятор embpast и блок питания на 40 вольт. Подключено по схеме

Резистор 420 Ом, транзистор bc547a. С ардуино подаю шим

void setup() {
  // ШИМ 8 разрядов 7 812,5 Гц
  TCCR1A = TCCR1A & 0xe0 | 1;
  TCCR1B = TCCR1B & 0xe0 | 0x0a;
  // открываем последовательный порт
  Serial.begin(9600);
}

void loop() {
  analogWrite(9, 25); // на выводе 9 ШИМ=10%
  Serial.print("На выводе 9 ШИМ=10%\r\n");
  delay(10000);//задержка 10 секунд
  analogWrite(9, 50); // на выводе 9 ШИМ=20%
  Serial.print("На выводе 9 ШИМ=20%\r\n");
  delay(10000);//задержка 10 секунд
  analogWrite(9, 75); // на выводе 9 ШИМ=30%
  Serial.print("На выводе 9 ШИМ=30%\r\n");
  delay(10000);//задержка 10 секунд
  analogWrite(9, 100); // на выводе 9 ШИМ=40%
  Serial.print("На выводе 9 ШИМ=40%\r\n");
  delay(10000);//задержка 10 секунд
  analogWrite(9, 125); // на выводе 9 ШИМ=50%
  Serial.print("На выводе 9 ШИМ=50%\r\n");
  delay(10000);//задержка 10 секунд
  analogWrite(9, 150); // на выводе 9 ШИМ=60%
  Serial.print("На выводе 9 ШИМ=60%\r\n");
  delay(10000);//задержка 10 секунд
  analogWrite(9, 175); // на выводе 9 ШИМ=70%
  Serial.print("На выводе 9 ШИМ=70%\r\n");
  delay(10000);//задержка 10 секунд
  analogWrite(9, 200); // на выводе 9 ШИМ=80%
  Serial.print("На выводе 9 ШИМ=80%\r\n");
  delay(10000);//задержка 10 секунд
  analogWrite(9, 225); // на выводе 9 ШИМ=90%
  Serial.print("На выводе 9 ШИМ=90%\r\n");
  delay(10000);//задержка 10 секунд
  analogWrite(9, 255); // на выводе 9 ШИМ=100%
  Serial.print("На выводе 9 ШИМ=100%\r\n");
  delay(10000);//задержка 10 секунд
}

На 20% на базе транзистора имеем такую картинку

А на управляющем входе такую 

т.е. уже 80%. Собственно вопрос, как сделать чтобы шим не инвертировался и почему так происходит?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

меряете на управляющем ВЫХОДЕ ? наверное относительно земли 

меряйте непосредственно на нагрузке.

транзистор вы выбрали не удачный, не знаю сколько там вентелятор жрет, но транзистор всего на 100 мА.

бабахнуть может !

да лучше схему приложите, еще чего всплывет...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

cheeps пишет:

 почему так происходит?

Схемы никто не видел, но шар говорит, что происходит это потому, что Вы включили транзистор по схеме с общим эмиттером - т.е. собрали инвертирующий усилитель.

cheeps пишет:

Собственно вопрос, как сделать чтобы шим не инвертировался

Опять же, нет ни схемы ни толкового объяснения задачи. Шар говорит, что Вам на самом деле не надо ничего делать, и так нормально (Вам уже посоветовали мерять напряжение на нагрузке, а не от земли). Но если надо ... сначала хотелось бы понимать задачу.

cheeps
Offline
Зарегистрирован: 25.03.2018

ЕвгенийП пишет:

Опять же, нет ни схемы ни толкового объяснения задачи. Шар говорит, что Вам на самом деле не надо ничего делать, и так нормально (Вам уже посоветовали мерять напряжение на нагрузке, а не от земли). Но если надо ... сначала хотелось бы понимать задачу.

Была картинка, честное слово)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

cheeps пишет:
Была картинка, честное слово)

Понятно. ну, если Вам лень нарисовать схему для решения СВОЕЙ проблемы, то мне, знаете как-то, тем более лень, напрягаться ради решения ВАШЕЙ проблемы. Видать, не особо-то оно Вам и нужно, а мне тем более.

ВН
Offline
Зарегистрирован: 25.02.2016

У него там управляемый модуль похоже и варианты управления к нему, других схем просто нет.

cheeps, попробуйте просто инвертировать ШИМ

 analogWrite(9, (255-25)); // на выводе 9 ШИМ=10%
11   Serial.print("На выводе 9 ШИМ=10%\r\n");
12   delay(10000);//задержка 10 секунд
13   analogWrite(9,(255- 50)); // на выводе 9 ШИМ=20%
14   Serial.print("На выводе 9 ШИМ=20%\r\n");

и т.д 

cheeps
Offline
Зарегистрирован: 25.03.2018

С инвертированием програмно понятно.