LINUXTALKS.CO

Как подсчитать частоту тока с помощью GPIO?

 , , , ,


0

1

Подумал о дешёвой двухпроводной шине для мелкой автоматизации на больших расстояниях.

Придумал простую схему, для передачи данных дёргать двумя GPIO через транзисторные ключи подключенные к высокочастотному трансформатору и таким образом генерировать импульсы с различной частотой. А для приёма данных, подсчитывать число принятых фотодиодом импульсов от светодиода подключенного к шине.

Но возникает проблема. Если кабель неизвестного качества и расстояния неизвестные. И число устройство подключенных на одну шину неизвестно, то для максимально надёжной передачи, нужно напряжение повыше. Но, в сети ведь есть падение напряжения и поэтому непонятно какое конкретно придёт на светодиод, 3 вольта или 50 вольт. Например от одного передатчика придёт 7 вольт, а от другого 40 вольт. А ещё в случае коллизии они могут наложится. А приёмник должен не выйти из строя. А в идеале нужно учесть и всякие проблемы со статическими потенциалами. Я конечно разбираюсь слабо, но что то мне подсказывает что в таких условиях светодиод долго не прослужит.

Нужна какая то простая схема, которая частоту переменного тока частотой несколько килогерц (от 0,3 до 5) и широкого диапазона напряжений, от 3 до 110 вольт преобразует в аналогичное количество открытий полевого транзистора на входном GPIO.

Примечание:
Про схему шины с коротким замыканием двух жил знаю, но хочу сделать нечто более универсальное и в теории не требующие запитывания самой шины когда данные не передаются. А ещё что бы через фильтры, поток данных можно было загнать и в сеть переменного тока.

Но возникает проблема. Если кабель неизвестного качества и расстояния неизвестные.

Может тогда лучше вместо провода использовать оптоволокно, оно и дешевле будет, и молнией в него не бахнет, если несущий жгут из пластика, а не металла, и затухает в нём сигнал слабее.

А для определения частоты создать схему ФАПЧ и измерять не частоту, а вырабатываемое схемой напряжение.

torvn77    
★★★★★★
Android / Chrome

И число устройство подключенных на одну шину неизвестно,

А что вообще ты хочешь сделать?
Может тебе проще использовать готовые платы контроллеров(модуль) с ethernet портом и свести их воедино через свитч?
Я бы о таком подумал, сразу куча проблем оказывается решена из коробки

torvn77    
★★★★★★
Последнее исправление: torvn77 (всего исправлений: 2)

Android / Chrome
Ответ на: комментарий от torvn77

Максимально дешёвые модули умного дома, интегрированные в выключатели и розетки. Основанные на дешёвых компонентах вроде такого https://aliexpress.ru/item/4000348370586.html

В самих устройствах почти никакой программной логики, вся логика автоматизации на центральном компьютере типа «raspberry pi». К которому цепляется до сотен таких устройств. А шина и эти устройства видны для программ как файловая система.

Никаких сраных облаков без которых всё становится тыквой.

Нет привязки к одному производителю, открытый стандарт.

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

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от rezedent12

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

Основанные на дешёвых компонентах вроде такого https://aliexpress.ru/item/4000348370586.html

С этим лотом тебе надо быть внимательным, есть у меня подозрение что приёмопередатчик в комплект не входит, да даже если и входит то радиус работы неизвестен.

torvn77    
★★★★★★
Последнее исправление: torvn77 (всего исправлений: 1)

Linux / Chrome
Ответ на: комментарий от torvn77

Я знаю что есть дешёвые контроллеры с несколькими GPIO и ОЗУ около килобайта за менее чем доллар. Их и думаю попробовать использовать.

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от rezedent12

Тут надо ещё ethernet порт и соответствующую сеть, иначе имхо замучаешся разрабатывать и сопровождать всё это сплетение проводов и платок.

torvn77    
★★★★★★
Последнее исправление: torvn77 (всего исправлений: 1)

Linux / Chrome
Ответ на: комментарий от torvn77

Я конечно читал про возможность ethernet на одной паре, но это гораздо большие проблемы.

Нужно что нибудь на нескольких полевых транзисторах и диодах.

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от torvn77

Не, я в эту шизу ввязываться не хочу. Начнём с того что у тока нет частоты (пускай и в быту оно называется «переменный ток»), частота и скважность у наряжения. Идея передавать на большие расстояния питание с килогерцевой частотой изначально ебанутая, YOBA-кулер имел куда больше шансов на успех

