LINUX.ORG.RU

Манипулятор СИ-программой в Linux

 , , , ,


0

1

Необходимо фейдерами, а также кнопками - управлять программой на СИ в Линукс. По количеству это 30 регуляторов и 15 кнопок.

Как это всё реализовать, самым простым и дешёвым способом?

Обратите внимание, устройство как бы сильно пассивное, то есть не требует каких-либо вычислений. Ему нужно только писать в ячейки значения, соответствующие сдвигу каждого регулятора. А программа на комьпьютере просто получит эти состояния через вызовы.


Ему нужно только писать в ячейки значения, соответствующие сдвигу каждого регулятора.

А программа на комьпьютере просто получит эти состояния через вызовы.

Не понял, через какие такие вызовы?

Необходимо фейдерами, а также кнопками - управлять программой на СИ в Линукс.

Что является объектом управления? Программа, или пульт?

Если программа - то это тебе лучше знать...

Программа, кстати, уже готовая, или её предстоит написать?

shkolnick-kun ★★★★★
()

через компорт и/или юсб
микроконтроллер-ардуино тригирится на прерывания от энкодеров и кнопок и шлёт байтики на компорт (к компьютеру оно подключается через com->usb адаптер)
на компьютере программа читает из компорта байтики и реагирует

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

Ээ, как-то стало ещё менее понятно, если объединить абзацы, то получится, что вопрос:

Самый простой и дешёвый способо читать байтики из компорта программой на Си?

Ответ. open(«/dev/ttyS0»); read().

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от Bad_ptr

Это будет устройство ввода/контроля, а программа будет управляться им. Ещё не написана.

через какие такие вызовы?

Я предполагал другой механизм взаимодействия: отображение на ОЗУ, а программа просто читает/пишет ячейки.

Ладно, значит прога просто ест байты из ком-интерфейса в Линукс как файлы. В каком формате байты? Что вставлять в разъём? Как это всё будет работать? Инициализировать, программировать что-то нужно или уже готово?

30 движков (это будут регуляторы громкости) и 15 кнопок.

Что покупать-то для таких потребностей?

aboite
() автор топика

Необходимо фейдерами, а также кнопками - управлять программой на СИ в Линукс.

Это будет устройство ввода/контроля, а программа будет управляться им.

Это называется «гланды через жопу вырезать»

30 движков (это будут регуляторы громкости) и 15 кнопок.

Надо разделить, и понять что никто ничем не управляет, а есть такое:

  • есть кнопки и регуляторы, это раз;
  • есть (будет) некая программа, которая должна будет знать состояние регуляторов и кнопок;
  • надо решение, как программе получать состояние кнопок (нажата, отжата, момент нажатия и т.п.), состояние регуляторов.

Вот, проблема у тебя как раз как связать п. 2 и п. 3. Вот и смотри, что у тебя за кнопки, что за регуляторы, как ты можешь опросить их состояние? Наверное, самое простое это через GPIO, тогда у тебя уже будет не одна программа, а две - первая на железе (ардуина или малина) мониторит твои кнопки, а вторая уже получает их состояние из первой.

vvn_black ★★★★★
()
Ответ на: комментарий от aboite

Что покупать-то для таких потребностей?

Купи малинку, а лучше какой-нибудь набор с кнопками, датчиками, диодами. Соберёшь простейшую схему, помигаешь диодами, поймешь как оно работает и может вообще схему своего проетка пересмотришь.

vvn_black ★★★★★
()
Ответ на: комментарий от Bad_ptr

А может у него кнопки и фейдеры уже с контроллером, тогда и не нало ничего.

Он же темнит, не хочет, наверное, супер-мега бизнес-идею светить.

vvn_black ★★★★★
()
Ответ на: комментарий от Bad_ptr

Ардуина и проще и дешевле.

Вообще ему, наверное, проще и дешевле, заказать разработку конкретной железки с конкретным контроллером и с заданным интерфейсом подключения к ПК.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)

Да, берёшь вот это говно, это, это и это, соединяешь, докидываешь всяких резисторов, разъёмов, сраных стабилитронов, пару кварцевых резонаторов и оловянных соплей. Потом пишешь код.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Модели регуляторов не хотите здесь написать? Чтобы было, хотя бы примерно, понятно, чем именно управлять.

