Главная » Файлы » Проекты » Готовые проекты и примеры программ

Авт.Запуск Генератора
19.07.2010, 19:51
Автоматический старт генератора при прекращении подачи электроэнергии

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

Устройство разработано на базе микроконтроллера PIC16F628A
Алгоритм работы следующий:
Каждый цикл программы контролирует вход на который в случае наличия Эл. Энергии в сети подана логическая «0». В случае прекращения подачи, на этом входе появляется логический «1» и запускается цикл автоматического старта движка-генератора.
1. Включение зажигания.
3. Стартер, 3 цикла по 2 секунды, паузы между циклами 10 секунд. (В случае если движок не завелся, цикл прекращается,устройство переходит в Аварийный режим )
Горит светодиод Авария генератора и через каждые 10сек подаётся звуковой сигнал,
при этом включён ручной режим ( от сети )
(Если движок завелся, то стартер отключается, зажигание остается включенным, после паузы в 10 секунд включается подача электроэнергии от генератора).
4. Устройство переключается в режим ожидания восстановления подачи эл. энергии.
5. При восстановлении подачи, генератор автоматически глушится и все возвращается в изначальное состояние.

Для управления заслонкой карбюратора применён электропривод от автомобильного дверного замка ( импульс открытия и закрытия заслонки 0.8сек )
схема устройства:

