Переделка Air Wick (attiny13)


Бренд автоматического спрея AirWick давно известен. Вот и я являюсь счастливым обладателем сего чуда китайской промышленности.
Аналогичная модификация, на микропроцессоре PIC была уже представлена на этом ресурсе
Модернизация освежителя воздуха Air Wick
но мой выбор пал на Attiny13.

За долгие месяцы использования, меня не устраивало только одно — время работы от одного баллончика.
Действующий режим срабатывания таймера через 9, 18 или 36 минут, меня явно не устраивало, во первых это неоправданный расход баллона, соответственно (160, 80, 40 срабатываний в сутки соответственно), ненужная работа в ночное время или в отсутствии хозяев.

Ну вот, сидя на досуге, решил малость модернизировать детище китайской промышленности.
Так или иначе, но лично для меня, более актуальный режим работы устройства — от света, точнее реакции на свет, так как стоит девайс, в туалете без окон и нужен по большому счету, только в момент активного использования этой аудитории.
Вот предлагаю очередную доработку:
Изменять все принципиально не хотелось, добавлять какие-либо датчики движения, или фоторезисторы, также отметались из-за повышенного энергопотребления. Поэтому решился на ответственный шаг- замену зеленого светодиода на яркий белый.
Яркий-белый светодиод весьма неплохой датчик освещенности, и для нашей темы весьма подходит.
Принцип действия основан на зарядке паразитной емкости ног контроллера, и последующей разрядке через светодиод, чем ярче свет, тем быстрее сойдет заряд, вот это время и будем мерить.
Тем, кто хочет больше вникнуть в теорию данного заговора прошу под кат:
LED As Light-sensor
Схема.


Кнопка подключена к PB1 и подтянута через резистор R2 — 10K к шине питания.
Светодиод подключен анодом к PB4, катодом через резистор R1 — 100R к PB0.
Полевик взял из-за запасников 2N7002, но можно использовать тот, что установлен в родной платке пшикалки с рабочим током 3-4А.
Конденсатор С3 установлен как дополнительная реактивная сила, для раскручивания моторчика.
Диод D2 защищает от обратного напряжения, при раскручивании двигателя после пшика. (хотя необязательно, полевик может выдержать и большие нагрузки).
Резистор R4 -4.7К стоит как шунт, чтобы полевик закрывался моментально.
С1 установлен для подавления помех, в момент срабатывания моторчика.
Потребляет устройство ничтожно мало – 4.2 uA, практически всегда живет в Power-Down и периодически раз в 4 секунды просыпается для обнаружения нажатий и определения статуса освещенности.
Алгоритм работы следующий:
При разовом непродолжительном нажатии на кнопку, «пока диод не загорится», срабатывает обычный принудительный режим пшика, и устанавливается период задержки на час.
(Следовательно, если возникла необходимость человеку вмешаться в автоматизированный процесс, то пшикаем 2 раза)
Если удерживать кнопку, начитается цикличное мигание, указывающее на устанавливаемый период. Если моргнет 2 раза – таймаут 2 часа, 3 раза -3 часа, и т.д., и если отпустить кнопку устанавливается этот режим.
Если удерживать до 5 режима, то включается режим калибровки светодиода.
Необходимо включить свет в помещении и произвести калибровку.
После этого данный уровень освещенности учитывается как триггер, и пшикалка срабатывает если уровень освещенности достигнет данного уровня.
Решено было запускать пшикалку именно при включении света, т.е. когда человек заходит в помещение.

-Изменено: Пшыкаем после выключения света, при условии что свет горел не менее 3 минут.
После каждого пшика, таймер сбрасывается на 0. И все начинается по новой.
Для удобства добавил режим предупреждения перед спрыском, светодиод быстро моргает 5 раз и потом только ПШИК!
Удобно если аппарат стоит например на смывном бачке, на уровне глаз, где есть вероятность попасть под струю, и глотнуть свежего только-что выПШИКнувшего аэрозоля, с неопределенным химическим составом.
Полный проект к Atmel Studio 6.1 + Прошивка, печатка и гербер прилагаются.
Файлы
Файлы в топике: link_deposit.txt