anonymous
()
Ответ на: комментарий от Deleted

Это точно. «У меня в подвале странный стук. Объясните, пожалуйста, что это стучит?»

anonymous
()
Ответ на: комментарий от Bad_ptr

Я понимаю, нужен программируемый модуль - ни больше ни меньше. Такого, чтобы уже готовое устройство было, с которым программу Линукс соединит и вуаля - нет?

Тогда можете подсказать, какой контроллер нужен на 35+/-15 регуляторов громкости и 10 кнопок? Чтобы взять сразу то что нужно и с этим заниматься.

И ещё вопрос в догонку: если нужно перевести милливольты переменного тока около 1 Гц (механика) в байтик 0...255, то те «аналоговые входы», которые установлены на борту контроллеров, подойдут? Такие низкие частоты там не отсекаются?

берёшь вот это говно, это, это и это, соединяешь, докидываешь всяких

Могу припаять и прозвонить. )

>> Ешё раз про топик. 30-ю параметрами программы на СИ управляет поворотные регуляторы с точностью до 1/256. Как это сделать? Простота и дешевизна приветствуется!

aboite
() автор топика
Ответ на: комментарий от aboite

Чувак, тебе русским по белому написали - назови модели регуляторов. Тогда, после изучения мануалов на эти твои регуляторы, можно будет сказать, как именно ими управлять, и что для этого использовать.

anonymous
()

Мне кажется, или в midi это уже лет 30 как реализовано всё?!

aol ★★★★★
()
Ответ на: комментарий от anonymous

Я начинаю путаться...

Да, миди, по сути подходит. Но смотрю я вот видео «миди контроллер на Ардуино» - https://youtu.be/lYx25vLHsG8?t=602 - а, после 10 минуты, у него ползунок дрожжит, как живой. Фигня какая-то. Наверное, здесь надо будет цифровой фильтр делать, что не айс.

Но главное: как тогда мне в СИ-программу миди подцеплять? Там же вообще адский протокол, этот миди. И причём здесь Ардуино? Или так же через КОМ-порт?

модели регуляторов

Вот уж не думал, что задача решается от регуляторов... У меня есть советские 10комные, думал их в ход пустить. Ладно, шучу. ) Да фиг знает, какие. Плавные. Какие там модели могут быть? Резистор он и есть резистор. Главное, чтобы было много слотов в хосте.

aboite
() автор топика

Пиши задание в Job и озвучивай смету. Потому что раз ты такие вопросы задаешь, самостоятельно ты такое и через 3 года активного самообучения не сделаешь!

Фактически же, самый простой способ - взять одноплатный компьютер с кучей GPIO, если будет нехватка ног - повесить еще и мультиплексоры. На сишечке (или даже баш-скрипте) накатать управлялку этим безобразием, при желании - сделать веб-морду. И радоваться.

Если же нужна приблуда к компьютеру, сделать это на микроконтроллере - еще и дешевле получится. Вот такой уродец, например.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от aboite

Фигня какая-то

Как говорится, ардуино, качество. Выбери одно из двух.

Резистор он и есть резистор

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

Алсо, не надейся, что дрожать не будет совсем. Выцепить штук 100 уровней на тяп-ляп-плате ещё можно, дальше - только развлекаться с усреднением, теряя частоту опроса, или использовать правильную аналоговую магию, что бесплатно тебе вряд ли кто сделает.

Deleted
()
Ответ на: комментарий от Eddy_Em

компьютер с кучей GPIO

Ему кучу АЦП надо или быстрый ремап одного на кучу пинов. Я о таком среди одноплатников не слышал.

Deleted
()
Ответ на: комментарий от aboite

Логичней не резисторы использовать в качестве регуляторов, а инкрементальные энкодеры!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Deleted

Не надо АЦП, если взять энкодер, а не переменный резистор.

Ну, в любом случае, его знаний не хватит, чтобы это сделать самостоятельно в обозримом будущем.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

упоротым

А они ему подходят по всем параметрам: мега8 стоит 30 рублей, работает в совершенно скотских условиях, выживает при пайке зажигалкой, прошивается сторублёвым программатором, имеет простую в обращении периферию и кучу примеров кода. Алсо, да, я упорот =3

Deleted
()
Ответ на: комментарий от Eddy_Em

энкодеры

м, и как предполагается надёжно подключить 30 энкодеров, чтобы не было дрейфа? Или предлагаешь сделать гомосячные регуляторы без «нуля», которые бесконечно крутить надо?

Deleted
()
Ответ на: комментарий от Deleted

Тогда давай еще 20-рублевые ch55x вспомним. С аппаратным USB (правда, в линуксе с ними пока совсем тухло).

Я еще и о том, что аврки - сами по себе говно. Зачем такую парашу использовать, когда есть современные хорошие МК?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Вот такой уродец, например.

чеел, купи ламинатор. Это будет лучшее вложение двух тысяч деревянных, которое ты когда-либо делал. Алсо, ещё каустической соды, сдирать фоторезист наждачкой - вандализм D:

Deleted
()
Ответ на: комментарий от Deleted

А куда оно там дрейфовать будет? Это ж обычный инкрементальный энкодер, а не абсолютный!

Но да, с 30-ю я погорячился: ведь обычно у микроконтроллера от силы два-три таймера имеют ноги для подсоединения энкодера. А мультиплексоры в данном случае как-то не очень (хотя, возможно). Лучше уж правда мультиплексировать 30 переменных резисторов.

А для кнопок есть специальные драйверы (TIM1637 лучше не использовать, у него I2C ненастоящий, надо брать либо на SPI, либо на настоящем I2C).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Deleted

купи ламинатор

Жаба душит. Утюгом сойдет.

ещё каустической соды

Дык, сейчас так и делаю. И фоторезист в холодильнике храню: он в тепле быстро сдыхает.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

куда дрейфовать

Да ну нафиг на аудиоаппаратуре инкрементальные регуляторы, это ж гомосятина (

ch55x

Не лапал и на али не вижу. Как оно вообще?

в линуксе с ними пока совсем тухло

С USB? Там какой-то особый китайский USB? 0_o Или ты про программирование?

Deleted
()
Ответ на: комментарий от Eddy_Em

Утюгом сойдет.

Ну блеен, это же совсем не те ощущения) Я часто даже окислы снять забиваю, просто прохожу ваткой со спиртом - и фоторезист идеально ложится. Алсо, хз, как он у тебя дохнет, у меня дешманский Ordyl месяцами после истечения срока годности валяется - и ничего не происходит. Может, хранишь как-то не так?

Deleted
()
Ответ на: комментарий от Eddy_Em

Для кнопок, если уж так приспичит I2C юзать, можно прилепить PCF8574. Оно тоже работает в совершенно уродских условиях без глюков. Как и CH340, собственно, я за то этот примитив и люблю.

Но я так-то думал кнопки подключить к тем же мультиплексорам, которые резисторы опрашивают, для единообразия. Или параллельно, через чёнить вроде 74HC595D, если хочется чаще опрашивать

Deleted
()
Ответ на: комментарий от Deleted

Как оно вообще?

Пока никак, в ЖЖ у меня почитай.

Или ты про программирование?

Я о их прошивке. Есть лишь один кривой прошивальщик, но и тот мои МК не увидел!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Deleted

Может, хранишь как-то не так?

Мне несколько кусков вообще изначально говнистыми приходили - не клеились на плату. Потом купил более-менее приличный кусок. Просто на али взял не самый дешевый, а чуть дороже. Возможно, в конце года, если вдруг в обсерватории появятся деньги, мне купят нормальный «фирменный» фоторезист, т.к. тратить свои кровные на такую дорогущую штуку я не хочу. А односторонние простые платы я до сих пор ЛУТом делаю - быстрей и проще получается.

Но я так-то думал кнопки подключить к тем же мультиплексорам, которые резисторы опрашивают, для единообразия

Их тогда можно на резистивные матрицы вешать, будет штук по 8 кнопок на одном канале АЦП...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

до сих пор ЛУТом делаю - быстрей и проще получается.

