Jump to content
Chips

Выбор контролера для проекта

Recommended Posts

17 часов назад, Chips сказал:

Алгоритм работы следующий

Я когда статью

http://cxem.net/mc/mc446.php

начинал писать, до конца не осознал что основной темой этих статей будет проблема выяснения и описания алгоритма (со всеми пояснениями) работы устройства, даже в случае такого примитивного устройства, как там описано!


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites

ruhi Это должно быть системой управления некой подвижной платформой которая должна доставить некий груз в определённую позицию по X и Y после чего выполнить действия погрузки/выгрузки

Да схема не полная и usard на ней не отображён. counter 1 +, counter 1 - и counter 2 + counter 2 - это четыре входа для счёта двух переменных X и Y на увеличение(counter 1 +, counter 2 +) и уменьшения (counter 1 -, counter 2 -) Counter 1 записывает своё значение в переменную X, а counter 2 в переменную Y которые сравниваются с полученными по usard inputX и inputY. 

Вот зачаток функция в которой будет управлять передвижением 

void move_XY(unsigned char X, unsigned char Y unsigned char input_X unsigned char input_Y)
{
	if (input_X == X)
	{
		MoveXForward_off;	// выключить вперёд
		MoveXBackward_off;	// выключить назад
	}
	if (input_X > X)
	{
		MoveXBackward_off;	// выключить назад
		MoveXForward_on;	// включить вперёд
	}
	if (input_X < X)
	{
		MoveXForward_off;	// выключить вперёд
		MoveXBackward_on;	// включить назад
	}

	if (input_Y == Y)
	{
		MoveUp_off;			// остановить вверх
		MoveDown_off;		// остановить вниз
	}
	if (input_Y > Y)
	{
		MoveDown_off;		// остановить вниз
		MoveUp_on;			// движение вверх
	}	
	if (input_Y < Y)
	{
		MoveUp_off;			// остановить вверх
		MoveDown_on;		// движение вниз
	}
}

Касательно кнопок сейчас не могу точно сказать что будет стоять тактовые кнопки, концевые выключатели или какие то бесконтактные датчики.

Касательно моей упёртости  во внешние прерывания я считал что нужно с высокой точностью выдерживать позицию. Но после более углублённого расспроса механиков оказалось +-10 - 20 мм да ещё и свободный люфт редукторов привода делает это бессмысленной затеей. 

Share this post


Link to post
Share on other sites

периодический опрос кнопок занимает очень мало процессорного времени.

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


Мудрость приходит вместе с импотенцией...

Share this post


Link to post
Share on other sites

Металл-композит как альтернатива ферриту: дроссели Panasonic семейства ETQP

Современные электронные устройства требуют все более компактных и эффективных компонентов. Новые металл-композитные дроссели обладают рядом преимуществ перед дросселями с ферритовым сердечником. Они не имеют ярко выраженного насыщения, обладают отличными частотными свойствами и способны работать при температурах до 150°C и выше. Все это делает их альтернативой стандартным дросселям с ферритовым сердечником в широком спектре автомобильных и промышленных приложений.

Подробнее

15 часов назад, Chips сказал:

counter 1 +, counter 1 - и counter 2 + counter 2 - это четыре входа для счёта двух переменных X и Y на увеличение(counter 1 +, counter 2 +) и уменьшения (counter 1 -, counter 2 -) Counter 1 записывает своё значение в переменную X, а counter 2 в переменную Y которые сравниваются с полученными по usard inputX и inputY.

А как это вы собираетесь измерять X и Y?? Платформа что в магнитном поле висит или на колесах ездит например?? Тут надо разбираться с вашей системой позиционирования, за счет чего тележка перемещается? и как измеряется пройденное расстояние и направление или текущие координаты! Откуда берутся Х, Y, counter 1 + и т д , надо физику понимать!!!

