Китайцы и реверс DC моторов четырьмя транзисторами.

uscr
Offline
Зарегистрирован: 17.08.2012

Здравствуйте! Приобрёл радиоуправляемую машинку в качестве платформы для робота. Двигатели у неё умеют крутиться назад и вперёд. При этом, управляется каждый из них вот такой схемой:

Не очень понимаю, как это работает и можно ли повторить фокус на ULN2003 или тут используется "фича" конкретного транзистора? На транзисторах маркировка 2SD882

uscr
Offline
Зарегистрирован: 17.08.2012

Ошибся разделом. Прошу прощения.

leshak
Offline
Зарегистрирован: 29.09.2011

 

uscr пишет:

Ошибся разделом. Прошу прощения.

Не беда. Перенес в аппаратные.

По теме:

Не очень силен в железе (то есть тут скорее не подскажу, а "самому интерестно понять"), но есть смутное подозрение в верности нарисованной схемы. У второго третьего транзистора E-C не перепутны? Не должен быть транзистор вверх тормашками? Всмысле коллектор не к плюсу батареи должен идти? Тогда логика как-бы понятна будет.

А с ULN - наверное не выйдет. Она умеет, вроде только землю "подключать отключать". Так что наверное потребуется еще и ULS.

maksim
Offline
Зарегистрирован: 12.02.2012

Да так и есть, такая схема имеет место быть.

Но логичнее было бы поставить два PNP транзистора и два NPN. Что то типа этого:

 

uscr
Offline
Зарегистрирован: 17.08.2012

leshak пишет:

есть смутное подозрение в верности нарисованной схемы

Придётся поверить. Все транзисторы одинаковые, одинаково сориентированы. Мог перепутать эмиттер и базу (они по краям у этого транзистора, если верить даташиту), но тогда вообще ерунда полчается. Меня смутило то, что у каждой пары транзисторов один эмиттер приходит на плюс, другой на минус. Вот я и подумал, что тут может быть како-то волшебный пробой транзистора в обратную сторону даёт нуный эффект.

А "вверх тормашками" - это так?

 

Тогда 1-3 - едем вперёд, 2-4 - едем назад? Блин, чтож я до такого не додумался... Собственно, транисторы у меня тоже где-то валялись. Правда, моторы жрут по 2 ампера - таких могу и не найти.

uscr
Offline
Зарегистрирован: 17.08.2012

maksim пишет:

Да так и есть, такая схема имеет место быть.

Но логичнее было бы поставить два PNP транзистора и два NPN. Что то типа этого:

 

 

Теперь всё понятно. Спасибо.

uscr
Offline
Зарегистрирован: 17.08.2012

Господа, не нашлось у меня npn транзисторов, и я их спешно заказал. Но пока почта будет везти мою посылку на улитках, я решил поразвлечься с pnp и спаял такую вот схему, пытаясь добиться поведения, аналогичного "китайской" схеме:

 

Но... Не работает. Совсем. В местах подключения проводов от моторов напряжение 5В (относительно земли), а ардуина, которая после загрузки призвана выдать HIGH на базы транзисторов не отвечает на внешние раздражители. пожоже на КЗ между пинами.

Вопрос: что это - последствия неаккуратной пайки или моего тугоумия?

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Спасибо, а я хотел при помощи реле делать, типо полевик отключает нагрузку и реле меняет полярность потом включает...

.c8r
.c8r аватар
Offline
Зарегистрирован: 15.11.2011

Всем добрый день!

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

спасибо!

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Какой мощности мотор?

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

 

Вот набросал немного, не знаю верно ли, но при моделировании работает:

Данные транзисторы "держат" ток в 9 Ампер, но не следует забывать о запасе.

Вот даже тестовый скетч набросал:



int d = 0; 
int pwm = 0;
int time = 50; // 40 * 256 = 10 секунд разгон двигателя, столько же уменьшение оборотов
void setup()  
{ 
  pinMode(0, OUTPUT); // для ардуино 10 и 11 
  pinMode(1, OUTPUT); 
} 

void loop()  
{ 
  d = 0; // для ардуино 10 и 11 
  motor();
  d = 1;
  motor();
}

void motor()  
{ 
  for(pwm = 0; pwm < 255; pwm++) 
  { 
    analogWrite(d, pwm);    
    delay(time); 
  }
  delay(5000);
  for(pwm = 254; pwm > 0; pwm--) 
  { 
    analogWrite(d, pwm);    
    delay(time); 
  } 
  analogWrite(d, 0);
  delay(5000); 
  
} 

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

http://www.youtube.com/watch?v=CqJOWL-DY1E

Не подскажете почему не работает как надо?

Вот скетч:











 void setup() {
  DDRB = 0b10111;  // порти PB0-PB2 и PB4 встановленні на вихід, PB3 на вхід.
}

void loop() {
  if(ADC_READ() >= 515 ) // крутимся в одну сторону
  {
    PORTB &= ~(1<<0);
    analogWrite(1, map(ADC_READ(), 515, 1023, 0, 255));
  } 
  if(ADC_READ() >= 509 && ADC_READ() <= 514) // стоп
  {
    PORTB &= ~(1<<0);
    PORTB &= ~(1<<1);
  } 
  if(ADC_READ() <= 508) // крутимся в одну сторону
  {
    PORTB &= ~(1<<1);
    analogWrite(0, map(ADC_READ(), 508, 0, 0, 255)); 
  } 
}

unsigned int ADC_READ(){  // ініціалізуємо АЦП
  ADMUX = 3; // ADC pin
  ADCSRA |= 1<<ADEN;
  ADCSRA |= 1<<ADSC;
  while(!(ADCSRA & (1<<ADIF)));
  ADCSRA |= 1<<ADIF; 
  byte low  = ADCL;
  byte high = ADCH;
  ADCSRA &= ~(1 << ADEN);  // вимикаємо АЦП
  return (high << 8) | low;
}

Вот схема:

Где же моё отсутствие компетенции в этом деле, вылазит боком?

uscr
Offline
Зарегистрирован: 17.08.2012

