Страница 4 из 8
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 14:33
707dm
Чиффа а перемычки на микрошаг надо ставить если по умолчанию целый будем использовать?
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 14:39
707dm
и еще вопрос концевики на размыкание или на замыкание припаять?
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 14:48
Чиффа
мой опыт подсказывает, что целый шаг дает меньшую мощность, чем дробленый. Целый шаг мощнее, но поскольку он перемещает сразу резко на бОльшее расстояние, он хуже справляется с инерционностью тяжелых вещей. Короче, микрошаг подбирать по месту))
концевики в ненажатом состоянии должны быть разомкнуты - нормальноразомкнутые
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 15:44
707dm
Короче перетыкал кучку драйверов(не знаю какие точно живые),потом снял с принтера заведомо рабочий,вращение не пошло,ток крутил концевики нажимал,у как будто стоит на удержании,х не реагирует вообще,концевики воткнул в х Мин и мах.
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 15:52
707dm
Перечитал,концевики переткнул результат тот же
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:00
707dm
Х пошёл,у стоит не реагирует
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:01
Чиффа
Хм. Ну, моторы на удержании - уже хорошо. А если переменную Dt менять? До 10 поднять, работать будет?
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:02
707dm
а как по ком порту управлять?
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:04
Чиффа
Y делает движение через Otn_XY шагов Х двигателя. Уменьш Otn_XY до 10, и уменьш Interval до 80-40
Сча ком порт прикручу.
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:05
707dm
а как по ком порту управлять?
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:16
Чиффа
Спойлер
Код: Выделить всё
// Обозначаем пины:
byte XSTP_pin = A0; // шаг двигателя катушки (X на рампсе) (нога)
byte XDIR_pin = A1; // направление двигателя катушки (нога)
byte X_EN_pin = A2; // включение двигателя катушки (нога)
byte YSTP_pin = A6; // шаг двигателя каретки (Y на рампсе) (нога)
byte YDIR_pin = A7; // направление двигателя каретки (нога)
byte Y_EN_pin = A8; // включение двигателя каретки (нога)
// Концевики: (концевики нормально разомкнутые, подключены к +5В одним выходом, другим на Мегу)
byte Ymin_pin = 14; // на рампсе Ymin (нога)
byte Ymax_pin = 18; // на рампсе Zmin (нога)
//можно использовать только 1 концевик, нам же пофиг на направление движения каретки ;)
////////////////////////
//Константы и прочие полезности:
boolean XDIR = 0, YDIR = 0; // направление движения моторов, начальные значения
unsigned long Time_mem;
unsigned long Time_now;
unsigned int X_count = 0; // счетчик шагов Катушки
unsigned int Y_count = 0; // счетчик шагов Каретки
unsigned long Interval = 70; // время на итерацию, мСек. Собссно чем больше, тем медденнее идет намотка
boolean flag_HOME = 0; // если равен 1, то едем домой Кареткой. Не забыть при выставлении этого флага указать направление движения YDIR!!!
boolean flag_WORK = 0; // если равен 1, то пошла намотка
byte Dt = 5; // время от поднятия ног XSTP или YSTP до их опускания, мСек
unsigned int Otn_XY = 50; // через сколько шагов катушки будет сделан шаг каретки. Можно подобрать опытным путем, но лучше сначала рассчитать.
byte i; // стандартный индекс цикла
byte com = 0; // что мы приняли с com-порта
boolean LED = 0; // отладка
void setup() {
////////////////////////
//Конфигурируем ноги МК:
pinMode(13, OUTPUT); // отладка
pinMode(XSTP_pin, OUTPUT);
pinMode(XDIR_pin, OUTPUT);
pinMode(X_EN_pin, OUTPUT);
pinMode(YSTP_pin, OUTPUT);
pinMode(YDIR_pin, OUTPUT);
pinMode(Y_EN_pin, OUTPUT);
pinMode(Ymin_pin, INPUT);
digitalWrite(Ymin_pin, HIGH);
pinMode(Ymax_pin, INPUT);
digitalWrite(Ymax_pin, HIGH);
// Отладка по COM-порту
Serial.begin(115200); // С мегой не работал, у нее портов много, так что пока пробуем 1й
// Включаем двигатели:
digitalWrite(X_EN_pin, LOW); // вроде двигатели включаются подтяжкой к земле ???
digitalWrite(Y_EN_pin, LOW); //
digitalWrite(XDIR_pin, XDIR);
digitalWrite(YDIR_pin, YDIR);
}
void loop() {
// Смотрим сколько прошло времени
Time_now = millis();
if (Time_now - Time_mem >= Interval) { // Если прошло достаточно времени, то:
Time_mem = Time_now; // обнуляем время сразу, а то забудем!
if ((flag_WORK) && (flag_HOME)) { // если мы одновременно паркуемся и мотаем
flag_WORK = 0; // обнуляем оба флага
flag_HOME = 0; //
}
if (digitalRead(Ymin_pin) == 0) { // Смотрим не сработал ли концевик
flag_HOME = 0; // если да, то прекращаем ехать домой
YDIR = !YDIR; // меняем нарпавление движения каретки на случай, если мы наматывали
for (i = 0; i < 5; i++) {
digitalWrite(YSTP_pin, HIGH); // тут мы отъезжаем от сработавшего концевика на 5 шагов
delay(Dt); // чтобы он разомкнулся,
digitalWrite(YSTP_pin, LOW); // а то мы так и будем сюда заходить
delay(Dt);
}
// digitalWrite(13, LED); // отладка
// LED = !LED; // отладка
}
if (digitalRead(Ymax_pin) == 0) { // Смотрим не сработал ли концевик
flag_HOME = 0; // если да, то прекращаем ехать домой
YDIR = !YDIR; // меняем нарпавление движения каретки на случай, если мы наматывали
for (i = 0; i < 5; i++) {
digitalWrite(YSTP_pin, HIGH); // тут мы отъезжаем от сработавшего концевика на 5 шагов
delay(Dt); // чтобы он разомкнулся,
digitalWrite(YSTP_pin, LOW); // а то мы так и будем сюда заходить
delay(Dt);
}
// digitalWrite(13, LED); // отладка
// LED = !LED; // отладка
}
if (flag_HOME == 1) { // если мы едем домой, то
//digitalWrite(YDIR_pin, YDIR); // задаем направление движения
digitalWrite(YSTP_pin, HIGH); // дрыгаем ногой
delay(Dt); // по поводу задержки я хз сколько она должна быть,
digitalWrite(YSTP_pin, LOW); // и вообще, по поводу реализации с delay я в сомненьях, но работать должно :)
}
if (flag_WORK == 1) { // если мы всетаки наматываем катушку
digitalWrite(XSTP_pin, HIGH); // дрыгаем ногой
delay(Dt); //
digitalWrite(XSTP_pin, LOW); //
X_count++;
if (X_count == Otn_XY) { // если пора двигать каретку, то
X_count = 0; // обнуляем счетчик шагов катушки
digitalWrite(YSTP_pin, HIGH); // двигаем каретку
delay(Dt); //
digitalWrite(YSTP_pin, LOW); //
}
// digitalWrite(13, LED); // отладка
// LED = !LED; // отладка
}
if (Serial.available() > 0) {
com = Serial.read(); // читаем com-порт.
if (com - 48 == 1) {
flag_HOME = 1; //Если пришла 1, то мы едем домой!!!
flag_WORK = 0;
}
if (com - 48 == 0) {
flag_HOME = 0; //Если пришел 0, то все обнуляем!!!
flag_WORK = 0;
}
if (com - 48 == 2) {
flag_HOME = 0; //Если пришла 2, то все начинаем мотать!!!
flag_WORK = 1;
}
}
}
}
При включении ничего никуда не едет.
Подключаемся по монитору порта, меняем скорость на 115200 бод,
отправляем 1 - начинает парковаться,
отправляем 2 - начинает мотать катушку
отправляем 0 - останавливаем все
если включить и намотку и парковку одновременно, то все остановится.
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:41
707dm
может параметры кома тоже надо поправить ?
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:46
707dm
или тут что не так?
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:47
Lenivo
Не в обиду будет сказано - мелкие проекты лучше делать самому, чем разбираться в сыром чужом софте.
Чужой софт можно использовать за основу.
Запустите через рампс - движок Х, чтоб просто крутил, затем запустите движок У чтобы тоже просто крутил. Убедитесь что электрика и электроника в порядке (то есть подберите драйверы рабочие и работающие кнопки.) А после этого уже приступайте к отладке программы. НЕ НАДО перепрыгивать через этапы. Ни к чему хорошему это не ведёт. ВЫ должны быть уверены , что с электрикой у вас всё в порядке, а только потом искать глюки в программе.
Re: Намотчик обмоток
Добавлено: 11 июн 2017, 16:54
707dm
шд местами менял,драйвера тоже,работает 1 канал у,в чем косяк сам буду месяц искать.