Страница 4 из 10 ПерваяПервая 12345678910 ПоследняяПоследняя
Показано с 31 по 40 из 93
  1. #31
    Новичок
    Регистрация
    23.04.2010
    Сообщений
    17
    Вес репутации
    175

    По умолчанию Re: Управление шаговым двигателем

    Я вставлю свои 5 копеек:
    Не понятно зачем тут ШД, там хватит серво. При чем сервопривод можно сделать из обыкновенного электродвигателя и резистора.
    Управление, когда не через библиотеку, осуществляю следующим образом, в цикле кручу двигатель например 100мс потом останавливаю и проверяю угол(аналоговый сигнал с резистора), потом кручу дальше и т.д. Чем дольше крутишь двигатель в каждой итерации цикла, тем быстрее происходит движение механизма, но тем менее точно устанавливается угол.
    Так же на скорость двигателя влияет Вывод через ком порт(Serial). Если нет вывода крутится гораздо быстрее.

    Так вот, есть вариант(а по закону Мура значит проскочишь однозначно) проскочить данный угол, если в цикле условие на четкое равенство. Нужно делать, больше-или-равно или меньше-или-равно.
    Последний раз редактировалось Хупх; 23.04.2010 в 17:33.

  2. #32
    Пользователь
    Регистрация
    21.03.2010
    Сообщений
    64
    Вес репутации
    185

    По умолчанию Re: Управление шаговым двигателем

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

    Except, можеш плз показать на примере как сделать интервал?

  3. #33
    Местный Аватар для Except
    Регистрация
    09.11.2008
    Сообщений
    116
    Вес репутации
    244

    По умолчанию Re: Управление шаговым двигателем

    Цитата Сообщение от Ant1Player Посмотреть сообщение
    Except, можеш плз показать на примере как сделать интервал?
    Код:
      float j_val = analogRead(JOYSTIK_PIN);
      if (j_val < 1000)
      {
        delay(5);
        if(j_val == analogRead(JOYSTIK_PIN))
        {
          if ( ( 20 <= j_val) and (j_val <=  90) ) { Serial.print("J=off;"); delay(300); }
          if ( (460 <= j_val) and (j_val <= 470) ) { Serial.print("J=center;"); delay(300); }
          if ( (640 <= j_val) and (j_val <= 670) ) { Serial.print("J=mute;"); delay(300); }
          if ( (730 <= j_val) and (j_val <= 750) ) { Serial.print("J=file;"); delay(300); }
          if ( (785 <= j_val) and (j_val <= 839) ) { Serial.print("J=forward;"); delay(100); }
          if ( (841 <= j_val) and (j_val <= 882) ) { Serial.print("J=backward;"); delay(100); }
          if ( (886 <= j_val) and (j_val <= 891) ) { Serial.print("J=next;"); delay(100); }
          if ( (921 <= j_val) and (j_val <= 940) ) { Serial.print("J=prev;"); delay(100); }
          if ( (945 <= j_val) and (j_val <= 960) ) { Serial.print("J=sel;"); delay(300); }
          if ( (970 <= j_val) and (j_val <= 980) ) { Serial.print("J=mode;"); delay(300); }
        }
      }
    вот так я делал для джойстика, цифры это сопротивлене с кнопки.

  4. #34
    Пользователь
    Регистрация
    21.03.2010
    Сообщений
    64
    Вес репутации
    185

    По умолчанию Re: Управление шаговым двигателем

    Большое спасибо!

  5. #35
    Новичок
    Регистрация
    23.04.2010
    Сообщений
    17
    Вес репутации
    175

    По умолчанию Re: Управление шаговым двигателем

    Ant1Player, просто хотел тебе облегчить и удешевить задачу. Серво-самопал, как я описал выше, у меня переключает передачи на коробке. Мотора и послабее хватит чтоб "дергать планку". Но, хозяин-барин)

  6. #36
    Пользователь
    Регистрация
    21.03.2010
    Сообщений
    64
    Вес репутации
    185

    По умолчанию Re: Управление шаговым двигателем

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

Название:	85795810.jpg 
Просмотров:	3572 
Размер:	48.8 Кб 
ID:	8587  

  7. #37
    Пользователь
    Регистрация
    21.03.2010
    Сообщений
    64
    Вес репутации
    185

    По умолчанию Re: Управление шаговым двигателем

    Помогите советом, уже не знаю на что думать, короче крутит ШД только в одну сторону незовисимо
    Код:
     
    mystepper.step(-30);
    или
    Код:
     
    mystepper.step(30);
    Но, если он крутит и рукой сделать нагрузку(давить в него в другую сторону) то он начинает работать в другую сторону, и теперь он крутит в другую независимо от mystepper.step
    с чем это может быть связанно? думал питание, подключил к акомулятору, тож самое, вот щас подумываю насчет нерабочей L293D или может быть что то другое?
    P.s. ШД на фото сверху

  8. #38
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Управление шаговым двигателем

    Похоже неправильно подключил.
    Обмотки прозвонил?
    Какой драйвер используешь?

  9. #39
    Пользователь
    Регистрация
    21.03.2010
    Сообщений
    64
    Вес репутации
    185

    По умолчанию Re: Управление шаговым двигателем

    L293D ,обмотка правильно, щас начал вспоминать вспомнил одну вещь, я нечайно 12В (вход питания ШД) подал на какойто контакт (другой) драйвера, результат: дырка в микроконтроллере, пока ждал новую атмегу забыл про это, видать еще повлияло на драйвер, щас перепаю отпишусь.

  10. #40
    Пользователь
    Регистрация
    21.03.2010
    Сообщений
    64
    Вес репутации
    185

    По умолчанию Re: Управление шаговым двигателем

    все стало норм теперь осталось додуматься по какому принципу управление реализованно в стандартном блоке управление отопителем, этим ШД, ведь датчика положения нет, остается узнать:
    1. а что если при выкл зажигании покрутить ручки ведь положение изменится а шд останеться в том положение: ну это можно в setup до самого начала выкручивать ШД. либо ставить концевик чтоб не делать лишних шагов

    2. Что делать с перескоками, если резко повернуть ручку, ведь почти все положения проскочут и ШД встанет не в то положение, как быть тут?
    код примерно такой:
    Код:
    if ((261 <= analogRead(pol) ) && ( analogRead(pol) <=265) && (x != 1) ) 
    { 
      stepper.step(200);
     x=1;  
    
    }
    
    
    
    if ((284 <= analogRead(pol) ) && ( analogRead(pol) <=288) && (x != 2) ) 
    { 
      stepper.step(200); 
     x=2;  
    
    
    }
    и так 9 положений, может куда нибудь delay вставить?..
    Последний раз редактировалось Ant1Player; 30.04.2010 в 22:06.

Страница 4 из 10 ПерваяПервая 12345678910 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •