Подключение Enable

KFlop, KStep, KAnalog, KMotion...
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Подключение Enable

Сообщение shura28 »

Здравствуйте!

Решил поделиться проблемой (точнее ее решением) по подключению сигнала Enable от драйвера шаговика к плате KFLOP. Возможно кому-то это покажется очевидным, но в интернетах ответа не нашел, поэтому решился на этот опус.
Итак, имеем KFLOP, три шаговика с тремя китайскими драйверами CW-5045.
IMG_20171125_184805.jpg (11420 просмотров) <a class='original' href='./download/file.php?id=125359&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (300.2 КБ)</a>
Сигналы setp/dir подключаются на предопределенные порты разъема JP7. Это 15/16, 17/18, 19/20. По умолчанию, эти порты работают в режиме открытого коллектора. Сигнал Enable включается/выключатеся точно таким же образом как и Step/Dir, но встал вопрос как и куда его подключать ? Понятно, что его можно завести на другие любые свободные порты разъема JP7, которые 5V tolerant.
А вот как "изобразить" работу порта в режиме открытый коллектор:

// IO3 - это порт соответствующий 10-у пину на JP7
ClearBit(3); // устанавливаем в disable
SetBitDirection(3,1); // переводим порт в режим output
// сейчас ток через светодиод оптопары не течет так как порт находится в высокоимпедатном состоянии. Драйвер выключен

SetBitDirection(3,0); // переводим порт в режим input
// ток течет, светодиод горит, драйвер включен.

В Kmotion можно эмулировать:
Включить
ena.png
ena.png (4.08 КБ) 11420 просмотров
Выключить
dis.png
dis.png (4.81 КБ) 11420 просмотров
В конец конфига (который в C Program) добавляем:
ClearBit(1); // turn output off
SetBitDirection(1,1); // set as output
ClearBit(2);
SetBitDirection(2,1);
ClearBit(3);
SetBitDirection(3,1);

так как по умолчанию все порты KFLOP-а инициализируются как Input.

В KmotionCNC можно добавить M-коды:
Mcodes.png
Mcodes.png (9.48 КБ) 11420 просмотров
В файлах enable.c и disable.c прописать переключение портов.
Как-то так. Все это мне подсказал Том.
Зачем это может быть нужно ? Например, вам нужно управлять всякими реле и прочими механизамим, а денег на Konnect нет или жалко.
Можно купить 5V реле для ардуино и подключить подобным образом. Сам правда пока не пробовал, но принцип такой же. Правда не совсем понтяно, какой максимальный ток может принять порт в режиме Input (спросил у Тома).

Так же в ходе изучения KFLOP возник вопрос:
в Mach-е можно создать M-код с практически любым номером просто создав файл MXXX (где XXX- номер кода) в соответствующей папке. А в KMotionCNC на закладке Tool Setup Screen доступно только 20 кодов. Это предел для KFLOP ?
Спасибо!
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2180
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

Re: Подключение Enable

Сообщение ukr-sasha »

Да.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

