top of page

Запуск двигателя от CD ROM на Arduino

  • sinitsinmike
  • 16 дек. 2017 г.
  • 2 мин. чтения

Запуск двигателя от CD ROM на Arduino с использованием трех транзисторов и трех резисторов.

Это пожалуй самый бюджетный и самый простой способ запуска бесколлекторного BLDC двигателя от жесткого диска или CD-rom.

Я использовал Arduino Uno но подойдет и другая модель.

Вот схема:

Как видно питание 5в.

Базы транзисторов через резисторы номиналом 1ком подключены к цифровым выходам Arduino D2, D3 и D4.

Arduino подключено к компьютеру USB шнуром. Питать схему можно прямо с соответствующих терминалов Arduino, там все подписано, +5V и Ground (-).

Вот распиновка транзистора:

Транзисторы можно применить любый n-p-n с подходящими параметрами подобрав номинал резисторов.

Так же можно использовать схему с N канальными полевыми транзисторами, я применил IRF740. Тут уже можно будет применить внешний блок питания на 9-12 вольт. Транзисторы рекомендую установить на теплоотвод, так как они будут греться.

Я использовал полевые транзисторы IRF740 но они по параметрам не очень подходят, просто они валялись под рукой. Советую лучше использовать полевые транзисторы типа: IRFZ44, IRF510, NTE2382, SLA5068 или 30N06. И обязательно ставьте их на теплоотвод.

Arduino sketch:

int phase1 = 2; int phase2 = 3; int phase3 = 4; int led = 12;

unsigned long stepLength = 32000; int minStepLength = 600; int steps =5 ;

void setup() { pinMode(led, OUTPUT); pinMode(phase1, OUTPUT); pinMode(phase2, OUTPUT); pinMode(phase3, OUTPUT); digitalWrite(led, LOW); }

void loop() { switchStep(1); switchStep(2); switchStep(3); if(stepLength > minStepLength) { stepLength = stepLength - steps; } else { // set the minimum pulse length stepLength=minStepLength; } if (stepLength < 39950) { digitalWrite(led, HIGH); // second gear steps = 500; } if (stepLength < 20000) { digitalWrite(led, LOW); // third gear steps = 50; }

if (stepLength < 2000) { digitalWrite(led, HIGH); // fourth gear steps = 1; } }

void switchStep(int stage) { switch(stage) { case 1: digitalWrite(phase1, HIGH); digitalWrite(phase2, LOW); digitalWrite(phase3, LOW); myDelay(stepLength); break; case 2: digitalWrite(phase1, LOW); digitalWrite(phase2, HIGH); digitalWrite(phase3, LOW); myDelay(stepLength); break; default: digitalWrite(phase1, LOW); digitalWrite(phase2, LOW); digitalWrite(phase3, HIGH); myDelay(stepLength); break; }

}

void myDelay(unsigned long p) { if (p > 16380) { delay (p/1000); } else { delayMicroseconds(p); } }


 
 
 

Comments


Избранные посты
Проверьте позже
Когда посты будут опубликованы, вы увидите их здесь.
Недавние посты
Архив
Поиск по тегам
Мы в соцсетях
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square

© 2017 Электро Хобби TV. Сайт создан на Wix.com

bottom of page