Kaschenko    
★★★★★★★★★★★
Android / Yandex

Я мог бы помочь, но за идеи заливать в питающую сеть высокочастотные помехи я могу лишь предложить оторвать автору идеи ноги.

Я бы в ответ такому соседу залил 10 кВ в сеть, а чо такого, может мне нужно для умного дома.

Ничего личного.

JamesHolden    
★★
Android / Chrome

Может для начала поразглядывать powerline?

rain    
★★★★★★★★★★★
Linux / Firefox
Ответ на: комментарий от Kaschenko

Это не передача питания, а передача сигналов. Если требуется передать питание, то его можно и фантомно передать.

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от JamesHolden

Всего то фильтр на кабель установить и эти помехи не пройдут дальше. Это нужно предложить соседу.

powerline
Кстати, а как ты относишься к powerline? Это такая технология для локальной сети.

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от rezedent12

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

Сеть - она по всем нормам для того, чтобы брать оттуда питание, а не передавать какие-то говносигналы.

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

Вот ты лично и должен обеспечить чистоту сети. Но ты это технически не сделаешь в своей системе.

Ты можешь поставить фильтры, чтобы за пределы твоей квартиры это не перло. Но это все равно на 100% проблему не решает, потому что есть поле, а стены то общие.

JamesHolden    
★★
Android / Chrome
Ответ на: комментарий от rezedent12

И фильтры - это не волшебные палочки, которые раз и убрали помехи. Они их только ослабляют.

Гораздо лучше не заниматься фигней и вообще не создавать помех.

Я считаю что ты на спичках экономишь. Дорого wifi делать - ну купи платки копеечные на 433 МГц и через них управляй.

JamesHolden    
★★
Android / Chrome
Ответ на: комментарий от JamesHolden

Гораздо лучше не заниматься фигней и вообще не создавать помех.

Имхо если rezedent12 не сделает что-то не то, то созданное им загрязнение будет ничтожной мощности и если у соседей будет необходимость ставить фильтр то явно не из-за него.
К стати по этому фильтр лучше по любому поставить, и соседям, и rezedent12.

Я считаю что ты на спичках экономишь. Дорого wifi делать - ну купи платки копеечные на 433 МГц и через них управляй.

Вот тут согласен, хотя rezedent12 пока не сказал что именно он пытается сделать.

torvn77    
★★★★★★
Последнее исправление: torvn77 (всего исправлений: 2)

Android / Chrome
Ответ на: комментарий от torvn77

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

JamesHolden    
★★
Linux / Chrome
Ответ на: комментарий от JamesHolden

На самом деле я как-то подключил к розетке через резестивный делитель напряжения и разделительный конденсатор вход аудиоколонки так могу сказать что проект rezedent12 несбыточен ввиду крайней загрязнённости электросети и если он хочет что-то сделать то фильтрище придётся делать многозвенным и на совесть.

torvn77    
★★★★★★
Android / Chrome
Ответ на: комментарий от torvn77

В его случае это решается просто достаточным уровнем сигнала. Из-за чего я и кипишую - то есть, чтобы преодолеть помехи, которые и так есть, ему придется создавать еще на порядок большие помехи.

JamesHolden    
★★
Linux / Chrome
Ответ на: комментарий от JamesHolden

Ну в принципе индуктивный фильтр от стиральной машины и пусковой конденсатор на 0.47мкф огромных размеров должен в дрстаточной мере очистить сеть.

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

torvn77    
★★★★★★
Последнее исправление: torvn77 (всего исправлений: 2)

Android / Chrome
Ответ на: комментарий от torvn77

чтобы через него проходил некий минимальный фильтруемый ток

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

JamesHolden    
★★
Linux / Chrome
Ответ на: комментарий от JamesHolden

Планируется частота от 0,3 до 5 килогерц - это диапазон слышимого звука. Схема шипения простая, около 1 килогерца - условный ноль, около 5 килогерц - условная единица, 3 килогерца - разграничитель пакетов. Штатно планируется использовать телефонный кабель.

Основная проблема в том, что от разных устройств до разных устройств эти сигналы теоретически могут доходить с амплитудой от условных 3 вольт, до 110 вольт. Нужно считать сколько раз в миллисекунду (или микросекунду, не определился ещё) происходят колебания от -U V до +U V. Где U - напряжение (амплитуда) сигнала.

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от rezedent12

Можешь попробовать так. Сначала по проблеме, как принять от 110 вольт до 3 вольт.

Вариант: сигнал пропускаешь через резистор последовательно, после резистора - диод выпрямительный (или даже 1n4148), на GND (параллельно). Диод надо повернуть так, чтобы сигналом он открывался.

Такая цепочка обрежет любое напряжение до уровня около 0.6 вольт - напряжение отпирания диода. Если 0.6 вольт мало - включи два диода последовательно, 1.2 вольта точно будут восприняты как логическая единица.

Это обрежет +U. Если у тебя еще минусовые -U высокого напряжения, тогда надо ставить параллельно этим диодам, такие же но в обратную сторону.

Как считать импульсы. Проще всего подать сигнал на ножку входа таймера в микроконтроллере. В любом микроконтроллере есть таймеры, у которых есть режим счетчика.

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

Время счета - миллисекунда как ты хочешь, тогда надо отсчитывать вторым таймером.

Практически у любых микроконтроллеров несколько аппаратных таймеров имеется.

JamesHolden    
★★
Последнее исправление: JamesHolden (всего исправлений: 2)

Linux / Chrome
Ответ на: комментарий от rezedent12

Планируется частота от 0,3 до 5 килогерц - это диапазон слышимого звука.

Во первых я не думаю что ты будешь кодировать методом расширения спектра, по этому не шипение, а гудение.

Во вторых ты подключи активные колонки или усилок к сети как я тут сказал и послушай что там творится в диапазоне "от 0,3 до 5 килогерц"

torvn77    
★★★★★★
Android / Chrome
Ответ на: комментарий от JamesHolden

Резистор какой величины сопротивления выбрать? Мне казалось что так не получится, потому что разное напряжение означает разное необходимое сопротивление для защиты светодиода. Контроллер и электрическую схему принимающую сигналы, думаю развязать гальванически через оптопару.

Это обрежет +U. Если у тебя еще минусовые -U высокого напряжения, тогда надо ставить параллельно этим диодам, такие же но в обратную сторону.

Хрен с ними. Главное число колебаний посчитать. Синусоида нужна скорее как стандарт на потенциальное великое будущее стандарта если они будет принят какими то производителями.

Подумывал о ограничителе на полевом транзисторе.

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от rezedent12

Резистор какой величины сопротивления выбрать?

Не менее 100 ком, а лучше разика в три побольше.

torvn77    
★★★★★★
Android / Chrome
Ответ на: комментарий от JamesHolden

Но и меньше тоже не стоит.

Вообще можно взять переменный резистор на 500 ком и подобрать верхний лимит, ну естественно нижний лимит лучше сделать постоянным резистором ком на 100 или 150.

torvn77    
★★★★★★
Последнее исправление: torvn77 (всего исправлений: 1)

Android / Chrome
Ответ на: комментарий от rezedent12

Мне казалось что так не получится, потому что разное напряжение означает разное необходимое сопротивление для защиты светодиода.

С оптопарой да, наверное не получится. Потому что там надо не просто обрезать, а чтобы еще и диод зажегся.

А если просто диодом обрезать и на ножку - должно получиться. Сейчас на модели попробую.

JamesHolden    
★★
Linux / Chrome
Ответ на: комментарий от rezedent12

Короче, просчитал схему где резистор, потом два диода 1n4148 последовательно на GND.

C резистором 10k:

3 вольта на входе, 1.16 вольт на выходе.

110 вольт на входе - 1.51 вольт на выходе.

И даже - 1000 вольт на входе - 1.71 вольт на выходе, ток диода 100 мА (а у него длительный допустимый 200 мА).

То есть даже 10k резистор удовлетворяет. Если ток, потребляемый диодом при 110 вольтах (10 мА) это много для тебя - то тогда можно как @torvn77 говорит ставить 100k, с ним почти то же, только чуть ниже напряжение на выходе.

JamesHolden    
★★
Linux / Chrome
Ответ на: комментарий от JamesHolden

Но вообще помимо ограничивающих резисторов и диодов надо бы поставить ращделительный трансформатор чтобы не думать о совмещении GND контроллера и сети.

torvn77    
★★★★★★
Android / Chrome
Ответ на: комментарий от JamesHolden

Если ток, потребляемый диодом при 110 вольтах (10 мА) это много для тебя

Сам ток меня не в плане энергопотребления волнует, а в плане того что бы светодиод не сгорел.

Если всё действительно так просто, то спасибо.

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от torvn77

Как минимум у тебя нет фильтра для вырезания доминирующего над всем тона 50 гц.

И он имеет значение при разбросе логических уровней в килогерцы?

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от rezedent12

Конечно имеет, без отфильтрации у тебя будут большие периоды засветки (или отсечения, я не понимаю что делает биполярный транзистор в твоей схеме)

torvn77    
★★★★★★
Android / Chrome
Ответ на: комментарий от torvn77

Ток ограничивает, хотя как JamesHolden подсказал, он не нужен судя по всему.

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

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от rezedent12

Затвор с истоком соединить? У тебя же транзистор просто вообще не откроется.

Поясни подробнее, какую логику работы ты предполагаешь тут. Как должно быть, по-твоему?

JamesHolden    
★★
Последнее исправление: JamesHolden (всего исправлений: 1)

Linux / Chrome
Ответ на: комментарий от rezedent12

Только, еще раз поясню - то что я писал - это если взять обычный диод, не светодиод! И с него напрямую на ножку микроконтроллера подавать.

Если через светодиод оптопары, то так не получится, потому что у тебя либо не загорится светодиод при минимальном напряжении, либо он сгорит при максимальном, в зависимости от резистора.

JamesHolden    
★★
Последнее исправление: JamesHolden (всего исправлений: 1)

Linux / Chrome
Ответ на: комментарий от rezedent12

И он имеет значение при разбросе логических уровней в килогерцы?

Да, в данном случае как верно заметил @torvn77, у тебя сетевой синус амплитудой 311 вольт просто сам по себе будет на 10 миллисекунд включать светодиод, и поверх него твои импульсы уже влиять не будут.

JamesHolden    
★★
Linux / Chrome
Ответ на: комментарий от JamesHolden

Посоветуй как правильно гальванически развязать? ВЧ трансформатор выдранный из старого ethernet контроллера подойдёт?

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от rezedent12

Смотри что. Тебе надо, чтобы через светодиод тек одинаковый оптимальный для него ток, при разном исходном напряжении.

То есть тебе нужна схема «источник тока на транзисторе».

То, что ты нарисовал - это похоже на источник тока на JFET транзисторе. Но у тебя MOSFET транзистор, и JFET для таких параметров ты не найдешь (а MOSFET легко).

Отличаются тем, что JFET в такой схеме откроется и ограничит ток, а MOSFET вообще будет полностью закрыт.

Там надо резистор добавлять, вот тут обсуждают подобное

https://askentire.net/q/zapros-na-rassmotrenie-istochnika-toka-ogranichitelya-toka-mosfet-141973399750

JamesHolden    
★★
Linux / Chrome
Ответ на: комментарий от rezedent12

Сомневаюсь.
Отталкивайся от трансформаторов в диалаповских модемах.

Вообще тебе не обязательно разделять трансформатором, можно разделить и двумя конденсаторами на 500V и выше.

torvn77    
★★★★★★
Последнее исправление: torvn77 (всего исправлений: 1)

Android / Chrome
Ответ на: комментарий от JamesHolden

Интересно, сколько таких импульсов в секунду ожидается в типовой квартире? Это вопрос того какого размера должен быть пакет данных и какой тип алгоритма восстановления через избыточность данных выбрать.

rezedent12    
★★★
Windows / Firefox
Ответ на: комментарий от rezedent12

Лучше уж через оптрон думать, но 50 Гц надо давить. Я сейчас на работу, чуть позже подумаю получше, может что подскажу.

JamesHolden    
★★
Linux / Chrome
Ответ на: комментарий от JamesHolden

Там надо резистор добавлять, вот тут обсуждают подобное

И главное сдаётся мне что в тех схемах предполагается что источник напряжения даёт ровное и чистое напряжение, а не целую или полупериод синусойды.

torvn77    
★★★★★★
Android / Chrome
Ответ на: комментарий от torvn77

Да, конечно. С синусом надо думать как делать.

JamesHolden    
★★
Android / Chrome
Ответ на: комментарий от rezedent12

Как то все слишком абстрактно.

Ты можешь какое-то минимально работающее устройство, или задачу, описать? Тогда можно говорить о реализации, а то пока больше вопросов чем ответов.

JamesHolden    
★★
Android / Chrome
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90