Сигнализатор поклевки с пейджером

Сигнализатор поклевки с пейджером

Описание старого проекта. Оставил как было, просто дополнил!

Разберите старую мышку (но не оптическую и не лазерную). В ней есть два вала. На концах этих валов есть колеса с прорезями. Эти колеса размещены между инфракрасными светоизлучателями и светоприемниками. Светоизлучатель светит постоянно. Когда валы вращаются, на светоприемник приходит прерывистый световой поток. В результате светоприемник вырабатывает пачки импульсов напряжения.Вот эти светоизлучатели и светоприемники, валики с колесиками и частью их подвески перенесены в корпус нашего сигнализатора поклевки таким образом, чтобы леска, попадающая в прорезь корпуса, прижималась к валику.

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

Схема – ryba13.jpg (схемы к сожалению нет)

Led1, T1- инфракрасный излучатель и датчик от старой компьютерной мышки.      Между ними вращается колесо от той же мышки, с прорезями, прерывая      световой поток. У моего датчика вал диаметром 5мм. Я на него одел  отрезок термоусадочного кембрика для более надежного сцепления с леской.  а колесо имеет 34 прорези. Если вал будет большего диаметра, или прорезей  окажется меньше, чувствительность сигнализатора упадет.

Гр1 – электромагнитная пищалка от китайского будильника, купленного  на рынке за 2 UAH (Украинские гривни). Это оказалось дешевле, чем  покупать его отдельно у торговцев радиодеталями. У нее сопротивление около 15 ом. И при питании 3вольт, кричит она неслабо. У тех, что используются в качестве комп. спикера, сопротивление около 50 ом. Они звучат несколько тише и светодиоды горят тусклее.

T3    Любой транзистор с максимальным импульсным током коллектора более 250ма. например КТ503  (если включить сигнализатор без, или с неисправными Led1, Led2, то на коллекторе будут импульсы довольно большой амплитуды. Намного выше, чем напряжение питания. Поэтому лучше взять транзисторы с возможно большим  предельно допустимым напряжением коллектора)

Led1, Led2 в моем варианте простые красные светодиоды с падением напряжения  на каждом около 1.5вольт. Здесь есть особенность: Два последовательно  включенных светодиода начинают светиться при более 3вольт. Батарея у нас 3вольт. В результате они почти не светятся, если нету звукового сигнала. И только во время звукового сигнала на пищалке возникает    противоэдс, в результате чего они начинают светиться. Если использовать сверхяркие, с падением напряжения 3вольт, то  вместо 2 последовательных, нужно включать их параллельно.  В любом случае, если будет беспокоить подсветка при отсутствии звукового сигнала, включите последовательно со светодиодами любой диод в прямом включении.

D1    Любой диод. Можно даже древний, германиевый.

T2    Любой кремниевый транзистор с максимально возможным коэффициентом усиления. Например КТ3102Е. Транзистор Т2 я поставил, когда боролся за энергопотребление всей схемы, максимально увеличивая R1, R2, R3. Их величины даны ориентировочно и зависят от параметров конкретных светоизлучателей и светоприемников. Мне удалось добиться потребления в дежурном режиме 1.25ма. Во время звукового сигнала она потребляла около 70ма. Можно в принципе не ставить R3 и T2, а ножку 6 контроллера соединить с коллектором Т1. При этом придется уменьшить R2 где-то до 100Ком. В любом случае необходимо подбирая R1 и R2 добиться на ножке 6 контроллера, импульсов амплитудой более 1.5в при вращении колеса датчика. При этом не забывая, что датчики хотя и инфракрасные, но они не брезгуют и обычным белым светом. Так что настраивая схему датчика, нужно позаботиться об отсутствии внешней засветки. В корпусе сигнализатора тоже необходимо гарантировать отсутствие проникновения солнечного света. Ведь рыбу ловят и на ярком солнце.

Микроконтроллер ATTINY13 поддерживает внутрисхемное программирование, т.е.программировать можно прямо не отключая его от схемы. Я именно так его и программировал. Поэтому ножку 1(reset) подключил на плюс питания через резистор. Если программировать будете отдельно, то ножку 1(reset) можно подключить на плюс питания без резистора.

Для программирования AVREAL_ом,(http://ln.ua/~real/avreal/index.html) в комплекте лежит ват-файлик PGM.BAT, в котором не указаны FUSES. (используются установленные производителем по-умолчанию)

Для других программаторов:

Fuses

  OSCCAL     = 86

  CKDIV        = 0

  CKOUT        = 1

  SUT              = 2

  CKSEL         = 2

  RSTDISBL              = 1

  DWEN         = 1

  WDTON       = 1

  EESAVE      = 1

  BODLEVEL            = 7

  SELFPRGEN          = 1

Файл прошивки – ryba13.hex.

Алгоритм работы:

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

Протяжка лески учитывается, если только леска протягивается со скоростью не менее 1.5-2мм/сек. – фиксировано. Факт поклевки регистрируется тогда, когда леска протянута более чем (регулируется) на 2, 6.5, 18, 55мм. (без пауз более 1 сек.) Если за время протяжки леска останавливалась на время, больше, чем 1сек, она считается ложной (считается, что ее не было).

По факту поклевки генерируется 3 громких бипа в сопровождении ярких вспышек 2-х красных светодиодов. Если поклевки не прекращаются, бипы продолжаются, моргают светодиоды. Если поклевки прекратились, бипы замолкают, а светодиоды продолжают просто гореть в пол-накала еще в течение 20секунд. Естественно, в это время тоже идет анализ фактов повторных поклевок. Регулируется только длина зачетного вытяга лески. При первом включении сигнализатора, он бипает и моргает светодиодами столько раз, какой уровень чувствительности он будет отрабатывать. (например 1) Если его выключить, а затем повторно включить, он настроится на следующую ступень чувствительности (например 2) и даст 2 бипа с двумя вспышками. Далее – 3 сигнала, потом 4 и по кругу, опять 1. Это сделано, чтобы минимизировать количество органов управления до единственного выключателя питания.

P.S. Параллельно питанию контроллера желательно поставить электролитический конденсатор на 47-100мкф.

В новой версии схема распространяется с исходным кодом, который можно перекомпилировать ИАР-компилятором.

Теперь возможно, манипулируя в файлике setting.h, определениями

#define senselevel1 66

#define senselevel2 23

#define senselevel3 7

#define senselevel4 3

задавать свои уровни чувствительности. В моем случае 66-минимальная и 3-максимальная чувствительности. Они обозначают, после какого числа импульсов с датчика в течение около секунды подавать сигнал поклевки.

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

Много других параметров также определяются директивами #define. В том числе и распределение пинов. Теперь в зависимости от удобства при разводке печатной платы (чего я не делаю никогда) можно переназначать все пины, кроме пина INT0. Почему? Попробуйте догадаться сами.

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

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

Прежний функционал и схема (ранее была с ошибкой. 6 и 7 ноги были перепутаны) полностью сохранены. Новая прошивка так же будет работать и на старой схеме. Но если дополнительно подключить радиомодуль, к примеру вот этот: http://vrtp.ru/index.php?act=categories&CODE=article&article=1418 то получится полнофункциональный сигнализатор с пейджером.

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

#define serial_nomer          0

и перекомпилировать проект.

Номера допустимы из диапазона 0..15

Таким образом на один пейджер возможно принимать сигналы с 16 сигнализаторов. Мне кажется этого вполне достаточно. В комплекте прилагается файлик прошивки с номером 0

Предусмотрен механизм "одновременного" приема до 4 сигнализаторов. Такого бешенного клева нужно еще поискать.

В ИАР_е открываете main.c Файлик ass.asm добавляете в проект на вкладке workspace. Для правильной компиляции на вкладке Options/C/C++ Compiler/Code в окошке Register utilisations резервируем все 12 регистров.

на вкладке options/General Options ставим птичку Enable bit definitions…

Естественно, просим компилятор сгенерировать понятный вашему программатору выходной файл прошивки. У меня это intel standart.

Оптимизация – по вкусу. Даже без оптимизации прошивка полностью помещается в микроконтроллер.

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

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

И наконец об фьюзах…

У моего они такие:

  OSCCALs    = 60 63 – Можно не трогать. В Вашем случае они могут отличаться.

_LOW = 0x6A

  EESAVE      = 1

  WDTON       = 1

  CKDIV        = 0 – Это важно. Иначе загудит на 8 мгц вместо 1

  SUT              = 2

  CKSEL         = 2 – Это важно. Внутренний генератор

_HIGH = 0xFF

  SELFPRGEN          = 1

  DWEN         = 1

  BODLEVEL            = 3

  RSTDISBL              = 1 – Если установите в 0, Все. Реанимируете только параллельным

P.S. Поскольку у 13 тиньки таймер только один и он уже занят в обработке сигналов с датчика поклевки, то в качестве источника  регулярных прерываний для передатчика выбран АЦП. Для сигнализатора поклевок высокие скорости не обязательны. При тактировании от 1 МГЦ, с прескалером =64 скорость получилась около 250 бит/сек. Для нашего применения вполне достаточна.

Еще одна модернизация сигнализатора поклевки.

Версия 2.01

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

Задумался над схемой сигнализации факта поклевки. У меня светодиоды питались напряжением обратной эдс, возникающей при гудении бузера. Это, с моей точки зрения неплохо, поскольку эта энергия просто рассеивалась бы. Кроме того напряжения, возникающие при этом на бузере стремились бы повредить транзистор. А так светодиоды защищают транзистор от пробоя при этом более экономично жрут батарею. Также по этому же проводу было возможно просто подсветить сигнализатор после факта поклевки, подав на бузер напряжение ультразвуковой частоты. Из недостатков такой схемы нужно отметить паразитную засветку обычных светодиодов от очень свежих батарей. Но эта проблемка снимается установкой сверхярких всетодиодов. Еще один сомнительный недостаток это вероятность слышимости у молодых людей звуков на грани ультразвукового диапазона.

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

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

Примерная схема одного из возможных вариантов:

Диод D1 защищает 7 ногу контроллера от перенапряжений. D2 – защитный для транзистора. Перерисовал управление ключем бузера. На 3 пине постоянной единицы не будет! Можно смело включать так, как нарисовано. С диодами и конденсатором включалось на всякий случай, чтобы не было проблем при отладке программы.

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

Вместо бипа было что-то похожее на улюлюкание. Это было следствием того, что контроллер для снижения потребления работал на частоте 1МГЦ. Во время формирования бипа возникали прерывания для передатчика и от поклевок, которые вносили очень большую задержку и как следствие- искажение звука.

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

Один из перспективных вариантов – задействовать возможность работы контроллера на увосьмеренной частоте, запрограммировав фьюз CKDIV.

Перевел контроллер на тактирование от 9МГЦ. Звук стал практически чистым. Возросла скорость передачи на пейджер. Теперь она около 1 Кбит/сек. На такой частоте это минимально возможная скорость. Но с пейджером ничего менять не нужно. Он способен принимать и на таких скоростях. Также возросло потребление от батареи. Ток возрос с 1.2ма до 4ма! Это неприемлимо. Пришлось разбираться с режимом сна контроллера. Так, как для фиксации сработок датчика использовался запрос INT0 по фронту импульса, не было возможности положить контроллер в глубокий сон, т.к. разбудить его возможно только если прерывания по INT0 настроены по низкому уровню. Но по логике работы это тоже невозможно. Пришлось менять прерывание на PСINT. Теперь чувствительность по количеству сигналов с датчика возросла вдвое, поскольку это прерывание возникает по каждому фронту сигнала. Чтобы оставить чувствительность на прежнем уровне, пришлось константы чувствительности удвоить.

Теперь ток потребления в режиме ожидания с моим постоянно жрущим датчиком 0.66ма!

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

Фьюзы те же, за исключением одного.

CKDIV          = 1 -Тактирование без внутреннего делителя на 8.

Скачать печатные платы, исходники и прошивку

С уважением Грегуль Алексей (grezincmp@mail.ru)


Категория: Электроудочки

Написать коментарий

*
= 3 + 0

Добавить изображение

Последние статьи