И успокойте всех уже что ли, это не кнопки у вас будут, а выходы с датчиков позиционирования или измерения пути по двум координатам, и ни какого дребезга на них, соответственно быть не должно, правильно???

А то задача опроса кнопок прямо таки завораживает знатоков :), при ее наличии не о чем другом мы думать не в состоянии :)!

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


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites

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

b5a25c1d9f88690803b05d72884f0668.jpg

Я уже осознал свои косяки и насколько глупо был поставлен вопрос и что восьмой атмеги мне хватит за глаза.

Share this post


Link to post
Share on other sites
                     

Новые литиевые ХИТы Fanso работают даже при +150ºС!

Когда приходится учитывать работу в экстремальных условиях, к выбору электронных компонентов подходишь с особой тщательностью. Высокие температуры, большие перепады давления, труднодоступность – все это требует специальной продукции. Склад КОМПЭЛ пополнился новыми литиевыми ХИТами Fanso, стабильно работающими даже при температуре до 150 ºС. Батарейки имеют номинальное напряжение 3,6 В, обладают ёмкостью от 700 до 14000 мАч, работоспособны в широком температурном диапазоне -20…150ºС и имеют низкий саморазряд (не более 3% в год в нормальных условиях хранения).

Подробнее о высокотемпературной линейке

12 минуты назад, Chips сказал:

либо будут стоять бесконтактные датчики это ещё не решено

механические менее надежные по определению - нажатие это удар! Значит Y это высота - интересно :) !

Обычно, Пока не попробуешь, все равно, не поймешь!

16 минут назад, Chips сказал:

что восьмой атмеги мне хватит за глаза

и я бы посоветовал вам не экономить (чего бы не было 200 руб, место на плате, ...), поставьте хотя бы 128-ю атмегу.


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites
13 минуты назад, ruhi сказал:

поставьте хотя бы 128-ю атмегу

А он под нее плату сделает? Камень распаяет? DIP-корпус в этом плане попроще, да и зачем в такой задаче аж 128-я мега?


Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Share this post


Link to post
Share on other sites

COKPOWEHEU есть возможность изготовить несколько опытных плат правда без маски и шелкографии, а распаять микросхему в корпусе TQFP-64 задаче трудная но реализуемая

Share this post


Link to post
Share on other sites

мега 128 тут ни в какие ворота, пушкой по воробьям. Максимум что имеет смысл - ардуиновскую мегу328.


Учение - изучение правил. Опыт - изучение исключений.

Share this post


Link to post
Share on other sites
14 часа назад, Chips сказал:

распаять микросхему в корпусе TQFP-64 задаче трудная но реализуемая

Я, да, особо не разбираюсь в корпусах, типах. У меня всегда было кому об этом думать. Главное здесь не делайте в-упор!

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

В общем "запас карман не тянет".


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites
В 17.01.2018 в 17:48, Chips сказал:

...что восьмой атмеги мне хватит за глаза.

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

Share this post


Link to post
Share on other sites
В 18.01.2018 в 08:57, ruhi сказал:

В общем "запас карман не тянет".

Применительно к контроллерам он таки тянет карман. Верней, кошелёк.


Учение - изучение правил. Опыт - изучение исключений.

Share this post


Link to post
Share on other sites

Это только если нажимать кнопки исключительно по одной. Двойные нажатия будут приводить к фантомам.

 


Учение - изучение правил. Опыт - изучение исключений.

Share this post


Link to post
Share on other sites

Господа, при всем уважении, на дворе 2018 год, какие атмеги ? Поставьте бы STM32 скажем серии f1 или f2. И скорость выше в разы (раз уж идет гонка за производительность), и прерываний внешних хоть на все  GPIO вешайте (почти на все).

И использование внешних прерываний для кнопок не особо и плохая идея, если к примеру таймеров не много и все они заняты. Не в майне же их опрашивать :blink:

Share this post


Link to post
Share on other sites
On 1/16/2018 at 6:11 PM, Chips said:

