Jump to content

demiurg1978

Members
  • Posts

    359
  • Joined

  • Last visited

Информация

  • Город
    Новосибирск

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Новосибирская область
  • Оборудование
    Промышленное оборудование

Recent Profile Visitors

3000 profile views

demiurg1978's Achievements

Enthusiast

Enthusiast (6/14)

  • Dedicated Rare
  • Collaborator
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

47

Reputation

  1. Что то непонятно. Актюатор движется только при нажатии кнопки, или нажали, начал двигаться до концевика, дошел, сменил направление, движется до концевика? Пока как то не выключили систему. Нормально тз дайте.
  2. Интересная тема. Диоды для матричной клавиатуры нужны, если предполагается одновременное нажатие кнопок. Если нет, значит диоды можно убрать. Чтобы не париться с количеством ввода-вывода, можно сделать расширение сдвиговыми регистрами. 74hc165 и 74hc596. Могу подтянуться к теме. По мере возможности. Нужно ТЗ. Расписать все. Входы, выходы. Интерфейс. Программировать предлагаю с применением конечных автоматов. У меня есть макетная плата. Могу отослать для испытаний. На плате 3 входные сдвиговые регистры, 2 выходные. 24 входа, 16 выходов. Порт для матричной клавиатуры, порт для дисплея. Можно применить для семисегментных индикаторов. 6 напаянных кнопок. Ионистор, для сохранения данных при пропадании напряжения. Модуль часов реального времени. Думаю, такая плата будет полезной для макетирования и создания конечной схемы. Платы остались от серии блоков управления термоформовочных станков.
  3. Ваша задача решается с помощью конечных автоматов. При этом и обработчик кнопки конечный автомат и обработчик меню. Двойное нажатие (неважно сколько нажатий) решается легко. Есть короткое нажатие, есть удержание кнопки. Время удержания можно выставить любое. Есть даже такое: держим три секунды, это первый уровень меню. Держим ещё три секунды, это второй уровень меню. По двойному нажатию. Пусть мы определили, что есть короткое нажатие, то есть. Нажали, событие нажатие. Ессно после подавления дребезга. Отпустили кнопку, событие отжатия, также, после подавление дребезга. Пусть нам нужно двойное нажатие. После отжатия кнопки установка программного таймера. Скажем на 250 мс. Нажали еще раз, опять установка таймера. Время вышло, мы видим, что нажато 2 раза и нет длительного нажатия. Вот тебе и двойное нажатие. Вопрос. Где мы будем за этим следить. В модуле обработки кнопки или в модуле обработки меню. По идее, модуль обработки кнопки должен выдавать события нажатия кнопки, отпускания, удержание и автоповтор. А двойные нажатия и так далее, уже там где надо.
  4. Вот хорошие термоконтроллеры. Поддержка разных типов термодатчиков. Приличный функционал. Я уже сотни таких термоконтроллеров поставил своим клиентам, на различное оборудование. Жалоб нет. Небольшой совет. Ставить промежуточное реле. Эти термоконтроллеры малоремонтопригодны.
  5. С числами проще работать в шестнадцатеричном коде. Преобразование нужно делать только при выводе на дисплей. Действия с числами зависят от интерфейса. То, как вы работаете с числами и как вы их выводите. Поразрядное, более ресурсоемкое. В своих проектах я использую в параметрах шестнадцатеричные числа. И для вывода, редактирования приходится использовать двойное преобразование. В десятеричное, для вывода на дисплей, и обратно в шестнадцатеричные, чтобы в этом виде и сохранять в параметрах устройства. Поразрядное редактирование мне пришлось делать 1 раз, когда это было жесткое требование. Лично я старался работать напрямую с шестнадцатеричными числами. Преобразование делалось только для вывода на дисплей. Мой пример, как это было сделано у меня. Может и не так оптимизированно, но тогда я решил так. void change_recipe_parameters (void) { u16 a = 0; switch (cnt_blink_char) { case 1: change_num_recipe (); break; case 2: change_num_component (); break; case 3: if (++tmp_num_str_buf [6] > 0x39) // Тысячи. tmp_num_str_buf [6] = 0x30; a = weight_to_int (); if (a > 5000) { tmp_num_str_buf [6] = 0x30; a = weight_to_int (); } info_parameters. tmp_components [info_parameters. tmp_num_component] = a; break; case 4: if (++tmp_num_str_buf [7] > 0x39) // Сотни. tmp_num_str_buf [7] = 0x30; a = weight_to_int (); if (a > 5000) { tmp_num_str_buf [7] = 0x30; a = weight_to_int (); } info_parameters. tmp_components [info_parameters. tmp_num_component] = a; break; case 5: if (++tmp_num_str_buf [8] > 0x39) // Десятки. tmp_num_str_buf [8] = 0x30; a = weight_to_int (); if (a > 5000) { tmp_num_str_buf [8] = 0x30; a = weight_to_int (); } info_parameters. tmp_components [info_parameters. tmp_num_component] = a; break; case 6: if (++tmp_num_str_buf [9] > 0x39) // Единицы. tmp_num_str_buf [9] = 0x30; a = weight_to_int (); if (a > 5000) { tmp_num_str_buf [9] = 0x30; a = weight_to_int (); } info_parameters. tmp_components [info_parameters. tmp_num_component] = a; break; } rerun_blink_noblank_char (); rst_out_mode_work (); } В том проекте у меня было так: ХХ ХХХХ где первый х - это номер рецепта, второй х это номер компонента, и последние четыре икса это значение веса от 0 до 9999. Вывод я делал сразу в ASCII кодах, поэтому несколько заморочно. Также в том проекте было только кольцевое приращение числа. И если 9, то сброс в 0. В вашем случае еще придется проверять, в какую сторону идет редактирование. Инкремент или декремент. После каждой операции сразу идет преобразование числа в шестнадцатеричное. Комментарии какие есть, я сейчас занят. Небольшое пояснение могу показать только на видео. Если найду.
  6. ТипаТроник. Так ваша конечная цель? Что вы хотите?
  7. Оппа. Признаю. Схему бегло глянул и на этом успокоился. В схеме ещё нет сброса счётчиков при подаче питания.
  8. Смотрите внимательно графики. Паузы не будет. Счётчики переключатся почти синхронно плюс задержка (смотрим даташит, сколько это) на первом счётчике. Светодиоды будут светиться, ессно, жручие не стоит ставить. Если яркости не хватит, тогда ставьте повторители уровней с повышенным выходным током.
  9. График работы К561ИЕ8 Ну вы и сами могли набрать в поисковике "К561ИЕ8". Не так ли?
  10. Берете справочник по цифровым микросхемам и смотрите таблицу истинности. На каждую микросхему есть графики работы и таблицы истинности. Берете и курите. И поверьте, вы сэкономите время нам и себе. Тем, что научитесь САМИ изучению этих микросхем. Что за мода, кидаться на форумы за вопросами, ответы на которые вы самостоятельно найдёте в книжках? Лень? Ну да, мозг ленивая скатына. Это не эмоции. Не лично. Вы не первый и не последний. Когда нибудь сами спасибо скажете за мой ответ.... Схемы либо умеете читать, либо нет. Тогда это не ваша тема. Смириться и двигаться по тому направлению, которое вам доступно.
  11. Конечные автоматы. Состояния: KBD_INIT. Инициализация. KBD_WAIT_DOWN. Следим за нажатием. Если не нажато, выход. Если нажато, установка программного таймера на 20-40 мс, выход. Установка состояния KBD_DOWN. KBD_DOWN. Если время не вышло, выход. Если вышло, проверка нажатия. Если не нажато, то помеха, установка состояния KBD_WAIT_DOWN. Если нажато, установка флага, события, что короткое нажатие. Установка таймера длительного нажатия и состояния KBD_HOLD_REPEAT. Ну и так далее, смысл понятен.
  12. Народ. Не пси*****те. А подумайте. Я вас поматерю. Вот вы мыслите хер пойми с какой позиции. Текущая позиция автоматика. А вы лезете в какое то непонятное усложнение. Всё можно сделать на логике. Достаточно прочитать книги Шило. К примеру. И все будет тупо и просто. МК. Да, я решу большинство ваших задач на мк. Но! Также я решал бы тупо и просто. Просто ваше мышление завело вас куда то непонятно куда. И кажется я понял проблему. Аналоговая техника. Цифровая техника. Это две большие разницы. Алгоритмы. Это цифровая техника. И не вздумайте вешать алгоритмы аналоговой техники на цифровую. Есть алгоритм, - ы, начинайте изучать цифровую технику. Логику. Поверьте, где начинаются алгоритмы, аналоговая электроника отдыхает. Именно в этом ваша ошибка. И это не ваша вина. Это нужно понять и осознать. Автоматика, значит меняйте мышление. Тупо и просто.
  13. F_CPU - тактовая частота микроконтроллерах, который будет работать в железе. Эта константа нужна для корректного задания временных интервалов и констант. К примеру в функциях delay. В формуле расчёта значения для UART и так далее. UL - unsigned long. Это нужно для того, чтобы компилятор не оптимизировал константу по своему хотению и разумению. Грубо, примерно, как-то так...
  14. А вы замеры делали на отсоединенных датчиках, или подключённых к плате? Возможно вы впопыхах воткнули разъём наеборот. Могли ткнуть во включенную плату, понять что перепутали, выткнуть и обратно нормально воткнуть. Выше уже написали. Возможно в плате проблема. Варианты возможны.
  15. Дарю схему. Примечания по схеме: для подбора требуемой частоты подбираете конденсатор. Точка A подсоединяется к точкам A1 или A2, в зависимости от типа датчика скорости, от какого напряжения он запитывается. От 5 вольт (точка A1) или от 12 (точка A2). Предполагается, что у установщика моталки руки растут откуда нужно. И в плане спаять эту схему и в плане установки моталки на автомобиль. Автор не несет никакой ответственности за любой возможный ущерб. Все на вашей совести. Соблюдайте правила электромонтажных работ. Сечение проводов не менее 0,35 мм2. Лучше всего использовать провод с двойной изоляцией (к примеру, МГШВ). Наружняя изоляция пластик, внутренняя шёлк, тряпичная. Плавкий предохранитель ОБЯЗАТЕЛЕН и устанавливается как можно ближе к подключаемой цепи.
×
×
  • Create New...