Товарищи! Транзисторы долетели, руки дошли до реализации и...всё плохо. Как отмечалось выше, на момент создания поста, я уже заказал транзисторы, на которых изначально была построена схема - D882 (http://www.taydaelectronics.com/2sd882-transistor-npn-30v-3a-to-126-2sd882azp.html)

Спаял их по схеме, подал напряжение - ничего не произошло. Прежде чем искать, где я что не так спаял, решил проверить, что я правильно определил выводы. И тут случилось страшное.

Плюс на коллектор, землю на эмиттер - ток не идёт.

Плюс на базу, землю на эмиттер - ток идёт.

Плюс на коллектор, землю на эмиттер, плюс на базу - ток идёт.

Собственно, это же поведение PNP транзстора, а не NPN. Или я всё перепутал? Прошу помощи.

maksim
Offline
Зарегистрирован: 12.02.2012

Вы может обозначение выводов перепутали? Кстати, транзистору D882 эквивалентный  PNP-транзистор это B772.

uscr
Offline
Зарегистрирован: 17.08.2012

maksim пишет:

Вы может обозначение выводов перепутали? Кстати, транзистору D882 эквивалентный  PNP-транзистор это B772.

Это возможно только если я нашёл неправильный даташит. Выводы определял вот по этому документу: http://pdf1.alldatasheet.com/datasheet-pdf/view/77279/NEC/2SD882.html
 

Да и что я мог перепутать? База и эмиттер по краям. Если ток пошёл по пути эмиттер->база то совсем ерунда выходит. Или нет?

maksim
Offline
Зарегистрирован: 12.02.2012

Токи идут везде, а вот данная схема:

может и не заработать, так как ток эмиттера может составлять на данном транзисторе несколько милиампер ,а может и микроампер. Как должна выглядеть "правильная" схема я уже писал выше - тоесть когда мост состоит из NPN и PNP транзисторов.

xCold
Offline
Зарегистрирован: 29.07.2013

Работаю сейчас над этой же проблемой. Схема, предложеная maksim работает, но это же получается, что задействуются 4 пина вместо 2. Так же работает схема с четырьма npn транзисторами, НО только если каждый транзистор управляется отдельным пином. Если один пин рулит сразу двумя транзисторами - не работает. Не понятный для меня феномен, может кто-то обьяснит, почему так?

Может ток дуньки слижком маленький для открытия сразу двух транзисторов? В моем случае это транзисторы S8050.

uscr
Offline
Зарегистрирован: 17.08.2012

maksim пишет:

так как ток эмиттера может составлять на данном транзисторе несколько милиампер ,а может и микроампер.

Почему?

maksim пишет:

Как должна выглядеть "правильная" схема я уже писал выше - тоесть когда мост состоит из NPN и PNP транзисторов.

Почему?

 

 

uscr
Offline
Зарегистрирован: 17.08.2012

xCold пишет:

Работаю сейчас над этой же проблемой. Схема, предложеная maksim работает, но это же получается, что задействуются 4 пина вместо 2. Так же работает схема с четырьма npn транзисторами, НО только если каждый транзистор управляется отдельным пином. Если один пин рулит сразу двумя транзисторами - не работает. Не понятный для меня феномен, может кто-то обьяснит, почему так?

Может ток дуньки слижком маленький для открытия сразу двух транзисторов? В моем случае это транзисторы S8050.

Собрал схему на макетке. Подаю на базы питание сразу от USB - не может не хватить тока, однако между точками, куда должен подклчаться мотор, напряжение примерно 0,3 Вольта, при замыкании резистором 100Ом, ток не дотягивает до половины милиампера. 
А вас не затруднит обьяснить пост maksim'а о слишком низком токе эмиттора? Думал, что понял, как работает транзистор. А вот, оказывается, нет.

maksim
Offline
Зарегистрирован: 12.02.2012
Diemon
Offline
Зарегистрирован: 18.11.2011

Я в свое время делал такой "драйвер" двигателя. управление 2мя пинами, как и хочет автор. и не нужно велосипедов изобретать.

СХема называется H-мост. Загуглите, и будет вам счастье

 

uscr
Offline
Зарегистрирован: 17.08.2012

maksim пишет:

Потому.

Сожалею, даже не понял, что нужно осмыслять в приведённом материале. В моём уютном мирке, поставленная задача решается с теоритическими знаниями вот отсюда: http://diy-blog.ru/beginner/beginner88.php

А то и вовсе из учебника за 7 класс. Но, увы... Поэтому я и капаю на мозги здесь более сведущим людям.

В общем, буду рад получить тычок носом в свою ошибку.

 

maksim
Offline
Зарегистрирован: 12.02.2012

Потому что вы пытаетесь собрать мост только на NPN-транзистрах и у вас получается половина моста каскады с общим эмиттером, а вторая половина каскады с общим коллектором.

Каскад с общим эмиттером обладает высоким усилением по напряжению и току. К недостаткам данной схемы включения можно отнести невысокое входное сопротивление каскада (порядка сотен ом), высокое (порядка десятков Килоом) выходное сопротивление.  Отличительная особенность - изменение фазы входного сигнала на 180 градусов (то есть - инвертирование). Благодаря высокому коэффициенту усиления схема с ОЭ имеет преимущественное применение по сравнению с ОБ и ОК.

Каскад с общим коллектором обладает высоким входным и низким выходным сопротивлениями. Коэффициент усиления по напряжению этой схемы всегда меньше 1. Данная схема используется для согласования каскадов, либо в случае использования источника входного сигнала с высоким входным сопротивлением. В качестве такого источника можно привести, например, пьезоэлектрический звукосниматель или конденсаторный микрофон. Схема с ОК не изменяет фазы входного сигнала.

Тоесть нижняя часть схемы у вас работает правильно - то есть усиливает ток и напряжение, а верхняя наоборот - уменьшает ток и напряжение. И по вашей же ссылке http://diy-blog.ru/beginner/beginner88.php показаны разные типы транзисторов включеных по схеме с общим эмиттером.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

А тот вариант о котором я писал ведь будет работать? Программно все гуд на деле же ещё не проверял.

maksim
Offline
Зарегистрирован: 12.02.2012

Лучше используйте схему из #20 поста - два N-канальных и два P-канальных транзистора.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

А резистор на 470 Ом служит для того чтобы полевиков не "шатало" ?

maksim
Offline
Зарегистрирован: 12.02.2012

Это подтягивающие резисторы.

MarKruT
Offline
Зарегистрирован: 23.09.2015

Друзья всем привет. Может посоветуете схему на биполярных транзисторах. На Кт315 и кт361 два "канала" управления(вперед,назад).

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

MarKruT пишет:
Может посоветуете схему на биполярных транзисторах. На Кт315 и кт361 два "канала" управления(вперед,назад).

Предельный ток коллектора КТ315 - 100 мА. "Обычный" двигатель детской игрушки при старте берет 2 А, при номинальной нагрузке - 1 А. Ходовые двигатели моделей и того больше.

a5021
Offline
Зарегистрирован: 07.07.2013

Была в "проектах" тема с драйвером мотора на двух парах комплементарных мосфетов. Собирал в разных вариациях, работают без нареканий.

MarKruT
Offline
Зарегистрирован: 23.09.2015

Я собирал без реверса. Мотор на 12в. На транзистор5в и все работало без нарекиний. Но мне нужно с реверсом.

MarKruT
Offline
Зарегистрирован: 23.09.2015

http://vk.com/wall175054525_1192
Это пойдет?