Комментарии (111)

RSS свернуть / развернуть
замену зеленого светодиода на яркий белый.
Зеленый же тоже чувствителен к свету, в чем разница? Белому, по идее, должен мешать люминофор, да и слепить будет.
периодически раз в 4 секунды просыпается для обнаружения нажатий
4 секунды — не слишком ли редко для опроса кнопки? Или она все же выведена на прерывание и МК при нажатии немедленно просыпается?
0
  • avatar
  • Vga
  • 22 мая 2013, 14:04
эксперименты показали более лучшуую чувствительность именно с прозрачной линзой, и более быструю скорость измерения освещения.
с зеленым LED приходилось увеличивать время для замеров, и удалось заставить срабатывать только от фонарика при прямом попадании света.
изначально было использование прерывание на int0, но код раздувался и уже не вмещался в 1К, если к примеру убрать предупреждение о пшике, то обработку кнопки можно оставить и на прерывании. но за все время использования я еще ни разу не пользовался кнопкой. достаточно включить свет.
0
эксперименты показали более лучшуую чувствительность именно с прозрачной линзой
А если поставить не-сверхяркий зеленый/красный/иной_индикаторный СИД с прозрачной линзой?
изначально было использование прерывание на int0, но код раздувался и уже не вмещался в 1К
Хм. По моему, такие вопросы оптимизацией кода решать надо. Описанная функциональность в 1к должна укладываться вообще без проблем.
0
Э, а сорца-то нет чтоль? Хотел глянуть, чего ты там понаписал на килобайт.
+1
раскрыть комментарий
-5
Здесь тебе еды не досталось — жуй hex :D
Я-то сжую, в отличие от 90% прочих.
не_пишущий «профи»
По первых, пишущий, во вторых — не профи.
+1
Я-то сжую, в отличие от 90% прочих.
Сжевал где-то на 50%. Код как код, довольно простенький. Встречаются куски копипасты, например, сам пшик (встречается 3 раза):

+00000106:   9ABA        SBI       0x17,2         ; DRRB.2 = 1 (set GATE to OUT)
+00000107:   9AC0        SBI       0x18,0         ; PORTB.0 = 1 (set LED_K to pull-up
+00000108:   9AC2        SBI       0x18,2         ; PORTB.2 = 1 (set GATE to 1)
+00000109:   E180        LDI       R24,0x10       ; Delay (time=~1s)
+0000010A:   E297        LDI       R25,0x27       
+0000010B:   E02F        LDI       R18,0x0F       
+0000010C:   E030        LDI       R19,0x00       
+0000010D:   01F9        MOVW      R30,R18        
+0000010E:   9731        SBIW      R30,0x01       
+0000010F:   F7F1        BRNE      PC-0x01        
+00000110:   9701        SBIW      R24,0x01       
+00000111:   F7D9        BRNE      PC-0x04        
+00000112:   98BA        CBI       0x17,2         ; DDRB.2 = 0 (set GATE to input)
+00000113:   98C2        CBI       0x18,2         ; PORTB.2 = 0 (set GATE to HiZ)
+00000114:   98C0        CBI       0x18,0         ; PORTB.0 = 0 (set LED_K to HiZ)

Алсо, неясно зачем PB0 ставится в pull-up. Насколько я вижу, это ни на что не влияет.
Почти вся работа собрана в длинной функции main, она занимает порядка 50% флеша. Около половины из них — пока не разобранная пляска с каким-то двордом, который хранится в EEPROM, судя по всему — обработка таймаута. Скорее всего, на этой части можно сэкономить — например, пока не вижу причины, по которой он 32-битный.
Данные во время слипа хранятся в EEPROM — если счетчик времени перезаписывается при каждом пробуждении, то его ресурса хватит ненадолго, порядка 400к секунд (хотя, по видимому, там есть некоторый wear leveling). Вместо этого можно было просыпаться по прерыванию от ватчдога вместо ресета им и сэкономить достаточно много флеша на работе с EEPROM.
Кроме main есть всего три функции — помигать диодом, прочитать освещенность, опросить кнопку. В последней есть какой-то намек на debounce, хотя зачем он при опросе с периодом 4с — я не понимаю.
Еще в одном месте забавный промах оптимизатора — общий эпилог, используемый ровно одной функцией. Размером раза в три больше, чем было бы без него.
0
похвально конечно — из спортивного интереса реверсить бинарник сишного компилятора…

forum.primuss3.com/viewtopic.php?p=9997#p9997
0
Я не понимаю, почему вы так иронизируете и веселитесь по поводу той статьи о «умном доме».

Там обсуждалось профессиональное устройство, которое управляет большим зданием. Ели бы это было любительская поделка — возможно, это было-бы забавно. Не хочет автор реагировать на критику и исправлять явные ошибки — это его дело. Он сам себе злобный братнино.

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

Я сознательно не хочу опускаться до аргументов уровня «поставе себя на место заказчика».
+2
В той статье автор видимо закрыл комментирование :D А зря, я думаю. Статья хорошая и очень полезная, очень все просто(даже элементарно) и познавательно для нубов в этом деле(в т.ч. vga), в отличии от того немногого что здесь писали про ПЛК и автоматизацию и куч мусора про «умный дом». Я бы поставил ей за это +, если бы мог, но просто отметил в избранное. Про реализацию кода ПО — отдельный разговор: да, там есть всего 1 потенциальный косяк(в коде приема команд с линии) и неуниверсальность+избыточность кода(развернутый стиль программирования), что не очень большой грех — текст читается последовательно и очень легко, без отвлекающих скачков и прыжков куда-то там, в нужном месте можно внимательно вчитатся и тщательно сверить конкретные «шифры» команды по таблице. Если хотите: что-то типа типичных тупых, нудных, скучных, длиннющих портянок релейно-контактных схем/диаграмм. Здесь главное не эстетика говнокодирования, что-то «умное», модное, «правильное», а важна скурпулезная точность в каждой небольшой локальной ветке незамысловатого кода для одного выхода/входа.
-1
текст читается последовательно и очень легко
Ничего подобного. Я его, например, так и не прочитал — кашу из перемешанных разнородных задач, раскопипащенных по 200-строчной функции читать сложно. Разыскивать, какой циферкой различаются эти однотипные ветки — тоже задача веселая. Все общее должно быть вынесено за скобки и внятно поименовано, задачи должны быть разделены — сперва приняли, затем декодировали, затем обработали и уже после этого ответили. А не все кучей. Что происходит — также неясно, нужно или изучать комментарии (если есть), или разбирать с даташитом — нормальный же код самокомментируется. По читаемости получается примерно как дизассемблированный .hex.
В целом, нормальный код читается так же, как статья, без разборки по строчкам и буковкам.
+2
Там case — видишь case с простыми и конкретными ветками x=?, ищещь ветку с нужным кодом, в ветке 10-20 строк, читаешь их, все. Что еще надо? О чем ты здесь пишешь?
0
case не нужен.
И да, функция могла бы быть в 10 раз короче и в 100 раз понятней и поддерживаемей. Примерно это и надо.
+2
Ну это ты так думаешь, case еще никто не отменял(в отличии от goto), в автоматике любят case — дешево, сердито, понятно и надежно.

В ПЛК выполняется тупой цикл из 3-х стадий:
1. чтение входов
2. получение по алгоритмам новых значений внутр.переменных состояния
3. запись в выходы переменных состояния, если необходимо

В виде функций или макросов представляют только общие примитивы, например: инверсия сигнала, логич.И над сигналами, сложение 2-х сигналов, интегрирование сигнала, ПИД-регулятор и т.п.

Для каждой переменной состояния свой персональный алгоритм(это ее СУТЬ и здесь прерогатива локального кода), и даже если есть совершенно одинаковые алгоритмы для нескольких переменных их не надо оттуда выковыривать и оформлять отдельной функцией, т.к. алгоритм может быть изменен, все должно быть отдельно — персональный алгоритм для этой переменной, если это не стандартный примитив. Этот алгоритм может быть изменен разработчиком или тем, кто сопровождает ПО, если необходимо, персонально для этой переменной.
-1
Ну это ты так думаешь, case еще никто не отменял(в отличии от goto)
В данной функции он не нужен.
В ПЛК выполняется тупой цикл из 3-х стадий:
Логично. Но здесь все эти стадии перемешаны в кучу.
В виде функций или макросов представляют только общие примитивы
Прием данных от модулей и обработка протокола DCON — такие же примитивы. Здесь же они раскопипащены и перемешаны с собственно логикой. Это зло. Всегда.
т.к. алгоритм может быть изменен
После чего начинается веселуха с копипастом изменений по всем ветвям. Одну забыли — привет, глюки.
+1
После чего начинается веселуха с копипастом изменений по всем ветвям. Одну забыли — привет, глюки.
Ничего не начинается — когда работаем с кодом локального алгоритма переменной — можем менять его тут же как надо в данной ситуации. Глюки начнутся, когда одинаковый код нескольких переменных засунули в функцию, а здесь надо вдруг немного кое-что добавить в алгоритм одной из переменных — начинает вставляться в функцию говнокод проверок для какой переменной надо не так, затем еще в одной чуть-чуть не так и т.д.

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

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

P.S. Посмотри «релейные схемы» — такая идеология «портянок» идет оттуда.
-1
 Посмотри «релейные схемы» 
Язык релейно-контктной логики — это очень специфический язык, который был создан для того, чтобы снизить порог вхождения в программирование для специалистов, которые далеки от этого самого программирования. Он выполняет свои задачи, он прост и нагляден. Но на этом его плюсы, имхо, заканчиваются. Поэтому нет смысла приводить его в качестве примера «идеального» ЯП. Поэтому, «портянки» копипаста в релейной логике — это вынужденная мера, но ни как не достоинство.

А вот Вам, с такой любовью к копиисту, я бы советовал ознакомится с идеологией и историей «структурного программирования».
+1
Я писал про такое необычное на первый взгляд дублирование кода, имея в виду специфику ПО для автоматики.

Есть длинный конвеер, через каждые 10 метров стоит ящик с реле и т.п. Сегодня, завтра, в следующем месяце в каком-то ящике надо изменить функционал(алгоритм) — приходит мастер, подкрутит потенциометры, перекинет проводки/перемычки, вставит/уберет стандартный блочок(примитив) именно в этом ящике. В ящике нет некоего другого ящичка, который комплектуют и настраивают в другом цехе, куда надо идти и уже там переделывать его, вспоминая: а в каких еще других ящиках он стоит и не нарушит ли это работу других ящиков.
0
В ящике нет некоего другого ящичка, который комплектуют и настраивают в другом цехе, куда надо идти и уже там переделывать его, вспоминая: а в каких еще других ящиках он стоит и не нарушит ли это работу других ящиков.
Это общая проблема языков программирования, куда более остро стоящая в более крупные (по codebase) проектах, и именно оттуда, как приемы борьбы с этой проблемой и пришли запреты на копипаст и все остальное, что я критикую в коде Papandopala. С таким кодом проблема нарушения работы других ящиков вылезет куда быстрее, чем с правильно спроектированным.
+1
Вы привели отличный пример задачи, которая решается наследованием — пишем базовый класс, реализующий общую для всех функциональность, затем в «конкретном ящике» наследуем базовый класс, котором перекрываем ровно те части, которые специфичны именно для него, никак не затрагивая остальные.
Вторая задача, которую вы не упомянули, но которая при таком подходе обязательно возникнет: нашли проблему в блочке, который стоит во всех без исключения ящиках. Теперь понадобится пройтись по всем ящикам и заменить дефектный блочок на правильный. С теми ящиками, которые на виду, все более-менее просто (хотя и геморно). Но пара ящиков валяется где-то в кладовке, в зипе. Поменяют ли там блочок или нет — вопрос темный. Когда вам понадобится ящик из зипа, вам придется проверить, что там стоит правильный блочок. Это хорошо, если вы помните, что он там стоит и что его меняли, а если нет?
Упомянутым выше способом (наследованием) эта задача тоже решается — правим базовый класс и все, кто им пользуется или его наследует поправятся автоматом. Те, кто раньше перекрывал дефектную функциональность — продолжат работать как ни в чем не бывало.

Еще одно замечание (для тех, кто в теме): наследование приведено в качестве одного из возможных вариантов, вместо него не менее хорошо работает агрегатирование.
+1
Чем спорить — лучше просто посмотри сколько мест в коде Papandopala нужно править (причем копипастом), чтобы добавить поддержку CRCв протоколе. А если одно забыть — соответствующий контроллер перестанет работать.
надо вдруг немного кое-что добавить в алгоритм одной из переменных — начинает вставляться в функцию говнокод проверок для какой переменной надо не так, затем еще в одной чуть-чуть не так и т.д.
Эта задача прекрасно решается без портянок копипаста (и куда лучше, чем с ними, притом). Ключ всего лишь в правильной декомпозиции и проектировании программы. Если начали лепить костыли вроде «вставляться в функцию говнокод проверок для какой переменной надо не так» — это такое же уродство, как копипаст.
2-е, код переменной локален и мы его видим прямо и здесь
Кроме «кода переменной» там куча мусора вроде распарсивания протокола. Это — говнокод.
P.S. Посмотри «релейные схемы» — такая идеология «портянок» идет оттуда.
Ты еще бейсик вспомни с его goto и скажи, что goto надо повсеместно применять.
+1
есть всего 1 потенциальный косяк

Звучит как «всего одно ножевое ранение». :) А один потенциальный косяк это, по вашему мнению, мало? Какое тогда количество проблемных мест в коде является критичным?

