Коллеги, приветствую! Соорудил я фотореле, спаял, но работает оно не всегда так, как я хочу.
По задумке алгоритм работы такой: 1) на аналоговом входе attiny13 висит фоторезистор, подтянутый к земле резистором на 10 ком. При падении освещённости на нём увеличивается сопротивление, уменьшая показания analogRead(1) 2) на четвёртом пине через сопротивление 3 кома висит база мосфета. По команде с микроконтроллера на этот пин подаётся высокий уровень, который открывает транзистор. 3) в цепь коллектора включен одноваттный светодиод через lm317 в режиме регулятора тока. Транзистор открывается, ток начинает бежать, зажигается светодиод.
Что же происходит на самом деле? Иногда всё работает именно так, как задумано. Закрываю фоторезистор - светодиод зажигается, горит нормально, ничего не греется, всё шикарно. А иногда сразу при подаче питающего напряжения светодиод зажигается очень ярко, словно напрямую от БП. Если при этом на фоторезистор светить, то светодиод начинает гореть менее ярко - и чем меньше сопротивление фоторезистора (на него попадает больше света), тем менее ярко горит светодиод. Хотя такое поведение не заложено в микруху - там вообще всё, что есть, это: if (analogRead(1) < 400) { digitalWrite (4, HIGH); }
if (analogRead(1) > 500) { digitalWrite (4, LOW); } Периоды "нормальной" и "ненормальной" работы чередуются совершенно рандомно, но в "ненормальный" режим схема может войти из "нормального" в процессе работы, а наоборот - только через снятие питания. Пробовал два питания - один 12v импульсник, второй 3 батарейки АА - 4.5v. Никакой разницы нет, только что от батареек можно почти полностью погасить светодиод, подавая много света на фоторезистор, а от 12 вольт свечение просто уменьшается на какую-то величину.
Опытные товарищи, подскажите - где я действую неправильно?
Прикладываю схему. Уж простите за корявость изображения.
А иногда сразу при подаче питающего напряжения светодиод зажигается очень ярко, словно напрямую от БП.
С яркостью немного не понятно (может имеет место возбуждение LM317 ), а вот подтянуть выв.1 (Reset) к +5В. через резистор 4,7...10кОм. было бы не лишним.
_________________ Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. Всегда с уважением, Александр.
1. Про подтяжку Reset полностью поддерживаю 2. В аномальном режиме снять карту напряжений в контрольных точках (питание, входы / выходы). И конечно, осциллограф не помешает. 3. Залить к контроллер программу, которая только гасит светодиод и останавливается. И повключать на предмет входа системы в аномальный режим. 4. Повесить на свободный пин светодиодик с резистором, и включить в программу его мигание, например. (Так можно узнать, что программа выполняется и ничего не зависло)
0) LM-ку поменяю, их есть у меня. Может она с браком? Я её случайно подогрел как-то...
1) Ресет подтяну, это не проблема. Правда я никогда раньше это не делал, но для того, чтобы исключить в этом случае, сделаю.
2) Напряжения сниму. Полагаю, что надо проверить напряжение питания микрухи, базы транзистора, на входе и выходе lm-ки (но там, вроде, должно быть питающее?). Поменяю резистор 5 ом на регулировочной ноге lm-ки. Где ещё чего померить?
3) Попробую!
4) Да, отличная мысль! Я заливал программу, которая просто мигала этим ярким диодом и программа без проблем отработала с полчаса. Мне хотелось проверить - ничего ли не греется, нигде ли никаких косяков не вылезет. Надо сказать, что тогда платка питалась от программатора, напряжение подавалось только на 8 и 4 ногу атмеги (VCC и GND), однако светодиод почему-то горел! И вот мне интересно - а как напряжение попадало на вход lm-ки? Неужели, это возможно через стабилизатор??? Я ещё прицеплю к сообщению рисунок печатки, может быть я где чего развёл неправильно? Только прошу обратить внимание, что контроллер установлен головой вниз, а лишние контакты насверлены для заливки прошивки - в них ничего не воткнуто. Также относительно схемы я на печатке изменил ножку, к которой подключена база транзистора - так оказалось удобнее разводить.
Программа полностью: void setup() { pinMode(4, OUTPUT); }
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Ну и кошмар... Судя по тексту прожки весьма на ардуиновскую смахивает... и то... только включить/выключить... плюс ошибки... Только ардуина вроде ниже чем для тини45/85 не попадалась... и независимый файл для автономной заливки (без бутлоадера и самой IDE) не выполняет... Уж как говорится - признание требуется на чем пишем и чем прошиваем...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Ардуине - ардуиново, а самостоятельную схемотехнику извольте или на АВРкином Си или под ассемблером писать! Хотя бы в той же АВР студио.
Где Вы там платку с аттини13 наблюдали? А раз оной не указано, значит скетч делался для того типа платы(и установленного на ней МК) , которая во вкладке "инструменты" у Вас в IDE указана.
korob, metan, вчера пришлось по работе мчаться в другой город за платой для принтера. Сломалась, собака, уже в третий раз Но вот сегодня утром начал промерять напряжения и обнаружил, что на контроллер ничего не подаётся. Перехватил плату по-другому - подаётся. Прозвонил землю - то есть, то нету. Хорошенько пропаял ещё разок, всё заработало как надо. Теперь буду наблюдать, надеюсь, что проблем не будет.
BOB51, простите, но Вас очень сложно понять. Точки, смайлики.
- ошибки в схеме? Если не сложно, то подскажите, где - я в схемотехнике не силён, да и вообще радио - это моё хобби, а не работа. Я тут ни в чём не силён Или ошибки в программе? Мне кажется, что тут ошибаться даже негде. Но может быть, я чего-то не учёл?
Только ардуина вроде ниже чем для тини45/85 не попадалась... и независимый файл для автономной заливки (без бутлоадера и самой IDE) не выполняет... Где Вы там платку с аттини13 наблюдали?
У меня не ардуина, а голый микроконтроллер attiny13. Я там приложил печатку, на ней всё видно. Вот такой МК:
извольте или на АВРкином Си или под ассемблером писать
Я не умею, к сожалению. Научиться можно, но пока до сих пор не понадобилось. Ардуино иде полностью устраивает, для моих скромных нужд её хватает за глаза.
Имелось, что раз плат таких нет, то и ИДЕ их имеет право не поддерживать, а если в ИДЕ поставить не тот целевой контроллер (без разницы в арду он или самостоятельно), т.е. "обмануть" её то могут не совпасть и некоторые параметры (размеры памяти, адреса регистров) и если с размерами ещё может прокатит, то адреса - уже серьёзней: ИДЕ (и ты) думает что настраивает первый таймер, а в тиньке регистр с этим номером отвечает, например, за прерывания.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
R9OCN Если уж связался с ардуино - извольтес соблюдать правила работы с данной IDE. Система скомпилирует работоспособный код исключительно для тех платок (не МК, а именно платок в сборе!), которые указанны в списках поддерживаемого оборудования (на установленной у Вас версии IDE). Для иного применения ардуино IDE НЕ ПРЕДНАЗНАЧЕНО. Есть еще возможность квалифицированному специалисту создать собственную плату-прототип с помощью дополнительного программного обеспечения - но тот вариант НЕ ДЛЯ НАЧИНАЮЩЕГО. Как вариант для уже имевшего дело с самодельным творчеством - создание собственной платки своими силами (атмега8/168/328) на основе уже имеющихся в списках поддерживаемого модулей. Просто влом покупать - спаял сам согласно имеющейся схемы. НО... там и затраты времени и суммарный расход денюжки будет минимум "на паритете". Судя по Вашей начальной подготовке эти два способа есть нереальные. Посему покупаем минимально затратную ардуино нано (с USB портом на борту) и работаем с той платкой как с самостоятельным устройством ("черный ящик с выводами"). Для начала советую скачать и изучить материал по имеющейсяв этом посту ссылке: viewtopic.php?p=3054159#p3054159 ну а потом ... на совместно пережевывание сюда: viewtopic.php?p=3177870#p3177870 поскольку пока также в "стадии освоения" данной разновидности элементной базы...
Имелось, что раз плат таких нет, то и ИДЕ их имеет право не поддерживать, а если в ИДЕ поставить не тот целевой контроллер (без разницы в арду он или самостоятельно), т.е. "обмануть" её то могут не совпасть и некоторые параметры (размеры памяти, адреса регистров) и если с размерами ещё может прокатит, то адреса - уже серьёзней: ИДЕ (и ты) думает что настраивает первый таймер, а в тиньке регистр с этим номером отвечает, например, за прерывания.
Не, ну я не настолько безголовый, чтобы выставить в настройках ide arfuino uno, а прошивать 13 тиню Существует не один способ писать для аттини и прошивать их. Я пользовался, вероятнее всего, этим: https://geektimes.ru/post/254970/ Очень удобно и просто - не нужен программатор, можно оттачивать работу программы на ардуине, а потом переносить на тиню и всё будет работать так же, как работало на ардуине. Нужно только помнить о размере кода и о том, что в core13 реализованы не все функции ide. Однако их можно и обойти. Чем мне нравится тиня - так это размером, энергопотреблением и возможностью программирования из ардуины. Нам, начинающим дилетантам, это очень импонирует За последние пару лет я прошил не менее полсотни тинек, которые работают в составе разных устройств - выключателей света по звуку и движению, имитаторов сигнализации (работает автономно от 3 АА по году и более) и вот сейчас начну прошивать для этого фонарика. Фонарик этот будет использоваться в подсветке адресных табличек, которые изготавливает моя контора, их тоже будет достаточно много. Вот в таких табличках: Сейчас мы ставим светодиодную лампу, которая включается либо от выключателя, либо от внешнего датчика света. Однако, этот способ имеет пару существенных недостатков - людям не очень нравится получать продукт, к которому нужно что-то докупать, но это не главное. Главное - это 220 вольт, подходящие к табличке, которая висит на улице, что не является безопасным!
R9OCN Система скомпилирует работоспособный код исключительно для тех платок (не МК, а именно платок в сборе!),
Позволю себе не согласиться. Кроме тинек я прошивал и меги, в частности atmega168, которые также используются во многих устройствах - пультах ДУ, термометрах и даже в ламинаторах. Всё это функционирует совершенно исправно в течение длительного времени.
Вот тут вот у меня есть немножко фоток. Качество фигня - в основном на телефон снимал. Ламинатор, работает на атмеге 168: В нём вообще полностью заменена плата, изготовлена новая панель с экраном и индикацией, добавлены режимы - работа от пульта ДУ, звуковая сигнализация о нагреве, отсрочка выключения (их нельзя выключать сразу, нужно сгначала отключать нагрев и несколько минут погонять вхолостую).
Термометр, тоже на меге: к сожалению, не могу найти его фотографии в корпусе.
Фотозвукореле, на тиньке: Тут ещё первая версия, на готовых модулях реле. Потом я добавил реле прямо на плату. Стало надёжнее и компактнее. Их было сделано много:
Так что лично я не вижу ничего плохого в том, что я прошиваю микрухи из ардуины. Может всё это не по феншую, но работает стабильно.
Добавлено after 1 hour 12 minutes 44 seconds: Снял кино про то, как работает фонарик. Прошу прощения за состояние платы - в поисках неисправности некоторые детали я выпаивал несколько раз.
atmega186 входит в состав поддерживаемых МК - и под вариантами arduino nano, pro micro, NG и многих других. Может использоваться как в составе платок, так и самостоятельно (с излишними затратами на монтаж/изготовление). По ресурсам к ней наиболее близко подходят атмега8 и аттини85 (обе должны присутствовать в расширенной версии). То, что Вы указали - один из методов добавления в базовый набор платформы собственной разработки. Как вариант возможно вполне работоспособный... Надо проверять однако...
Однако для такого кристалла как ATtiny13 ставить бутлоадер и сверх него то, что компилятор IDE выложит... Есть садомазохизм над автором проекта и садизм над МК (в отношении ресурсов МК и потребностей компилятора).
И уж если такой опыт имеется - почему классические ошибки в тексте прожки?
Классическая структура у ардуинок - внутренний бутлоадер, запускаемый при включении питания (1-2 секунды). А уже он (если в течении заданного времени обнаружил соответствующий запрос) загружает полученный программный код (ну и часть ресурсов "по умолчанию" для обеспечения функционала также отбирается). Вероятность обхода такого решения вполне возможна... Однако для типового проекта не имеет особого значения (при ПЗУ в 8 килобайт и выше затраты в 1 килобайт не существенны, а кроссплатформенность подразумевает уход от приемов прямого управления аппаратной периферией). Иное дело "прикладушки" - там каждый байт на счету. Ессно надо и схемотехникой владеть и ассемблер/Си для конкретного семейства на весьма хорошем уровне знать. В принципе ардуина - модуль абстрактной обработки между прикладными устройствами и ПК/сетевыми приложениями. Использование в устройствах реального времени непосредственно в режимах "примитивного дрыголапа" либо специфических программных трюков/тонкой работы с аппаратной периферией крайне нерационально. Но тут уже кому чего интересно.
Насчет ошибки - непривычное представление... надо как-нибудь попробовать аналогию на своем макете... ...
Нашёл в интернете фразу: "Но как быть если мы хотим использовать отдельно купленные контроллеры ATmega328 на плате Ардуино? Для этого необходимо загрузить в контроллер загрузчик Arduino — Bootloader.." Так я не собираюсь использовать контроллер на плате ардуино. Короче тут надо выяснять у взрослых, зачем и кому это надо. Мне как-то не требовалось.
Ресурсы тиньки? Ёлы-палы, нашли чего жалеть! Она стоит 16-17 рублей! Не каждый транзистор дешевле. Пуст себе сидит и замеряет напряжение. Поди не сильно устанет.
С ошибкой всё равно непонятно. Попробую сам подумать. Может быть Вы имеете в виду, что следовало использовать else для более удобного чтения программы? Типа:
Но в таком случае в сумерках лампочка будет делать вкл-выкл много раз прежде, чем включиться или выключиться окончательно. Нужен, как говорят умные люди, гистерезис. Для меня проще два условия поставить и всё тут. Если я правильно понял суть своей ошибки. Если нет, то тогда сдаюсь
Я не слишком знаток нюансов Си... посему прямой контроль результата функции как-то настораживает... Хотя... Возможно и пройдет. Помимо прочего начальный статус выходного сигнала не определен. Все же цеплять МК всего-то ради "сумеречного выключателя" вида замкнут/разомкнут.... феее...
Как я понял из статьи функционал начального загрузчика в случае с тинькой выполняет внешняя платка-эмулятор. Вполне пригодно для потребления... Но привычнее таки старые-добрые методы.
Я не слишком знаток нюансов Си... посему прямой контроль результата функции как-то настораживает... Хотя... Возможно и пройдет. Помимо прочего начальный статус выходного сигнала не определен. Все же цеплять МК всего-то ради "сумеречного выключателя" вида замкнут/разомкнут.... феее...
1) частота работы тиньки в моём случае 1.2 мегагерца. Никакой разницы, в каком начальном состоянии находится выход, нет. Пусть он будет включен, пусть выключен. Транзистор не успеет открыться, лм-ка не успеет подать ток на светодиод, который не успеет зажечься, если на улице светло, а изначально выход в высоком состоянии.
2) да, поначалу я тоже так подумал. Поискал аналоговые схемы и понял несколько вещей. Аналоговые схемы зависят от напряжения. Будет напряжение пониже - лампочка будет включаться только в полной темноте. Побольше - подсветка включится днём. Значит, нам надо будет подавать стабилизированное напряжение на схему, а стабилизированный блок питания стоит в два-три раза дороже простого. Значит стабилизатор всё равно надо применять в схеме, т.е. цепь питания для микросхемы уже есть. А как мы будем делать так, чтобы транзистор открывался не потихоньку-помаленьку, а сразу? Ну вот как на видео, которое я снял - там светодиод просто ВКЛ-ВЫКЛ, без плавного включения. Это здесь без разницы - закрыл фоторезистор - загорелось, открыл - потухло. А в реальных условиях эксплуатации не будет такого. В сумерках он будет зажигаться потихоньку и только с наступлением темноты будет гореть в полную силу. Некрасиво. Опять усложнение схемы. А я же любитель, начинающий, я ничего сложного не умею - воткнул микруху за 17 рублей и пущай работает.
Я не слишком знаток нюансов Си... посему прямой контроль результата функции как-то настораживает... Хотя... Возможно и пройдет.
Цитата:
if (analogRead(1) < 400)
Этот, что ли? Если его компилял нормальный компилятор, то будет работать. Не знаю, что там в ардуинных IDE - настоящему коту допустимо связываться только с ардуинским железом, софт же он может писать только на нормальном языке, и никаких ардуинских сред и скетчупов.
_________________ ВНИМАНИЕ! Я часто редактирую свои сообщения, поэтому перед ответом мне советую обновить страницу. За перенос модераторами в МЯВУ тем с моими сообщениями я ответственности не несу.
Вот ещё. Когда делал фотозвукореле, тоже думал - а чё бы не сделать аналоговую схему? И тоже столкнулся с довольно приличными проблемами. В частности не придумал, как сделать так, чтобы лампочка в подъезде включалась стабильно, без нужды громко топать ногами. Но вместе с тем прибор не должен щёлкать релюшкой бесконечно. Пришёл к такому решению: тинька в приборе делает замеры звука каждые 10 миллисекунд и делает таких замеров 10 раз по 10 штук. Затем она находит среднее значение и сохраняет его в памяти. Хранятся результаты 10 таких циклов. Получается, то микросхема хранит в памяти состояние звукового фона вокруг себя за последние 10 секунд. Из него опять же находится среднее и принимается за эталон, с которым затем сравнивается состояние текущего замера. Т.е. самого первого замера - 10 раз по 10 миллисекунд. Если этот замер оказался в некоторое количество раз (задаётся переменным резистором) больше, чем среднее за 10 секунд измерений, то лампочка зажигается.
Экспериментировал с разными аналоговыми схемами, спрашивал у умных людей. В итоге всё равно получалось как в китайских релюшках - либо работают нормально, либо вообще не реагируют ни на что, либо моргают без конца. С тинькой всё стабильно и не зависит ни от напряжения, ни от громкости звука - главное, чтобы звук был громче, чем "тишина".
Схемы и решения разные бывают... Так что "нестабильность питания" это вобщем весьма ... слабое основание для отказа от схемного решения. Поскольку легко устраняется весьма большим количеством способов.
Сейчас этот форум просматривают: Mike-120 и гости: 32
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения