Давно смотрел на схему со слежением за источником света, на операционных усилителях. Но паять и крутить подстроечные резисторы, было лень. Особо ничего нового не изобрел, но может кому, что-то и пригодится.
После экспериментов на esp8266, я просто забил на аналоговый вход, т.к. там такой мусор был в показаниях. Может модуль мне попался не качественный, еще и напряжение надо было ограничивать в 1V.
Вот дошло дело до ESP32. Естественно код писать, тоже лень, хотелось у себя в интерфейсе это делать, с возможностью без перепрошивки менять параметры. Ради статьи и чтоб не пинали, скетч тоже сделал.
Как заливать прошивку, есть много статей. Поэтому этот момент не описываю.
Опишу 2 варианта, оба работают прекрасно.
Первый способ.
Самый простой, что можно купить и сразу спаять.
Нам понадобится
1 блок питания на 5v 700mA ~110руб
ссылка
2 стабилизатор напряжения 3.3v ~100руб.
ссылка
3 модуль ESP32-WROOM 32 или что-то подобное, на практике выяснилось 16Мб самый раз модули прошивку можно большую грузить и для файлов место останется от 200 до 300 руб.
4 сервопривод ~110руб
ссылка
5.2шт. сопротивления 10Ком, выпаял со старых блоков питания
6 2шт. фоторезистора, у меня под рукой были GL5549 (10lux 45~140K 25C), думаю фоторезисторы могут подойти любые. ~80руб за партию
ссылка
7 для прошивки понадобится кабель
ссылка
и провода. Я решил не спаивать все и навесным монтажом все подключил т.к. плата уже давно была спаяна.
Схема проста как барабан
//
int posX = 1; // множитель
int pos = 90; // начальное положение
int sens1 = 32; // вывод для первого светочувствительного резистора
int sens2 = 33; // вывод для второго светочувствительного резистора
int tolerance = 400;
int port_out = 16;
const int freq = 50;//50Гц
int resolution = 16;
void set_pos() {
ledcWrite(port_out, 1638 + 6226/180*(pos/posX));// устанавливаем положение сервомотора
}
void setup() {
pinMode(sens1, INPUT);
pinMode(sens2, INPUT); \
if (ledcAttach(port_out, freq, resolution)) {
set_pos();
}
}
void loop() {
int val1 = analogRead(sens1); // считываем значение первого датчика
int val2 = analogRead(sens2); // считываем значение второго датчика
if(val1 - val2 > tolerance)
pos = --pos;
if(val2 - val1 > tolerance)
pos = ++pos;
if(pos > 180*posX) { pos = 180*posX; } // устанавливаем на 180, если больше этого значения
if(pos < 0) { pos = 0; } // устанавливаем в 0, если меньше этого значения
set_pos();
delay(50);
}
Так повелось давно, использование библиотек, не всегда удобно, они в большинстве своем не рассчитаны на динамическую и параллельную работу. По этому все делаю вручную и код не захламляется и не завишу не от кого. Свои грабли найти проще чем чужие.
Второй способ.
Естественно я с него и начал. Печатные платы заказаны в Китае. Сборка естественно ручная.
На модулях учтены нюансы и добавлены свои хотелки. Т.к. каждый контакт на счету приходится вертеться.
Это сменный модуль.
Заказывал модуль 4Мб флэш, думал в esp8266 хватает и в esp32 хватит. Оказалось маловато т.к. прошивка 1400Мб, а нужно обновление прошивки не по кабелю и файлы хранить где-то. Первым делом впаял 8Мб, но когда расширил возможности и доработал интерфейс, оказалось маловато места для файлов. И при перезаписи файлов начались глюки. В результате впаял 16Мб и забыл про глюки при нехватке места.
Заранее извиняюсь за следующее фото. Плата работает в тестовом режиме и отключать проводки не хочется. А камера фокус на провода все пытается навести.
Это вид сверху, собранной платы.
На борту
— 16ШИМ выходов внешних,
— 16 вход/выход внешних,
— 8 аналоговых
— 16 контактов esp32
— разъемы шин OneWire и i2c
— чип времени ds3231sn
— 4 канала MOSFET
— 3 для симисторов (не распевал, пока нужды не было)
Цель была с минимальными затратами и без создания прошивки сделать радар слежения за светом.
Нужно всего лишь добавить 3 порта и настроить их работу.
Потом добавить обработку сигналов для увеличения и уменьшения значений.
Картинки не вижу смысла делать, проще не большое видео, мышью насколько возможно, показываю какие поля заполнял.
Не большое разъяснение по цифрам при 50Гц, сервопривод в положении 0 на значении ШИМ 1638, положение 180 сервопривода соответствует значению ШИМ 8164, получается 8164-1638=6226 это шагов который может делать сервопривод.
Таким образом формула 1638+6226/180*(v/10) дает нам с точностью до 0.1 градуса поворачивать сервопривод, при желании точность можно увеличить еще в 3 раза вместо 10 написав 30 и получим точность 0.033 градуса.
Напряжение на портах 32 и 33 представлено 4096 значениями 12бит. Но я не вдавался в перевод значений в напряжение, значение 400 подобрал методом тыка, это если интересно 3.3/4096*400=0.3V
Ну и напоследок тест работы
если видео не видно, то
ссылка
PS. Единственное что в esp32 не удалось побороть сеть жнет память безбожно и интерфейс начинает тормозить
Желание без особых затрать и автономно работающее. Так же простая настройка и при желании быстро можно изменить поведение удаленно. Причем значения с датчиков тоже можно корректировать сидя у монитора.
habr.com/ru/articles/120480/
Трекер солнца делается на 2 фотодатчиках и маленькой горстке рассыпухи.
Например
eloquentarduino.com/posts/esp32-cam-object-detection
Мой посыл был в том, что задача отслеживания панелей решается без
CMC и регистрациимикроконтроллеров.И ещё раз, это всё при том что положение солнца давно рассчитано и вычисляемо в любой момент времени.
З.Ы. А, да, совсем забыл. Вечером солнышко сядет на западе и встанет на востоке — т.е. литералли со строго противоположной стороны, куда ваш сенсор вообще не смотрит. Как будем реализовывать алгоритм поиска? Держим в уме что подвижные контактные группы дорогие, ненадёжные и не очень приспособленные к тому чтобы жить на улице, т.е. бесконечно наматывать круги не вариант(к тому что мы тут пытаемся немножко вырабатывать электричество не для того чтобы напрасно жечь его ночью)
Единственная реальная проблема это вечером подготовиться к восходу. Остальное — фантазии.
Единственная реальная проблема — это при наличии копеечных МК пытаться героически изобретать очередной аналоговый велосипед.
Я не говорю пихать их куда угодно, если есть свободные контакты и это может осилить один микроконтроллер который уже стоит в доме, почему бы не применить его.
Я понимаю, что эстетство — как же так, 100500 мегагерц делают то, для чего нужны два фототранзистора. А пофигу — если первое стоит 5 долларов, а второе — один, но на первом я сэкономлю час времени, то для единичного изделия — самое оно.
Я например его использую, чтобы включать свет по датчику движения в разное время в зависимости от текущего времени года(не используя при этом датчики освещённости)
Ваш способ чисто визуально конечно проще, однако соверешнно точно будет глючить в моменты переменной облачности и всяких прочих погодных казусов. ИМХО гораздо проще просто наводиться в заранее известную координату в каждый момент времени.
Сейчас решаются простые задачи без расчетов и на том, что есть.
По сути, если вникнуть в расчеты, то их можно конечно и в котроллер просто прикрутить тоже.
И нужно будет только геолокацию внести и все посчитается само
github.com/happytm/SunTracker/tree/master
Автор утверждает, что результаты сходятся с suncalc.org
Правда есть подозрение, что если хочется совсем безинтернетный проект — придётся тогда еспшку оснастить каким-нибудь модулем часов реального времени(встроенные нифига не точные), но это лирика.
github.com/GyverLibs/SunPosition
у esp32 34, 35, 36, 39 аналоговые
У меня цель была другая проверить, а могу ли я простыми действиями, просто в интерфейсе, добавить порты и управлять слежением.
Намек выше про тучи учел, сделал эмуляцию, да будет сбоить, но гистерезис можно и уменьшить.
Все же для солнца пойдет математический расчет., часы есть положение не проблема внести.
Но как радиолюбитель я прошел опыт которого не прошел в детстве. И может какой мальчишка это попробует и ему пригодиться.
Датчики уже есть. Сравнить на операционнике с гистерезисом. H-мост для мотора. Можно ту же серву взять, выкинув внутреннюю логику и управляя мотором напрямую.
ИМХО, настройка аналога займет меньше времени, чем отладка программы на МК.
Дальше. Ваша схема разумна, пока мы говорим о теоретической задаче на бумаге. Вот представим себе что реальный движок слищком резкий(или инерция системы слишком велика) и мы банально не можем остановиться как надо, т.е. от примитивного управляющего сигнала больше-меньше система входит в автоколебания. Довольно банальная проблема, решается настройкой PID регулятора — но как именно вы планируете его реализовывать на аналоговой схеме? А ещё — как планируете искать солнце с утра? Как планируете бороться с помехой от погодных условий? И ещё множество вопросом, которые крайне просто решаются алгоритмически(либо вообще не существуют — я то датчики не использую) в случае МК, но становятся огромной прлблемой для реализации в виде аналоговой схемы.
Решение должно стоить дорого, требовать огромное количество трудозатрат и времени, требовать комплектующих по ресурсам превышающих необходимые минимум в 100 раз, требовать труднодоступного оборудования или заказанного из-за рубежа. И обязательно, полезность «изобретения» должна быть обратно пропорциональна квадрату затраченных усилий.
Есть такая штука, электромеханический таймер. Представляете, эта штука за сутки делает ровно 1 оборот! Чудеса да и только… Без транзисторов, мелкоконтроллеров, кривого кода, вычисления координат установки, восходов-закатов и прочей ереси… Цена вопроса 150-500 рублей, в зависимости от места приобретения
Машина есть? Откройте капот, посмотрите на генератор… Там не просто открытое небо, однако же возбуждение 5 А. А в вашем понимании надо ещё и кабеля туда-сюда таскать приводом. Как было выше сказано «урбасос», увеличить выработку энергии и тут же ее потратить на ее выработку.
Вот откуда в людях этот страх перед МК? Согласны городить безумные велосипеды на аналоговых компонентах, впихивать дорогущие и крайне ненадёжные механические элементы — и всё это вместо крохотного МК, почти не потребляющего энергии, простого как валенок и надёжного как кирпич, который с точностью до угловой минуты просто может вычислить положение солнца по заранее известной формуле. И который будет делать это годами — лишь бы было точное время.
Вы осознаёте что щёточный узел с вашего генератопа мягко говоря не подходит для решения данной задачи? А теперь сходите и посмотрите на цену готовых узлов. Напоминаю, вы пытаетесь героически сэкономить 150р. денег и 25мВт энергопотребления(это в режиме радиопередачи. В режиме лёгкого сна будет в районе 1мВт и в районе 150мкВт в режиме глубокого)
Касательно этого дендрофекального поделия. Силы тут нет в принципе! Если в качестве привода использован дешмансая серва китайского происхождения. А вот когда у вас начнутся токи за сотню ампер — почувствуете толщину кабелей и их вес, а заодно можно посчитать, сколько киловатт надо для их перекладывания пару раз в сутки
О причинах, почему ТС полез в историю с генерацией я не знаю и мне не особо интересно. Вопрос вообще не в этом.
То стоимость кольцевого токосъёмника и потери на нём окажутся вовсе несуразными. И зачем перекладывать кабель? Он в воздухе висит, петли всего то нужно на полоборота.
Кольцевой токоприемник — единственное решение, которое прижилось в промышленности. Опять же, за свою простоту и ремонтопригодность. Где нужна надёжность — именно кольцевой токоприёмник и альтернатив не существует. Остальное как раз понтовство. Полметра кабеля? Ну давайте посмотрим на эти полметра, скажем, при небольшом сечении 16 квадратов… Как оно будет гнуться? Да даже 2,5 квадрата, чёт не так чтоб сильно гибко было. Есть особо гибкие кабеля, но и те долго не живут, в условиях постоянных перегибов.
А если вы такой умный, может расскажете почему гибкие кабеля нельзя применять при устройстве электропроводок? В ПУЭ это очень четко написано — запрещается!
Потому что рукожопы начну́т их зажимать под клемму без кабельного наконечника. Потому что при КЗ и расплавлении изоляции одножила сохранит свою форму, а гибкий — провиснет и замкнёт на что-то ещё. Много причин на самом деле.
Мы вроде говорили про конкретную реализацию конкретной хрени в домашне-любительских условиях, а вы пустились в пространные рассуждения о том что на больших заводах в общем случае тупая железка надёжнее умнрй. Ну, в общем случае наверное да, дьявол как обычно в нюансах.
Ну пустите шлейф из 8 кабелей по 2 квадрата. Гнуться будет отлично, надёжность даже выше.
Про рукожопов — вы скрьёзно? То что вы предлагаете и за что сейчас ведёте спор — именно так и называется — рупожопие! Это как в анекдоте, в процессе расследования главное не выйти на себя.
Про домашнее применение — они и есть рукожопие. Но самое интересное, потом такие рукожопы в пром.установке делают тоже самое… Дома то работает. Сколько раз встречалось фазупо голубому проводу запускали.
Шлейф из 8 кабелей по 2,5 квадрата будет весить больше, следовательно, энергии на перемещение этой массы надо больше — очередное рукожопие. А теперь вопрос, как распределятся мощности по кабелям, скажем при 60 А нагрузки? Уверен, что по одному из них достанется Ампер 50, а по остальным расползется остальное. В результате увидим как оно все весело горит с сизым дымом.
А я и не утверждал что лучше. Зато они весьма распространены как раз в роли пром. контроллеров. Прям вот для этих самых больших производств. И — я гарантирую — которые прекрасно работают без надзора ваших специально обученных соглядатаев — там кислорода в воздухе слишком мало чтоб человеки ходили.
А ваша механическая карусель очевидно — вершина технической мысли. Клаааасс.
Ну что поделать. Нужна гибкость — приходится идти на компромис. Мир не совершенен, беда-борода. И опять таки, для случая ТС одного куска ПВС на 1-1.5 квадрата хватит с головой.
Ток проходит через все проводники одновременно, с силой, пропорциональной сопротивлению этих проводников. Если у вас примерно одинаковые и нормально подключенные провода — ток по ним тоже пойдёт примерно одинаковый. Закон Ома для участка цепи, если что.
Про примерно одинаковые компромиссы. Перекос токов штука такая, чем выше мощность тем сильнее перекос. Ни один нормальный инженер таких компромиссов делать не станет. Ни когда там не будет равномерного распределения токов. Особенно если проводники гибкие. У них сопротивление будет плавать при изгибе.
Дендрофекальная поделка такой и останется, как ее не оправдывай.
В данном случае, у вас ну ни как не получается оправдать усложнение простой конструкции. Все давно придумано и оптимизировано. Даже отсылка, вами же, на конструкции варваров не помогает. Оказывается у них тоже самое. Чем проще, тем надёжнее. Они даже мостовые краны делают не с кабельным питанием, а по шине со скользящими токосъемниками… Хотя чё проще 8 кабелей параллельно, для гибкости — по вашей теории.
Я думаю, на этой высокой ноте аргументации диалог можно и прервать.
Кольцевой токоприемник — вещь очень дешёвая, ввиду ее технологичности и ремонтопригодности. А вот когда сдохнет ваш контроллер, а он точно сдохнет, где искать софт!? Снова нанимать разработчиков, монтажников и т.п.? Не надо усложнять простое. Кольцевые тоуосъёмники работают десятилетиями в жутко агрессивной среде. Не боятся перенапряжений, грозовых разрядов, не подвержены эл.магнитным помехам.
Как часто приходится обслуживать генератор автомобиля? Некоторые экземпляры остаются рабочими и нетронутыми даже по утилизации автомобиля. Ни чем не защищены, пыль, грязь, вода, нефтехимия, все туда летит, а они работают. Контроллеру на лапы конденсат упал, муха наградила, ещё че-нить и все, он повис, если вообще не сдох!
Следите за руками. Вот я такой беру и показываю МК за 150р, причём сразу на отладочной плате, удобный к монтажу и программированию. А теперь покажите мне дешёвый и технологичный токоприёмник за сравнимую сумму. И помним, что корпус должен быть защищён от влаги и пыли(это МК можно в целлофан замотать и скотчем заклеить. Или вообще компаундом залить — там подвижных частей нет)
Да что-то пока ни один не сдох — по крайней мере из тех что я сам случайно не спалил. Самым старым проектам ещё на дуинах уже с десяток лет, а волшебный дым всё никак не выходит, вот ведь незачада.
Какая именно религия вам запрещает залить ваш код на гитхаб и подглядывать туда по необходимости? Это бесплатно если что.
Ну уж себя то я как-нибудь найму))
Придумать себе трудности и потом героически их преодолевать и хвастаться — это да, это круть!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.