DRAKON.SU https://forum.drakon.su/ |
|
Создать Дракон схему & скетч Станка намотки https://forum.drakon.su/viewtopic.php?f=233&t=7165 |
Страница 1 из 1 |
Автор: | tur55 [ Суббота, 30 Июль, 2022 12:45 ] |
Заголовок сообщения: | Создать Дракон схему & скетч Станка намотки |
Решил разобраться с построением Дракон схем. Нет ничего лучше чем взять рабочий скетч Ардуино и на его основе нарисовать Дракон схему Используется Arduino UNO R3. Atmega 328 Программа Drakon-Editor 1.31 от Митькина. Скетч взят от Станка намотки катушки индуктивности. Источник: https://youtu.be/01Un0Ifq334 Однако сам скетч используется модернизированный, добавлено: - обработка геркона (подсчет оборотов намотки) - включение нагрева проволоки для нанесения изоляции - дополнительный дисплей LCD1602 Симуляция работы модернизированного станка, ссылка: https://youtu.be/yynDRfAlyrE Ссылка на сам модернизированный скетч: https://yourmy.monster/WE1PX4 Ну и естественно столкнулся с проблемой как этот код, запихивать в дракон схему. То есть в данном случае я решаю обратную задачу, как работает программа. |
Автор: | tur55 [ Суббота, 30 Июль, 2022 12:48 ] |
Заголовок сообщения: | Re: Создать Дракон и скетч Станка намотки |
Собственно сам скетч Станка намотки катушки индуктивности с нанесением изоляции на проволоку. Код: /* Main.ino file generated by New Project wizard
* * Created: Чт июл 21 2022 * Processor: Arduino Uno * Compiler: Arduino AVR */ // Peripheral Configuration Code (do not edit) //---CONFIG_BEGIN--- #pragma GCC push_options #pragma GCC optimize("Os") #include <core.h> // Required by cpu #include <cpu.h> #pragma GCC pop_options // Peripheral Constructors CPU &cpu = Cpu; void peripheral_setup() { } void peripheral_loop() { } //---CONFIG_END--- //Скетч под три кнопки управления станком по намотке провода от Proektirovshik //видео станка ниже на ютубе и дзене // https://youtu.be/01Un0Ifq334 // https://zen.yandex.ru/video/watch/626ea9b95bdcdb7bacf09e1d //управляет сервоприводом укладчика провода и основным мотрчиком с редуктором //с кнопок на выводах 11 больше и 12 меньше устанавливается значение количества витков и нажимается пуск на кнопке вывод 10 //моторредуктор висит на 3 и 4 выводах через плату контроллера D293 //сервопривод висит на 9 выводе через плату контроллера D293 //управление экраном по шине I2C #include <Wire.h> //объявление библиотеки Wire #include <SSD1306Ascii.h> //объявление библиотеки для вывода текста на OLED дисплеи #include <SSD1306AsciiWire.h> //объявление библиотеки для вывода текста на OLED дисплеи #include <LiquidCrystal_I2C.h> //#############################################объявление библиотеки для вывода текста на LCD1602 #include <Servo.h> //объявление библиотеки для сервопривода #define I2C_ADDRESS 0x3C // I2C_ADDRESS присвоить адрес 0x3C Servo servo; // Создаем объект сервопривод SSD1306AsciiWire oled; //инициирование дисплея LiquidCrystal_I2C lcd(0x20, 16, 2); //##############################################установка lcd1602 на адрес 0x20 int UP = 12; //кнопка переманной вперед UP присвоено значение 12 int DOWN = 11; //кнопка переменной назад DOWN присвоено значение 11 int START = 10; //кнопка переменной старт START присвоено значение 10 int NAGREV = 2; //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@вывод на управление нагревом int GERKON = 5; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! порт 5 называем GERKON int x = 0; //переменной x присвоено значение 0 unsigned short y = 0; //желаемое количество витков переменной y (0 до 65535) присвоено изначально значение 0 unsigned int CountGerkon = 0; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!счетчик Геркона static int j = 1; //вспомогательной переменной j присвоена 1 для цикла серво привода static int g = 0; //переменной g присвоен изначально 0 это количество умещаемых витков в одной секции #define MOT1_STP 4 // MOT1_STP присвоить значение вывода 4 #define MOT1_DIR 3 // MOT1_DIR присвоить значение вывода 3 void setup() { peripheral_setup(); // TODO: put your setup code here, to run once: servo.attach(9); // Указываем объекту класса Servo, что серво присоединен к пину 9 servo.write(0); // Выставляем начальное положение Wire.begin(); //Инициализирует библиотеку Wire и подключается к шине I2C Wire.setClock(400000L); //задаем частоту передачи данных 400кГц oled.begin(&Adafruit128x64, I2C_ADDRESS); oled.setFont(Adafruit5x7); oled.clear(); //почистить экран OLED lcd.init(); //##################################################инициализация lcd1602 lcd.backlight(); //##################################################вкл подстветка pinMode(UP, INPUT_PULLUP); //Устанавливает режим работы заданного вход/выхода(pin) как входа pinMode(DOWN, INPUT_PULLUP); //Устанавливает режим работы заданного вход/выхода(pin) как входа pinMode(START, INPUT_PULLUP); //Устанавливает режим работы заданного вход/выхода(pin) как входа pinMode(MOT1_DIR, OUTPUT); //Устанавливает режим работы заданного вход/выхода(pin) как выхода pinMode(MOT1_STP, OUTPUT); //Устанавливает режим работы заданного вход/выхода(pin) как выхода pinMode(NAGREV, OUTPUT); //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Управление нагревом pinMode(GERKON, INPUT_PULLUP); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Порт Геркон принимает сигнал от кнопки x = 0; //обнуляем y = 0; //обнуляем } void loop() { peripheral_loop(); // TODO: put your main code here, to run repeatedly: staticmenu(); //вызов функции if (!digitalRead(UP) && x == 0) //если нажата кнопка UP { oled.clear(); //чистка экрана lcd.clear(); //#####################################################чистка lcd1602 staticmenu(); //вызов функции y += 1; //прибавляем один виток при нажатии кнопки UP delay(5); //задержка при установки числа витков в плюс oled.setCursor(55, 60); //курсор в точку oled.print(y, DEC); //на экран в десятичном виде выдать значение переменной y lcd.setCursor(6, 1); //#####################################################ставим курсор на 6 позицию 1 строки lcd.print(y, DEC); //#####################################################на экран в десятичном виде выдать значение переменной y } if (!digitalRead(DOWN) && x == 0) // если нажата кнопка DOWN { oled.clear(); //чистка экрана lcd.clear(); //чистка lcd1602 staticmenu(); //вызов функции y -= 1; //вычитаем один виток при нажатии кнопки DOWN delay(5); //задержка установки числа витков в минус oled.setCursor(55, 60); //курсор в точку oled.print(y, DEC); //на экран в десятичном виде выдать значение переменной y lcd.setCursor(6, 1); //#####################################################ставим курсор на 6 позицию 1 строки lcd.print(y, DEC); //#####################################################на экран в десятичном виде выдать значение переменной y } if (x == 0 && y >= 1) //если x=0 и введено некоторое количество витков y больше или равно 1 { if (!digitalRead(START)) //если нажата кнопка старт { stepA(); //вызвать функцию stepA } } } void staticmenu() //сама функция staticmenu() { oled.set2X(); oled.setCursor(20, 0); oled.println("HAMOTKA"); //Надпись названия программы сверху lcd.setCursor(0, 0); lcd.println(" HAMOTKA "); //##################################################вывод строки Привет мир } void stepA() //сама функция stepA { x = 1; //переменной x присвоена 1 // for (unsigned int a = 1; a <= y; a++) // a это текущее значение намотанных витков на экране, для a=1, a меньше или равно y, прибавить к a единицу do // Заменяем цикл FOR на DO .. WHILE цикл идет до тех пор пока CountGerkon не сравняется с установленным количеством намотки y { if (j) //организуем цикл для сервопривода качания каретки вправо влево { if (g == 22) // g витков в одном слою секции меняется возрастая и убывая { j = 0; --g; //вычесть единицу } else ++g; //прибавить единицу } else { if (g == 0) { j = 1; ++g; //прибавить единицу } else --g; //вычесть единицу } //////////////////////////////обработка геркона (при нажатии кнопки) if (!digitalRead(GERKON)) //если сработал геркон { oled.clear(); //чистка экрана lcd.clear(); //#####################################################чистка lcd1602 staticmenu(); //вызов функции CountGerkon += 1; //прибавляем один при срабатывании геркона delay(5); //задержка для усранения дребезга oled.setCursor(55, 60); //курсор в точку oled.print(CountGerkon, DEC); //на экран в десятичном виде выдать значение переменной y lcd.setCursor(6, 1); //#####################################################ставим курсор на 6 позицию 1 строки lcd.print(CountGerkon, DEC); //#####################################################на экран в десятичном виде выдать значение переменной y } /////////////////////////////end обработки геркона (нажатия кнопки) oled.clear(); //почистить экран lcd.clear(); //чистка lcd1602 staticmenu(); //вызов функции staticmenu() oled.set2X(); oled.setCursor(55, 65); //курсор поставить на 55 и 65 oled.print(CountGerkon, DEC); //печать на экран фактического текущего значения витков переменной a lcd.setCursor(6, 1); //#############################################################курсор поставить на 6 позицию 1 строки lcd.print(CountGerkon, DEC); //#############################################################печать на экран фактического текущего значения витков переменной a digitalWrite(MOT1_STP, HIGH); //Установка значения HIGH приведет к тому, что напряжение на выходе MOT1_STP будет 5В digitalWrite(NAGREV, HIGH); //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Установка значения HIGH приведет к тому, что включится нагрев servo.write(g); // Поворачиваем серво на g градусов delay(355); // ждем 355 подбироается под обороты конкретного редуктора основного привода намотки } while (CountGerkon <= y - 1); digitalWrite(MOT1_STP, LOW); //Установка значения LOW приведет к тому, что напряжение на выходе MOT1_DIR будет 0В digitalWrite(NAGREV, LOW); //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Установка значения LOW приведет к тому,что нагрев прекратится } |
Автор: | tur55 [ Суббота, 30 Июль, 2022 18:17 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
В общем итог первого дня знакомства. 1.Программа Митькина оказалась интуитивно непонятной, методом тыка не смог разобраться. (Специально не читал литературу, не смотрел видео, как работает его Drakon-Editor) с белого листа наскоком не удалось сразу взять вершину. 2.Скачал Фабулу, оказалась интуитивно понятной. Есть подсказки подсвечивает, какие иконки можно брать, какие нет. Смог быстренько накидать Алгоритм взаимодействия со станком. Глубоко в Фабулу не стал вникать (к примеру не знаю для чего там репозиторий и прочий функционал) Ставил главное условие - Низкий порог вхождения. |
Автор: | tur55 [ Суббота, 30 Июль, 2022 18:21 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Теперь будем Читать описание Иконок Для чего они и чем отличаются друг от друга похожие по действию Иконки |
Автор: | Владимир Паронджанов [ Суббота, 30 Июль, 2022 20:20 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Иконы Имя ветки (Нажать кнопку Up, Нажать кнопку Down) — это просто метки. Они не выполняют никаких действий. В иконе Конец следует писать Конец (а не Выключить станок) |
Автор: | tur55 [ Суббота, 30 Июль, 2022 20:36 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Спасибо за пояснение. С иконами не познакомился как следует. Сразу быка за рога взял. Только на ошибках можно научится |
Автор: | Владимир Паронджанов [ Понедельник, 01 Август, 2022 09:20 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
В вашей схеме четыре ветки. Мне интересно, что делает каждая ветка. Пожалуйста, объясните мне в виде связного рассказа, что делает каждая ветка (обычными словами). Схему переделывать не надо. . |
Автор: | tur55 [ Понедельник, 01 Август, 2022 10:18 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
В общем имеется скетч рабочий, испытанный, решил его описать в виде Дракон схемы. Но в результате описал Действие оператора станка, а не самого станка. Объясняю саму схему, а не работу станка. Есть N - требуемое количество витков, которые надо намотать на катушку индуктивности (Ветка Кнопки UP) Нажимаем Кнопку UP в результате на экране высвечивается цифра. Если цифра меньше N нажимает UP Если цифра равна N переходим на ветку Кнопки START Если перескочили N переходим на ветку Кнопки DOWN (Ветка Кнопки DOWN) Нажимаем Кнопку DOWN в результате на экране высвечивается цифра. Если цифра больше N нажимает DOWN Если цифра равна N переходим на ветку Кнопки START Если перескочили N переходим на ветку Кнопки UP (Ветка Кнопки START) Нажимаем кнопку START Включается сервопривод, мотор, нагрев проволоки. (На станке стоит геркон который отсчитывает количество оборотов.) Если количество оборотов (срабатываний геркона) равна N переходим на ветку Остановить .. (Ветка Остановить) Выключить серво Выключить Мотор Выключить Нагрев КОНЕЦ |
Автор: | tur55 [ Понедельник, 01 Август, 2022 10:48 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Еще в процессе создания Дракон схемы возникли число психологические барьеры. К примеру как соотнести функцию цикла loop() с макроиконой. Так как Циклы делятся на I. Циклы со стрелкой II. Веточные циклы. III. Циклы ДЛЯ IV. Циклы ждать В свою очередь I. Циклы со стрелкой делятся на I.1. ДО I.2. ПОКА I.3. ГИБРИДНЫЕ и т.д. Тут несколько понятийных слоев. 1. Словесное наименование иконы. (Стрелочный цикл, Гибридный цикл) 2. Текстовое обозначение (ПОКА, ДЛЯ, ДО) 3. Графическое обозначение (картинка Иконы) 4. Программисткое обозначение (DO..WHILE; WHILE; FOR) Предположу что школьник лучше поймет значение слова ПОВТОР чем ЦИКЛ ПОВТОР С ВОПРОСОМ ПЕРЕД. ПОВТОР С ВОПРОСОМ ПОСЛЕ. Чем ЦИКЛ ПОКА, ЦИКЛ ДО... У меня нет трудностей с английским конструкциями DO...WHILE; FOR и т.д. Но возникают трудности как соотнести английские конструкции с русской терминологией и иконами |
Автор: | Владимир Паронджанов [ Понедельник, 01 Август, 2022 13:19 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Я попытался предложить "говорящие" имена веток. Возможно, у меня получилось неудачно, так как я не знаком с предметной областью. Попробуйте исправить мои имена веток, чтобы они ТОЧНО выражали назначения каждой ветки. tur55 писал(а): (Ветка Кнопки UP) Я понял так. Задача первой ветки — установить точное или приблизительное число витков. Имя ветки — Нажимаем Кнопку UP в результате на экране высвечивается цифра. Если цифра меньше N нажимает UP Если цифра равна N переходим на ветку Кнопки START Если перескочили N переходим на ветку Кнопки DOWN «Первая установка числа витков» tur55 писал(а): (Ветка Кнопки DOWN) Имя ветки — «Вторая установка числа витков»Нажимаем Кнопку DOWN в результате на экране высвечивается цифра. Если цифра больше N нажимает DOWN Если цифра равна N переходим на ветку Кнопки START Если перескочили N переходим на ветку Кнопки UP tur55 писал(а): (Ветка Кнопки START) . Имя ветки — «Включение станка намотки проволоки»Нажимаем кнопку START Включается сервопривод, мотор, нагрев проволоки. (На станке стоит геркон который отсчитывает количество оборотов.) Если количество оборотов (срабатываний геркона) равна N переходим на ветку Остановить tur55 писал(а): (Ветка Остановить) . Имя ветки — «Выключение станка намотки проволоки»
Выключить серво Выключить Мотор Выключить Нагрев |
Автор: | tur55 [ Понедельник, 01 Август, 2022 13:46 ] | ||
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки | ||
Можно и так. Как я и говорил это Алгоритм на основе которого Оператор взаимодействует со станком намотки. Это не алгоритм программы станка. А вот Алгоритм скетча Ардуино для станка намотки. Я его тупо из комментов составил. То есть это Парадигма [Программа-Комментарий]. Возникли вопросы поскольку у меня есть две функции staticmenu() и stepA() - иконы зеленного цвета Для них надо делать отдельные силуэты? Или сойдет если добавить две ветки в представленный силуэт?
|
Автор: | Владимир Паронджанов [ Понедельник, 01 Август, 2022 14:21 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Алгоритм и программа — разные вещи. У вас получился плохой гибрид (каша) алгоритма и программы. Так нельзя. Пишите либо алгоритм, либо программу. Желательно научиться правильно заполнять иконы Заголовок и Имя ветки. Они должны быть "говорящими". В иконе Заголовок нельзя писать "Алгоритм". Икона Имя ветки не может быть пустой. В вашем случае (перед Концом) напишите Завершение. Вместо Настройка SETUP лучше написать "Установка начальных значений". В иконе Имя ветки" нельзя писать Цикл Loop (надо писать зачем нужна эта ветка, каково ее назначение). |
Автор: | tur55 [ Пятница, 04 Ноябрь, 2022 07:17 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Продолжаю делать свой намоточный станок!! Использовал Дракон схему и программу Фабула чтоб проанализировать чужой код и видоизменить его. собственно ссылка на ютуб канал: https://youtu.be/bOZxCwcbM2c?t=318 Вложение:
|
Автор: | Alex_st_Tomsk [ Пятница, 04 Ноябрь, 2022 10:14 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Здравствуйте, можете отправить, пожалуйста, Вашу дракон-схему как отдельный файл, а не скрин из видео? Её невозможно прочесть |
Автор: | Владимир Паронджанов [ Среда, 09 Ноябрь, 2022 20:30 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
viewtopic.php?p=106682#p106682 |
Автор: | tur55 [ Суббота, 11 Ноябрь, 2023 23:52 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Вот что в результате получилось https://youtu.be/EKO_nCZ0Tfo?si=nIm59lIoWwuXixfD Цитата: !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ОПИСАНИЕ К ВИДЕО !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Первые результаты по намотке катушки индуктивности. Качество намотки удовлетворительно на троечку (3). Более менее виток к витку. Намотал кашку медной проволокой какой диаметр не знаю предположу что 0,2 мм. Количество витков 120 Измерения Сопротивление: - 6,3 Ом Индуктивность без сердечника: - 0,32 mH Индуктивность с не замкнутым сердечником: - 1,33 mH Индуктивность с замкнутым сердечником без зазора: - 4,31 mH Индуктивность с замкнутым сердечником с зазором: - 4,83 mH |
Автор: | Rodion Makarov [ Понедельник, 13 Ноябрь, 2023 19:07 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Скажите пожалуйста , tur55 , какое применение у катушки на видео? |
Автор: | tur55 [ Воскресенье, 10 Декабрь, 2023 18:58 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
первичная обмотка трансформатора |
Автор: | Rodion Makarov [ Среда, 13 Декабрь, 2023 10:03 ] |
Заголовок сообщения: | Re: Создать Дракон схему & скетч Станка намотки |
Tur55, заказать у Вас специальный блок питания можно? |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |