Моторчик от CD-ROM'a

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем GoLIaF, 27 окт 2015.

  1. GoLIaF

    GoLIaF Нуб

    Ребят... Уже из сил выбился...
    Подскажите, где я дэбил?

    Код (C++):
    int firstCoilMinus =  6; // 6 пин, минус первой катушки, так же плюс второй
    int secondCoilMinus =  7; //7 пни, минус второй катушки, плюс третьей
    int thirdCoilMinus =  8; // 8 пин, минус третьей катушки, плюс первой
    int firstCoilPlus =  9; // 9 пин, плюс первой катушки, минус третьей
    int secondCoilPlus =  10; // 10 пин, плюс второй катушки, минус первой
    int thirdCoilPlus =  11; //11 пин, плюс третьей катушки, минус второй

    int indicationLedPin = 13; // 13 пин, светодиод-индикатор

    int revolutionSpeed = 1; // коэффициент скорости
    int delayTime = 500; // время задержки
    int delayTimeSkvazhnost = 0;

    void setup() {
      pinMode(indicationLedPin, OUTPUT); // говорим контроллеры, то все пины работаю в качестве ВЫХОДА

      pinMode(firstCoilMinus, OUTPUT);
      pinMode(firstCoilPlus, OUTPUT);
      pinMode(secondCoilMinus, OUTPUT);
      pinMode(secondCoilPlus, OUTPUT);
      pinMode(thirdCoilMinus, OUTPUT);
      pinMode(thirdCoilPlus, OUTPUT);
    }

    // функция открытия транзистора на вход первой катушки, и открытия транзистора на выход первой катушки
    void firstCoilFunction () {
      digitalWrite(firstCoilMinus, LOW);
      digitalWrite(secondCoilPlus, LOW);
      digitalWrite(thirdCoilMinus, LOW);
      digitalWrite(thirdCoilPlus, LOW);
     
      digitalWrite(firstCoilPlus, HIGH);
      digitalWrite(secondCoilMinus, HIGH);
     
      delay(delayTime / revolutionSpeed);
    }

    // функция открытия транзистора на вход второй катушки, и открытия транзистора на выход второй катушки
    void secondCoilFunction () {
      digitalWrite(firstCoilPlus, LOW);
      digitalWrite(firstCoilMinus, LOW);
      digitalWrite(secondCoilMinus, LOW);
      digitalWrite(thirdCoilPlus, LOW);
     
      digitalWrite(secondCoilPlus, HIGH);
      digitalWrite(thirdCoilMinus, HIGH);
     
      delay(delayTime / revolutionSpeed);
    }

    // функция открытия транзистора на вход третьей катушки, и открытия транзистора на выход третьей катушки
    void thirdCoilFunction () {
      digitalWrite(firstCoilPlus, LOW);
      digitalWrite(secondCoilPlus, LOW);
      digitalWrite(secondCoilMinus, LOW);
      digitalWrite(thirdCoilMinus, LOW);
     
      digitalWrite(thirdCoilPlus, HIGH);
      digitalWrite(firstCoilMinus, HIGH);
     

      delay(delayTime / revolutionSpeed);
    }

    void allStop () {

      digitalWrite(firstCoilMinus, LOW);
      digitalWrite(firstCoilPlus, LOW);
      digitalWrite(secondCoilMinus, LOW);
      digitalWrite(secondCoilPlus, LOW);
      digitalWrite(thirdCoilMinus, LOW);
      digitalWrite(thirdCoilPlus, LOW);
      delay(delayTimeSkvazhnost);
    }

    //запуск основного цикла и вызов по очереди 1, 2 и 3 функции
    void loop()
    {
      firstCoilFunction ();
      allStop ();
      secondCoilFunction ();
      allStop ();
      thirdCoilFunction ();
      allStop ();
    }
     

    Транзисторы IRFZ44N. Фото конструкции тут:
    http://prntscr.com/8vvcjl
    http://prntscr.com/8vvcpv

    Схема включения самая простая:
    http://sub.chipdoc.ru/im/doc/micros/avr/avr495/fig4_1.gif

    Ребят, я уже не могу... Где косяк? Почему моторчик не крутится нормально? Ощущения, что его постоянно тормозит что-то. Светодиоды подключил в параллель транзисторам, чтобы видеть как все работает, так там вообще какое-то хаотичное еле заметное мигание...

    Где я шланг, о Великие?
     
  2. Onkel

    Onkel Гуру

    а вон у вас осиллограф на заднем плане - им нельзя воспользоваться?
    включите медленную скорость, типа шаг за несколько секунд, и посмотрите что за чем следует, можно и без осциллографа.
     
  3. GoLIaF

    GoLIaF Нуб

    Благодарю за ответ!
    Снял видео, чтобы не быть голословным.
    https://dropmefiles.com/xSaGC

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

    Решение на поверхности где-то... Чего-то ведь простого не понимаю....
     
    Последнее редактирование: 28 окт 2015
  4. Onkel

    Onkel Гуру

    а вы подключите светодиоды ( с ограничителем ясное дело, 470 или около ом) в параллель обмоткам, может даже попарно, встречно и с медленным шагом посмотрите.