На мой вопрос о том, какой максимальный ток может пропустить порт в режиме Input
Should I be concerned about the maximum current that Input can sink?
The manual says that "Digital Outputs may sink/source 10 ma."
Is it true for IO in Input mode?
Том ответил следующим образом:
There should be no current when "open" in input mode.
Для меня это весьма странно. Возможно он имел ввиду то, что в данном режиме порта весь ток коммутируется на землю и в этом смысле не представляет угрозы для входа. Не понятно...
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Решил попробовать подключить реле от Arduino и вот что из этого получилось.
На руках оказалось только реле на 12 Вольт. Это напряжение срабатывания реле и к управлению оно отношения не имеет.
Однако для тех кто решится на такой эксперимент, рекомендую вдумчиво читать http://arduino.ru/forum/apparatnye-vopr ... le-arduino
Для 5-вольтовых модулей реле все описанное по ссылке в равной степени актуально.
У меня модуль реле второго типа и если не устанавливать джампер JDVCC-VCC, то получаем два гальванически развязанных контура: один на 12 Вольт для питания реле, а второй на 5 или 3,3 Вольт (работает в обоих случаях) для управления через оптроны.
Так как плату переходник с J7 на разъемы под болтик я делал только на 10 портов IO (6 из которых используются для управления осями), то для экспериментов остается 4 порта. Так как модуль тоже на 4 реле, то все и поключил.
IMG_20171129_215520.jpg (11339 просмотров) <a class='original' href='./download/file.php?id=125662&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (277.91 КБ)</a>
Соединил порты KFLOP-а IO0-IO3 с портами In1-In4 на модуле реле. Так же подал 3,3 Вольта с KFLOP-а на VCC, который рядом с In1-In4.
На JDVCC и Gnd подал питание 12В от аккумулятора.
Идем в KMotion и из Digital IO включаем все реле:
ena_r.png
ena_r.png (7.28 КБ) 11339 просмотров
IMG_20171129_215644.jpg (11339 просмотров) <a class='original' href='./download/file.php?id=125667&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (293.17 КБ)</a>
Ну и выключаем:
dis_rel.png
dis_rel.png (7.26 КБ) 11339 просмотров
Работает.
С таким же успехом для дергания реле можно перевести порты в режим Output и лишь менять состояние (State).
С учетом того что у KFLOP-а 46 IO, то можно подключить много разных реле.
Прикладываю свою платку-переходник для Sprint Layout-а.
Однако для тех кто решился заказать KFLOP рекомендую сразу же заказать нормальный переходник (жду посылку):
https://www.aliexpress.com/item/IDC26-2 ... eLevelAB=0
Следующим шагом буду осваивать передачу параметров в M-коды, чтобы использовать один M-код для всех реле и не обламываться от наличия лишь 20 M-кодов в KmotionCNC.
Вложения
idc26_.lay6.txt
переходник под ЛУТ
(31.01 КБ) 864 скачивания
Smouk
Кандидат
Сообщения: 76
Зарегистрирован: 08 ноя 2016, 16:36
Репутация: 32
Настоящее имя: Алексей
Контактная информация:

Re: Подключение Enable

Сообщение Smouk »

ClearBit(3); // устанавливаем в disable
SetBitDirection(3,1); // переводим порт в режим output
// сейчас ток через светодиод оптопары не течет так как порт находится в высокоимпедатном состоянии. Драйвер выключен

SetBitDirection(3,0); // переводим порт в режим input
// ток течет, светодиод горит, драйвер включен.
Том, обратил Ваше внимание на то, что переключение происходит варварским методом.
Смена логического уровня должна происходить командами SetBit, ClearBit.
Вы же управляете тем, что для состояния логической единицы делаете вместо выхода, вход.

Направление порта обычно указывается один раз при инициализации, исключения только интерфейсы связи, но здесь про них речь не идет.

Нормальный вариант думаю близок к такому:

Код: Выделить всё

SetBitDirection(3,1); // Переводим порт в режим выхода

ClearBit(3); // Переключаем выход на логический ноль

// Пауза для примера
Delay_sec(5.0);  

SetBit(3); // Переключаем выход на логическую единицу
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Smouk писал(а): Том, обратил Ваше внимание на то, что переключение происходит варварским методом.
Смена логического уровня должна происходить командами SetBit, ClearBit.
Вы же управляете тем, что для состояния логической единицы делаете вместо выхода, вход.

Направление порта обычно указывается один раз при инициализации, исключения только интерфейсы связи, но здесь про них речь не идет.

Нормальный вариант думаю близок к такому:

Код: Выделить всё

SetBitDirection(3,1); // Переводим порт в режим выхода

ClearBit(3); // Переключаем выход на логический ноль

// Пауза для примера
Delay_sec(5.0);  

SetBit(3); // Переключаем выход на логическую единицу
Я вначале именно так и пробовал, но драйверы не включались (моторы не вставали не удержание). Это вынудило меня обратиться за помощью к Тому и именно он предложил "варварский" вариант.
Так что, как говорится - "за что купил, за то и продаю" :D
Я так понимаю (возможно ошибочно), что в режиме output порт KFLOP-а находится в высокоимпедантном состоянии, т.е. его сопротивление бесконечно велико. Вне зависимости от логического уровня (high или low), ток через него не потечет и соответственно оптопара на входе драйвера не сработает.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

... тем временем удалось разобраться с передачей параметров в M-коды.
Вот такой несложный скрипт (ToggleRelay.c):

Код: Выделить всё

#include "KMotionDef.h"

main()
{
	float relay, state;

	relay = *(float *)&persist.UserData[0];
	state = *(float *)&persist.UserData[1];

	if ((relay >= 0) && (relay <= 3))
	{
		if (state == 0)
		{
			SetBitDirection(relay,0);
		}
		if (state == 1)
		{
			ClearBit(relay);		// turn output off
			SetBitDirection(relay,1);	// set as output
		}
	}
}
позволяет щелкать реле в формате:
M100 P1 Q0
где единица у параметра P - номер реле, который в моем случае совпадает с портом IO у KFLOP-а,
а ноль у параметра Q - это состояние реле. 0-выключить, 1-включить.
Единственное, что вызвало недоумение - параметр VAR в настройках M-кода.
VAR.png
VAR.png (6.5 КБ) 11305 просмотров
Нормальной работы удалось добиться, когда VAR установлен в 0 (ноль).
Думаю это номер ячейки в persist.UserData начиная с которой в подпрограмму передаются параметры. Что-то с этим звязанное.
Smouk
Кандидат
Сообщения: 76
Зарегистрирован: 08 ноя 2016, 16:36
Репутация: 32
Настоящее имя: Алексей
Контактная информация:

Re: Подключение Enable

Сообщение Smouk »

shura28 писал(а):Я вначале именно так и пробовал, но драйверы не включались (моторы не вставали не удержание). Это вынудило меня обратиться за помощью к Тому и именно он предложил "варварский" вариант.
Так что, как говорится - "за что купил, за то и продаю" :D
Значит пробовали не так. Том не мог предложить такого решения, если не трудно скопируйте сюда его сообщение. Вы в праве использовать любой метод, но не вводите остальных людей в заблуждение.

Параметр VAR, указывает начальный номер переменных переданных в KFLOP. Это необходимо для избежания наложения данных при вызове программ в разных потоках. KMotionCNC пакует все эти данные в один массив и передает в KFLOP, если потоки будут запущены одновременно и везде будет указано использование переменной с #0, то одно из значений будет некорректно. Так же иногда в программе удобно считывать последнее значение этого массива, чтобы дополнительно не хранить его где-то еще, тем более данный массив доступен из всех потоков.
Единственный нюанс, что из диапазона номеров от 0 до 200, системой используются 100-107. Их использовать для своих нужд нельзя.

Документация тут:
https://dynomotion.com/Help/KMotionCNC/ ... Params.htm
https://dynomotion.com/Help/KMotionCNC/ ... rKFLOP.htm

Приведенный Вами пример передачи параметров работает(без учета ошибки обсужденной выше), но в целом при указании целочисленных номеров выводов использование float в других примерах несет большие риски и для этого все-таки надо использовать int. Сравнение float это обычно костыль в виде приведения к тому же int или два условия больше-меньше. Отлавливать подобные вещи на большой системе уже проблематично, проще не закладывать их вообще.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Smouk писал(а): Значит пробовали не так. Том не мог предложить такого решения, если не трудно скопируйте сюда его сообщение. Вы в праве использовать любой метод, но не вводите остальных людей в заблуждение.
Я лишь следовал его инструкциям:
Tomletter.png (11268 просмотров) <a class='original' href='./download/file.php?id=125801&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (293.12 КБ)</a>
И это работает.
Smouk писал(а): Параметр VAR, указывает начальный номер переменных переданных в KFLOP. Это необходимо для избежания наложения данных при вызове программ в разных потоках. KMotionCNC пакует все эти данные в один массив и передает в KFLOP, если потоки будут запущены одновременно и везде будет указано использование переменной с #0, то одно из значений будет некорректно. Так же иногда в программе удобно считывать последнее значение этого массива, чтобы дополнительно не хранить его где-то еще, тем более данный массив доступен из всех потоков.
Единственный нюанс, что из диапазона номеров от 0 до 200, системой используются 100-107. Их использовать для своих нужд нельзя.
Т.е. переменная VAR является индексом массива persist.UserData начиная с которого будут записываться и передаваться параметры P/Q/R ?
Если установить VAR=50, то в скрипте обращаться нужно будет так?

