Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Готовые конструкции » Зарядка автомобильного аккумулятора.


Зарядка автомобильного аккумулятора.

Сообщений 1 страница 7 из 7

1

Решил разработать автозарядку. Но увы до железа дело не дошло... применил более простой вариант. Чтобы труды даром не пропадали выкладываю разработку в протеусе и исходники.

кнопки +- служат для задания напряжения на аккумуляторе, при котором зарядный ток уменьшается до уровня, при котором этот напряжение поддерживается на постоянном уровне.
В разработке присутствует вычисление напряжения чисто на аккумуляторе с учетом потери онного в проводах. Для чего нужно откалибровать устройство.
Нажимаем на кнопку КАЛИБРОВКА после чего устройство просит замкнуть концы проводов, которые должны подсоединятся к аккумулятору. Далее Шим поднимает ток в замкнутой цепи и идет измерение и вычисление сопротивления проводов. После процедуры определения сопротивления проводов значение онного выводится на дисплей и сохраняется в еепром.
Заданный уровень напряжения тоже хранится в еепроме и может быть откорректирован с точностью в 0,05 Вольта.
При старте зарядного устройства ток начинает плавно рости от 0 до необходимого значения достижения напряжения = заданному, но не привышает 5 Ампер. Регулировка тока осуществляется программным шимом.
РЕКОМЕНДУЕМЫЙ УРОВЕНЬ НАПРЯЖЕНИЯ ОКОНЧАНИЯ ЗАРЯДА, ЗАВОДОМ ИЗГОТОВИТЕЛЕМ АККУМУЛЯТОРОВ VARTA, СОСТОВЛЯЕТ МЕНЬШЕ 14,4V. http://www.varta-automotive.ru/index.php?id=39 (ПУНКТ 4.6).
http://www.varta-automotive.com/elearning/findex.html ГРАФИКИ ЗАРЯДКИ

Кто возьмется - необходима доработка программы - включить прерывание инит от внешнего сигнала и при поступлении онного (кз во внешней цепи зарядки) включать шим на 0.  В схеме прерывание подключено.

http://depositfiles.com/files/pnokexjtq архив с кодом и схемой в протэусе.

Код:
'e-mail P-a-h-a@yandex.ru   
$regfile = "m8def.dat"
$crystal = 8000000
$lib "lcd4.lbx" : Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 : Config Lcd = 16 * 2 : Cls : Cursor Off
Config Portd.4 = Output : Shim Alias Portd.4 : Portd = &HE0
Wait 1
Config Timer0 = Timer , Prescale = 1 : On Timer0 Pulse : Enable Timer0 : Enable Interrupts
Config Adc = Single , Prescaler = Auto , Reference = Internal : Enable Adc : Start Adc
Config Debounce = 30
Dim Y As Byte , Tik As Byte , Temp As Integer , R_provoda As Single , R_provodaeeram As Eram Single , U_provoda As Single , U(12) As Single , I(10) As Single , U_seteeram As Eram Single , U_set As Single , J As Integer , Adc_srednaya As Long

'константы сопротивлений. номер соответствует номеру в схеме, так что можно ставить что под руку попадется а тут ставить точные подручные значения
Const Rr1 = 10
Const Rr2 = 1
Const Rr3 = 0.25
Const Rr4 = 11
Const Rr5 = 1

U_set = U_seteeram
R_provoda = R_provodaeeram
'R_provoda = 1.115
Do
Debounce Pind.5 , 0 , Plus , Sub
Debounce Pind.6 , 0 , Minus , Sub
Debounce Pind.7 , 0 , Kalibration , Sub

' ВЫЧИСЛЕНИЕ ТОКА
Adc_srednaya = 0
For J = 1 To 1000
Temp = Getadc(1)
Adc_srednaya = Adc_srednaya + Temp
Next
Adc_srednaya = Adc_srednaya / 1000
U(1) = Adc_srednaya * 2.56
U(1) = U(1) / 1024
U(1) = U(1) * 1.11                                          ' напряжение  на входе АЦП
I(1) = U(1) / Rr1
U(2) = I(1) * Rr2
U(12) = U(1) + U(2)
I(10) = U(12) / Rr3
'---------------------
'ВЫЧИСЛЕНИЕ НАПРЯЖЕНИЯ
Adc_srednaya = 0
For J = 1 To 1000
Temp = Getadc(0)
Adc_srednaya = Adc_srednaya + Temp
Next
Adc_srednaya = Adc_srednaya / 1000
U(5) = Adc_srednaya * 2.56
U(5) = U(5) / 1025                                          ' напряжение  на входе АЦП
I(5) = U(5) / Rr5
U(4) = I(5) * Rr4
U(10) = U(4) + U(5)
'---------------------
U_provoda = I(10) * R_provoda
U(10) = U(10) - U_provoda


' Вывод на дисплей
Cls
Locate 1 , 1
Lcd U(10)
Locate 1 , 15
Lcd " V"
Locate 2 , 1
Lcd I(10)
Locate 2 , 15
Lcd " A"
If U(10) < U_set Then Incr Y Else Decr Y
If Y = 255 Then Y = 254
If I(10) > 5 Then Y = Y - 2  ' тут ограничение тока до 5 ампер
Waitms 50