ruhi Это должно быть системой управления некой подвижной платформой которая должна доставить некий груз в определённую позицию по X и Y после чего выполнить действия погрузки/выгрузки

Да схема не полная и usard на ней не отображён. counter 1 +, counter 1 - и counter 2 + counter 2 - это четыре входа для счёта двух переменных X и Y на увеличение(counter 1 +, counter 2 +) и уменьшения (counter 1 -, counter 2 -) Counter 1 записывает своё значение в переменную X, а counter 2 в переменную Y которые сравниваются с полученными по usard inputX и inputY. 

Вот зачаток функция в которой будет управлять передвижением 


void move_XY(unsigned char X, unsigned char Y unsigned char input_X unsigned char input_Y)
{
	if (input_X == X)
	{
		MoveXForward_off;	// выключить вперёд
		MoveXBackward_off;	// выключить назад
	}
	if (input_X > X)
	{
		MoveXBackward_off;	// выключить назад
		MoveXForward_on;	// включить вперёд
	}
	if (input_X < X)
	{
		MoveXForward_off;	// выключить вперёд
		MoveXBackward_on;	// включить назад
	}

	if (input_Y == Y)
	{
		MoveUp_off;			// остановить вверх
		MoveDown_off;		// остановить вниз
	}
	if (input_Y > Y)
	{
		MoveDown_off;		// остановить вниз
		MoveUp_on;			// движение вверх
	}	
	if (input_Y < Y)
	{
		MoveUp_off;			// остановить вверх
		MoveDown_on;		// движение вниз
	}
}

Касательно кнопок сейчас не могу точно сказать что будет стоять тактовые кнопки, концевые выключатели или какие то бесконтактные датчики.

Касательно моей упёртости  во внешние прерывания я считал что нужно с высокой точностью выдерживать позицию. Но после более углублённого расспроса механиков оказалось +-10 - 20 мм да ещё и свободный люфт редукторов привода делает это бессмысленной затеей. 

Более корректный код:

void move_XY(unsigned char X, unsigned char Y unsigned char input_X unsigned char input_Y)
{
	if (input_X == X)
	{
		MoveXForward_off();	// выключить вперёд
		MoveXBackward_off();	// выключить назад
	}
	else if (input_X > X)
	{
		MoveXBackward_off();	// выключить назад
		MoveXForward_on();	// включить вперёд
	}
	else
	{
		MoveXForward_off();	// выключить вперёд
		MoveXBackward_on();	// включить назад
	}

	if (input_Y == Y)
	{
		MoveUp_off();			// остановить вверх
		MoveDown_off();		// остановить вниз
	}
	else if (input_Y > Y)
	{
		MoveDown_off();		// остановить вниз
		MoveUp_on();			// движение вверх
	}	
	else
	{
		MoveUp_off();			// остановить вверх
		MoveDown_on();		// движение вниз
	}
}

 

Share this post


Link to post
Share on other sites
16 часов назад, Alexandr AxenDvlpmntTeam сказал:

Вот зачаток функция в которой будет управлять передвижением 

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

В вашем случае в качестве такой предварительной работы должно быть:

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

датчиков - измерения времени (задержек) срабатывания, точность-дискретность, пороги срабатывания...

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


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites

А почему меня цитируете ? Я лишь исправил управляющие структуры в коде, т.е.  сменил if-if-if на if-elseif-else, не более. Очень сомневаюсь, что для этого нужны были результаты исследований. Думаю вы хотели адресовать ваш пост автору этого псевдо-кода. Это не я)

Share this post


Link to post
Share on other sites
2 часа назад, Alexandr AxenDvlpmntTeam сказал:

т.е.  сменил if-if-if на if-elseif-else, не более. Очень сомневаюсь, что для этого нужны были результаты исследований.

Так и исправлять смысла нет, вы так поддерживаете чье то увлечение астрологией! Но у меня тоже первым позывом было else добавить :) (месяц назад?)!