Код: Выделить всё

printf("P = %f Q = %f R = %f\n",
		*(float *)&persist.UserData[50],
		*(float *)&persist.UserData[51],
		*(float *)&persist.UserData[52]);

Интересно, попробую.
Я так понял, что механизма разделения доступа к данным массива между тредами нет (типа мутексы, семафоры и пр.) и совместное их использование невозможно.
Читаю потихоньку. Пример с передачей параметров в M-код, брал как по первой ссылке.
Smouk писал(а): Приведенный Вами пример передачи параметров работает(без учета ошибки обсужденной выше), но в целом при указании целочисленных номеров выводов использование float в других примерах несет большие риски и для этого все-таки надо использовать int. Сравнение float это обычно костыль в виде приведения к тому же int или два условия больше-меньше. Отлавливать подобные вещи на большой системе уже проблематично, проще не закладывать их вообще.
Из примера я понял, что параметры к М-кодам передаются именно типа float. Или можно *(int *)&persist.UserData[50] ? Надо посмотреть их размерность и если sizeof(float) == sizeof(int), то почему бы и нет. Float вроде как 4 байта, а вот целочисленный соизмеримый тип наверное уже что-то типа long. В общем нужно смотреть хидеры и вникать/пробовать.
В случае же с float-ом, можно сделать явное приведение типов (int)(...) при присвоении, но компилятор/транслятор должен сделать преобразование типов сам. Можно было просто объявить переменные relay и state как int.
Я же не делал этого потому как это всего лишь пример для освоения KFLOP-а.
А проверка на значение пользовательских данных - просто хорошая привычка.
В общем с C++ у меня проблем нет, надо только покапаться в памяти :D , но все равно спасибо, возможно кому-то это будет полезно.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Комментарии Алексея Smouk посеяли зерно сомнения в мою стройную картину мира, и я решил еще раз проштудировать теоретическую часть. :)
Если принять, что цифровые входы работают по принципам изложенным здесь:
http://arduino.ru/Tutorial/DigitalPins
То получается, следующее:
# капитан Очевидность On
Порты в режиме Input находятся в высокоимпедансном состоянии (их сопротивление очень велико и они не пропускают ток достаточный чтобы как-то повлият на внешние устройства). Порт просто "слушает" наличие/отсутствие напряжения на входе. Есть напряжение есть, значит порт в состоянии High, нет напряжения, значит в Low. Так как по закону Ома U=I*R, то при наличии большого R, любое даже незначительное значение тока I, выдает на порт вполне осязаемое напряжение. Т.о. порт будет "ловить" даже электромагнитные наводки и переключаться из одного состояния в другое без видимых на то причин.
# генерал Ясен пень On
Поэтому порты в режиме Input "подтягивают" либо к земле Gnd, либо к питанию Vdd. Схематически это выглядит следующим образом:
Input High
inpHigh.png
inpHigh.png (8.83 КБ) 11249 просмотров
Input Low
inpLow.png
inpLow.png (4.83 КБ) 11249 просмотров
Внутри контроллеров бывает эту логику релизуют аппаратно, но можно это делать и внешним обвесом.
# генерал Ясен пень Off
Порты в режиме Output находятся в низкоимпедансном состоянии и могут как быть источником напряжения и пропускать ток наружу, так и прикидываться цифровой землей Gnd и пропускать ток в себя.
Output High - на порту имеется напряжение и если его соединить с землей, то ток потечет наружу. Порт - источник (source).
Output Low - на выходе порта земля и если на него подать напряжение, то ток потечет внутрь. Порт - приемник (sink).
# капитан Очевидность Off
Из этого следует, что в первом посте я наврал (надеюсь никто пострадать не успел).
Для включения сигнала Enable на драйвере, нужно чтобы порт коммутировал ток на землю. Т.е. переводим порт в Output-Low (порт пропускат ток на землю).
Для выключения сигнала Enable на драйвере нужно чтобы порт не пропускал ток. Переводим порт в Input-High и порт подтягивается к VDD. Так как на вход драйвера мы подаем +5В, а VDD портов скорее всего 3,3В, возможно что какой-то ток имеет место быть. Но видимо его не досаточно, чтобы открыть тразистор оптопары.
Вроде как все укладывается в стандартную релятивистскую модель мира :)
Но вариант Алексея Smouk тоже должен работать!!!
В режиме Output-High на порту напряжение и ток через светодиод оптопары сигнала Enable в драйвере не течет.
В режиме Output-Low порт пропускат ток и светодиод должен открыться.
Проверил этот вариант с модулем реле. Тоже работает. Почему не заработало с драйвером не знаю. :thinking:
Так или иначе вариант который предложил Том видимо тоже имеет право на существование. Однако какой из них будет более "правильный" сказать не берусь, так как электронщик из меня сами понимаете какой :D
С другой стороны в доках на KFLOP черным по белому написано, что порты могу работать в режиме Open collector, но как оно там реализовано и что под этим подразумевается, одному dynomotion-у известно...
Smouk
Кандидат
Сообщения: 76
Зарегистрирован: 08 ноя 2016, 16:36
Репутация: 32
Настоящее имя: Алексей
Контактная информация:

Re: Подключение Enable

Сообщение Smouk »

В целом все верно, поэтому схема работает, но от Тома я такого ответа не ожидал, но он видимо решил, что если задан вопрос, как запустить конкретную схему, то на него и надо отвечать.
Хотя немного изменив схему подключения(просто поменяв выводы местами) можно использовать штатный режим работы портов вывода, выход завести на анод, а катод подключить к GND. Дополнительно стоит посмотреть резистор перед оптопарой, что бы не превысить ток выхода KFLOP, но от текущей схемы он не изменится.
По поводу подтягивания портов к земле или питанию это относится только ко входам, поэтому в этом случае роли не играет совсем. Отсюда можно сделать вывод, что такое подключение только вносит путаницу в код, а никакой практической пользы не дает.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Пришло время концевиков.
Есть вот такие:
IMG_20171209_144532.jpg (11191 просмотр) <a class='original' href='./download/file.php?id=126453&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (821.39 КБ)</a>
Подключать буду по классической схеме:
LimitSwitches.jpg (11191 просмотр) <a class='original' href='./download/file.php?id=126441&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (84.73 КБ)</a>
Вот так выглядит разводка:
breakoutboard.png (11191 просмотр) <a class='original' href='./download/file.php?id=126442&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (119.66 КБ)</a>
R1=1K для 24V и 0,5K для 12В
С1=0,1мкФ (104)
D1-любой fast/super/hyper диод. Последняя циферка в маркировке - это ток. Нам подойдет любой.
Оптроны - сдвоенные PC817.
Величина R1 - определяется напряжением, которое подается для питания датчика. Расчет этого сопротивления можно сделать:
http://cxem.net/calc/ledcalc.php
Прямое напряжение светодиода и прямой ток светодиода нужно взять из даташита. Для PC817 это 1,2В и 20мА соответственно.
Так как я запитываю датчик от АКБ 12В, то R1=510 Ом.
Так же R1 вместе с C1 образуют фильтр нижних частот (ФНЧ). Подбирая величину C1 можно ограничивать частоту срабатывания датчика, тем самым убирая помехи.
Расчет ФНЧ можно выполнить например вот здесь:
http://tel-spb.ru/rc.html
Получается вот такая штука:
IMG_20171208_212058.jpg (11191 просмотр) <a class='original' href='./download/file.php?id=126451&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (878.94 КБ)</a>
IMG_20171208_212131.jpg (11191 просмотр) <a class='original' href='./download/file.php?id=126450&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (889.52 КБ)</a>
Подключаем датчик:
IMG_20171208_212110.jpg (11191 просмотр) <a class='original' href='./download/file.php?id=126452&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (885.49 КБ)</a>
Родные цвета проводов датчика - коричневый (+V) синий (0V) черный (сигнальный). У меня же припаяны проводки с наконечниками для удобства крепления под зажим: коричневй, синий и красный соответственно.
Подключаем к KFLOP:
IMG_20171209_143604.jpg (11191 просмотр) <a class='original' href='./download/file.php?id=126454&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (949.97 КБ)</a>
Проверяем в Digital IO: подносим к датчику металл - порт меняет состояние. Это хорошо.
Такая схема, насколько я понимаю, хороша тем, что в случае обрыва проводов или пропадания питания датчика , KFLOP увидит срабатывание концевика и остановит движение.
В KMotion указываем, что концевик подключен к IO0 и срабатывает при уровне High:
LimitSwitchOptions.png
LimitSwitchOptions.png (4.8 КБ) 11191 просмотр
Все это сохраняем как положено.
Теперь идем в KMotionCNC и пробуем:
запускаем одну ось (для которой прописали датчик) в путешествие:
g0x500.png
g0x500.png (985 байт) 11191 просмотр
и пока двигатель вращается, вызываем срабатывание датчика.
Если все сделано правильно, то двигатель должен резко остановиться.
Для того чтобы его активировать для дальнейших экспериментов нужно его включить командой:
EnableAxis.png
EnableAxis.png (1.06 КБ) 11191 просмотр
Как-то так...
Вложения
sensors_prox.7z
(6.74 КБ) 408 скачиваний
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Пришел переходник:
IMG_20171210_114931.jpg (11168 просмотров) <a class='original' href='./download/file.php?id=126553&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (666.56 КБ)</a>
Хотел поинтересоваться - нужно ли для подключения KFLOP-а к компу использовать USB-изолятор ?
По идее, при соединении обычным USB-шнурком, земли двух БП будет связаны и проблем быть не должно. Насколько оправдана покупка USB-изолятора ?
Smouk
Кандидат
Сообщения: 76
Зарегистрирован: 08 ноя 2016, 16:36
Репутация: 32
Настоящее имя: Алексей
Контактная информация:

Re: Подключение Enable

Сообщение Smouk »

shura28 писал(а):Хотел поинтересоваться - нужно ли для подключения KFLOP-а к компу использовать USB-изолятор ?
По идее, при соединении обычным USB-шнурком, земли двух БП будет связаны и проблем быть не должно. Насколько оправдана покупка USB-изолятора ?
Все зависит от коммутируемых на станках мощностях, прокладке кабелей и длинны. Я бы поработал в начале так - если будет дисконнект за время наладки, купите. Просто хороший изолятор в силу частот на USB стоит дорого, а дешевый - бесполезен.

Так же проверьте, что ревизия платы KFLOP 1.3 и выше.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Smouk писал(а): Все зависит от коммутируемых на станках мощностях, прокладке кабелей и длинны. Я бы поработал в начале так - если будет дисконнект за время наладки, купите. Просто хороший изолятор в силу частот на USB стоит дорого, а дешевый - бесполезен.
Так же проверьте, что ревизия платы KFLOP 1.3 и выше.
Я больше переживаю чтобы KFLOP не выпустил синий дым.
Разброс цен на изоляторы действительно несколько смущает. Вообщем буду пробовать, спасибо!
Плата REV 1.3.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Начал все это хозяйство прикручивать к станку и неожиданно для себя обнаружил, что у atx БП минусовой провод в цепи постоянного тока соединён с корпусом. Т.о., если БП не изолирован от рамы станка, то получается что мы имеем минус на раме. Не могу объяснить, но мне кажется это неправильно. Например, в моем случае, на станке стоят и 3-х фазный асинхронник и пневмоклапана работающие от переменки и сервы, боюсь минус будет плавать. Стол заземлен, но все равно такая схема кажется неправильной. Может лучше запитать всю электронику (kflop, датчики и реле) от БП, который будет изолирован от стола. Прошу совета знатоков.
Аватара пользователя
Rom327
Почётный участник
Почётный участник
Сообщения: 2940
Зарегистрирован: 03 апр 2015, 13:23
Репутация: 431
Настоящее имя: Роман
Откуда: Подольск
Контактная информация:

Re: Подключение Enable

Сообщение Rom327 »

shura28 писал(а):Начал все это хозяйство прикручивать к станку и неожиданно для себя обнаружил, что у atx БП минусовой провод в цепи постоянного тока соединён с корпусом. Т.о., если БП не изолирован от рамы станка, то получается что мы имеем минус на раме. Не могу объяснить, но мне кажется это неправильно. Например, в моем случае, на станке стоят и 3-х фазный асинхронник и пневмоклапана работающие от переменки и сервы, боюсь минус будет плавать. Стол заземлен, но все равно такая схема кажется неправильной. Может лучше запитать всю электронику (kflop, датчики и реле) от БП, который будет изолирован от стола. Прошу совета знатоков.
Более того, в компьютерных блоках питания и замляной питающий провод может оказаться на корпусе. А при отсутствии заземления со стороны ~ 220 вольт на корпусе окажется 1/2 от ~ 220 вольт...
земля, корпус и минус питания все в куче. (11048 просмотров) <a class='original' href='./download/file.php?id=127395&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (391.98 КБ)</a>
земля, корпус и минус питания все в куче.
Это сугубо мое мнение, могу и ошибаться...
https://vk.com/rom327
GRBL настройки: http://blogandbux.blogspot.com/2018/07/ ... revod.html
G коды: http://3d-stanki.ru/spravochnik/program ... stankov-2/
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Именно. Когда обнаружил эту связь мультиметром, изучил интернет и засомневался собственно. Может безопаснее будет использовать БП с трансом и низкой частью полностью изолированной от станка ? С другой стороны компьютеры ведь как-то работают, а там электроника тоже требовательная к качеству питания.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Не стал испытывать судьбу и запитал kflop от usb, так как никаких плат расширения нет и ток потребления должен быть не большой. Вместо БП от компа поставил БП от ОПС на 12в. Он с трансом и АКБ для поддержки штанов.
Электронику заталкал в железный ящик, а силовую часть прикрутил к стальной плите.
IMG_20171220_160958.jpg (11020 просмотров) <a class='original' href='./download/file.php?id=127533&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (1.05 МБ)</a>
IMG_20171222_164728.jpg (11020 просмотров) <a class='original' href='./download/file.php?id=127532&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (1.38 МБ)</a>
Решили, что нормальный ящик сделаем, если все заработает как надо.
Вот станок :)
IMG_20171021_150456.jpg (11020 просмотров) <a class='original' href='./download/file.php?id=127534&sid=5a9de78fe5de673d4e8ce215cdea4107&mode=view' target=_blank>Загрузить оригинал (1.35 МБ)</a>
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Подключение Enable

Сообщение shura28 »

Одна ось работает от китайского драйвера leadshine DCS810. Сегодня весь день потратил пытаясь заставить ее работать. От Mach3 работала замечательно, а тут вообще ноль реакции.
В итоге нарыл в инете, что у leadshine-ов есть ограничение по минимальной длительности импульсов step/dir.
Проблема решилась добавлением строчки:
FPGA(STEP_PULSE_LENGTH_ADD) = 42;
Ответить

Вернуться в «KFlop»