roboforum.ru

Технический форум по робототехнике.


Arduino pro mini для управления шаговым двигателем

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Re: Arduino pro mini для управления шаговым двигателем

Сообщение alfamosk » 07 фев 2016, 17:38

вобщем помучался немного и решил с нуля собрать скетч на понятном мне языке) единственное что не могу придумаю как сюда привязать LCD экранчик. т.е от куда он будет считывать скорость мотора?

int pinDir = 5;
int pinStep = 6;
int pinPot = A0;
int potenzval = 0;


void setup() {
pinMode(pinDir, OUTPUT);
pinMode(pinStep, OUTPUT);
pinMode(pinPot, INPUT);
digitalWrite(pinDir, LOW);
}

void loop() {
potenzval = analogRead(pinPot);
potenzval = map(potenzval,0,1023,0,1023);

digitalWrite(pinStep, HIGH);
delayMicroseconds(potenzval);
digitalWrite(pinStep, LOW);
delayMicroseconds(potenzval);
}
Аватара пользователя
alfamosk
 
Сообщения: 368
Зарегистрирован: 14 мар 2015, 00:36
Откуда: Казань-Италия

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 07 фев 2016, 18:08

Не помогу.. особенно с экранчиком. Я бы взял готовое в теме и не мудрил (что я и сделал). Просто сначала, в каждом посте, практически добавлялось что-то или модифицировалось. Думаю проще выбрать рабочее без излишеств (например без оптодатчиков) чем сочинять новое, не умея программировать. По крайней мере у меня так.
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение loox » 08 фев 2016, 02:07

alfamosk
У Вас есть некоторые недочеты в программе:
1. не работает функция map()
var = map(value,fromLow,fromHigh,toLow,toHigh)
value: значение для переноса
fromLow: нижняя граница текущего диапазона
fromHigh: верхняя граница текущего диапазона
toLow: нижняя граница нового диапазона, в который переноситься значение
toHigh: верхняя граница нового диапазона
- Функция пропорционально переносит значение (value) из текущего диапазона значений (fromLow .. fromHigh) в новый диапазон (toLow .. toHigh), заданный параметрами.
У Вас в программе оба диапазона одинаковы - строку можно удалить
2. Переменная используемая в delayMicroseconds(value) должна быть определена как без знаковое целое unsigned int
3. int pinPot = A0; - это не верно, аналоговые входы нумеруются с 0 до 5
Правильно так : int pinpon = 0;
4. Какие у Вас проблемы с выводом данных на дисплей ?
5. Для чего опубликовали этот скетч?
Спросите обязательно отвечу
loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 08 фев 2016, 03:31

alfamosk писал(а):вобщем помучался немного и решил с нуля собрать скетч на понятном мне языке)

Кстати, а не пробовал скетч с этой страницы forum86/topic14826-195.html

Ты же вроде в то время уже "в теме" и был в курсе всех изменений. :wink:
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение RootAdmin » 08 фев 2016, 18:10

Допилю свой вебсервер на ардуинке - приду, помогу если что не получится. А то памяти не хватает у меня, 28 килобайт.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 08 фев 2016, 18:23

Это радует! Давненько без апгрейдов сидим ))
я тоже блин.. напокупал файфаев, передатчиков, изернетов всяких... нафига спрашивается?? )))
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение loox » 08 фев 2016, 21:24

Revenger
На самом деле я считаю, что копаться в публикуемом коде или критиковать его, плохой тон, но в данном случае Ваше предложение использовать программу как рабочую (см ссылку выше).
Даже не очень внимательный просмотр Вашей программы, вынудило сделать Вам некоторые предложение:
1.Внимательно просмотреть программу на предмет определения и описания типов переменных. Вы очень вольно (не явно ) определяете типы переменных (констант) или осуществляете неявное преобразование типов в выражениях. Дело в том, что с каждой новой вариацией версии Ардуино, компилятор все строже следит за корректным описанием переменных и констант, поэтому у пользователей Вашей программы могут возникнуть вопросы при обнаружении непонятных ошибок во время компиляции.
Другой вариант - программа будет работать нестабильно или выдавать совершенно непредсказуемый результат.
2. Я обнаружил вот такой кусок кода:

