как заставит ацп измерять по времени???
|
|
ODNOROG |
Дата: Вс, 30.09.2012, 02:41 | Сообщение # 1 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 06.11.2011
Статус:
Offline
|
в архиве программа и протеус. в чем собственно вопрос.
из за не очень хорошего зарядного устройства не полностью фильтруется переменная составляющая и программа успевает это уловить тем самым заставляет то включить пускатель то выключить.
Принцип программы прост как только уровень напряжения достигнут отключить зарядное устройство. измеряемое напряжение до 108 вольт.
зарядное для электропогрузчиков
|
|
|
|
anatol |
Дата: Вс, 30.09.2012, 09:11 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
А если так?
|
|
|
|
ODNOROG |
Дата: Вс, 30.09.2012, 16:50 | Сообщение # 3 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 06.11.2011
Статус:
Offline
|
спасибо за ответ , но мне кажется это не поможет...
|
|
|
|
mikhail09p |
Дата: Вс, 30.09.2012, 17:16 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Поможет! Диод я бы убрал - тем самым некоторая фильтрация положительных импульсов. И конденсатор не менее 10 мкф. И напишите программно гистерезис с задержкой - 10 - 60 сек.
Сообщение отредактировал
mikhail09p - Вс, 30.09.2012, 17:21
|
|
|
|
anatol |
Дата: Вс, 30.09.2012, 19:41 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
mikhail09p, Диод убирать нельзя. Это "пиковый детектор". Резистор в параллель для разрядки конденсатора.
|
|
|
|
mikhail09p |
Дата: Вс, 30.09.2012, 20:58 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
А зачем здесь "пиковый детектор" ? Нам ведь нужно напряжение на аккумуляторе смотреть, а не выбросы при его зарядке?
|
|
|
|
anatol |
Дата: Вс, 30.09.2012, 22:53 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Источник с большими пульсациями. Из-за внутреннего сопротивления аккумулятора напряжение во время зарядки тоже пульсирует. И у автора при измерении во время максимального напряжения срабатывает отключение зарядки. Гистерезис наверно мал и обнаруживается недозаряд и повторное включение. Конденсатор как фильтр без диода при пульсирующем источнике покажет среднее значение напряжения (уменьшенное по отношению к пиковому) - требует расчета фильтра (данных нет) и коррекции измеренных данных. На диоде мы крадем 0,7 вольта из 108 вольт и устаканиваем измерение .
Сообщение отредактировал
anatol - Вс, 30.09.2012, 22:54
|
|
|
|
ODNOROG |
Дата: Пн, 01.10.2012, 09:42 | Сообщение # 8 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 06.11.2011
Статус:
Offline
|
Спасибо что откликнулись. есть идея сейчас расскажу, а вы поправте если не так .. вот допустим если прописать маленькую под программу ( ну например пи достижении заданог предела сделать паузу) гдето в одну минуту и потом перейти в основную программу??? что скажитеДобавлено (01.10.2012, 09:42) --------------------------------------------- возможно за эту же минуту аккумулятор до зарядится и не будет этого дребезжания реле и пускателя???
|
|
|
|
anatol |
Дата: Пн, 01.10.2012, 11:19 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
ODNOROG, процесс заряда довольно сложен. Однако в упрощенном виде концом заряда можно считать достижение напряжения 1,55 - 1,65 вольта на элемент. (Параметры должны быть заданы в паспорте на акк.) Рабочее напряжение заряженного акк. = 1,2 вольта н а элемент (это под нормальной нагрузкой). Следовательно надо отслеживать среднее значение для допустимости повторного включения на заряд, т.е. достигли максимального значения (1,55 - 1,65) переключаемся в режим контроля напряжения и повторное включение зарядного при опускании напряжения до 1,3-1,4 вольта на банку. Надеюсь у вас аак. щелочные. Для других типов аналогично, только изменяются напряжения.
|
|
|
|
ODNOROG |
Дата: Пн, 01.10.2012, 11:28 | Сообщение # 10 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 06.11.2011
Статус:
Offline
|
дело в том что стоят 40 банок по 2.6 вольта на кажую ( последовательно)
|
|
|
|
Andriy76 |
Дата: Пн, 01.10.2012, 12:47 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
231
Замечания:
±
На сайте с 06.04.2010
Статус:
Offline
|
Можно пойти разными путями 1 Заряжать АКБ в буферном режиме . Взять стабилизатор анодного напряжения и переделать под себя . 2 можно и циклически как Вы хотите . 3 Задействовать ШИМ и им управлять . Контролируем ток , а после переключаемся на контроль напряжения .
|
|
|
|
anatol |
Дата: Пн, 01.10.2012, 13:07 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
ODNOROG, Значит у вас кислотный (свинцовый) аккумулятор. Его ЭДС 2,4 Вольта. А 2,6 вольта это предельное зарядное. Цикл простой 10 секунд зарядный ток, выкл. зарядного тока 1сек пауза, измеряем ЭДС, если меньше 2,5 продолжаем по циклу, если равно или больше выключаем заряд и переходим в просто контроль напряжения стало меньше 2,3 дозаряжаем. и так по кругу.
|
|
|
|
ODNOROG |
Дата: Вс, 07.10.2012, 15:00 | Сообщение # 13 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 06.11.2011
Статус:
Offline
|
наконец то сделал. Правда немного по другому но вообще суппер..... Спасибо всем за внимание
|
|
|
|
anatol |
Дата: Вс, 07.10.2012, 22:49 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Надо поделиться наработанным. В копилку так сказать.
|
|
|
|
ODNOROG |
Дата: Пт, 09.11.2012, 18:42 | Сообщение # 15 |
Группа:
Пользователи
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 06.11.2011
Статус:
Offline
|
вот готовый вариант рабртает следующим образом. когда уровень достиг максимума ----- отключаеться
и не включиться пока не станет ниже минимума я поставил разницу в 2 вольта
им еня это устроило
' ---------------------[подключаемые файлы АЦП]-------------------------------- ' ----------------Задание параметров для команды ADCIN ------------------------ Define ADC_BITS 10 ' Задать число разрядов в результате Define ADC_CLOCK 3 ' Выбрать источник тактового сигнала (3 = RC) Define ADC_SAMPLEUS 50 ' Задать время преобразования в микросекундах '------------------------------------------------------------------------------ TRISA = %11100111 ' Установить PORTA ADCON1 = %10000010 TRISB = $00 ' все выводы порта В - выход TRISC = $0F ' выводы порта С - 0,1,2,3 = вход 4,5,6,7,=,выход
Segments Var PORTB ' вывод сегментов на PORTB Digits Var PORTC ' вывод анодов цифр на PORTС
advv VAR WORD ' хранить результат чтения АЦП вольтметр adva VAR WORD indic VAR WORD ' число для вывода на индикатор n Var Byte ' переменная значения зажигаемого разряда x Var Byte ' переменная номера зажигаемого разряда i Var Byte ' переменная равная количеству разрядов индикатора vid Var Byte ' вид измерения U или А Bk2 Var Byte ' переменная команды Button Bk3 var byte Bk4 var byte Bk5 var byte Bk6 var byte BN Var Byte ' переменная П/П обработки клавиатуры B0 Var Bit ' переменная П/П обработки клавиатуры count_remain VAR BYTE ' Остаток счета count_per_c VAR BYTE ' Счет C maximum var word minimum var word rc0 var portc.0 ; клавиатура = - + rc1 var portc.1 pause 150 '____________ Начало работы программы измерения напряжения __________________ lop: GoSub key: Branchl BN, [volt, maxx, minn] GoTo lop ' Закольцевать volt: ADCIN 0, advv ' Прочитать АЦП - канал 0, значение (0-1023) advv = ((advv + 1) */ 500) >> 2 ' определить: (advv+1 * 500)/1024 indic = advv * 4 ;vid = $c1 gosub log ' вид измерения U GoTo loop1 ' Покажите значение на индикаторе loop1: GoSub display ' Покажите значение на индикаторе GoTo lop ' Возврат '******************************************************************** '________________ П/п вывода числа на индикатор ____________________ '******************************************************************** display: For i = 0 To 3 ' счетчик разрядов n = indic Dig i ' выделить число для индикации GoSub display1 ' засветить чисдо на индикаторе Pause 1 ' пауза в 1 милисек. x = i + 4 ' произвести коррекцию вывода портов вкл. анодов ; if x = 7 then Segments = vid ' на индикатор вид измерения ------ Закрывает !!!!!!!!!!!!! if x = 5 then PORTB.7 = 0 ' подготовить точку Digits = Dcd x ' включить разряд на индикаторе Next i ' продолжить вычислять разряд Return '******************************************************************** '_______________ П/п определения сегментов числа ____________________ '******************************************************************** display1: Digits = $00 ' погасить индикаторы Lookup n, [$C0, $F9, $A4, $B0, $99, $92, $82, $F8, $80, $90, $BF, $FF ], Segments ' таблица 0 1 2 3 4 5 6 7 8 9 - off Return '********************************************************************
maxx: 'vid = $dc indic = maximum Bk3 = 0 Button rc0, 0, 255, 30, Bk3, 0, k11 maximum = maximum + 1 if maximum=2001 then maximum=2000
k11:
Bk4 = 0 Button rc1, 0, 255, 30, Bk4, 0, k22 maximum = maximum - 1 if maximum = 0 then maximum = 1 k22: goto loop1
minn: 'vid = $e3 indic = minimum 'Bk5 = 0 'Button rc0, 0, 255, 30, Bk5, 0, k33 minimum = maximum - 20 if minimum =2001 then minimum = 2000 k33:
'Bk6 = 0 'Button rc1, 0, 255, 30, Bk6, 0, k44 'minimum = minimum - 1 'if minimum = 0 then minimum = 1 k44: goto loop1
'******************************************************************** ; подпрограмма проверки на логику
log:
if advv*4 >=maximum then low porta.3 if advv*4 <=minimum then high porta.3 return
'**************************************************************** key: Bk2 = 0 ' Переменная циклов команды BUTTON Button portC.3, 0, 255, 10, Bk2, 0, k1 ' Проверка кнопки 1(Пропуск если Не Нажато) if B0 = 1 then k2 BN = BN + 1 ' если нажата - записать в переменную +1 if BN = 3 then BN = 0 B0 = 1 k2: return k1: B0 = 0 return '============================================================================== endДобавлено (09.11.2012, 18:38) --------------------------------------------- и все равно работает не так как хочется... Добавлено (09.11.2012, 18:42) --------------------------------------------- когда нет нагрузки программа думает что необходимо произвести заряд и включает пускатель, тут же проверяет что превышает показание и вырубает , и так по кругу
подскажите что можно придумать ....
|
|
|
|