spy phone gold free download check this out how to track a sprint phone order click best spyware for iphone 6 Plus
После длительного перерыва решил снова накалякать статейку.

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

1.Конролировать напряжение на входе в дом, и при понижении его ниже 160 вольт перевести питание дома на генератор

2.При переходе на генератор: производить пять попыток запуска генератора, и при удачном старте время на прогрев генератора.

3.При появлении напряжения на входе: подать звуковой сигнал, после чего подождать, заглушить генератор и перевести питание дома на ввод.

4. Возможность дистанционного управления генератором.

5.Максимальная безопасность устройства ( контактор генератора находиться на расстоянии 25 метров от блока управления, генератор соответственно там же), развязка от питающей сети.

За вечер была собрана следующая схемка:

Изображение

Это только блок управления, выходы подключаются к буфферным реле.

Немного по схеме. Трансформаторы использованы от какойто китайской лабуды ( главное что не греються во время работы), соответственно номиналы резисторов в делителях напряжения на входах АЦП подбирались отдельно и не соответствуют указаным на схемме. Так же при использовании других трансформаторов нужно изменить делитель в программе.

В программе задействованы кнопки START и STOP , которые выполняют следующие функции:



В режиме питания от сети:

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

Остановка запущеного вручную генератора.



В режиме питания от генератора:

Ручной запуск генератора при неудачных пяти попытках автоматического запуска.

Переход в режим ожидания подачи напряжения без запуска генератора.



Логика работы проста и видна из исходника программы. На данный момент код несколько изменён и не полностью соответствует приведённому ниже.

Код: выделить все
 $regfile = "m8def.dat"                                      ' используем ATmega8
    $crystal = 8000000                                          ' частота внутреннего генератора 8 mHz


    '$sim





    '----------------------Конфигурируем порты ввода-вывода----------------------------------------------

    Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0
    Config Adc = Single , Prescaler = Auto , Reference = Avcc   'конфигурация АЦП
    Speaker Alias Pinb.7

    Config Portc.4 = Output                              ' Подсветка дисплея
    Config Portd.0 = Output                               ' контактор ввода
    Config Portd.1 = Output                               ' контактор генератора
    Config Portd.2 = Output                               ' сигнал на старт генератора
    Config Portb.6 = Output                               ' сигнал на остановку генератора
    Config Pinc.5 = Input                                 ' пуск генератора успешен
    Config Pind.3 = Input                                 ' ручное включение генератора
    Config Pind.4 = Input                                 ' ручное выключение генератора
    Set Portd.3
    Set Portd.4


    Declare Sub Pusk
    Declare Sub Ostanovka
    Declare Sub Dom_on
    Declare Sub Vvod_on
    Declare Sub Dom_off
    Declare Sub Vvod_off
    Declare Sub Zvuk1
    Declare Sub Zvuk2
    Declare Sub Izmer
    Declare Sub Rabota
    Declare Sub Waitvvod
    Declare Sub Failmenu





    'объявляем переменные
    Dim P As Word                                              'Флаг ошибки
    Dim I As Word                                               'Флаг сбоя питания ввода
    Dim G As Word                                               'Флаг сбоя питания генератора
    Dim W As Word                                               'преобразование напряжения на входе
    Dim V As Word                                               'преобразование напряжения на выходе

    Dim N As Integer                                            'временная переменная
    'Config Single = Scientific , Digits = 1
    Dim D As Single                                             'напряжение на входе
    Dim B As Single                                             'напряжение на выходе




    P = 0
    I = 1
    Portd.1 = 0

    '--------------выводим заставку-------------------------------

    Wait 1                                                      'задержка 1 секунда

    Cursor Off                                                  'отключаем отображение курсора на ЖК


    For N = -20 To 0
    Cls
    Locate 1 , 5                                                'позиция курсора

    Lcd "AVR 1.3"                                               'выводим надпись

    Locate 2 , 2
    Lcd "Bє»ЖАeЅёe" ; N
    Wait 1
    Next N
    Gosub Zvuk2

    Portd.0 = 1

    '---------------------главный цикл программы----------------------------------------



    Cls

    Do



    Gosub Rabota


    Loop

    '-------------------Подпрограммы-------------------------------------------

    Rabota:                                                   'Основной режим
    P = 0                                                   'Сбрасываем флаг ощибки генератора

    If Pind.3 = 0 Then                                       'Ручное включение генератора
    Gosub Zvuk1
    Gosub Pusk
    Gosub Dom_on
    End If


    If Pind.4 = 0 Then                                       'Ручное выключение генератора
    Gosub Zvuk1
    Gosub Ostanovka
    Gosub Dom_on
    End If


    Gosub Izmer


    If G = 1 Then
    Portc.4 = 1
    Else
    Portc.4 = 0
    End If

    If I = 0 Then

    Cls
    Locate 1 , 1
    Lcd "AіapёЗ ііoгa!"
    Gosub Vvod_off

    For N = 1 To 50

    Sound Speaker , 1000 , 220
    Sound Speaker , 1000 , 180

    Next N
    Else
    Goto Rabota
    End If


    Cls
    Locate 1 , 1
    Lcd "O¶ёгaeјc..."
    Locate 2 , 1
    Lcd "5 јёЅ."

    Wait 20                                                  'Ожидание напряжения на вводе  (изменить на 5 минут)

    Gosub Izmer

    If I = 1 Then
    Gosub Vvod_on
    Goto Rabota
    Else
    Gosub Vvod_off
    Gosub Pusk
    Gosub Dom_on
    Goto Waitvvod
    End If
    'Loop
    Return




    '-------------------------------------------------------------------------

    Waitvvod:                                                   'Режим резервного питания



    If Pind.3 = 0 Then                                       'Ручное включение генератора
    Gosub Zvuk1
    Gosub Pusk

    End If


    If Pind.4 = 0 Then                                       'Ручное выключение генератора
    Gosub Zvuk1
    Gosub Ostanovka

    End If


    Gosub Izmer


    If G = 1 Then
    Portc.4 = 1
    Else
    Portc.4 = 0
    End If

    If P = 0 Then

    If Pinc.5 = 1 And G = 0 Then                           'Проверка на остановку генератора
    P = 1
    Cls
    Locate 1 , 1
    Lcd "ABAPҐ±"
    Locate 2 , 1
    Lcd "ЎEHEPATOPA!!!"
    Gosub Zvuk2
    Wait 20
    Gosub Dom_off
    Goto Failmenu
    Else
    P = 0
    End If
    End If

    If I = 1 Then                                            'Проверка на появление питания

    Cls
    Locate 1 , 1
    Lcd "Cіeї гa»ё!!!"


    For N = 1 To 50

    Sound Speaker , 1000 , 220
    Sound Speaker , 1000 , 180

    Next N
    Else
    Goto Waitvvod
    End If


    Cls
    Locate 1 , 1
    Lcd "O¶ёгaeјc..."
    Locate 2 , 1
    Lcd "20 ceєyЅг."

    Wait 20                                                  'Ожидание напряжения на вводе

    Gosub Izmer

    If I = 0 Then
    Goto Waitvvod
    Else
    Gosub Dom_off
    Gosub Ostanovka
    Gosub Vvod_on
    Goto Rabota
    End If



    Return


    '-------------------------------------------------------------------------

    Izmer:

    Start Adc

    W = Getadc(0)                                              'получаем данные преобразования с АЦП0
    V = Getadc(1)                                              'получаем данные преобразования с АЦП1


    D = W / 2
    B = V / 2

    D = D * 10
    B = B * 10



    Locate 1 , 1                                              ' позиция курсора

    Lcd D ; " " ; "аOM"                                       'выводим результат преобразования на ЖК, линия дома

    Locate 2 , 1                                              ' позиция курсора

    Lcd B ; " " ; "BBOа"                                        'выводим результат преобразования на ЖК, ввод дома


    If B < 160 Then
    I = 0
    Else
    I = 1
    End If

    If D < 160 Then
    G = 0
    Else
    G = 1
    End If

    Waitms 100                                                ' зедержка 0,1 секунды



    Stop Adc



    Return





    '---------------------------------------------------------------------

    Pusk:                                                   'Запуск генератора.Пять попыток запуска генератора с контролем пуска по обмотке заряда аакумулятора
    P = 0                                                  'Сбрасываем флаг ощибки генератора
    Portd.0 = 0                                             ' Выключаем входжной контактор (хоть он и должен быть выключен,на всякий случавй)
    Portd.1 = 0                                             ' Выключаем контактор генератора

    Sound Speaker , 1300 , 220

    For N = 1 To 5

    Cls
    Locate 1 , 1
    Lcd "Ёycє ґeЅepaїopa."
    Locate 2 , 1
    Lcd "ЁoѕГїєa - " ; N

    Portd.2 = 1
    Wait 5
    Portd.2 = 0
    Wait 2

    If Pinc.5 = 0 Then                                      'Проверка запуска

    Gosub Zvuk2
    Cls
    Lcd "©cѕeБЅГ№ ѕycє!"
    Locate 2 , 1
    Lcd "O¶ёгaЅёe 60 ceє."                                   'Если запуск успешен пиликаем, ждём 60сек и включаем контактор генератора, с поледующим переходом в режим ожидания напряжения на вводе
    Wait 60

    Gosub Dom_on
    Cls
    Goto Waitvvod
    End If


    Gosub Zvuk1

    Cls
    Locate 1 , 1
    Lcd "OЈҐаAHҐE Ё©CKA."
    Locate 2 , 1
    Lcd "Ёay·a 15 ceє"
    Wait 15

    Next N



    Cls
    Locate 1 , 1
    Lcd "O¬Ґ KA ¤AЁ©CKA"
    Locate 2 , 1
    Lcd "ЎEHEPATOPA!"
    Wait 60

    Goto Failmenu

    Return

    '----------------------------------------------------------------
    Ostanovka:
    Cls
    Locate 1 , 1
    Lcd "OCTAHOBKA"
    Locate 2 , 1
    Lcd "ЎEHEPATOPA"
    Wait 7
    'Останавливаем генератор
    Portb.6 = 1
    Wait 3
    Portb.6 = 0


    Return


    '-----------------------------------------------------------
    Failmenu:

    Cls
    Locate 1 , 1
    Lcd "1.ЁoіїopЅГ№ ѕycє"
    Locate 2 , 1
    Lcd "2.Bє»ЖАёїД ііoг"

    For N = 1 To 7000
    If Pind.3 = 0 Then                                  'Ручное включение генератора
    Gosub Zvuk1
    Cls
    Locate 1 , 1
    Lcd "Ёycє ґeЅepaїopa"
    Locate 2 , 1
    Lcd "Аepe· 5 ceє."
    Wait 5
    Gosub Pusk
    Gosub Dom_on
    End If


    If Pind.4 = 0 Then                                       'Ручное Включение режима ожидание питания
    Gosub Zvuk1
    Cls
    Locate 1 , 1
    Lcd "Bє»ЖАeЅёe ііoгa"
    Locate 2 , 1
    Lcd "Аepe· 5 ceє."
    Wait 5

    Goto Waitvvod
    End If

    Wait 1
    Next N
    Goto Waitvvod
    Return


    '----------------------------------------------------------------
    Vvod_on:                                           'Включение контактора ввода

    Portd.1 = 0                                       'Блокируем контактор генератора

    Cls
    Locate 1 , 1
    Lcd "Bє»ЖАeЅёe ііoгa"
    Wait 5

    Portd.0 = 1                                         'включение нагрузки на дом
    Cls
    Return

    '---------------------------------------------------------


    Dom_on:                                            'Включение контактора генератора

    Portd.0 = 0                                            'Блокируем входной контактор

    Cls
    Locate 1 , 1
    Lcd "BK§°«EHҐE"
    Locate 2 , 1
    Lcd "HAЎP©¤KҐ!"
    Wait 5

    Portd.1 = 1                                         'Включение нагрузки на генератор
    Cls
    Return



    '----------------------------------------------------------------
    Vvod_off:                                                   'Отключение контактора ввода

    Cls
    Locate 1 , 1
    Lcd "Oїє»ЖАeЅёe ііoгa"
    Wait 5

    Portd.0 = 0
    Return

    '----------------------------------------------------------------
    Dom_off:                                                   'отключение контактора генератора

    Cls
    Locate 1 , 1
    Lcd "Oїє»ЖАeЅёe"
    Locate 2 , 1
    Lcd "Ѕaґpy·єё"
    Wait 5

    Portd.1 = 0
    Return

    '----------------------------------------------------------------
    Zvuk1:
    Sound Speaker , 500 , 220 : Sound Speaker , 500 , 290
    Return


    '----------------------------------------------------------------
    Zvuk2:
    Sound Speaker , 1000 , 220
    Sound Speaker , 1000 , 290
    Sound Speaker , 1000 , 340
    Return