Edited by ruhi
дополнение

Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites
В 11.03.2018 в 16:36, Alexandr AxenDvlpmntTeam сказал:

и прерываний внешних хоть на все  GPIO вешайте (почти на все).

ну внешних то 15, при этом только строго на один номер пина, а порт можно выбрать.

Share this post


Link to post
Share on other sites
В 11.03.2018 в 16:36, Alexandr AxenDvlpmntTeam сказал:

Поставьте бы STM32 скажем серии f1 или f2. И скорость выше в разы (раз уж идет гонка за производительность), и прерываний внешних хоть на все  GPIO вешайте (почти на все).

Фанатизм до добра не доводит. Какой нафиг STM32 когда меги хватает? Вы туда ещё андроид на ARM v11 4-х ядерном поставьте, там же можно замечательно на джаве писать, скорости-то хватает!

Никогда не надо начинать с железа. Сначала задача, затем физика а потом уже железо. И STM32 нужно будет выбирать только когда простая мега не пойдёт по скорости.


Учение - изучение правил. Опыт - изучение исключений.

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Он и не должен сильно меняться.  Есть два пути развития квода: интенсивный и экстенсивный. Интенсивный- пересчет режимов, расширение полосы, снижение искажений схемотехнически. Экстенсивный- замена компонентов на более качественные, аудиофилские, дорогие. Второй работает чисто на самовнушении, за исключением резисторов ОООС транзисторной части: они дб максимально качественными. В принципе, искажения будут определяться транзисторной частью, т.к. если применить хороший ОУ в предкаскаде, то можно легко получить три ноля на базе первого транзистора.
    • По факту с заменой резисторов ...какой ток получился 2SA1837 ?
    • автоматика работает - за счет того что увеличил емкость С14 схватывает сразу , нет регулировки тока - чтот упустил (( VID_20200227_104234.mp4
    • Это, если не ошибаюсь, экспортное название 6п14п. Попробуйте заменить на аналог. Для проверки.
    • Припой в наличии. Минимальный заказ - 1 катушка. Цена - 520грн. Цена от 2х катушек - 500грн/катушка. Возможна отмотка от 100гр, цена - 130грн.
    • Конечно прикинул, и выше я писал. Откуда там 100мА, реле удерживается спокойно 15мА. На открытие надо около 50мА по моим замерам. Оно работает и с 0.47 если дать хотя бы пару мс заряда конденсатора, но так как я не придумал как сделать нормальную задержку ( и развести ее на платке удобно ) при включении в сеть на эти пару мс, мне пришлось поставить просто конденсатор на 1мкФ чтобы повысить ток до нужных мА. Схема вчера весь день прекрасно работала, резистор чуть теплый на 5Вт 100мА. Стабилитрон прозвонил, звониться мультиметром в одну сторону, не проверял в холостую какое на нем напряжение правда. Конденсатор не проверял. Проверил еще раз напряжение, когда реле сомкнуто, 5.2, когда в холостую 6.4 показывает. Есть ли смысл повышать емкость конденсатора, если даже на включение реле тока хватает? Опять же, как это ведет к тому что сгорают 1206 и 1210 резисторы? Допустим я увеличу емкость, это же уменьшит сопротивление, а значит резистор еще сильней начнет страдать во время работы, и в момент включения еще дольше конденсатор будет заряжаться не 10нс допустим а 15. Тогда нагрузка в пик включения еще больше станет, как это защитит конденсатор?) С 0.47uF резисторы дольше живут, а с 1 мкф сразу взрываются, думаю с 1.5 лучше не станет   Я калькуляторы эти видел, и знаю что это 3кОм, еще раз повторю, как это ведет к доказательству что смд резистор 0.5Вт должен не сгореть?)
    • Достаточно помнить, что 1 мкф при 50 Гц это 3 кОм (3.2 если.точнее)
×
×
  • Create New...