И при напряжении 22В у диода на 30В обратный ток не такой уж и маленький
Диод ведь не конденсатор — величина обратного напряжения не влияет на типоразмер. Я бы при входном в 22 вольта застремался бы ставить 30В/1А, и даже может быть 40, а поставил бы вольт на 60 хотя бы. Кроме того, диод имеет конечное время восстановления проводимости, и если полевик закрывается быстрее, то напряжение, приложенное к еще не начавшему проводить в прямом направлении диоду, может в течение единиц наносекунд ему навредить. Я бы ограничил скорость закрытия полевика резистором в несколько Ом в цепи затвора, и проверил по возрастанию потребляемого от +22 тока или по нагреву транзистора, насколько возросли потери из-за затягивания фронтов.
Кстати, судя по фотографии платы, и входной конденсатор у вас 100.0x25 — при +22 на входе тоже рискованно — я бы поставил хотя бы на 35 вольт
Ну и напоследок, силовое IO со входами АЦП я бы совмещать не стал — у полевика, зашунтированного защитным диодом, большая емкость в закрытом состоянии, к тому же зависящая от приложенного напряжения (запирающего переход — вспомните варикапы). В итоге, при отличном от 0 выходном сопротивлении источника переменного тока, работающего на этот вход, мы можем получить заметный завал уже на верхней частоте звукового диапазона и привнесенную нелинейность из-за динамической емкости, заметно превышающие погрешность дискретизации хорошего 12-разрядного АЦП. Помимо этого, соседство сильноточных выходов и измерительных цепей по общим землям — не очень хорошее решение. Я бы не экономил на клеммах, а развел отдельно.
О, я динамику люблю, и активно пользовался ей не только в целях обслуживания БД, а вовсю и в настраиваемой основной бизнес-логике — например, в одной из систем, автоматизирующей весь процесс научно-исследовательского центра, динамикой задавались чекпоинты и действия для их проверки над сущностями в базе — при этом в соответствующей таблице было что-то типа:
В итоге, чтобы проверить экземпляры некой сущности на соответствие чеклисту, достаточно было выбрать и динамически выполнить соответствующие статементы из таблицы сразу для всех экземпляров этой сущности, что и делалось в соответствующей процедуре. Нужно поменять или добавить еще один пункт проверки — пожалуйста — редактируйте соответствующую строку (это если не говорить о потенциальной опасности SQLInj — однако, это была intranet-система — там менее критично)
Жаль только, что массовое внедрение ORM, в частности, в майкрософтовском исполнении убивает на корню в том числе и идею использования динамики — равно как и добрую половину других возможностей БД, используя которые можно было бы эффективно обработать данные прямо в базе, вместо того, чтобы превращать ее в олигофренский CRUD-придаток «мудрого» слоя приложения, который только и может, что стрелять тысячами запросов там, где при правильном подходе хватило бы и десятка.
Я собрал РК в 9-м классе (88 год). До этого собирал по чужим схемам и потихоньку пытался разрабатывать свои аналоговые НЧ, и главное, цифровые схемы.
С последним мне очень помогла мама — она работала в закрытом НИИ инженером по функциональному тестированию в отделе разработки спецЭВМ — и доставала мне комплектацию 133, 155, 1533 серий и простые схемы, нарисованные инженерами, которые я собирал на платах из толстого картона, проткнутого иглой под ряды выводов, делая соединения проводом в специальной лаковой изоляции, который залуживался от прикосновения паяльника — получалось макетировать практически мгновенно!
Для РК один из сотрудников мне продал печатную плату, и помог достать дефицитную комплектацию — ВГ75, ВТ57 (вернее тогда еще ИК57), небитую память РУ3, и конечно, ПЗУ с прошивками знакогенератора и Монитора. Остальное покупал на толкучке у Юного Техника на Краснопутиловской (питерские со стажем помнят его еще там, иногда разгоняемого еще советскими ментами). Плату клавиатуры и БП проектировал и делал сам. Компьютер заработал не сразу (пришлось собирать пошагиватель, индикатор состояния шин на дешифраторах на прошитых под 16-ричку 155РЕ3 и индикаторах АЛС) — но в конце концов запустился. Ассемблера я тогда не знал, только Бейсик так себе.
Однако уже через год-полтора машина содержала 64К памяти на 565РУ5, адресное пространство было основательно перекроено, все ВВ устройства загнаны наверх, Монитор дизассемблирован и подпатчен, впрочем как Бейсик и некоторые игры. В схему управления адресным дешифратором я добавил логику, позволяющую переписывать содержимое ПЗУ в ОЗУ «под себя» — то есть по тем же адресам f800-ffff, а потом выбирать данные из ОЗУ вместо ПЗУ при обращении процессора в верхние ячейки памяти. Это позволило отлаживать Монитор без нудного УФ-стирания и перепрошивки, и заметно ускорило отладку.
Для программирования ПЗУ был разработан и поддержан программатор, а для быстрой загрузки программ — банк статической памяти с батарейной поддержкой (8КБайт) — оба работающие через порт ВВ. Монитор научился грузить программы из этой памяти, в том числе и при старте, что позволило отказаться от ленты для бейсика или пакета редактор-ассемблер — что сильно ускорило дальнейшую модернизацию.
Дальше машина получила ВИ53, контроллер шины (ВК38) и прерываний (ВН59) — ура, наконец-то нормальный звук и работа по прерываниям! Монитор был переписан под работу с клавой по прерываниям (с буфером символов, как в РС), схема и режим видеоконтроллера — изменены под формат 80 символов на 25 строк (64 и программные гасящие импульсы меня всегда раздражали). Под это пришлось переписать много программ, напрямую пишущих в видеопамять (а таких было большинство), включая Бейсик. Аппаратно для этого пришлось отвязать тактовую частоту видеоконтроллера от процессора, что затем позволило сделать следующий шаг — перейти на 4-мегагерцовый 8085.
После всех переделок оригинальная плата составляла ужасное зрелище — половина дорожек была перепилена (использовались в основном только отверстия под ножки и контактные площадки), корпуса сидели один на другом с отогнутыми выводами CS, коммутируемыми также висящими друг на друге дешифраторами. На тыльной стороне тянулись косы проводов в лаковой изоляции. Сбоку от платы были прикреплены разъемы слотов расширения, куда выводились шины адреса, данных и управления.
В один прекрасный день магнитная лента мне окончательно надоела, и я начал проектировать контроллер НГМД. Купил на толпе 5-дюймовый односторонний болгарский привод (тот, который нарезал всего 360КБайт), и пытался разработать контроллер одинарной плотности на ИМС низкой степени интеграции. Он в итоге заработал, но на половинной плотности, и очень сбойно. При этом из-за чисто программного чтения-записи (байт разворачивался сдвиговым регистром в FM-формат), и отсутствия средств АПЧ при чтении (временные рамки определялись одновибраторами) он был очень капризным и требовал, как и работа с лентой, отключения видеоконтроллера.
В итоге, пришлось все-таки применить ВГ93, подключив по собственной схеме с коммутацией управления между процессором и контроллером ПДП. Код управления дисководом и обменом данными отлаживался в ОЗУ, вместе с идеей поддержать формат дискет MS-DOS. Зная детально, как он устроен в РС, я поддержал струтуру областей диска, включая загрузочный сектор, кластеры, FAT, корневой каталог. Не хватило памяти только, чтобы поддержать подкаталоги. СОМ-файлы запускались как чистые 8080-бинарики, стартовый адрес хранился в записи каталога в каком-то неиспользуемом MS-DOS поле.
Перемещаемые EXE из-за отсутствия сегментации в 8080 и сложности настройки в связи с этим, не поддерживались. Операционка и функции работы с диском грузились с ленты на время разработки и отладки.
И вот в один прекрасный момент дисковые функции я прошил в Монитор, выкинув работу с лентой навсегда (перед этим, конечно, переписав все программы на диски отладочной версией, работающей в ОЗУ). Монитор научился работать с дисководом по типу int13 в BIOS IBM PC, на которых я уже тогда программировал на С, Паскале и выделывал хакерские штуки на Ассемблере, учась в институте. Операционка позволяла запускать COM и BAT-файлы (в терминах своего командного процессора), читать и писать файлы поблочно, поддерживала до двух дисководов до 720 кбайт каждый в форте MS-DOS (можно было переносить файлы между РК и IBM PC, лежащие в корнневом каталоге), и умела грузиться со стандартного загрузочного сектора РС (естественно, бутлоадер был свой). Система занимала в памяти около 7КБайт. Было это в 1992 году. Для дисковой ОС, помимо самой системы, я написал дисковый редактор (diskedit), и оптимизатор размещения раздробленных файлов на диске.
Вскоре у меня дома появился IBM PC AT с оранжевым монитором Hercules, и первое, что я на нем сделал — написал на Ассемблере эмулятор 8080 и моего модернизированного РК… Он умел грузиться с дискеты, вставленной в PC, но содержащей РКшный бутлоадер…
Так я это в начале статьи и указал и ссылку дал на то, что у них есть на момент написания статьи:
Одним из них был контроллер вентилятора компании Силычъ (то, что сейчас выглядит вот так
Разработка же была сделана в 2006 году, когда у Силыча была одна из первых моделей, с ручной кнопкой, в огромном корпусе, проблемами с помехозащищенностью, теплоотдачей, плаванием порогов срабатывания итд. На форуме Силыча того времени (тогда это был silych.h10.ru) было много обращений с подобными проблемами.
Вообще с Силычем в тот момент у меня была странная переписка на сайте autoelectric.ru по поводу рассеиваемой мощности, частоты ШИМ и помехозащищенности — ссылку уже давал в начале статьи — продублирую здесь: http://autodevice.ru/forum/index.php?showtopic=1807
Можно и на карб. Вообще, чтобы прикрутить куда-нибудь не на инжекторный ВАЗ, необходимо соблюдение следующих условий:
1. Датчик температуры двигателя должен быть с отрицательным ТКС (то есть, его сопротивление должно падать с ростом температуры)
2. Напряжение на датчике в диапазоне температур, контролируемом реле (скажем, от 70 до 110 С) должно быть от 3 до 10 Вольт
3. Вентилятор должен коммутироваться по минусовому проводу (то есть включаться замыканием одного из выводов на массу).
4. Питание реле должно сниматься при выключении зажигания
5. В момент срабатывания штатной системы управления вентилятором управляющий вывод реле должен замыкаться на массу
Все это есть в варианте схемы, находящейся в репозитории на гугле по ссылке в статье — емнип там как раз вариант работы системы в параллель со штатной с контактным датчиком и своим реле
Если схема в протеусе соответствует выполненной в железе, то есть комментарии:
1. у вас геркон счетчика воды замыкает напрямую конденсатор 2.2 мкф. Целью установки конденсатора видимо было подавление дребезга. В таком случае, включите последовательно с герконом резистор вплоть до 1 кОм. Иначе разрядный ток конденсатора практически ничем не ограничен, и со временем нежные контакты геркона могут и залипнуть.
2. Второй геркон или выключатель подает напряжение на светодиод оптопары без ограничительного резистора.
3. (брюзжание) светодиоды, как и любую заметную токовую нагрузку, управляемую прямо с цифровых выходов, лучше включать между выходом и плюсом питания, а не землей. Это исторически связано с тем, что выходные ТТЛ-каскады могли выдавать заметно больший ток в состоянии низкого, а не высокого уровня. Современные комплементарные КМОП-каскады выдают почти одинаково, но все же по спеке емнип там какая-то разница есть. Да и качество n-канальных полевиков (стоящих в нижнем плече) в силу технологических причин всегда выше, чем p-канальных. В общем, если нет веских причин делать наоборот — правило хорошего тона — управлять нагрузкой низким уровнем.
То, что я изобрел — не ПИД, а простой линейный регулятор без ОС. Я не рассматривал температуру двигателя, как целевую функцию, а обороты вентилятора — как управляющее воздействие. И даже если этим задаться, к сожалению, у отдельного реле слишком мало информации о системе, чтобы построить более-менее эффективный регулятор — так как ни мгновенная интенсивность тепловыделения двигателя, ни теплотдача радиатора по воде и по воздуху реле неизвестна. Все эти данные есть у контроллера двигателя, т.к. он обладает информацией о текущей нагрузке на двигатель, оборотах, скорости движения (определяет естественный обдув радиатора), внешней температуре.
Без всего этого устройство фактически просто смещает точку насыщения радиатора по теплоотдаче по воздуху при приближении системы к ней, что приводит к более раннему и плавному установлению теплового равновесия — однако, никаких попыток установить это равновесие на конкретной температуре устройство не делает. В любом случае, однако, эффективность его не хуже штатной системы, т.к. оно всегда транслирует прозрачно команду включения вентилятора от ЭСУД
Да, цель в частности была сделать эдакий plug-n-play, когда потенциальный пользователь просто втыкает одно реле вместо другого и получает новое качество работы сразу же — это, в отличие от других устройств на рынке, тогда наверное определило бы на него спрос… правда, по иронии судьбы, производством я не пытался заниматься, хотя отзывы от тех, кто повторил, были хорошие. И себестоимость устройства была бы копеечная — специальный корпус не нужен, силовые шлейфы/разъемы/радиаторы — тоже. Точить-сверлить-фрезеровать тоже не надо. Из элементов, которые хоть что-то стоят (smd резисторы, диоды и обычные биполярники при массовом производстве — практически не в счет) — мощный полевик (действительно хороший) и сам tiny — наверное стоят не дороже 3-5 долларов вместе взятые
Ну там для компенсации этого есть решение — опорное напряжение для АЦП берется с нестабилизированного делителя (это защищает от медленных флуктуаций, например, по мере прогрева реле-регулятора). Плюс к тому, есть ограничитель отрицательной динамики сырых (неусредненных) показаний АЦП — это защищает от провалов при включении поворотников или дворников. Ну и скользящее среднее, конечно )
Штука в том, что бороться со всякими паразитными эффектами без вмешательства в проводку можно либо никак, либо программно. Поэтому подобные аналоговые и нехитрые цифровые устройства на жесткой логике будут обречены на неудачу.
Основной движущей силой наверное было стремление сделать лучше, чем любой существующий на тот момент образец, и это, похоже, получилось. Автоустановки порогов, например, тогда не было ни у кого, и эффективной системы компенсации ПОС — тоже. Вообще, большая часть кода в устройстве, можно сказать, была предназначена для того, чтобы сделать устройство «user-friendly», то есть не заставляющее юзера нажимать кнопки, крутить потенциометры, переделывать проводку, или писать в профильный форум, почему магическая коробочка не работает. Это гораздо сложнее, а главное, неочевиднее, чем построить по сути линейный регулятор.
Что же касается практической пользы — самое существенное — это отсутствие шума от работающего вентилятора в обычной эксплуатации. Ну и запас по производительности на случай резкого изменения нагрузки на двигатель (например, при движении по горам). Другие аргументы (типа экономии бензина и уменьшения износа двигателя) имхо совсем незначимы
«на одном из шкивов» — имеются в виду шкивы распредвалов скорее всего. Там как раз Холл стоит, выдает соответственно один импульс на цикл — то есть на два оборота коленвала
По олдскульным спецификациям на применение цифровых ИМС входы в воздухе оставлять не комильфо. Однако, в современных uC и SoC чипах такое количество выводов, что если все неиспользуемые сажать на землю, то никаких слоев печатки не хватит, чтобы развести функциональные ). Поэтому можно не сажать, а со сквозными токами и пробоями борятся внутренними средствами. Ну и вообще — на короткой ноге много не наведется…
Вы не пробовали базировать сетку разбиения на найденные реперы-зрачки, и масштабировать в терминах межзрачкового расстояния — то есть менять и шаг и радиус ЛБШ пропорционально. Это, по идее, должно помочь отстроиться от ситуаций, когда характерные особенности лица находятся на границе ячеек сетки, и связанных с этим ошибок
Ну тогда еще позазанудствую: вход измерения частоты при отключенном от бортовой проводки приборе висит в воздухе — я бы его подтянул внешним резистором к нулю, чтобы не болтался на время инициализации ( я думаю в коде вы используете pull-up).
А в принципе, входы с активным нулем и пассивным уровнем выше логического лучше делать так — резистор подтяжки между выводом порта и питанием, а от вывода порта до внешней схемы — достаточно высоковольтный диод шоттки катодом наружу. Вроде все то же самое, но диод дешевле стабилитрона, нужный фронт не заваливается из-за отсутствия ограничительного резистора, да и входное сопротивление схемы можно сделать выше.
Теперь — рацпредложение: при подаче питания можно входить в тест-режим и последовательно показывать на приборе обороты от 1000 до 8000 с шагом 1000, удерживая каждое показание около пары секунд — будет выглядеть очень эффектно, и кроме того, служить калибровочным тестом. Для придирчивого юзера можно вообще сделать кнопки коррекции калибровочных показаний, запоминая коэффициенты в епром, и пересчитывая текущие в рабочем режиме соответственно. Тогда и резистор подбирать не надо будет — все можно будет сделать программно
Если чисто аналоговый шестерочный не только приемку на ВАЗе прошел, а 40 лет без малого на конвейере жил, то уж цифровой-то точно приемку пойдет — не только на ВАЗе, а даже у крутого тюнера :) На самом деле, судя по видео, алгоритмический демпфер стрелки работает прекрасно, и вообще, задача оживления ретроустройства решена блестяще.
Одно только добавление по железу: обмотка миллиамперметра — не чисто омическая, она обладает еще и индуктивностью — а значит, переход 0->1 на управляющем прибором выходе порта приведет к стремлению индуктивности поддержать протекающий через нее в землю ток в 10 мА (при показании полной шкалы), но теперь уже по цепи "+5 --> ограничительный резистор --> обмотка прибора --> вывод порта --> +5" — то есть индуктивность будет пытаться приложить к выводу порта еще одни 5 вольт сверх того, что там уже есть. Этому воспрепятствует встроенный в tiny защитный диод, однако я бы зашунтировал обмотку дополнительно внешним диодом Шоттки.
Точность с обычным миллиамперметром, каковым является прибор от шестерки, будет зависеть от температуры, вязкости смазки в осях итд. Прав тот, кто предложил прибор от приоры — там стоят координатные указатели с двумя перпендикулярными обмотками и магнитом на оси (условно) — показания такого прибора всегда равны отношению токов в обмотках — соответственно из точность не зависит от мех потерь, так как токи (и следовательно, силы, действующие на стрелку) модно сделать большими (особенно в момент ищменения показаний). Отсюда же и хорошее демпфированик
Из доступного старого железа оптопары есть а) в блоках питания десктопов и ноутов и б) в Упсах. Печатная плата под ними обычно имеет сквозную просечку, чтобы предотвратить утечку тока по поверхности между изолируемыми цепями. По этим просечкам их и можно найти на плате, если визуально с ними не знакомы
Введение в алгоритм константных допущений на размеры временного и потенциального окон чувствительности сильно ограничивают применение даже для контроля осветительной сети.
— Что, если вы питаетесь от автономного генератора, частота которого из-за изменения нагрузки просела ниже, скажем, 45 или выше 55 Гц? Как ваш алгоритм, встроенный, например, в тот же АВР, определит перехлест фаз на входе в линейный трансформатор, в результате которого трансформатор выходит из линейного режима на пиках сложения амплитуд, и на низковольтных (0.4кВ) выходах форма напряжения становится просто неописуемой?
— Где гарантия, что какой-нибудь мощный тиристорный регулятор не создаст однажды такую полку вблизи нуля, с которой при зашивке порогов вы не встречались — из-за например, старой проводки, или большого расстояния от трансформатора до потребителя?
Это я к тому, что заранее закладываться на какие-то статистические допущения очень опасно. Алгоритм в ответственном применении может вообще не сработать, даже если имеет дело с обработкой казалось бы однотипного сигнала.
Далее, насчет быстрых действий — тут есть явное противоречие. Устройства, для которых критично именно действующее значение напряжения, как правило, достаточно инерционные — нагреватели, двигатели итд. Постоянная их времени имеет порядок сотен миллисекунд или даже единиц секунд.
И наоборот, все, что низкоинерционно — критично как раз к пиковым значениям — сюда в основном попадают БП разной электроники — для них будет слабым утешением действующее в течение периода 220 при коротких пиках до киловольта.
Соответственно, защитные или регулирующие устройства, которые в силу предназначения, должны обладать быстрой реакцией, нужно основывать на контроле пиковых значений напряжения. И наоборот — устройства регулирования с обратной связью по фактической мощности нужно основывать на контроле действующих значений.
Насчет нелинейности диодного моста — его надо питать сетевым напряжением, и делитель ставить уже после него. Тогда нелинейности практически не будет. Если сделать наоборот — выпрямлять значения после делителя — естественно, столкнемся с нелинейностью.
В любом случае — посчитайте, какую теоретическую погрешность дает метод временного-потенциального окна при указанных вами константах. Я думаю, будет больше либо сравнимо с тем же 1%
И еще — повысить точность и устойчивость вашего метода синхронных измерений можно предсказанием точки перехода через 0 экстраполяцией по N предыдущих значений, корректируя теоретическую точку взвешиванием, если нашелся истинный переход, или просто беря ее, если истинный переход по какой-то причине пропущен. Прибор таким образом сам подстроится к частоте сигнала (эдакое подобие синхронного детектора), и будет статистически нечувствителен к помехам вблизи 0.
То есть у вас цикл интегрирования привязан к частоте измеряемого напряжения. Что будет, если например в сигнале присутствует вторая, третья итд гармоника, достаточная по величине, чтобы сбить гистерезисный детектор нуля? Сигнал может быть сильно несимметричным, прыгать, иметь бороду вблизи нуля, иметь плавающую постоянную составляющую (например из-за биений входящих в синхронизм разных источников в сети) итд. Все это приведет к ошибке детекции момента перехода через ноль, а следовательно, к ошибке интегрирования, которую сложно оценить сверху для всех возможных ситуаций, в отличие от ошибки, вносимой выпрямителем.
Я бы все же разворачивал сигнал в униполярынй диодным мостом, дальше делитель, и уже потом программный интегратор. При этом постоянную времени интегрирования брал гораздо больше периода измеряемого сигнала — все равно зачем вам 50 значений напряжения в секунду? Никаких столь же быстрых действий на основе этой информации вы все равно не предпримете — ни глазом, ни автоматикой
Диод ведь не конденсатор — величина обратного напряжения не влияет на типоразмер. Я бы при входном в 22 вольта застремался бы ставить 30В/1А, и даже может быть 40, а поставил бы вольт на 60 хотя бы. Кроме того, диод имеет конечное время восстановления проводимости, и если полевик закрывается быстрее, то напряжение, приложенное к еще не начавшему проводить в прямом направлении диоду, может в течение единиц наносекунд ему навредить. Я бы ограничил скорость закрытия полевика резистором в несколько Ом в цепи затвора, и проверил по возрастанию потребляемого от +22 тока или по нагреву транзистора, насколько возросли потери из-за затягивания фронтов.
Кстати, судя по фотографии платы, и входной конденсатор у вас 100.0x25 — при +22 на входе тоже рискованно — я бы поставил хотя бы на 35 вольт
Ну и напоследок, силовое IO со входами АЦП я бы совмещать не стал — у полевика, зашунтированного защитным диодом, большая емкость в закрытом состоянии, к тому же зависящая от приложенного напряжения (запирающего переход — вспомните варикапы). В итоге, при отличном от 0 выходном сопротивлении источника переменного тока, работающего на этот вход, мы можем получить заметный завал уже на верхней частоте звукового диапазона и привнесенную нелинейность из-за динамической емкости, заметно превышающие погрешность дискретизации хорошего 12-разрядного АЦП. Помимо этого, соседство сильноточных выходов и измерительных цепей по общим землям — не очень хорошее решение. Я бы не экономил на клеммах, а развел отдельно.
В итоге, чтобы проверить экземпляры некой сущности на соответствие чеклисту, достаточно было выбрать и динамически выполнить соответствующие статементы из таблицы сразу для всех экземпляров этой сущности, что и делалось в соответствующей процедуре. Нужно поменять или добавить еще один пункт проверки — пожалуйста — редактируйте соответствующую строку (это если не говорить о потенциальной опасности SQLInj — однако, это была intranet-система — там менее критично)
Жаль только, что массовое внедрение ORM, в частности, в майкрософтовском исполнении убивает на корню в том числе и идею использования динамики — равно как и добрую половину других возможностей БД, используя которые можно было бы эффективно обработать данные прямо в базе, вместо того, чтобы превращать ее в олигофренский CRUD-придаток «мудрого» слоя приложения, который только и может, что стрелять тысячами запросов там, где при правильном подходе хватило бы и десятка.
С последним мне очень помогла мама — она работала в закрытом НИИ инженером по функциональному тестированию в отделе разработки спецЭВМ — и доставала мне комплектацию 133, 155, 1533 серий и простые схемы, нарисованные инженерами, которые я собирал на платах из толстого картона, проткнутого иглой под ряды выводов, делая соединения проводом в специальной лаковой изоляции, который залуживался от прикосновения паяльника — получалось макетировать практически мгновенно!
Для РК один из сотрудников мне продал печатную плату, и помог достать дефицитную комплектацию — ВГ75, ВТ57 (вернее тогда еще ИК57), небитую память РУ3, и конечно, ПЗУ с прошивками знакогенератора и Монитора. Остальное покупал на толкучке у Юного Техника на Краснопутиловской (питерские со стажем помнят его еще там, иногда разгоняемого еще советскими ментами). Плату клавиатуры и БП проектировал и делал сам. Компьютер заработал не сразу (пришлось собирать пошагиватель, индикатор состояния шин на дешифраторах на прошитых под 16-ричку 155РЕ3 и индикаторах АЛС) — но в конце концов запустился. Ассемблера я тогда не знал, только Бейсик так себе.
Однако уже через год-полтора машина содержала 64К памяти на 565РУ5, адресное пространство было основательно перекроено, все ВВ устройства загнаны наверх, Монитор дизассемблирован и подпатчен, впрочем как Бейсик и некоторые игры. В схему управления адресным дешифратором я добавил логику, позволяющую переписывать содержимое ПЗУ в ОЗУ «под себя» — то есть по тем же адресам f800-ffff, а потом выбирать данные из ОЗУ вместо ПЗУ при обращении процессора в верхние ячейки памяти. Это позволило отлаживать Монитор без нудного УФ-стирания и перепрошивки, и заметно ускорило отладку.
Для программирования ПЗУ был разработан и поддержан программатор, а для быстрой загрузки программ — банк статической памяти с батарейной поддержкой (8КБайт) — оба работающие через порт ВВ. Монитор научился грузить программы из этой памяти, в том числе и при старте, что позволило отказаться от ленты для бейсика или пакета редактор-ассемблер — что сильно ускорило дальнейшую модернизацию.
Дальше машина получила ВИ53, контроллер шины (ВК38) и прерываний (ВН59) — ура, наконец-то нормальный звук и работа по прерываниям! Монитор был переписан под работу с клавой по прерываниям (с буфером символов, как в РС), схема и режим видеоконтроллера — изменены под формат 80 символов на 25 строк (64 и программные гасящие импульсы меня всегда раздражали). Под это пришлось переписать много программ, напрямую пишущих в видеопамять (а таких было большинство), включая Бейсик. Аппаратно для этого пришлось отвязать тактовую частоту видеоконтроллера от процессора, что затем позволило сделать следующий шаг — перейти на 4-мегагерцовый 8085.
После всех переделок оригинальная плата составляла ужасное зрелище — половина дорожек была перепилена (использовались в основном только отверстия под ножки и контактные площадки), корпуса сидели один на другом с отогнутыми выводами CS, коммутируемыми также висящими друг на друге дешифраторами. На тыльной стороне тянулись косы проводов в лаковой изоляции. Сбоку от платы были прикреплены разъемы слотов расширения, куда выводились шины адреса, данных и управления.
В один прекрасный день магнитная лента мне окончательно надоела, и я начал проектировать контроллер НГМД. Купил на толпе 5-дюймовый односторонний болгарский привод (тот, который нарезал всего 360КБайт), и пытался разработать контроллер одинарной плотности на ИМС низкой степени интеграции. Он в итоге заработал, но на половинной плотности, и очень сбойно. При этом из-за чисто программного чтения-записи (байт разворачивался сдвиговым регистром в FM-формат), и отсутствия средств АПЧ при чтении (временные рамки определялись одновибраторами) он был очень капризным и требовал, как и работа с лентой, отключения видеоконтроллера.
В итоге, пришлось все-таки применить ВГ93, подключив по собственной схеме с коммутацией управления между процессором и контроллером ПДП. Код управления дисководом и обменом данными отлаживался в ОЗУ, вместе с идеей поддержать формат дискет MS-DOS. Зная детально, как он устроен в РС, я поддержал струтуру областей диска, включая загрузочный сектор, кластеры, FAT, корневой каталог. Не хватило памяти только, чтобы поддержать подкаталоги. СОМ-файлы запускались как чистые 8080-бинарики, стартовый адрес хранился в записи каталога в каком-то неиспользуемом MS-DOS поле.
Перемещаемые EXE из-за отсутствия сегментации в 8080 и сложности настройки в связи с этим, не поддерживались. Операционка и функции работы с диском грузились с ленты на время разработки и отладки.
И вот в один прекрасный момент дисковые функции я прошил в Монитор, выкинув работу с лентой навсегда (перед этим, конечно, переписав все программы на диски отладочной версией, работающей в ОЗУ). Монитор научился работать с дисководом по типу int13 в BIOS IBM PC, на которых я уже тогда программировал на С, Паскале и выделывал хакерские штуки на Ассемблере, учась в институте. Операционка позволяла запускать COM и BAT-файлы (в терминах своего командного процессора), читать и писать файлы поблочно, поддерживала до двух дисководов до 720 кбайт каждый в форте MS-DOS (можно было переносить файлы между РК и IBM PC, лежащие в корнневом каталоге), и умела грузиться со стандартного загрузочного сектора РС (естественно, бутлоадер был свой). Система занимала в памяти около 7КБайт. Было это в 1992 году. Для дисковой ОС, помимо самой системы, я написал дисковый редактор (diskedit), и оптимизатор размещения раздробленных файлов на диске.
Вскоре у меня дома появился IBM PC AT с оранжевым монитором Hercules, и первое, что я на нем сделал — написал на Ассемблере эмулятор 8080 и моего модернизированного РК… Он умел грузиться с дискеты, вставленной в PC, но содержащей РКшный бутлоадер…
Разработка же была сделана в 2006 году, когда у Силыча была одна из первых моделей, с ручной кнопкой, в огромном корпусе, проблемами с помехозащищенностью, теплоотдачей, плаванием порогов срабатывания итд. На форуме Силыча того времени (тогда это был silych.h10.ru) было много обращений с подобными проблемами.
Вообще с Силычем в тот момент у меня была странная переписка на сайте autoelectric.ru по поводу рассеиваемой мощности, частоты ШИМ и помехозащищенности — ссылку уже давал в начале статьи — продублирую здесь: http://autodevice.ru/forum/index.php?showtopic=1807
1. Датчик температуры двигателя должен быть с отрицательным ТКС (то есть, его сопротивление должно падать с ростом температуры)
2. Напряжение на датчике в диапазоне температур, контролируемом реле (скажем, от 70 до 110 С) должно быть от 3 до 10 Вольт
3. Вентилятор должен коммутироваться по минусовому проводу (то есть включаться замыканием одного из выводов на массу).
4. Питание реле должно сниматься при выключении зажигания
5. В момент срабатывания штатной системы управления вентилятором управляющий вывод реле должен замыкаться на массу
Все это есть в варианте схемы, находящейся в репозитории на гугле по ссылке в статье — емнип там как раз вариант работы системы в параллель со штатной с контактным датчиком и своим реле
1. у вас геркон счетчика воды замыкает напрямую конденсатор 2.2 мкф. Целью установки конденсатора видимо было подавление дребезга. В таком случае, включите последовательно с герконом резистор вплоть до 1 кОм. Иначе разрядный ток конденсатора практически ничем не ограничен, и со временем нежные контакты геркона могут и залипнуть.
2. Второй геркон или выключатель подает напряжение на светодиод оптопары без ограничительного резистора.
3. (брюзжание) светодиоды, как и любую заметную токовую нагрузку, управляемую прямо с цифровых выходов, лучше включать между выходом и плюсом питания, а не землей. Это исторически связано с тем, что выходные ТТЛ-каскады могли выдавать заметно больший ток в состоянии низкого, а не высокого уровня. Современные комплементарные КМОП-каскады выдают почти одинаково, но все же по спеке емнип там какая-то разница есть. Да и качество n-канальных полевиков (стоящих в нижнем плече) в силу технологических причин всегда выше, чем p-канальных. В общем, если нет веских причин делать наоборот — правило хорошего тона — управлять нагрузкой низким уровнем.
Без всего этого устройство фактически просто смещает точку насыщения радиатора по теплоотдаче по воздуху при приближении системы к ней, что приводит к более раннему и плавному установлению теплового равновесия — однако, никаких попыток установить это равновесие на конкретной температуре устройство не делает. В любом случае, однако, эффективность его не хуже штатной системы, т.к. оно всегда транслирует прозрачно команду включения вентилятора от ЭСУД
Штука в том, что бороться со всякими паразитными эффектами без вмешательства в проводку можно либо никак, либо программно. Поэтому подобные аналоговые и нехитрые цифровые устройства на жесткой логике будут обречены на неудачу.
Что же касается практической пользы — самое существенное — это отсутствие шума от работающего вентилятора в обычной эксплуатации. Ну и запас по производительности на случай резкого изменения нагрузки на двигатель (например, при движении по горам). Другие аргументы (типа экономии бензина и уменьшения износа двигателя) имхо совсем незначимы
А в принципе, входы с активным нулем и пассивным уровнем выше логического лучше делать так — резистор подтяжки между выводом порта и питанием, а от вывода порта до внешней схемы — достаточно высоковольтный диод шоттки катодом наружу. Вроде все то же самое, но диод дешевле стабилитрона, нужный фронт не заваливается из-за отсутствия ограничительного резистора, да и входное сопротивление схемы можно сделать выше.
Теперь — рацпредложение: при подаче питания можно входить в тест-режим и последовательно показывать на приборе обороты от 1000 до 8000 с шагом 1000, удерживая каждое показание около пары секунд — будет выглядеть очень эффектно, и кроме того, служить калибровочным тестом. Для придирчивого юзера можно вообще сделать кнопки коррекции калибровочных показаний, запоминая коэффициенты в епром, и пересчитывая текущие в рабочем режиме соответственно. Тогда и резистор подбирать не надо будет — все можно будет сделать программно
Одно только добавление по железу: обмотка миллиамперметра — не чисто омическая, она обладает еще и индуктивностью — а значит, переход 0->1 на управляющем прибором выходе порта приведет к стремлению индуктивности поддержать протекающий через нее в землю ток в 10 мА (при показании полной шкалы), но теперь уже по цепи "+5 --> ограничительный резистор --> обмотка прибора --> вывод порта --> +5" — то есть индуктивность будет пытаться приложить к выводу порта еще одни 5 вольт сверх того, что там уже есть. Этому воспрепятствует встроенный в tiny защитный диод, однако я бы зашунтировал обмотку дополнительно внешним диодом Шоттки.
— Что, если вы питаетесь от автономного генератора, частота которого из-за изменения нагрузки просела ниже, скажем, 45 или выше 55 Гц? Как ваш алгоритм, встроенный, например, в тот же АВР, определит перехлест фаз на входе в линейный трансформатор, в результате которого трансформатор выходит из линейного режима на пиках сложения амплитуд, и на низковольтных (0.4кВ) выходах форма напряжения становится просто неописуемой?
— Где гарантия, что какой-нибудь мощный тиристорный регулятор не создаст однажды такую полку вблизи нуля, с которой при зашивке порогов вы не встречались — из-за например, старой проводки, или большого расстояния от трансформатора до потребителя?
Это я к тому, что заранее закладываться на какие-то статистические допущения очень опасно. Алгоритм в ответственном применении может вообще не сработать, даже если имеет дело с обработкой казалось бы однотипного сигнала.
Далее, насчет быстрых действий — тут есть явное противоречие. Устройства, для которых критично именно действующее значение напряжения, как правило, достаточно инерционные — нагреватели, двигатели итд. Постоянная их времени имеет порядок сотен миллисекунд или даже единиц секунд.
И наоборот, все, что низкоинерционно — критично как раз к пиковым значениям — сюда в основном попадают БП разной электроники — для них будет слабым утешением действующее в течение периода 220 при коротких пиках до киловольта.
Соответственно, защитные или регулирующие устройства, которые в силу предназначения, должны обладать быстрой реакцией, нужно основывать на контроле пиковых значений напряжения. И наоборот — устройства регулирования с обратной связью по фактической мощности нужно основывать на контроле действующих значений.
Насчет нелинейности диодного моста — его надо питать сетевым напряжением, и делитель ставить уже после него. Тогда нелинейности практически не будет. Если сделать наоборот — выпрямлять значения после делителя — естественно, столкнемся с нелинейностью.
В любом случае — посчитайте, какую теоретическую погрешность дает метод временного-потенциального окна при указанных вами константах. Я думаю, будет больше либо сравнимо с тем же 1%
И еще — повысить точность и устойчивость вашего метода синхронных измерений можно предсказанием точки перехода через 0 экстраполяцией по N предыдущих значений, корректируя теоретическую точку взвешиванием, если нашелся истинный переход, или просто беря ее, если истинный переход по какой-то причине пропущен. Прибор таким образом сам подстроится к частоте сигнала (эдакое подобие синхронного детектора), и будет статистически нечувствителен к помехам вблизи 0.
Я бы все же разворачивал сигнал в униполярынй диодным мостом, дальше делитель, и уже потом программный интегратор. При этом постоянную времени интегрирования брал гораздо больше периода измеряемого сигнала — все равно зачем вам 50 значений напряжения в секунду? Никаких столь же быстрых действий на основе этой информации вы все равно не предпримете — ни глазом, ни автоматикой