Да и фиг с ним, с этим косяком. Мы все делам ошибки, и ничего с этим не сделаешь. Меня больше удивляет — почему автор просто не исправил свою ошибку. Вместо этого он убрал и статьи проблемный код и запретил комментарии.
+2
Мы же не знаем, может он уже исправил код. Много ругали, но никто, кстати, так и не предложил там свой красивый код безопасной сериализации данных(команд) при приеме с линии. Мне было бы интересно увидеть такой код.

Говорили что-то о быстром переназначении входов без перепрошивки MCU и только один предложил свой код, но он только для красоты/удобства оформления кода — перепрошивать все равно надо будет. И как это переназначение входов сделать — неведомо никому, в любом случае покодировать прийдется очень-очень много, и в какой энергонез.памяти хранить эту таблицу — проще просто перекинуть проводки на модуле ввода-вывода.
-1
Мы же не знаем, может он уже исправил код.

Может и исправил, но судя по реакции автора — я сомневаюсь. Для начала, нужно признать наличие проблемы, а у него «все и так работает».

Много ругали, но никто, кстати, так и не предложил там свой красивый код


Дык автор сам говорил, что модули поддерживаю CRC и для чего нужна эта контрольная сумма. Достаточно просто реализовать поддержку CRC и сконфигурировать соответствующим образом модули. Или Вы хотите, чтобы кто-то предоставил автору готовый код?
+2
Уважаемые. Сказать есть что, но давайте не будем засирать чужой пост. Там вон третья часть есть для срача :)
+1
Так он опять комменты запретит)
-1
какой только херни не придумают
советую просто перестать жрать трупы дохлых животных и всякий кал из магазина
через год нормальной еды у нормального человека гавно не имеет никакого запаха
проверено мной
-3
Что еще посоветуете пользователям эмбеддерского ресурса? Может быть как правильно голосовать на выборах? Или про религию давайте поговорим?
Автор молодец — поделился своей рабочей конструкцией.
+4
советую нормально и просто жить, а не плодить сущности на кремниевых мозгах
-1
свое говно не пахнет? Да, Калыч?
+2
Я задумался на тему «LED as Light-Level Sensor», в задумчивом трансе вижу мелькнул знакомый ник kalobyte, но только сейчас до меня дошло, что тема то с говном связана!
+1
не повериш, но и свое воняет
в свое время я срал в противогазе, у меня тогда еще был унитаз с полочкой
освежитель у меня тоже был, но мне и в голову не приходило, что можно им пшикать автоматически
0
определенно прав… но праздники всю систему портят :)
0
Наверное, все знают, а всё же расскажу анекдот:
— Новый русский: Доктор, скажите, ну что за х… ня: поем красной икры — сру красной икрой, поем чёрной икры — сру чёрной икрой. Доктор, в чём дело, у меня несварение? Что мне делать?
— Доктор: Всё нормально, голубчик, просто кушайте, что все нормальные люди кушают — говно!
0
Ник из той же истории возник? (Просто спросил (с))
+1
мне вот тоже интересно всегда было откуда такое созвучие)
0
А почему решено на включение света пшикать? На выключение, причем только тогда, когда свет светил дольше определенного времени, логичнее.
+1
Поддерживаю! Лучше уж заходить в задолго обрызганный туалет, чем в только что пробрызганный.
Представляю ситуацию, залетаешь в туалет, такой весь из себя, уже не знаешь как еще терпеть, а тут на тебя с бачка вражеский танк глазом моргает, мол «Вали отсюда! Газы!» А тебе то деваться некуда, получаешь этими газами себе в спину… ну или «приятный дождичек» из мирокапель этого освежителя себе на голову. Романтика!))))
+1
поэтому и советуют производители подвешивать устройство на высоту не ниже 2 метров. вот думаю надо бипер добавить, для предупреждения, или двигателем пошуметь, перед основным пшиком, а то в тишине у аппарата какой то характерный неприятный скрежет.
0
попробую добавить этот вариант, если памяти хватит.
0
странно, что никто еще не сказал, но может ?
0
0
может. тоже удивился
0
аааа! как тут слово «кат» написать то ?)))
0
дак так и писать. должны понять наверно )
-1
Ну, автор так и не понял о чем вы тут…

