вобщем помучался немного и решил с нуля собрать скетч на понятном мне языке) единственное что не могу придумаю как сюда привязать LCD экранчик. т.е от куда он будет считывать скорость мотора?
int pinDir = 5; int pinStep = 6; int pinPot = A0; int potenzval = 0;
Не помогу.. особенно с экранчиком. Я бы взял готовое в теме и не мудрил (что я и сделал). Просто сначала, в каждом посте, практически добавлялось что-то или модифицировалось. Думаю проще выбрать рабочее без излишеств (например без оптодатчиков) чем сочинять новое, не умея программировать. По крайней мере у меня так.
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
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
Верно, критиковать и т.п. плохо, по этому я и не делаю этого, тем более, что не я автор и у меня ума не хватит такое написАть к сожалению. Я использую то, что совершенно безвозмездно смог написАть коллега по увлечению. Причём вы, вероятно, заметили, что делал он это на протяжении наверное уже года. Это в общем то единственный человек, кто помогал не словом а делом, не требуя четкого ТЗ на бумаге.
Все буквы, начиная с нумерации в вашем сообщении для меня "китайская грамота". Ничего не понял.
Это я просил Вас, как то более или менее описать задачу, но Вы как то проигнорировали ... 29 страниц форума, надеюсь сейчас Вы сможете сформулировать задачу?
Я помню, что вы писали про "сформулировать", но она, как видите, формулируется до сих пор. Я не конструктор и все "хочу" и "хотелось бы" появляются "во время еды". Сейчас то уже на 99% понятно что нужно т.к. есть на мой взгляд на 90% готовый скетч и какое-то понимание процесс для чего всё затевалось. Основу, что должно происходить я озвучивал неоднократно и ничего не поменялось: Контроль вращения экструдера (сейчас это оптопара), отрабатывание на основании этих данных оборотами протяжки (причём сейчас понятно, что мгновенное реагирование в общем то и не нужно, т.к. у пластика есть инерция расплава), контроль диаметра (достигать хотелось бы подножными средствами, типа штангеля китайского с интерфейсным разъёмом) + реакция на изменения путем ускорения/замедления протяжки (чтобы не трогать вращение экструдера) ну и намотка готового, которая изменяет скорость намотки в зависимости от скорости выхода готового пластика. Ну и вывод основных режимов на дисплей. Из всего перечисленного не сделалось пока контроль диаметра и намотка в комплексе в одном скетче, так то я сотворил кое-что на отдельной ардуине.
Другими словами я не умею. Это повторение уже написанного с кое-какими дополнениями ввиду полученного опыта.
Да Вашу концепцию я знаю, она не изменилась с первой страницы. хотел бы Вам заметить, что в отношении стабилизации скорости вращения шнека , контролируя его скорость датчиками, Вам никогда не удастся - слишком маленькая скорость- десятки оборотов в минуту. необходимо перенести датчики на первичный вал приводного мотора. Вы человек с руками, и я полагаю это уж не такая сложная задача для Вас. Тогда решение части этой задачи существенно измениться в лучшую сторону. Контроль диаметра прутка, необходимо решать с обратной стороны, попытаться стабилизировать его диаметр - вероятнее всего - это протяжка через вальцы и охлаждение( или наоборот предварительное охлаждение - вальцы - охлаждение) в жизни, мне приходилось автоматизировать некоторый процесс, подобный Вашему, только в промышленности - там был ПЭТ, так там: экструзия нити - охлаждение водой с температурой ???? - и много вальцов ( я делал стабилизацию температуры расплава) Все очень примитивно( относительно конечно - размер экструдера 6х6 метров) Если по истечению значительно времени нет результата, необходимо пересматривать концепцию Только не отчаивайтесь - программирование ерунда, пилить железо - это да!!! loox
Датчик переставить не проблема, возможно за счет увеличения кол-ва импульсов показания станут действительно точнее, но на самом деле это, мне кажется, не принципиально, т.к. я уже писал, что я не знал, но на самом деле оказывается присутствует не слабая инерция, т.е. даже если мотор экструдера остановить полностью, то расплав какое-то время еще выходит из сопла (ну там расширения всякие и т.п., не столь важно)так вот достаточно сделать небольшую задержку реакции протяжки и замедление, чтобы хоть приблизительно контролировать диаметр. Ну и контроль штангелем или типа того датчиком при непосредственном контакте основное, на что должна ориентироваться система в целом. Рабочие системы есть а америкосов, есть и у местных ребят, но там столько всего накуплено и напрограммировано, что голова крУгом идёт. Мы тут пытались слепить из....из того, что доступно.
п.с. Дополню еще, что вытягивание протяжкой нужного диаметра из бОльшего диаметра сопла, мне показалось сложным и нестабильным делом. Частично из-за несовершенства кода (его же далеко не полностью довели до ума), частично из-за сборки всего наспех... Практически с первого же раза у меня получилось более меннее ровный прутОк подавить уменьши диаметр сопла (в расчете на расширение при выходе) и пустив его под своим весом он немного ДОвытягивался и уже "готовые продукт" протяжка принимала и по идее должно было идти на намотчик, но испытать с намотчиком небыло времени. так и стоИт всё отдельно.
Добавлено спустя 2 минуты 14 секунд: Может действительно попробовать вальцы сделать... Но, по моему, рабочего экструдера с вальцами не встречал.. У всех давится так, ну кто-то ванну с водой ставит сразу за соплом, но у меня и так пластик к протяжке уже довольно отверждённым доходил.
приветствую всех кто здесь бывает хочу попросить о помощи (help) со скетчем. так как в написании его я полный 0 ) или почти. Собственно 2 драйвера tb6600 , 1) arduino mega 2) концевой выключатель 3) дисплей 4) энкодер 5) микрометр. задумка такая: когда толщина меняется измерений. 1шд должен увеличивать скорость или уменьшать. шд2 просто работает от концевого выключателя, на одной скорости
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);