Перейти к содержанию

demiurg1978

Members
  • Постов

    361
  • Зарегистрирован

  • Посещение

Весь контент demiurg1978

  1. Делал как то автоматику на КМОП серии. Столкнулся с тем, что при включении питания триггеры могут включиться в любое состояние. Все неиспользуемые выводы у меня были зашунтированы либо резисторами 10 кОм либо намертво к соответствующей полярности. У всех ключевых триггеров на входах Reset поставил RC цепочки. У вас я вижу у второго триггера есть на входе Reset RC цепочка. А у первого триггера нет сброса при включении питания. Да, у вас интересно сделан самосброс RS-триггера. Есть ложные срабатывания при подаче питания? Как бы понятно, стоит конденсатор, и вход зашунтирован низким уровнем. Но?
  2. Что-то как-то сложновато. А можно спросить. Какое ТЗ к девайсу?
  3. Что то непонятно. Актюатор движется только при нажатии кнопки, или нажали, начал двигаться до концевика, дошел, сменил направление, движется до концевика? Пока как то не выключили систему. Нормально тз дайте.
  4. Интересная тема. Диоды для матричной клавиатуры нужны, если предполагается одновременное нажатие кнопок. Если нет, значит диоды можно убрать. Чтобы не париться с количеством ввода-вывода, можно сделать расширение сдвиговыми регистрами. 74hc165 и 74hc596. Могу подтянуться к теме. По мере возможности. Нужно ТЗ. Расписать все. Входы, выходы. Интерфейс. Программировать предлагаю с применением конечных автоматов. У меня есть макетная плата. Могу отослать для испытаний. На плате 3 входные сдвиговые регистры, 2 выходные. 24 входа, 16 выходов. Порт для матричной клавиатуры, порт для дисплея. Можно применить для семисегментных индикаторов. 6 напаянных кнопок. Ионистор, для сохранения данных при пропадании напряжения. Модуль часов реального времени. Думаю, такая плата будет полезной для макетирования и создания конечной схемы. Платы остались от серии блоков управления термоформовочных станков.
  5. Ваша задача решается с помощью конечных автоматов. При этом и обработчик кнопки конечный автомат и обработчик меню. Двойное нажатие (неважно сколько нажатий) решается легко. Есть короткое нажатие, есть удержание кнопки. Время удержания можно выставить любое. Есть даже такое: держим три секунды, это первый уровень меню. Держим ещё три секунды, это второй уровень меню. По двойному нажатию. Пусть мы определили, что есть короткое нажатие, то есть. Нажали, событие нажатие. Ессно после подавления дребезга. Отпустили кнопку, событие отжатия, также, после подавление дребезга. Пусть нам нужно двойное нажатие. После отжатия кнопки установка программного таймера. Скажем на 250 мс. Нажали еще раз, опять установка таймера. Время вышло, мы видим, что нажато 2 раза и нет длительного нажатия. Вот тебе и двойное нажатие. Вопрос. Где мы будем за этим следить. В модуле обработки кнопки или в модуле обработки меню. По идее, модуль обработки кнопки должен выдавать события нажатия кнопки, отпускания, удержание и автоповтор. А двойные нажатия и так далее, уже там где надо.
  6. Вот хорошие термоконтроллеры. Поддержка разных типов термодатчиков. Приличный функционал. Я уже сотни таких термоконтроллеров поставил своим клиентам, на различное оборудование. Жалоб нет. Небольшой совет. Ставить промежуточное реле. Эти термоконтроллеры малоремонтопригодны.
  7. С числами проще работать в шестнадцатеричном коде. Преобразование нужно делать только при выводе на дисплей. Действия с числами зависят от интерфейса. То, как вы работаете с числами и как вы их выводите. Поразрядное, более ресурсоемкое. В своих проектах я использую в параметрах шестнадцатеричные числа. И для вывода, редактирования приходится использовать двойное преобразование. В десятеричное, для вывода на дисплей, и обратно в шестнадцатеричные, чтобы в этом виде и сохранять в параметрах устройства. Поразрядное редактирование мне пришлось делать 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. В вашем случае еще придется проверять, в какую сторону идет редактирование. Инкремент или декремент. После каждой операции сразу идет преобразование числа в шестнадцатеричное. Комментарии какие есть, я сейчас занят. Небольшое пояснение могу показать только на видео. Если найду.
  8. ТипаТроник. Так ваша конечная цель? Что вы хотите?
  9. Оппа. Признаю. Схему бегло глянул и на этом успокоился. В схеме ещё нет сброса счётчиков при подаче питания.
  10. Смотрите внимательно графики. Паузы не будет. Счётчики переключатся почти синхронно плюс задержка (смотрим даташит, сколько это) на первом счётчике. Светодиоды будут светиться, ессно, жручие не стоит ставить. Если яркости не хватит, тогда ставьте повторители уровней с повышенным выходным током.
  11. График работы К561ИЕ8 Ну вы и сами могли набрать в поисковике "К561ИЕ8". Не так ли?
  12. Берете справочник по цифровым микросхемам и смотрите таблицу истинности. На каждую микросхему есть графики работы и таблицы истинности. Берете и курите. И поверьте, вы сэкономите время нам и себе. Тем, что научитесь САМИ изучению этих микросхем. Что за мода, кидаться на форумы за вопросами, ответы на которые вы самостоятельно найдёте в книжках? Лень? Ну да, мозг ленивая скатына. Это не эмоции. Не лично. Вы не первый и не последний. Когда нибудь сами спасибо скажете за мой ответ.... Схемы либо умеете читать, либо нет. Тогда это не ваша тема. Смириться и двигаться по тому направлению, которое вам доступно.
  13. Конечные автоматы. Состояния: KBD_INIT. Инициализация. KBD_WAIT_DOWN. Следим за нажатием. Если не нажато, выход. Если нажато, установка программного таймера на 20-40 мс, выход. Установка состояния KBD_DOWN. KBD_DOWN. Если время не вышло, выход. Если вышло, проверка нажатия. Если не нажато, то помеха, установка состояния KBD_WAIT_DOWN. Если нажато, установка флага, события, что короткое нажатие. Установка таймера длительного нажатия и состояния KBD_HOLD_REPEAT. Ну и так далее, смысл понятен.
  14. Народ. Не пси*****те. А подумайте. Я вас поматерю. Вот вы мыслите хер пойми с какой позиции. Текущая позиция автоматика. А вы лезете в какое то непонятное усложнение. Всё можно сделать на логике. Достаточно прочитать книги Шило. К примеру. И все будет тупо и просто. МК. Да, я решу большинство ваших задач на мк. Но! Также я решал бы тупо и просто. Просто ваше мышление завело вас куда то непонятно куда. И кажется я понял проблему. Аналоговая техника. Цифровая техника. Это две большие разницы. Алгоритмы. Это цифровая техника. И не вздумайте вешать алгоритмы аналоговой техники на цифровую. Есть алгоритм, - ы, начинайте изучать цифровую технику. Логику. Поверьте, где начинаются алгоритмы, аналоговая электроника отдыхает. Именно в этом ваша ошибка. И это не ваша вина. Это нужно понять и осознать. Автоматика, значит меняйте мышление. Тупо и просто.
  15. F_CPU - тактовая частота микроконтроллерах, который будет работать в железе. Эта константа нужна для корректного задания временных интервалов и констант. К примеру в функциях delay. В формуле расчёта значения для UART и так далее. UL - unsigned long. Это нужно для того, чтобы компилятор не оптимизировал константу по своему хотению и разумению. Грубо, примерно, как-то так...
  16. А вы замеры делали на отсоединенных датчиках, или подключённых к плате? Возможно вы впопыхах воткнули разъём наеборот. Могли ткнуть во включенную плату, понять что перепутали, выткнуть и обратно нормально воткнуть. Выше уже написали. Возможно в плате проблема. Варианты возможны.
  17. Дарю схему. Примечания по схеме: для подбора требуемой частоты подбираете конденсатор. Точка A подсоединяется к точкам A1 или A2, в зависимости от типа датчика скорости, от какого напряжения он запитывается. От 5 вольт (точка A1) или от 12 (точка A2). Предполагается, что у установщика моталки руки растут откуда нужно. И в плане спаять эту схему и в плане установки моталки на автомобиль. Автор не несет никакой ответственности за любой возможный ущерб. Все на вашей совести. Соблюдайте правила электромонтажных работ. Сечение проводов не менее 0,35 мм2. Лучше всего использовать провод с двойной изоляцией (к примеру, МГШВ). Наружняя изоляция пластик, внутренняя шёлк, тряпичная. Плавкий предохранитель ОБЯЗАТЕЛЕН и устанавливается как можно ближе к подключаемой цепи.
  18. 1 - А что было под руками. 2 - Отработка технологии. Идеи. Универсального генератора импульсов. 3 - Отработка схемотехнического решения. Питание МК от автобильной бортовой сети. 4 - Ну и параллельно подработать, раз такая оказия случилась с подмоткой. Когда клиент позвонил, эта коробочка была уже собрана. Под другие задачи.
  19. Нужную частоту на конкретный автомобиль задал один раз и заклеил отверстия под кнопки скотчем или изолентой...
  20. Смотрю, сообщение относительно свежее. Как вы все любите как бы простые схемы. Да ещё на 555 таймер, с лишним обвесом. А без соответствующих цепей ещё и летят. Потому что напрямую подключаются к бортовой сети. Я раньше работал автоэлектриком. И ещё в 90-х у меня был случай. Попросили посмотреть подмотку спидометра. Выяснилось, что сгорел 555 таймер. Точнее ви1006. Не суть. 555 тоже были пациентами. В итоге я стал использовать следующую схему. Параметрический стабилизатор, задающий генератор на к561тл1. На этой микросхеме делается самый простейший мультивбратор в мире. Резистор и конденсатор. Все. С выхода задающего генератора на транзисторый каскад по схеме открытый коллектор. Все. Схема работоспособная, работает пожизненно. Можно применить и зарубежный аналог к561тл1, но следует учитывать что параметры зарубежных аналогов хуже. Наша, советская, работает в широком диапазоне питающего напряжения. До 15 вольт, но, лучше ограничиваться 12 вольтами. И частотозадающий резистор можно применять в большом диапазоне. До мегаомов. 4,7 МОм переменный резистор работает на ура. Аналоги в этом плане хуже. Позже я стал делать моталки на мк AVR. Буквально на днях мне звонят, просят сделать очередную моталку. Именно этот клиент обращается ко мне периодически, более 10 лет, как бы даже не 15 лет. Просит сделать очередную моталку Все мои моталки работают до сих пор. По его словам, мой знак качества стоит. Я сейчас как раз занимаюсь изготовлением моталки. МК AVR. Частота задаётся кнопками. И результат изменения частоты сохраняется в EEPROM. Такое решение вызвано тем, что переменные резисторы с годами дохнут. Окисляется резистивный слой. Также Окисляются, ржавеют металлические детали.
  21. Значит у вас своя ниша. И это нисколько не значит, что у авр нет ниши. Вот про квалификацию не надо говорить. В свое время отладчик стоил недёшево. И по хорошему, он нужен. И в то же время наличие отладчика может расслабить. И я зашёл с другой стороны. Изначально тщательно продумывать проекты, программы. Писать программы так, чтобы значально исключить ошибки. Ошибки все таки случаются. Поэтому нужно учиться методике поиска ошибок. Итог, отладчик за все эти годы мне так и не понадобился. Всё программы отлаживаю в симуляторе студии. А программы порой непростые. С развитыми меню, большим количеством ввода-вывода. Было несколько случаев, когда отладчик не помешал бы. Выкрутился очень просто. К примеру, мне нужно было разобраться с АЦП выводил значения регистров на символьный дисплей. Обратите внимание, я не говорю, что отладчик не нужен. А научитесь методике поиска ошибок. Ещё лучше приучите себя изначально исключать ошибки. Вот к чему я написал про мозг ленивая скотинка. Расшевелите свои извилины. Написано не адресно, а в общем. Так что не стоит тут писать о низкой квалификации, если кто-то не пользуется отладчиком. Это спорное утверждение.
  22. У авр есть своя ниша. У стм тоже. На том и стоим. А отладчик у нас в голове. Я работаю с авр с 2007 года. Не пользуюсь ни отладчиками ни протеусом. Лень матушка. Мозг такая ммм ленивая скатинка. Научитесь искать причины. Причин две. Ошибка в программе. Настройки компиляторов Яву. Аппаратная. Когда вы это поймёте, вы всегда найдёте проблему. Я это говорю из своего опыта. Учитесь искать косяки. Делайте программные отладочные куски кода. Все тупо и просто. Искусство войны. Если нет возможности победить имеющимися средствами, создай ситуацию, которая приведёт тебя к победе. Этот принцип работает на все 100. Зри в корень.
  23. ТС, стукни мне в личку. Попробуем разобраться. А то понабежали тут, авр кака, выброси, бери стм...
  24. Писал со смарфона в дороге на работу. Два момента. Ну да. 1. Невнимательность. 2. Ну и пусть бы ТС увидел ошибку. ))
×
×
  • Создать...