Вобщем логика работы следующая.

По пошествии 20 секунд после подачи питания на схему производится включение контактора на вводе.Далее устройство переходит в режим слежения за напряжением на вводе. В этом режиме можно проверить работоспособность ввода резерва. В случае понижения напряжения меньше 160 вольт, выдаёться звуковой сигнал и сообщение на дисплей. По прошествии 30 секунд сигнал снимается и следует пятиминутная пауза, в конце которой снова замеряеться напряжение на вводе. Если напряжение за это время не пришло в норму то выключаеться контактор ввода и производится попытка пуска генератора. Запуск генератора контроллируется реле подключенным к обмотке заряда аккумулятора генератора через диод, нормально разомкнутые контакты которого подключены на порт контроллёра.Временные интервалы задаются в программе перед программированием контроллёра, по умолчанию попытка пуска 5 сек. с интервалом 15 сек.(ожидание открытия воздушной заслонки генератора). Если в течении пяти попыток генератор не запустился то устройство перейдет в режим ручного выбора действий (либо снова попытаться запустить генератор, либо ожидать появления напряжения на вводе). При удачном запуске генератора ожидаем минуту для прогрева двигателя и включаем контактор на генератора. После появления напряжения на вводе, подаётся сигнал в течении 30 секунд, после чего пауза на 20 секунд, измерение напряжения на вводе. Если всё внорме то отключается контактор генератора, производится остановка генератора и включение контактора ввода.

А, вот ещё, блок реле. Подключаеться к основному блоку витой парой (да собственно любым проводом).

Изображение

Генератор используеться Stark PSG6500EL, со стартером и электромагнитом воздушной заслонки( на него установлено простейшее реле времени для удержания заслонки некоторое время после пуска двигателя)

Изображение



Вот схемка симуляции работы в Proteus.

Изображение

Вобщем это всё, если вспомню ещё ньюансы то допишу. Схема блока управления, проэкт для Proteus и исходник на Bascom-AVR
Последний раз редактировалось Manowar 19 апр 2015, 23:35, всего редактировалось 1 раз.