Ви не увійшли.
Замена микроконтроллера помогла. Вместо Wemos lolin32 использую ESP32 T8. Входной тракт счетчика импульсов также был доработан. Длительности импульсов получилась 1.2мс.
Attiny13 будет видеть сигнал ровно с теми же помехами, что и Wemos. Если сигнал от помехи можно как-то отличить (они же отличаются по амплитуде, длительности), лучше делайте это аппаратно фильтрами.
Создайте отдельную тему и выкладывайте осцилограммы сигнала с помехами, может кто-то предложит как сделать фильтр.
Еще забыл упомянуть: сигнал, то, как раз формируется без помех, осциллограф показывает ровные, прямоугольные, измерительные импульсы длительностью 2мс. Остается 2 варианта: либо помеха по питанию, либо прямая наводка на плату, что фильтровать значительно сложнее. В таком случае нужно экранировать.
Attiny13 будет видеть сигнал ровно с теми же помехами, что и Wemos. Если сигнал от помехи можно как-то отличить (они же отличаются по амплитуде, длительности), лучше делайте это аппаратно фильтрами.
Создайте отдельную тему и выкладывайте осцилограммы сигнала с помехами, может кто-то предложит как сделать фильтр.
Не факт, что Attiny13 будет так же плохо работать. Многое зависит от чувствительности входных трактов. Еще у меня сборка прототипа на макетной плате. Это дополнительно дает помехи из за лишней длинны проводников. Спасибо, на наводку, сниму осциллограммы по питанию.
Attiny13 будет видеть сигнал ровно с теми же помехами, что и Wemos. Если сигнал от помехи можно как-то отличить (они же отличаются по амплитуде, длительности), лучше делайте это аппаратно фильтрами.
Создайте отдельную тему и выкладывайте осцилограммы сигнала с помехами, может кто-то предложит как сделать фильтр.
Распишите подробнее, какая у Вас задача?
Я могу сделать 1-wire устройство конкретно под нее, если это вообще имеет смысл делать таким отдельным устройством.
Аппаратная часть такая как у этого модуля, прошивка под Вашу задачу.
Большое спасибо за детальные ответы на мои вопросы.
По поводу задачи: необходимо спроектировать устройство для измерения RPM 2-х тактного двигателя. Данные для счетчика снимаются с высоковольтного провода, идущего к свече. Данные собираются и обрабатываются в микроконтроллере Wemos lolin32, или на подобии этого, для передачи по Bluetooth BLE на телефон. Собственно, прошивка для Wemos lolin32, Андроид приложение, электрическая часть для усиления и формирования импульсов готовы.
Но есть проблема: микроконтроллер, точнее его цифровой вход срабатывает от помех, идущих от высоковольтных импульсов. Несмотря на небольшую емкостную связь, убрать эту нестабильность не представляется возможным. Блокировочные диодные развязки, оптопарные развязки, конденсаторы перепробовал. Поэтому пришел к тому, что нужен независимый счетчик который будет передавать данные для платы в готовом виде. Возможно реализация на ATTINY13 будет надежным вариантом.
Wemos lolin32 - https://www.mischianti.org/2021/07/30/esp32-wemos-lolin32-lite-high-resolution-pinout-and-specs/
Распишите подробнее, какая у Вас задача?
Я могу сделать 1-wire устройство конкретно под нее, если это вообще имеет смысл делать таким отдельным устройством.
Аппаратная часть такая как у этого модуля, прошивка под Вашу задачу.
* прямоугольные импульсы
* длительность импульсов 1-3мс
* максимальная частота 150Гц
* амплитуда 3ВБудет работать вас счетчик для этих параметров?
Нет, не будет. Счетчик может детектировать импульсы от 19мс и более.
Есть вариант обойтись без батарейки, с питанием только 3.3В?
Да, можно, для этого нужно просто закоротить контакты в разъеме батарейки, например, засунуть две монетки 25коп.
Но с этим "простым" способом есть нюанс. Счетчик определяет, от чего он питается в данный момент (какое напряжение больше), если от собственной батарейки, то он отключает 1-wire часть и потребляет около 5мкА, если от внешнего питания, то 1-wire часть включена и он потребляет около 1мА.
Очевидно, что при нулевом напряжении "батарейки" питание будет считаться внешним, те этот способ плохо подходит для подключения к устройствам, которые сами питаются от батарейки и энергию нужно экономить.
Второй способ чуть сложнее. В разъем батарейки ничего встявлять не нужно, нужно припаять еще один провод к клемме "+" батарейки (две больших кляксы припоя со стороны деталей), этот контакт будет называться "BAT". Таким образом от счетчика к м/к будет 4 провода: GND, VCC, DQ, BAT (первые два к земле и питанию, остальные к GPIO). Подавая напряжение питания на BAT или закорачивая его с GND можно выключать/включать 1-wire и таким образом управлять энергопотреблением:
void counter_1wire_on() { // потребление 1мА
digitalWrite(PIN_BAT, LOW);
}
void counter_1wire_off() { // потребление 5мкА
digitalWrite(PIN_BAT, HIGH);
}
void counter_1wire_setup() { // вызываем из setup
pinMode(PIN_BAT, OUTPUT);
counter_1wire_off();
}
Но учтите, что счетчик в этих случаях теряет энергонезависимость, его счетные регистры и настройки будут сбрасываться каждый раз при обесточивании/перезагрузке Вашего микроконтроллера.
Я тему открыл для того, чтобы увлекающиеся люди, у которых возникает задача "как снять показания со счетчиков в системах умный дом?", знали, что есть еще и такое решение, могли подсказать его другим. Уверен, что многие будут благодарны.
Барыжат те, кто покупает готовое устройство в Китае и перепродает его тут. В данном случае это устройство - полностью мой проект, я его программировал и паял.
Kaka, судя по вашим комментариям на этом форуме в других темах, Вы здесь занимаетесь не тем, что делитесь наработками с коллегами, а занимаетесь троллингом.
Код прошивки закрыт поэтому я не могу в полной мере оценить работоспособность решения в моей задаче:
* прямоугольные импульсы
* длительность импульсов 1-3мс
* максимальная частота 150Гц
* амплитуда 3В
Будет работать вас счетчик для этих параметров?
adapbel пише:Добрый день! Купил 2 шт Ваших девайсов. Не сканируются по шине OneWire. Что делать?
Ответил по почте, продублирую и здесь тоже:
1. Должна быть вставлена батарейка CR2032 (не аккумулятор LIR2032, а именно батарейка, напряжение на батарейке должно быть до 3.6V), наличие батарейки является обязательным.
2. Для начала запитайте счетчик по линии VCC, напряжение питания должно быть в пределах 4.5-5.5 V
3. На линии DQ также должно быть напряжение 4.5-5.5 V, резистор подтяжки в данном случае подойдет любой, если есть, используйте 1кОмЕсли при таком подключении счетчик определяется, можно пробовать отключать VCC и пробовать питать паразитно.
Есть вариант обойтись без батарейки, с питанием только 3.3В?
Быстро загуглил - это баг хрома, поставил Файерфокс - все ок
Попробуйте в хроме в адресной строке ввести такое:
chrome://flags/
Найти "Block insecure private network requests" и изменить на Disabled
Можно пойти еще дальше, просверлить сначала насквозь очень тонкую дырку, скажем 2мм, затем только с одной стороны расширить ее до диаметра фоторанзистора.
Попробуйте такой способ:
Найдите кусок черного пластика или какой-то резины толщиной больше сантиметра, просверлите тонкое отверстие диаметром как фототранзистор, вставьте неглубоко фототранзистор и чем-то закройте всю его заднюю часть от света. Смысл в том, чтобы перед фототранзистором была "трубка", важно, чтобы ее стенки не отражали свет, такая трубка сузит диаграмму направленности фототранзистора, он будет "смотреть" строго в одном направлении на светодиод и не "смотреть" по сторонам.
Дальше проявите смекалку.
Honey пише:У Вас есть в наличии TCRT5000 ? Из него можно вытянуть фототранзистор (он темный), он хоть и инфракрасный, но хорошо реагирует на красный светодиод. Я сейчас протестировал с ним, при освещении с расстояния 1.5см показания с него 30-35, когда положил в тень и накрыл бумажкой (засветка от освещения в комнате все еще есть), показания 46-51, когда выключаю свет в комнате, показания вообще улетают до 230-237.
Это говорит о том, что чем хуже изоляция от постороннего света, тем сложнее отличить сигнал "горит/не горит". В моем эксперименте в первом случае threshold-ы можно было бы установить в промежутке между 35 и 46 (например threshold falling = 38, threshold rising = 42), а во втором случае - между 35 и 230 (например threshold falling = 100, threshold rising = 165). Как думаете, в каком случае будет более четко разграничиваться на "горит/не горит"? Как думаете, что будет, если на самом деле, например, "горит", а счетчик импульсов по threshold-ам определил, что "не горит"?
А смекалка вот в чем:
Вам повезло, что у Вас светодиод горит постоянно, Вы можете свою конструкцию направить на светодиод и измерить уровень сигнала, когда "горит", и можете чуть отодвинуть в сторону и измерить, когда "не горит". Это позволит оценить, хорошо ли Ваша констркуция защищает от постороннего света.
Дело в тон что у меня диод в счетчике стоит за большой прозрачной пластиковой накладкой, там со всех сторон свет может проникать http://www.nik.net.ua/ru/product/NIK-2104
Дальше проявите смекалку.
У Вас есть в наличии TCRT5000 ? Из него можно вытянуть фототранзистор (он темный), он хоть и инфракрасный, но хорошо реагирует на красный светодиод. Я сейчас протестировал с ним, при освещении с расстояния 1.5см показания с него 30-35, когда положил в тень и накрыл бумажкой (засветка от освещения в комнате все еще есть), показания 46-51, когда выключаю свет в комнате, показания вообще улетают до 230-237.
Это говорит о том, что чем хуже изоляция от постороннего света, тем сложнее отличить сигнал "горит/не горит". В моем эксперименте в первом случае threshold-ы можно было бы установить в промежутке между 35 и 46 (например threshold falling = 38, threshold rising = 42), а во втором случае - между 35 и 230 (например threshold falling = 100, threshold rising = 165). Как думаете, в каком случае будет более четко разграничиваться на "горит/не горит"? Как думаете, что будет, если на самом деле, например, "горит", а счетчик импульсов по threshold-ам определил, что "не горит"?
А смекалка вот в чем:
Вам повезло, что у Вас светодиод горит постоянно, Вы можете свою конструкцию направить на светодиод и измерить уровень сигнала, когда "горит", и можете чуть отодвинуть в сторону и измерить, когда "не горит". Это позволит оценить, хорошо ли Ваша констркуция защищает от постороннего света.