Ну дык интересно ж покопаться для проверок возможностей. (В отличии от многостраничного флуда "ни о чем" в указанных темах, сподвигших на сей садомазохизьм.) Понятно, что можно и проще и на других микрушках с более удачными потрохами. Однако без пробы и результата не видать. Я б на АТ89С2051 с учетом возможностей тамошних таймеров соорудил... Только кто ж их (АТ89С2051) сегодня то отыщет? Разве что STC - но с теми также не все так просто, как с возней с адуринками... Да и прошивку сделать у атмелевских mcs51 - программатор надобен (ессно не мне ). Вполне возможно и с адуринкой, ежли выйти "за рамки" штатного минимума, много удачнее сделать можно. Но то ж уже "за рамками" (не для простосмертных). Весь смысл возни был в том, чтоб именно "в рамки" вписаться да еще и с вполне работоспособным для заявленной задачи результатом.
Немножко дополнительного садомазохизма в попытке поднять максимальное быстродействие (количество считанных импульсов) для пародии на частотомер в рамках ардуиньего референса (а заодно и симулятор погонять)... Условие - не использовать ничего за рамками "стандарно - адуринко" - ни таймеры в режиме счета, ни дополнительные фокусы с дополнительным генератором 1mS на Т0, ни отказа от LOOP()... Захват входного сигнала проводится обычным чтением лапок, а вот формирование измерительного окна чуток с извратом - использована генерация tone c последующей обработкой счетчика в прерывании от INT0. Ну и компаратор по количеству входных импульсов - поставлено 33 - если меньше выход D8 = 1, ежли больше D8 = 0. При такой схемке максимум корректно считанных импульсов возможен для условия длительность активной части импульса (0) = 1100 микросекунд, длительность пассивной части импульса (1) =1150 микросекунд. Собственно несколько измененная схемка: https://img.radiokot.ru/files/20529/3qzplyk6yn.GIF скрин окна симулятора с максимальным количеством корректно считываемых импульсов
Вложение:
1746258262837_144dpi_75%.pdf
скрин окна симулятора с количеством импульсов ниже пороговой величины
Вложение:
1746258027399_144dpi_75%.pdf
и текст исходника (taho.ino) Спойлер
Код:
/* проект taho простейший автомат селектор количества импульсов в секунду диапазон контроля от 0 до 200 импульсов в секунду (120 км/час) ориентировочный порог (уставка) 33 импульса в секунду решение для ардуино нано в рамках средств референса параметры входных импульсов не известны, но оговорено: 1. отсутствие дребезга фронтов (аппаратный антидребезг в источнике сигнала) 2. длительность активной части импульса не менее 1.1 милисекунд 3. длительность паузы не менее 1.15 милисекунд точность сработки +/- 2 импульса */
// линия водного сигнала #define Taho 6 // D6 // активный уровень входного сигнала исключительно LOW //byte AlTaho = LOW; // линия выходного сигнала #define RelOut 8 // D8 // активный уровень выходного сигнала byte AlRelOut = LOW; // выход тактового сигнала на формирователь счетного окна #define tonout 4 // D4 // вход тактового сигнала на формирователь счетного окна #define toninp 2 // D2 (= INT0) // флаг захвата фронта начала импульса или начала паузы byte Fl = 0; // флаг начала окна измерительного интервала byte Fw = 0; // счетик - накопитель импульсов int cntTaho = 0; // пороговое значение контрольной уставки количества импульсов #define MaskTaho 33 // контрольный накопитель формирователя счетного окна byte tmslot = 0; // пороговое значение контрольной уставки накопителя формирователя счетного окна #define MaskCtms 50 // функция бработчика прерывания формирователя счетного окна voidtimeslot();
//----------
voidsetup() { // put your setup code here, to run once:
В принципе для релюшки, срабатывающей на требуемый порог вполне сгодится. Для частотомера явно не особо пригодное решение, разве что обороты считать. Но и исходные требования к входным импульсам зверские - от постоянного 0 до постоянной 1 при старте (и в любой момент работы)... Да плюс тренировка мозгам и навыков пользования симулятором.
Собственно, неясно только, почему вогнали себя в рамки- ОДНОЙ секунды опроса. Каюсь- это я так в самом начале ляпнул, но 1 сек- не логма, можно посчитать 66 импульсов за 2 сек, или 99- за три, имхо. Я так понимаю, что, даже если приборчик и за 5 сек поймет, что скорость 20 км установлена, то плохо от этого никому не будет. Зато возможности Ардуино раздвигаются. С другой стороны, функция отслеживания скорости не обязательна. У него одна функция: подать лог1 при скорости 20 км час, ине подавать ее- при скорости ниже 20 км час.
У ардуино есть штатная функция определения длительности импульса. Однако чтобы ею воспользоваться надо быть уверенным в параметрах входного сигнала (знать его минимальные и максимальные значения, вероятность простоя как в так и в 0 при остановке источника импульсов и прочие "мелочи"). А то, что я соорудил - простой вариант частотомера с примитвным способом измерения. Интерввал в 1 секунду - типичен для частотомеров. Можно задать и поменьше - но то для более скоростных процессов обычно применяется Тут же исходно от 0 до до 33 и далее сколько возможно (к примеру, если брать Ваши исходные данные для 300км/час достаточно корректно отработать 500 импульсов в секунду)... Так что вполне себе вписался в условия задачи. Другое дело, что для использования такого решения как частотомера не слишком удачно. Дополнительный вопрос - работа с симулятором (не на макете). Данный симулятор "отсебятину" не пропускает - посему только "жесткие рамки референса"... Зато кучка внешней обвязки может проверяться. Не "супер", но простейшие элементы программ проверяются достаточно хорошо. Вобщемсс .... поигрался в свое удовольствие. Кстати... Чем меньше прерываний для генерации "измерительного окна" тем выше максимальное количество подсчитываемых импульсов -в идеале единственное прерывание от таймера с внутренним тактированием - реально, но это уже "отступление от "референса" - некошерно. Опустить частоту tone ниже 31Гц невозможно по тому же "стандартному минимуму" - а в диапазоне 49-30 ... не так удобно в счете.
Частотомеры...МК то вроде неплохо, но есть и рассыпуха... Да еще завалялись вот такие раритеты (580ВИ53/1810ВИ54) https://img.radiokot.ru/files/20529/3k6i33tbmc.jpg Интересненько, чего б на них соорудить можно...? Жрут правда весьма нескромно - но все ж и управление у них довольно интересное... "в лоб" до 2МГц (54 вроде до 8 МГц) воспринимают счетны импульсы... Надо б поиграться...
Kcтати, помнится, была схема, где 580ви53 программировал не процессор, а жёсткий автомат, состоявший из п.з.у. и счётчика
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Такая городушка на рассыпухе возможна... Только вот по сложности и навороченности явно превзойдет решение на МК. В дремучей древности делал подобное (частотомер "цифровая шкала") на рассыпухе... Примерно в 45 корпусов рассыпухи влезло (8 знакомест дисплей,память,прочее...). Только потом импортная публикация аналогичного решения на ОДНОЙ спецБИС появилась... Так та самоделка со схемами где то потерялась. Единственно весьма много знаний/навыков дала (типа дипломна проекта по теме цифровой логики - сам себе задание дал и сам его выполнил). "хвостом" там добавлялся блок АЦП с автовыбором пределов измерения с индикацией на той же цифровой шкале (напряжение- частота) - тоже "канул в безвесть" сразу после испытаний. Дальше уже пошло освоение МК. Удобство таймера по отношению к подобной по функционалу рассыпной конструкции - меньшее количество деталек на плате относительно такого же счетного модуля из счетчиков и буферных регистров с дополнительной обвязкой. Не всякий МК (из популярно/типовых) может напрямую принимать импульсы до 2 МГц. В то же время минусы - параллельный интерфейс, большое энергопотребление и редковостребованный максимальный диапазон... Разве что еще как спецгенератор хитрых последовательностей можно использовать. Но просто почитать /помудрить смысл таки есть (даже ежли и ощутимого/макетно-безделушного результата не будет). Надо ж хоть иногда отупевшему мозгу посильную тренировку давать..
Не всякий МК (из популярно/типовых) может напрямую принимать импульсы до 2 МГц.
Может и не каждый, но типичному AVR можно на вход таймер подать сигнал в 2.5 раза меньше тактовой, т.е. 20/2.5 = 8 MHz. Для простейшего STM32 получится 128/3 = 42.6 MHz и дополнительно можно пределитель на 2/4/8 подключить.
Только надо на максимум кварц ставить и без предделителя системную частоту оставить (CLCio). Второй вопрос - удобство управления защелкиванием интервала... Ежли покопаться можно найти вариант, но таки таймеры АВР больше на другие цели настроены (ШИМ, измерение длительности). Основное преимущество таймеров МК - прямой счет и легкость доступа к регистрам счета и управления режимами. Далее вопрос точности и стабильности генератора всплывет, но то уж для оченно гурманов... А для варианта адуринки это уже явный "выход за рамки референса" - не впишется в принятые начальные ограничения (но не исключает применения ) За АРМ и прочих более шустрых - я ими в данной теме не занимаюсь (хотя и не отрицаю их наличие и возможности).
По поводу драйвера для CH9340 и разных форточек... ХР х32 любой вариант - установка без проблем... Семерка - десятка х64 - без проблем ставится только на ОФИЦИАЛЬНОЙ ВЕРСИИ... Варианты "хакнутых" установку драйвера могут не провести. Возможно вопрос в обновлениях (хуже, если контроль поглубже )...
Не знаю, как там в официальной версии, но у меня на Windows 7 32 bit, не было нужного файла в папке с драйверами, поэтому и не проходила установка драйвера. Нет там никакого ограничения ни для какой платформы !!
Почему же без проблем, проблема установки есть, но она решаема. Попробуйте на своей платформе, установка одинакова для любой винды. Короче, в отличие от своего собрата CH340, который ставит свои драйвера, установщик CH9340 ничего не добавляет, а пытается подключить системный файл usbser.sys из папки Windows\system32\drivers. У меня он находился в FileRepository. Решение проблемы простое. Через поиск найти файл на своем диске и скопировать его в указанную папку с драйверами. Сделать переустановку драйвера, и все установится.
Еще одна из версий на темы "разбудильников" да интерактива кнопок и дисплея: viewtopic.php?p=4725632#p4725632 Базовый движок тот же, что и ранее в К145М, но работа индикатора чуток иная - без курсора, но с "подмигиванием".
Мне больше местные радиорынки интерес представляют. А ёжли уж те 20-лапки MCS51... То лучше поискать AT89S2051 или AT89S4051 Хотя на сегодня таки эти МК только для узкоприкладных целей могут пойти - адуринки нанки и про-мини их перекрывают и по доступности и по "начинке" и по ценам (с учетом минимальной обвязки). Да и по средам разработки выбор больше (свободно-бесплатным без всякохакинга).
Тургенев если написал "Му-Му" то памятник Толстому почему ? (А. Кальянов) Так и тут, если есть AT89... или ARDUINO то нафига всё остальное ? Отличная философия !
Философия разумной самодостаточности. Хорошо то, что даёт годный результат при сохранении качества и минимальных затратах. Для самостоятельных исследовательских работ нужно быть родичем Ротшильдов. Или каким "элитным студнем" ( в том числе и по возрасту ).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения