суббота, 18 февраля 2012 г.

Управление электродвигателем 2. Простой робот с одним мотором.

Мостовая схема на транзисторах КТ940А, рассмотренная в статьях управление электродвигателем микроконтроллером ATmega8 и доработка схемы управления электродвигателем имеет недостатки: во первых это транзисторы КТ940А, максимальный ток этих транзисторов 100мА поэтому двигатель  должен потреблять не больше 100мА. Также, в мостовых схемах с активно-индуктивной нагрузкой необходимы обратные диоды, хотя, рассмотренная ранее схема, работала и без них (возможно из за достаточно большого напряжения Uкэ=300В для КТ940А). На рисунке 1 приведена другая, проверенная, схема управления электродвигателем:

Рисунок 1 - Схема управления электродвигателем

Транзисторы КТ961А рассчитаны на ток до 1.5 А, КТ837В на ток до 7.5 А, обратные диоды КД105А рассчитаны на ток до 0.3 А (можно поставить диоды рассчитанные на больший ток).
В схеме, на рисунке 1, отсутствуют оптопары и вообще гальваническая развязка силовой части схемы от управляющей (в отличии от предыдущей схемы) это значит что микроконтроллер будет хуже защищен от перегрузок по току и напряжению, но если используется маломощный электродвигатель то это не так важно, к том уже в схеме с полной гальванической развязкой необходимо использовать два источника питания (для силовой части и для управляющей) а это не всегда удобно, в схеме же на рисунке 1 можно использовать один источник питания. Оптопары в предыдущей схеме были необходимы для управления мостом с транзисторами 
n-p-n типа в схеме же на рисунке 1 верхние транзисторы моста n-p-n типа а нижние p-n-p типа, это позволяет обойтись без подходящих оптопар которых иногда бывает трудно достать в местных магазинах радиодеталей. Детали для прверки схемы на рисунке 1, кроме микроконтроллера и электромотора, были "изъяты" из старых "отслуживших" телевизоров. Транзисторы управляющие мостом - КТ209Е их можно отличить по закрашенному ромбику - ♦ на корпусе и букве е справа от него (от ромбика). Ротор двигателя будет вращаться в ту или другую сторону если на выводах микроконтроллера 2 и 3 будут разные уровни напряжения, если они будут одинаковы то ротор вращаться не будет. Если требуется чтобы ротор не вращался то лучше задавать на этих выводах высокий уровень напряжения т.е. лог. 1 т.к. при этом транзисторы VT1 и VT5 закрыты следовательно ток через них почти не проходи и следовательно энергия источника питания не расходуется зря что особенно актуально при питании схемы от батареек. Для проверки схемы была написана простая программа на языке C++:

   #include <avr/io.h>
   #include <avr/delay.h>
   #define F_CPU 8000000UL  // 8 MHz

   int main(void)            
   {
DDRD = 0xff;            // выводы порта D сконфигурировать как выходы

while (1)        
{
DDRD = 0x02;
_delay_ms(250);
DDRD = 0x00;
_delay_ms(250);
 DDRD = 0x01;
_delay_ms(250);
DDRD = 0x00;
_delay_ms(250);
}

 }    

Этот код был преобразован в hex файл программой WinAVR. hex файл был записан в микроконтроллер программой PonyProg2000. К редуктору, от игрушки, приделаны колесики, сверху к нему приделаны батарейки и собранная схема управления двигателем (см. рисунок 1). Как все это двигалось можно посмотреть на видео:


У данного робота мало вариантов того что он может делать, и воспринимать информацию из окружающего мира он не может, но его работоспособность свидетельствует о работоспособности схемы управления двигателем (см. рисунок 1). Для управления одним двигателем достаточно двух выводов микроконтроллера. К микроконтроллеру можно подключить несколько таких схем и датчики и сделать более сложного робота. Мостовой схеме также может быть найдено множество применений.

2 комментария:

  1. Эмиттер PNP транзистора подключают к "+" источника, а эмиттер NPN транзистора садят на землю. И для надежного срабатывания базу PNP транзистора подтягивают к "+" источника. Схема некорректна.

    ОтветитьУдалить
    Ответы
    1. Спасибо за замечание! Я это уже давно понял. Лучше вообще использовать микросхему-драйвер в которой всё предусмотрено будет дешевле (как минимум для данного случая).

      Удалить