Loop
End

Pulse:                                                      ' програмный ШИМ
Incr Tik
If Tik => Y Then Reset Shim Else Set Shim
Return

Plus:                                                       ' обработка кнопки +
Do
U_set = U_set + 0.05
If U_set > 20 Then U_set = 20
Cls
Locate 2 , 1
Lcd U_set
Locate 1 , 1
Lcd "  U zaryada, V"
Waitms 50
Loop Until Pind.5 = 1
U_seteeram = U_set
Waitms 50
Return

Minus:                                                      ' обработка кнопки -
Do
U_set = U_set - 0.05
If U_set < 1 Then U_set = 1
Cls
Locate 2 , 1
Lcd U_set
Locate 1 , 1
Lcd "  U zaryada, V"
Waitms 50
Loop Until Pind.6 = 1
U_seteeram = U_set
Waitms 50
Return

Kalibration:                                                ' обработка кнопки КАЛИБРОВКА
Y = 0                                                       ' ШИМ =0
Cls
Locate 1 , 1
Lcd " ZAMKNITE KONCI "
Locate 2 , 1
Lcd "NAZHMITE KALIBR"
Waitms 1000
Bitwait Pind.7 , Reset                                      ' ждем пока не не нажмут кнопку КАЛИБРОВКА

Y = 50                                                      ' выставляем небольшой ток
For J = 1 To 1000                                           ' проводим  по 1000 замеров напряжения и тока
Delay
Temp = Getadc(0)
Adc_srednaya = Adc_srednaya + Temp
Next
Adc_srednaya = Adc_srednaya / 1000
U(5) = Adc_srednaya * 2.56
U(5) = U(5) / 1025                                          ' напряжение  на входе АЦП
I(5) = U(5) / Rr5
U(4) = I(5) * Rr4
U(9) = U(4) + U(5)                                          'напряжение на клемах зарядного


Adc_srednaya = 0
For J = 1 To 1000
Delay
Temp = Getadc(1)
Adc_srednaya = Adc_srednaya + Temp
Next
Adc_srednaya = Adc_srednaya / 1000
'U(1) = Adc_srednaya * 0.0025
U(1) = Adc_srednaya * 2.56
U(1) = U(1) / 1025
U(1) = U(1) * 1.11                                          ' напряжение  на входе АЦП коэфициент 1,11 подобрался опытным путем - какогото хрена тут закон ома катит только с коэфициентом! вОЗМОЖНО ИЗ-ЗА ПУЛЬСАЦИИ ШИМа
I(1) = U(1) / Rr1
U(2) = I(1) * Rr2
U(12) = U(1) + U(2)
I(9) = U(12) / Rr3

R_provoda = U(9) / I(9)                                     ' вычисляем сопротивление провода по закону ома ( сопротивление плюсуется вместе с внутренним токовым шунтом)
R_provodaeeram = R_provoda

' выводим значение намерянного сопротивления
Cls
Locate 1 , 1
Lcd "   R_provoda=   "
Locate 2 , 1
Lcd R_provoda
Locate 2 , 13
Lcd " Ohm"
Wait 2
Return

увеличить

Отредактировано Pasha (2011-05-08 03:47:10)

0

2

Pasha
Здраствуйте
Заинтересовала ваша зарядка.
Меня интересует как изменить ток заряда ?

0

3

переменной Y
меняя ее от 0 до 255

вот If U(10) < U_set Then Incr Y Else Decr Y строка которая держит ток для заданного напряжения

а вот

Код:
Pulse:                                                      ' програмный ШИМ
Incr Tik
If Tik => Y Then Reset Shim Else Set Shim
Return

програмный шим который задает скважность выходного напряжения

0

4

Ребят, че-то у вас в схеме не так....  Где катушка и диод ? Вы скачки тока представляете на заряд емкости (10000)+акк ????
Мож классический степ-даун на аппаратном ШИМе или можно его же на компараторе.... И регулируйте на здоровье )
Или возьмите старую добрую 494- там 2 компаратора есть, и устанавливайте ШИМом с контроллера пороги... И не греется и токи серьезные можно гонять...
Для примера- http://kravitnik.narod.ru/charge/charge_12.html  куча пространства для творчества- силовая часть готова, контроллером тока рулить остается....

Отредактировано Skull (2011-04-04 21:02:20)

0

5

Вот, нашел толковую ссылку по заряднику универсальному...
http://psw.ru/Charger/BP_ReadMe_071022.pdf

0

6

Skull написал(а):

Вот, нашел

Спасибо за ссылку, очень занятная.
Вы предлагаете внести изменения, как на картинке? Наверное так будет правильно, просто я никогда не работал с преобразователями...

увеличить

0

7

Вот, где-то так, и рулить ШИМом )

0


Вы здесь » Программирование ATMEL в BASCOM. » Готовые конструкции » Зарядка автомобильного аккумулятора.