FullTimer=ticks/256; //Вычисляем количество ПОЛНЫХ циклов таймера
timerLoadValue=(int)(257.0-(ticks-(256*FullTimer)+0.5)); //Вычисляем количество доплнительных тиков таймера
//257 на самом деле должно быть 256, но я получил лучшие результаты с 257.

Если вы его перепишете на бумажке то получите:
FullTimer=ticks/256; - подставьте это в выражение timerLoadValue:
timerLoadValue=(int)(257.0-(ticks-(256*ticks/256)+0.5))= (int) (257.0 -(ticks - ticks)+0.5) =(int)( 257+0.5)
Ничего не вычисляется...
какой должен быть результат будет трудно представить:
FullTimer имеет тип - unsigned char
ticks - int
256.0 и 0.5 - float
timerLoadValue - целое со знаком
Вероятнее всего, таких конструкций в программе, если внимательно посмотреть навалом.
Отследить ошибки, возникающие в подобных случаях очень сложно, даже в компиляторах, имеющих отладчики, так как
многие операции проводятся во внутренних операционных регистрах мк и невозможно поставить точку остановки отладчика для контроля состояния переменных программы - просто получаете непонятный результат значения переменной...
Я полагаю, что программа работает у Вас очень нестабильно или плохо предсказуемо.
Спасибо loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 08 фев 2016, 22:13

Верно, критиковать и т.п. плохо, по этому я и не делаю этого, тем более, что не я автор и у меня ума не хватит такое написАть к сожалению. Я использую то, что совершенно безвозмездно смог написАть коллега по увлечению. Причём вы, вероятно, заметили, что делал он это на протяжении наверное уже года. Это в общем то единственный человек, кто помогал не словом а делом, не требуя четкого ТЗ на бумаге.

Все буквы, начиная с нумерации в вашем сообщении для меня "китайская грамота". Ничего не понял. :)
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение loox » 08 фев 2016, 22:17

Это я просил Вас, как то более или менее описать задачу, но Вы как то проигнорировали ... 29 страниц форума, надеюсь сейчас Вы сможете сформулировать задачу?
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 09 фев 2016, 00:25

Я помню, что вы писали про "сформулировать", но она, как видите, формулируется до сих пор. Я не конструктор и все "хочу" и "хотелось бы" появляются "во время еды". Сейчас то уже на 99% понятно что нужно т.к. есть на мой взгляд на 90% готовый скетч и какое-то понимание процесс для чего всё затевалось. Основу, что должно происходить я озвучивал неоднократно и ничего не поменялось: Контроль вращения экструдера (сейчас это оптопара), отрабатывание на основании этих данных оборотами протяжки (причём сейчас понятно, что мгновенное реагирование в общем то и не нужно, т.к. у пластика есть инерция расплава), контроль диаметра (достигать хотелось бы подножными средствами, типа штангеля китайского с интерфейсным разъёмом) + реакция на изменения путем ускорения/замедления протяжки (чтобы не трогать вращение экструдера) ну и намотка готового, которая изменяет скорость намотки в зависимости от скорости выхода готового пластика. Ну и вывод основных режимов на дисплей. Из всего перечисленного не сделалось пока контроль диаметра и намотка в комплексе в одном скетче, так то я сотворил кое-что на отдельной ардуине. :oops:

Другими словами я не умею. Это повторение уже написанного с кое-какими дополнениями ввиду полученного опыта.
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение loox » 09 фев 2016, 01:53

Да Вашу концепцию я знаю, она не изменилась с первой страницы.
хотел бы Вам заметить, что в отношении стабилизации скорости вращения шнека , контролируя его скорость датчиками, Вам никогда не удастся - слишком маленькая скорость- десятки оборотов в минуту. необходимо перенести датчики на первичный вал приводного мотора. Вы человек с руками, и я полагаю это уж не такая сложная задача для Вас. Тогда решение части этой задачи существенно измениться в лучшую сторону.
Контроль диаметра прутка, необходимо решать с обратной стороны, попытаться стабилизировать его диаметр - вероятнее всего - это протяжка через вальцы и охлаждение( или наоборот предварительное охлаждение - вальцы - охлаждение)
в жизни, мне приходилось автоматизировать некоторый процесс, подобный Вашему, только в промышленности - там был ПЭТ, так там:
экструзия нити - охлаждение водой с температурой ???? - и много вальцов ( я делал стабилизацию температуры расплава) Все очень примитивно( относительно конечно - размер экструдера 6х6 метров)
Если по истечению значительно времени нет результата, необходимо пересматривать концепцию
Только не отчаивайтесь - программирование ерунда, пилить железо - это да!!!
loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 09 фев 2016, 03:15

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

п.с. Дополню еще, что вытягивание протяжкой нужного диаметра из бОльшего диаметра сопла, мне показалось сложным и нестабильным делом. Частично из-за несовершенства кода (его же далеко не полностью довели до ума), частично из-за сборки всего наспех...
Практически с первого же раза у меня получилось более меннее ровный прутОк подавить уменьши диаметр сопла (в расчете на расширение при выходе) и пустив его под своим весом он немного ДОвытягивался и уже "готовые продукт" протяжка принимала и по идее должно было идти на намотчик, но испытать с намотчиком небыло времени. так и стоИт всё отдельно.

Добавлено спустя 2 минуты 14 секунд:
Может действительно попробовать вальцы сделать... Но, по моему, рабочего экструдера с вальцами не встречал.. У всех давится так, ну кто-то ванну с водой ставит сразу за соплом, но у меня и так пластик к протяжке уже довольно отверждённым доходил.
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 14 фев 2016, 21:54

А в ответ тишина. Вот и пиши потом ТХ и ХЗ )))
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение mihey » 07 июн 2016, 07:30

приветствую всех кто здесь бывает
хочу попросить о помощи (help) со скетчем. так как в написании его я полный 0 ) или почти.
Собственно 2 драйвера tb6600 ,
1) arduino mega
2) концевой выключатель
3) дисплей
4) энкодер
5) микрометр.
задумка такая: когда толщина меняется измерений. 1шд должен увеличивать скорость или уменьшать.
шд2 просто работает от концевого выключателя, на одной скорости

Изображение
Изображение

Код: Выделить всёРазвернуть
int dirpin1 = 3;
int steppin1 = 4;

int dirpin2 = 1;
int steppin2 = 2;

int speed1 = 500;
int speed2 = 500;

int stepper_switch = 5;

//int enable = 7;
void setup()
{
  pinMode(stepper_switch,INPUT);
 
  pinMode(dirpin1, OUTPUT);
  pinMode(steppin1, OUTPUT);

  pinMode(dirpin2, OUTPUT);
  pinMode(steppin2, OUTPUT);

  /*Направление LOW-HIGH*/
  digitalWrite(dirpin1, LOW);
  digitalWrite(dirpin2, HIGH);
}

void RotateStep1()
{
    digitalWrite(steppin1, LOW); // This LOW to HIGH change is what creates the
    delayMicroseconds(speed1);
    digitalWrite(steppin1, HIGH);
    //delayMicroseconds(speed1); // This delay time is close to top speed for this
}

void RotateStep2()
{
    digitalWrite(steppin2, LOW); // This LOW to HIGH change is what creates the
    delayMicroseconds(speed2);
    digitalWrite(steppin2, HIGH);
    //delayMicroseconds(speed2); // This delay time is close to top speed for this
}

void loop()
{
  int swichState = LOW;
  swichState = digitalRead(stepper_switch);


  if (swichState == LOW)
  {
      speed1 = 500;
      RotateStep2(); 
  } else
  {
    speed1 = 2 * speed2;
  }
  RotateStep1();
 
}

что есть из наработак)
Последний раз редактировалось mihey 07 июн 2016, 15:29, всего редактировалось 2 раз(а).
mihey
 
Сообщения: 18
Зарегистрирован: 28 мар 2016, 07:48

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Eruman » 07 июн 2016, 10:08

без точек и запятых мозг отказывается воспринимать ваши буквы.
Соединяй и здравствуй.
Аватара пользователя
Eruman
 
Сообщения: 897
Зарегистрирован: 12 авг 2010, 15:10
Откуда: Астраханская обл.

Пред.След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16