Электропастух.

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

В интернетах такого не встретил, все делают на таймерах или дискретной логике. Исправим.

Суть девайса - на столбиках натянут провод на изоляторах и бок выдает периодически на эту проволоку высоковольтные импулься (искру) относительно земли. Для животных не опасно, но болезненно и быстро вырабатывается рефлекс - не подходить близко к забору. Напряжение 4-5КВ для гладкошерстных и 8-10 для лохматых. Длина участка до 10КМ. Все собрано, все работает. Задействован сторожевой таймер и есть контролька утечки высокого напряжения в линии с сигнализацией. Остальное думаю будет понятно и так. Пользуйтесь кому надо!




//     Electric fency. Umka 2016
//     http://u-m.biz


#include <avr/wdt.h>
#define outPin 3                          // выход на коммутатор
#define pausePin A1                       // пин резистора регулировки паузы  
#define counterPin A3                     // пин резистора регулировки пакета искр
volatile unsigned long waitAlarm = 30000; // таймер аварии по высокому напряжению
unsigned long now;

void setup() {
  //Serial.begin(9600);
  pinMode(outPin, OUTPUT);                // назначаем пин выхода выходом :)
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  wdt_enable (WDTO_8S);                   // заводим сторожевой таймер на 8 сек.
  attachInterrupt(0, resetAlarm, FALLING);// цепляем прерывание для сброса аварии по искре
}

void loop() {
  int pause = analogRead(pausePin) * 3;   // задаем резистором паузу 0 - 3 сек.
  int counter = analogRead(counterPin);
  counter = map(counter, 0, 1024, 1, 30); // задаем количество искр в каждом пакете
  now = millis();
  if (now < waitAlarm && millis() % pause < 2) {
    for (int count = 0 ; count < counter ; count++){ // в цикле повторяем для каждой искры
      digitalWrite(outPin, HIGH);         // циклично дрыгаем ногами выхода и светодиода на 13 пине.
      digitalWrite(13, HIGH);
      delay(5);
      digitalWrite(outPin, LOW);
      digitalWrite(13, LOW);
      delay(5);
      //Serial.print(now);
      //Serial.print("  ");
      //Serial.println(waitAlarm);
    }
  }
  else if (now > waitAlarm && millis() % 10000 < 2) { 
    analogWrite(13, 120);                // при утечке искры зажигаем светодиод и 
    digitalWrite(outPin, HIGH);		     // раз в 10 секунд выдаем проверочную искру.
    delay(5);
    digitalWrite(outPin, LOW);
    //Serial.println("alarm");
  }
  wdt_reset();                           // сбрасываем сторожевой таймер.
}

void resetAlarm() {						 // сбрасываем аварийный счетчик по датчику искры
  waitAlarm = now + 30000;
  delay(5);
}

 

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

Видео на youtube:

1 часть.

https://www.youtube.com/watch?v=A6aJ5BiYMKQ

 

2 часть.

https://www.youtube.com/watch?v=bF6NjrPCUNE

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

бедная свинка)) а вообще классно. как проблему утечек после дождя решал?

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

Свинка не бедная. Ей 3 раз хватило чтобы потом неделю не подходить к забору.

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

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

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну тогда все норм

uncle_grin
Offline
Зарегистрирован: 26.04.2015

А где схема кстройства? Под спойлером только код

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

В видео, во 2 части.

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Спасио, посмотрел, но очень неудобно, т.к с телефона. Схема в тексте смотрелась бы лучше ;)

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012
uncle_grin
Offline
Зарегистрирован: 26.04.2015

Спасибо!
У автора действительно выходит дешево и сердито. Все можно купись у дедушек на авторынке за сущие копейки. А вместо коммутатора можно поставить мощнейший полевик с материнской платы :)

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

Или модуль зажигания, например Тойотовский. Там и катушка и коммутатор сразу в одном флаконе.

Denis1310
Offline
Зарегистрирован: 25.01.2017

Доброе время суток!

Заинтересовал данный проект. Купил Ардуино "НАНО", залил скеч "моргание светодиодом" работает (светодиод моргает), заливаю скетч электропастуха из данной темы, на выходе ни чего нет (на выход цепляю осциллограф).

Может, что не так делаю?

На выходе 3 Pina сигнал какой формы должен быть?

 

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

Denis1310 пишет:

На выходе 3 Pina сигнал какой формы должен быть?

прямоугольной, а шо? - нет?

Denis1310
Offline
Зарегистрирован: 25.01.2017

Разобрался, я подключал по схеме которая у автора во 2-ой части, а там если посмотреть, то провод на коммутатор идёт от контакта 3 считая от левого с верху края (у меня подписан как D10) в результате у меня ни чего не получалось. В результате всяких танцев с "бубном" рабочим оказался выход D3 (если смотреть на схему автора, то контакт 10 от левого с верху края).

Теперь другая проблема, всё регулируется, единственное, что через некоторое время всё перестаёт работать пока кнопку "ресет" не нажать. Может ли это быть из за того, что кнопка не подтянута резистором и конденсатором?

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

Скетч с детектором залил, а детектор искры не сделал да? 

Denis1310
Offline
Зарегистрирован: 25.01.2017

Umka пишет:

Скетч с детектором залил, а детектор искры не сделал да? 

О скетче, Я его прежде чем залить "проверил" и в среде Ардуино 1.6.13 (с ней я работаю в данный момент) программа показала ошибку в строке    attachInterrupt(0, resetAlarm, FALLING), пишет, что "resetAlarm" не задикларирован. Как правильно это сделать и в какой области?

Скетч заливал без "проблемной" строки.

Прошу прощения, я новичок в Ардуино.

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

resetAlarm это такая функция в скетче, ктороая будет вызываться по прерыванию внешнему. Суть такая - счетчик аварии считает микросекунды, детектор искры по прерыванию его постоянно сбрасывает, авария не наступает, пока фигачит искра. Про функции можно почитать по ссылке "программирование" вверху страницы.

Denis1310
Offline
Зарегистрирован: 25.01.2017

Umka пишет:

resetAlarm это такая функция в скетче, ктороая будет вызываться по прерыванию внешнему. Суть такая - счетчик аварии считает микросекунды, детектор искры по прерыванию его постоянно сбрасывает, авария не наступает, пока фигачит искра. Про функции можно почитать по ссылке "программирование" вверху страницы.

Что то про эту функцию в "программирование" я ни чего не нашёл. Да и непонятно почему при проверке прога пишет ошибку. Пытаюсь изучить данную функцию по другим сайтам.

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

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

movcale
Offline
Зарегистрирован: 29.03.2012

Собрал пастух по Вашей схеме на деталях

Катушка зажигания ВАЗ 2101-07 Б117А-11
Пучок проводов коммутатора ВАЗ 2108-2109
Коммутатор ВАЗ 2108-09-099, 1111 133.3774-01
Батарея WBR HR 1234 W F2 12V/9AH
DC-DC step-down power supply module 3A
+ китайская arduiono nano

В ардуино пришлось перепрошить бутлоадер в optiboot чтобы заработал аппаратный сброс (watch dog)
Как это сделать, например, можно прочитать здесь

Но видимо, что-то собрал не так :)

В момент высоковольтного разряда по всей схеме идёт скачок перенапряжения, да такой, что мультиметр в режиме измерения постоянного тока > 600V , подключенный на выход dc-dc преобразователя начинает показывать нереальное напряжение вместо 5V.

Искра есть, но ардуино в таком режиме зависает через 5-10 секунд, даже если высоковольтный провод не поднесён близко к массе
Аппаратный reset срабатывает изредка, в большинстве случаев помогает только отключение питания.

Вобще удивительно, что arduino и dc-dc преобразователь не сгорают при таких скачках напряжения.

На фото Вашего изделия я вижу еще установлен стабилитрон ZD 4v7
Если можно увидеть полную схему,  буду благодарен за помощь

 

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

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

movcale
Offline
Зарегистрирован: 29.03.2012

Коммутатор и катушка скручены между собой гайкой и болтом через штатные отверстия и подключены к выходу номер два на коммутаторе и к минусу. Как на схеме
Вот фото как я собрал  https://yadi.sk/i/vo258q2_3JE33h и https://yadi.sk/i/0_GHsfKs3JE3kv

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

Буду изучать.

movcale
Offline
Зарегистрирован: 29.03.2012

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

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

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

https://goo.gl/photos/rX1mTSrpGXdKwBbr7

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

movcale
Offline
Зарегистрирован: 29.03.2012

Спасибо за объяснение. А почему стабилитрон перед МК, а не перед dc-dc преобразователем? Ему ведь тоже вредно перенапряжение.
Можно ли типа такого
Д815Д металл, Стабилитрон кремниевый мощный, 12В

поставить перед dc-dc?

Про оптрон пока не понимаю, ведь источник питания один. На клеммах аккумулятора скачки напряжения до > 1000В.
Это если бы, скажем, ардуино от отдельных 5v питалась и измерять  ей напряжение или ток в сети 220v через оптрон, то да. Поищу еще схемы.

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

Вообще-то dc-dc и есть сам себе стабилитрон. Ну то есть стабилизатор напряжения. Что ему изменения на входе, тем более от БП или аккумулятора. А стабилитрон на входе с детектора искры тут стоит. Там жестянка пластина на провод высоковольтный трубочкой надета. И импульс там до 20В легко генерируется, я смотрел осциллографом. А что может случиться с МК, если ему на вход 20+В подать? Может просто зависнуть, а может и сгореть вход, в зависимости от силы ЭДС. Стабилитрон тут поможет сделать из непонятного всплеска 4,7В, то есть логическую единичку для мк. 

movcale
Offline
Зарегистрирован: 29.03.2012

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

Можете дать ссылку на ваш dc преобразователь? 

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012
movcale
Offline
Зарегистрирован: 29.03.2012

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

Скорее всего есть проблема с большими наводками на мк из-за длинных проводов или еще чего-то. У меня достаточно на D2 подключить кусок провода, чтобы сработало прерывание в вашем скетче. Даже не нужно его к земле притягивать :)

кстати, там опечатка на зажигание диода нужно digitalWrite(13, HIGH) вместо analogWrite(13, 120)
и еще по описанию внутри прерывания функция delay() не работает

а мультиметр показывает скачок напряжения в момент разряда, даже если плюсовую клемму мультиметра отсоединить от аккумулятора!

Alex20051743
Offline
Зарегистрирован: 09.02.2020

Здравствуйте. Помогите с прошивки ардуино нано для электропастух.

СанСаныч
Offline
Зарегистрирован: 24.03.2020

Чего там у Вас случилось то.

СанСаныч
Offline
Зарегистрирован: 24.03.2020

Вы на фермер.ру есть?