Топикстартер, поставьте тег cut пожалуйста где-нибудь после введения.
0
можно вместо истерик в комментах просто написать аффтару гневное приватное послание
+1
вкус не тот
0
Ха! Кто-то заминусовал все посты))) Кто такой умный? Если он это читает, пусть знает, что если в комментарии написать слово «cut» в треугольных скобках, то его просто не будет видно) Я этого не знал…
0
<cut>

Основы HTML знать полезно, если живёшь в инете не реад-онли =)
+1
«если живешь в интернетене реад-онли» не на одном лишь сайте, то полезно знать, что каждый сайт по своему интерпретирует текст. И основная масса замещает угловые скобки и прочие спец-символы самостоятельно, что делается для удобства использоания и в качестве защиты от «хаккеров».
0
Безусловно, но если уже один раз тег съело, можно и догадаться, что "<" экранировать надо =)
И да, предпросмотр рулит =) Особенно у учётом запрета на редактирование комментов.
+1
Этот тоже. Только не тогда, когда в тексте встречается валидный тег его собственной разметки — он интерпретируется.
0
Да я в соседней ветке про умный дом был занят, не обратил внимания на этот пост :)
0
В чем рисовались плата и схема?
0
Altium Designer 13
0
Хотел бы намекнуть, если тема о ароматизаторе, можно поменьше срача в комментах… причем не относящихся к теме.
+1
Чтобы было обсуждение по теме — нужен объект обсуждения. Почему бы тебе не выложить исходники?
0
вот это предметный разговор.
Source
0
Хм, это уже другая версия. И не хватает .h файла.
0
0
— Месье, ну и как Вам наше рагу?
— Вы мне дали не то блюдо, что я пробовал у вас вчера, где меню!
— Мы испугались и сделали сегодня немного более поджаристым…
-1
Раз мы осуждены на то, чтоб есть, будем есть хорошо.
0
исходник показан, а результатов 0? это вполне логическое обоснование… :) по поводу оптимизации, может есть рекомендации, наставления?
0
Я его пока еще не курил. Только попытался найти кусок, соответствующий заинтересовавшей меня части кекса, но с полпинка не нашел.
0
Я готов поделиться «секретами»
0
Уже внесены пожелания, срабатывает на выключение света, если в помещении находились не менее 3 минут. а дальше как обычно таймер основной от выбранного режима
0
Для тех, у кого есть «индивидуальный прибор учёта», а проще говоря счетчик воды, можно подключить счетчик на вход пшикалке и обучить её брызгать только если пока горел свет, был ещё и расход воды определенный. Для тех, у кого санузел совмещенный, это будет полезно.
0
Кажется вы слишком мудрите.
0
Подскажите чем открыть эти гереберы? Кучу перебрал вьюверов — все на что-то ругаются. Я пользуюсь EAgleCad может под него есть печатка?
0
Altium Designer 13 для CAM, но герберы стандартны. вот онлайн вьювер www.gerber-viewer.com/
0
в pdf есть и зеркало для лутаб и обычный вид под пленку
0
Спасибою В пдф видел. Никогда не пробовал из пдф делать — масштаб слетит? Я обычно из орла в coreldraw а там уже играюсь с ними.
0
Да вы мазохист, батенька… так хитро печатать. Честно с альтиумом такие перлы не нужны. Формировать можешь любые отчеты. Какие форматы понимает игл? Попробую экспортировать, знаю есть макросы, для перевода схем и плат из игла в альтиум, но наоборот не встречал.