Я обленился и заставляю роботов вкалывать за себя) Пусть медленно и кривовато в силу нехватки точности, зато не приходится возиться с вечно дырявыми фотошаблонами или прыгать с утюгом.

а если ТС хочется извращений, то можно поразвлекаться битбангом через LPT и АЦП из кучи делителей. Может, даже удастся на баше для этого обвязку сделать, лол.

Deleted
()
Ответ на: комментарий от Deleted

Тоже была задумка лазером фоторезист засвечивать, я даже одноваттный УФ-лазер прикупил, но пока валяется без дела - надо под него платформу XY собирать, а лень (это ж еще парсер g-кодов придется на STM32F042 реализовывать)...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Я LinuxCNC юзаю. Лазер тоже одноваттный, но смысла в такой мощности нет - на видео он на 4.5% мощности светит. Если больше, то из-за фиговенькой оптики засвечивает окружающий фыр, и он потом плохо сходит.

Парсер Мульт реализовывал, говорит, фигня вышла, лучше купить нормальный контроллер и не мучаться ) https://pikabu.ru/story/pochti_avtonomnyiy_kontroller_dlya_pochti_plottera_46...

Deleted
()
Ответ на: комментарий от Deleted

LinuxCNC

Оно ж тупо ногами дрыгает, ему аппаратный параллельный порт нужен и всякая фигня для псевдорилтайма. Ну его в печь!

смысла в такой мощности нет

Есть: чем мощней лазер, тем шустрей его можно двигать. А чтобы пятно не было слишком большим из-за фиговой оптики, можно сделать диафрагму.

Парсер g-кодов под STM32 есть на гитхабе, уже народ делал. Но у них на STM32F103, да еще и либо под калокубом, либо под сплем. Нафиг этот график! Но можно куски кода повыдирать - да хоть из атмеговского, чтобы не писать самому уж совсем все.

На мой взгляд, самое сложное - синхронизировать оси. Я сначала думал под каждую ось микроконтроллер брать, но потом понял, что замучаюсь еще и синхроимпульсы раздавать, чтобы ни у кого не съехало тактирование (или всех тактировать от одного источника и синхронизировать в начале работы). Проще взять МК с кучей ног и повесить движки на него. Проблема лишь, что аппаратно хрен подключишь энкодеры (думал из шаговиков псевдосервики сделать) - столько таймеров не найдется! Но без обратной связи очень даже можно трех-четырехосевую фиговину реализовать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Оно ж тупо ногами дрыгает

Ну и збс. Работает - не трогай.

чем мощней лазер, тем шустрей его можно двигать

Вибрации начинаются, лол. Я быстрее 20 миллиметров в секунду не разгоняю, иначе после резких поворотов фотоны по инерции не туда летят и дорожки болтаются по пьяной синусоиде. Понятно, что у меня не совсем подходящее оборудование, но этот принцип всегда работает.

синхронизировать оси

Не вижу проблемы. Микроконтроллеры дьявольски быстры, даже если по очереди после прерывания одного таймера уровни выставлять, абсолютно ничего плохого не случится.

без обратной связи

А вот с этим непонятно. Многие драйвера умеют в обратную связь по току и/или ещё по каким-то параметрам, но какие и по каким, я не изучал. Может оказаться, что ты делаешь горшок с ручкой внутри, потому что существующее решение за 200р/ось на порядок лучше всего, что возможно создать «на коленке».

STM32F103

А шо не так? Самый, прости Бже, народный камень из STM'ок.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Как это всё реализовать, самым простым и дешёвым способом?

Без вот этого вот отображения в память, с ним будет сложно и дорого и шина нужна другая.

И ещё вопрос в догонку: если нужно перевести милливольты переменного тока около 1 Гц (механика) в байтик 0…255, то те «аналоговые входы», которые установлены на борту контроллеров, подойдут? Такие низкие частоты там не отсекаются?

Да.

Проблема твоего вопроса в том, что там и советовать нечего, бери и делай.

Единственное, где может быть затык, это в поиске контроллера на 30 аналоговых входов сразу, может придется еще помультиплексировать, поставить пару или еще как-то похитрить. В остальном твоя задача является до неприличия типовой.

t184256 ★★★★★
()
Ответ на: комментарий от Deleted

после резких поворотов дорожки болтаются по пьяной синусоиде

Потому что не настроены характеристики: разгон и торможение. Так работать нельзя.

даже если по очереди после прерывания одного таймера уровни выставлять, абсолютно ничего плохого не случится

МК не настолько быстры, чтобы тупо дрыгать ногами в прерываниях и успевать при этом еще уйму задач выполнять! Иначе придется какой-нибудь 700-мегагерцовый МК брать под задачу, где 8МГц за глаза хватит при правильном подходе. Вообще, идеальный вариант - одним таймером генерить импульсы CLK, а другим снимать данные с энкодера и считать шаги. В этом случае можно не париться особо насчет профилей скорости, а на основе простенького программного ПИД-регулятора управлять положением. Проблема в том, что на каждый мотор понадобится по 2 таймера с внешними ногами (причем, у одного из них должна быть аппаратная возможность подключения энкодера). Для трехосевого станка нужный МК хрен подберешь!

Многие драйвера умеют в обратную связь

Вот, кстати, у меня и появилась уже давно идея на мелких МК сделать тупые драйверы (скажем, на SPI), получающие количество шагов и скорость и выдающие подтверждение окончания движения или ошибку. Но такой подход может угробить правильность траекторий... Другой вариант - получать тупо тики и дрыгать лапкой «ошибка», т.е. на внешний МК отдать лишь обязательства по синхронизации реального положения вала с требуемым. Готовых драйверов ШД с обратной связью по направлению я не встречал. Обычно их и лепят на МК. А готовье обратной связи не имеет, лишь умеют по SPI брать разные параметры и вслепую крутить шаговиком.

за 200р/ось

нет таких драйверов. Всякие drv8825 не имеют вообще никакой обратной связи! Они лишь умеют поддерживать в обмотках заданный ток. Ну так я их все равно и использую - это дешевле, чем вручную генерировать микростеппинг с ШИМом и по обратной петле контролировать ток.

народный камень из STM'ок

Самое дерьмо. Хуже STM32F103 просто нет МК (понятно, если всякие атмеги не брать)! Этот высер ST отдала на растерзание китайцам из-за его говнистости. Именно поэтому на али можно купить их в розницу по цене раз в 5 меньше, чем оптовая цена изготовителя за партии от 5000 штук.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Так работать нельзя

Сто раз так делал (с). Нормально они настроены, просто станок сам по себе раздолбанный. А если ещё сильнее снизить, то будут пересвеченные участки в местах разгона-торможения.

МК не настолько быстры

Именно настолько. Ты же не собираешься v-usb на том же чипе гонять или ещё какую-то околореалтаймовую задачу? Если нет, то «лишние» десять команд в обработчике погоды не сделают. И, слушай, ну что ты к энкодерам прицепился? Все без них работают, на кой чёрт тебе они?

drv8825

Это ж говно. Я скорее про какие-нибудь TB65xx. Хотя я не вникал, есть там обратная связь или где.

Хуже STM32F103 просто нет МК

*принимает позу ожидания интересного рассказа*

Deleted
()
Ответ на: комментарий от Eddy_Em

МК не настолько быстры, чтобы тупо дрыгать ногами в прерываниях и успевать при этом еще уйму задач выполнять!

што? 8-битным МК вполне себе хватает мозгов даже софтовый юсб реализовывать. а дернуть ногой - это какбы 1 такт (ессно, если это не ардуиновские библиотеки, где на 1 ногодрыг пару тысяч тактов уходит)

Именно поэтому на али можно купить их в розницу по цене раз в 5 меньше, чем оптовая цена изготовителя за партии от 5000 штук.

нет, не поэтому. а потому что б/у. как и стм8 с али.

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

1 такт

Ну, так-то ему ещё условия дрыгов прогнать надо. Может, скважность ШИМа подсчитать, я хз, что для управления движком надо.

Deleted
()
Ответ на: комментарий от Bad_ptr

а, да, я чёт затупил. Думал, там все контакты с АЦП.

Deleted
()
Ответ на: комментарий от NiTr0

потому что б/у.

Черта с два!!! Или у тебя есть методика выпайки микросхем, позволяющая сохранить их девственный вид?

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.