Вот сам исходник:
'-------------------------- Описание проекта ---------------------------------
'Проект : Gen_And_Set ( Автоматический старт двигателя бензоэлектрического генератора )
'Идея : ( Виталий Иванов г.Оренбург )
'Версия : 1.0.0 от 16.06.2012 ( Программное обеспечение МК ) Бросалин Ф А
'-------------------------- Опции компилятора --------------------------------
Declare SHOW_SYSTEM_VARIABLES = OFF ' При симуляции в Proteus не показывать внутренние переменные
Declare FSR_CONTEXT_SAVE = OFF ' Не заботиться о сохранении содержимого регистра FSR
Declare Reminders = OFF ' Выключить напоминания компилятора
Declare Warnings = OFF ' Выключить предупреждения компилятора
Declare Optimiser_Level 1 ' Включить оптимизацию программы
;-------------------------- Общие настройки------------------------------------
Device = 16F628A ' Используемый микроконтроллер
Xtal = 4 ' Частота осциллятора 4 МГц
'-------------------------- Конфигурация программирования --------------------
Config BODEN_OFF, BOREN_OFF, CP_OFF, DATA_CP_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_ON, INTRC_OSC_NOCLKOUT
'-------------------------- Настройки портов ---------------------------------
PortB_Pullups = OFF ' Выключить подтягивающие резисторы на PORTB
Declare All_Digital = On ' Установить все порты цифровыми входами/выходами
TRISA = %00111111
TRISB = %00000000
PORTB = %00000000
PORTA.6 = 0
PORTA.7 = 0
Symbol Ob_Set = PORTA.1
Symbol Gen = PORTA.0
Dim J As Byte
Dim H As Byte
Dim G As Byte
DelayMS 5000
'-------------------------- Главная программа -------------------------
Main:
PORTB.7 = 0
PORTB.0 = 0
If Ob_Set = 0 And Gen = 1 Then DelayMS 20
If Ob_Set = 0 And Gen = 1 Then PORTB.4 = 1
If Ob_Set = 1 And Gen = 1 Then DelayMS 20
If Ob_Set = 1 And Gen = 1 Then GoTo Avt_z
If PORTA.4 = 0 Then DelayMS 20
If PORTA.4 = 0 Then GoTo Test
If PORTA.3 = 0 Then DelayMS 20
If PORTA.3 = 0 Then GoTo Rucn
GoSub mig
GoTo Main
mig:
PORTB.2 = 1
DelayMS 1000
PORTB.2 = 0
DelayMS 1000
Return
Avt_z:
DelayMS 2000
PORTB.4 = 0
DelayMS 4000
PORTB.7 = 1
DelayMS 4000
PORTA.6 = 1
DelayMS 800
PORTA.6 = 0
DelayMS 4000
If Ob_Set = 0 And Gen = 1 Then DelayMS 20
If Ob_Set = 0 And Gen = 1 Then PORTB.7 = 0:PORTB.4 = 1:GoTo Main
For J = 1 To 3 Step 1
If Ob_Set = 0 Then DelayMS 2000
If Ob_Set = 0 Then PORTB.7 = 0:PORTB.3 = 0: GoTo Main
PORTB.6 = 1
DelayMS 3000
PORTB.6 = 0
DelayMS 10000
If Ob_Set = 1 And Gen = 0 Then PORTA.7 = 1:DelayMS 800:PORTA.7 = 0:GoTo U_K
If Ob_Set = 0 And Gen = 0 Then DelayMS 2000
If Ob_Set = 0 And Gen = 0 Then PORTB.7 = 0:PORTB.3 = 0: GoTo Main
Next J
GoTo Cikl2
U_K:
For H = 1 To 120 Step 1
PORTB.1 = 1
PORTB.2 = 0
DelayMS 500
PORTB.2 = 1
PORTB.1 = 0
DelayMS 500
PORTB.2 = 0
PORTB.1 = 0
If Ob_Set = 0 And Gen = 0 Then DelayMS 4000
If Ob_Set = 0 And Gen = 0 Then PORTB.7 = 0:PORTB.3 = 0: GoTo Main
Next H
PORTB.3 = 1
DelayMS 4000
GoTo PR_T
PR_T:
If Ob_Set = 0 And Gen = 0 Then DelayMS 4000
If Ob_Set = 0 And Gen = 0 Then PORTB.7 = 0:PORTB.3 = 0: GoTo Main
GoTo PR_T
Test:
For H = 1 To 4 Step 1
PORTB.0 = 1
DelayMS 200
PORTB.1 = 1
DelayMS 200
PORTB.2 = 1
DelayMS 400
PORTB.2 = 0
DelayMS 200
PORTB.1 = 0
DelayMS 200
PORTB.0 = 0
DelayMS 400
Next H
GoTo Main
Rucn:
PORTB.1 = 1
DelayMS 500
PORTB.3 = 0
DelayMS 500
PORTB.4 = 1
DelayMS 500
If PORTA.2 = 0 Then DelayMS 20
If PORTA.2 = 0 Then PORTB.1 = 0: GoTo Main
GoTo Rucn
Avariy:
PORTB.0 = 1
PORTB.7 = 0
DelayMS 2000
PORTB.4 = 1
DelayMS 2000
For G = 1 To 3 Step 1
PORTB.5 = 1
DelayMS 500
PORTB.5 = 0
DelayMS 500
Next G
DelayMS 20000
GoTo Avariy
Cikl2:
PORTB.7 = 0
For G = 1 To 30 Step 1
PORTB.2 = 1
DelayMS 500
PORTB.2 = 0
DelayMS 500
Next G
DelayMS 2000
PORTB.4 = 0
DelayMS 4000
PORTB.7 = 1
DelayMS 4000
PORTA.6 = 1
DelayMS 800
PORTA.6 = 0
DelayMS 4000
If Ob_Set = 0 And Gen = 1 Then DelayMS 20
If Ob_Set = 0 And Gen = 1 Then PORTB.7 = 0:PORTB.4 = 1:GoTo Main
For J = 1 To 3 Step 1
If Ob_Set = 0 Then DelayMS 2000
If Ob_Set = 0 Then PORTB.7 = 0:PORTB.3 = 0: GoTo Main
PORTB.6 = 1
DelayMS 3000
PORTB.6 = 0
DelayMS 20000
If Ob_Set = 1 And Gen = 0 Then PORTA.7 = 1:DelayMS 800:PORTA.7 = 0:GoTo U_K
If Ob_Set = 0 And Gen = 0 Then DelayMS 2000
If Ob_Set = 0 And Gen = 0 Then PORTB.7 = 0:PORTB.3 = 0: GoTo Main
Next J
GoTo Cikl3
Cikl3:
PORTB.7 = 0
For G = 1 To 30 Step 1
PORTB.2 = 1
DelayMS 500
PORTB.2 = 0
DelayMS 500
Next G
DelayMS 2000
PORTB.4 = 0
DelayMS 4000
PORTB.7 = 1
DelayMS 4000
PORTA.6 = 1
DelayMS 800
PORTA.6 = 0
DelayMS 4000
If Ob_Set = 0 And Gen = 1 Then DelayMS 20
If Ob_Set = 0 And Gen = 1 Then PORTB.7 = 0:PORTB.4 = 1:GoTo Main
For J = 1 To 3 Step 1
If Ob_Set = 0 Then DelayMS 2000
If Ob_Set = 0 Then PORTB.7 = 0:PORTB.3 = 0: GoTo Main
PORTB.6 = 1
DelayMS 3000
PORTB.6 = 0
DelayMS 20000
If Ob_Set = 1 And Gen = 0 Then PORTA.7 = 1:DelayMS 800:PORTA.7 = 0:GoTo U_K
If Ob_Set = 0 And Gen = 0 Then DelayMS 2000
If Ob_Set = 0 And Gen = 0 Then PORTB.7 = 0:PORTB.3 = 0: GoTo Main
Next J
GoTo Avariy

Категория: Готовые проекты и примеры программ | Добавил: Broka
Просмотров: 4649 | Загрузок: 89 | Комментарии: 2 | Рейтинг: 4.0/2
Всего комментариев: 2
2 MasterPic   (16.04.2011 18:50)
Так напиши автору в личку

1 Доцент   (16.04.2011 14:06)
Собрал! не работает, установил кварц 4 Мгц-запустился, но не включается зажигание и цепь генератора, такое впечатление, что пол схемы не работает!!! >((((

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]