У меня и лазер и струйник, еще ни разу не подводили.
Как бы все размеры учтены. С adobe reader ты можешь тоже масштаб менять, ну и макетку никто не отменял.
0
мне даже не столько наверное смотреть как экспортить в вектор.
0
можно просто в постскрипт (PS) а он легко кушается corel. PDF вашу загрузил в фотошоп — открылась успешно но размерчик явно раза в 2 -3 больше реального наверное с dpi надо играться.
0
вот нашел конвертер, перевел в Орла, вроде открывается, но за баги не отвечаю.
заодно сделал pdf в пропорции 1:1.
EAGLE
PDF
0
класс, спасибо. Орел полетел-)
0
Вот тоже такой же модифицировал, правда по другому, и через блок питания заодно запитал.

Зачем отдельную плату мутить, когда в корпус спокойно влезает тинька на панельке с обвесом, включая электролит?
Подключиться можно на родной плате к R7 — для включения мотора, и к D3 — светодиод для индикации.
Включения нулевым уровнем.
0
Прочитал заголовок как Перделка. Глядя на картинку, даже не усомнился
+2
Не могу понять — включается нормально. Один раз пшикает и программирование работает но после этого как зависает. Не реагирует на кнопку — светодиод не горит и не мигает. Может как-то фьюзы надо было по другому прошить?
0
Какая тинька у тебя?
режимы экономичности для тинек 13А и 13(старые) немного различаются. лучше брать новый чип.
Надеюсь ты прошил и ЕЕПРОМ тоже после обычной прошивки.
фьюзы — меняем только частоту на 4.8Мг.(даже если не менять, скорость работы увеличится в 2 раза, т.е мигать должен раз в 2.5 секунды, часовой таймер будет получасовым и т.д.) в исходниках все подробно описано.
0
он как бы зависает если нажать ручной пшик, если кнопку не жмем то работает — помигивает светодиодик
0
не забудь конденсатор повесить на двигатель. без него от ротора идут страшные наводки. можно любой: тантал, керамику, электролит.
0
все сделал повторно сегодня — залил еепром и фьюзы прошил. Может слабые батарейки — проверю сегодня. Даже тиньку поменял. Результат не изменился-(
0
прошивку надеюсь из папки Release брал? или Отладочную из Debug?
для Отладки соответсвенно все определения для задержек минимальные-поэтому и моргает часто...
0
Конечно из папки Release. Fuse проверил — все верно. Мигает диод раз в 5 секунд — все нормально. и похоже на то, что работает пока не нажмеш кнопку -п осле нажатия кнопки действия выполняет — или пшик или программирование и потом зависон. Тинька13а. Может дадите однозначно верные hex и eep файлы. Помехи от мотора исключаю — так как проблема имеет место быть и при откинутом резисторе R3. Он пока не нажать кнопку работает вроде как — сейчас положил рядом подожду часового цикла. Если после пшика не зависнет — тогда точно проблема не в помехах от мотора
0
зависаний нет, могу видео приложить — 10 экземпляров сделал, все работают.
прошивка и исходники у тебя есть, можешь перекомпилировать.
по поводу кода, код отлажен, рабочий, алгоритм самый простой… если зависает попробуй reset подтянуть через резистор к питанию. после R3 подключи LED для контроля, без полевика.
0
0
перекомпиливоал а вот ресет на землю — это идея!-))
0
то есть к питанию подтянуть ресет…
0
Кстати, бросать ресет без подтяжки само по себе не самое лучшее решение (даже если производитель говорит, что можно). Я на такое наступал и с атмегами и с стм-ками.
0
резик не помог...http://www.youtube.com/watch?v=rB2_kBxp0Hs вот видео работы точней глюка
0
я как-то наступил на грабли с хмеga когда на ресет висела емкость… он не програмировался через pdi интерфейс… хотя в даташите она была…
0
Такое подозрение что нет возврата из прерывания — прерывание по нажатию кнопки отрабатывается. И работает он — чувствует освещенность и срабатывает по заданному алгоритму — пшикаем если свет горел больше 3 мин после выключения. Но любая операция с кнопкой уводит девайс в никуда. Кто-то еще делал девайсик и прошивал приложенными исходниками? То я уже с ума схожу-)))))))))))
0
вот шайтан…
тут по любому собака просыпается каждые 4 секунды. и мигание обязано быть…
Video

попробуй собрать не нативным компилятором а старым добрым, WinAvr20100110.
хотя у меня чистая 6.1 и проблем нет.
0
может и вправду батарейки подсели?
паралельно батарейкам воткни кондер на 20-40uf.
либо после нагрузки напряжение просядает, хотя 13а и от 1.8В работает.
даешь осцилограммы в студию с 5 ноги (PB0) и VCC.
0
Какая собака? нет там ее. (скачал проект из шапки, посмотрел… да уж.......)
0
www.youtube.com/watch?v=JXVrDdmokOM

Да Уж..

WDTCR = (1<<WDTIE)|(1<<WDCE)|(1<<WDP3)|(0<<WDP2)|(0<<WDP1)|(0<<WDP0);
	
0
не правильно, да и где перед этим WDTCR |= (1<<WDCE) | (1<<WDE);

1. In the same operation, write a logic one to the Watchdog change enable bit (WDCE)
and WDE. A logic one must be written to WDE regardless of the previous value of the
WDE bit.
2. Within the next four clock cycles, write the WDE and Watchdog prescaler bits (WDP) as
desired, but with the WDCE bit cleared. This must be done in one operation.
+1
спасибо, действительно пропустил.
прошу перепроверить
pastebin.com/JLT2Gf7a
0
Емкость висит-). Плиз на мыло ra8@rr.com.ua скиньте hex и eep файлики. Осциллграмму не смогу дать по причине отсутствия девайса-)
0
С мотором не связано он то пшикает по датчику света и виснет даже после программирования когда мотор не задействован
0
и все таки она виснет…
любое нажатие на кнопку в конце концов ведет к зависанию
тема старая, видимо придется самому исходники мучать
0
Смотрите мои переделки освежителя — они не виснут.
0
какие переделки?
я взял прикрепленную версию прошивки или где то есть более свежая?
0
я про свои, зайдите в мои публикации.
0
ну вы задачку задали, там выше хаотичная по хронологии переписка
буду признателен за конкретный линк
0
«Публикации», а не «комментарии».
Исходники правда все равно «мучить» придется. Ну или схему менять.
1. we.easyelectronics.ru/upgrade-repair/dorabotka-na-avr-avtomaticheskogo-osvezhitelya-vozduha-air-wick-freshmatic.html
2. we.easyelectronics.ru/vad7/esche-odin-osvezhitel-vozduha-airwick.html
0
собрал устройство, прошил прошивку из вложения. Так же как и у многих зависает после нажатия кнопки. Скомпилировал прошивку из исходника в сообщении от 12 июня 2013, 18:34. Прошил — пока работает.
0
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.