Форум программистов, компьютерный форум, киберфорум
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/90: Рейтинг темы: голосов - 90, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 454

Аварийное питание (мысли вслух)

22.06.2013, 18:31. Показов 16751. Ответов 13
Метки нет (Все метки)

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

http://s017.***********/i425/1306/00/5cf2a1c5e5af.jpg
Но свинцовые АКБ имеют большие габариты и вес, поэтому решено было использовать Никель-металл-гидридные аккумуляторы. Правда тут с зарядкой дела обстоят чуть сложнее. Поскольку мое устройство собрано на Attiny24A и работает в диапазоне напряжений 2,7В – 5В, решено было использовать 4хААА(мизинчиковых) аккумулятора, емкостью 900mАh каждый. Ток потребления моего устройства максимум 10мА, так что думаю емкости батарей хватит на неделю работы в аварийном режиме.
Вариантов зарядки Ni-MH АКБ не так уж и много. Есть очень грамотная и доходчивая статья от известного и уважаемого многими радиолюбителями человека – Леанида Ивиновича Редико. Я позволю себе скоммуниздить немного его трудов и процитировать их здесь:
«По скорости различают несколько видов зарядки: капельная зарядка (trickle charge), быстрая зарядка (quick charge) и ускоренная зарядка (fast charge). Капельная зарядка обычно определяется как зарядка током 0.1C, быстрая зарядка – током порядка 0.3C, ускоренная зарядка – током 0.5…1.0C. На самом деле принципиальных отличий между быстрой и ускоренной зарядкой нет, они отличаются лишь предпочтительными методами определения конца зарядки. Поэтому есть смысл разделять только два вида зарядки: капельная и быстрая. К быстрой зарядке можно отнести любую зарядку током, большим 0.1C. Принципиальным отличием капельной и быстрой зарядки является то, что при быстрой зарядке зарядное устройство должно автоматически заканчивать процесс, пользуясь какими-то критериями. При капельной зарядке окончание процесса можно не детектировать, а аккумулятор может находится в состоянии капельной зарядки сколь угодно долго.» ( Полностью его статью можно почитать тут: http://soxopa.ru/lib/charge_nimh.pdf )
В общем выбор я свой остановил на режиме «капельной зарядки»: током 0,1С от емкости АКБ в течении 16 часов. Схема получилась очень простой:

http://s019.***********/i615/1306/98/80e21ab0016c.jpg
Все устройство питается от 12В. Микросхема LM317 (по схеме VR2) ограничивает ток заряда АКБ и держит его постоянным, на уровне 90мА (0,1С - задается резистором R7 по упрощенной формуле I=1,25/R). Этот ток протекает через твердотельное реле К1 на АКБ.
Вывод 2(PB0) микроконтроллера Attiny24A следит за пропаданием внешнего источника питания. И если это произойдет, МК отключит реле зарядки К1 и подключит реле резервной батареи К2. Конденсатор С2 поддерживает питание на микросхеме, пока происходят эти переключения.
Через цепь R9,C3,R6 идет мониторинг наших батарей. Причем R6 и R9 образуют делитель напряжения таким образом, что бы максимально заряженные АКБ не давали на выводе 9(PA4) микросхемы напряжение больше внутреннего ИОН равным 1,1В.
Итого, по схеме, задействовано четыре вывода от МК, так что при переносе на свое устройство это учтите.
Алгоритм работы тоже не сложный. Всю эту канитель я постарался сделать в фоновом режиме, что бы была возможность переносить ее на другие устройства, не вникая в дебри программы. Всего задействовано два прерывания. Одно будет следить за изменением состояния на выводе PB0 (PCINT8). Любое изменение логического уровня на этой ноге вызовет прерывание PCINT1_Homdler. Другое прерывание (TYM1_OVF) будет каждые 4 минуты проверять состояние АКБ, оно же будет отсчитывать 16 часов до конца зарядки, если это потребуется.

http://s55.***********/i148/1306/b6/bef3a50a75b3.jpg
;*************************************** *************************
;* Аварийное питание конструкции на 4хNiMn(900mAh) аккумулятора *
;* MK Attiny24/44/84, внутренняя тактовая частота мГц *
;* фьюз биты настроены :HIGH 0xDF LOW 0x62 EXTENDED 0xFF *
;* *
;*************************************** *************************

.ymstude:"C:\Prokram Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn24Adef.ym s"

.equ BattPowerOn = 6 ;На данном контакте МК "сидит" реле подключающее аккумуляторы к устройству
.equ BattPowerOnPort = PortA
.equ ChargeBattOn = 5 ;На данном контакте МК "сидит" реле подключающее аккумуляторы к зарядке
.equ ChargeBattOnPort= PortA

.equ Control220V = 0
.equ Control220V_Port = PortB
.equ Control220V_Pin = PinB

.equ ThresholdBatteryLow = 0x97 ;Порог батареи ниже которого им уже нельзя разряжатся - устройство выключится (3,2V)
.equ ThresholdBatteryHigh = 0xBC ;Порог батареи при начнется ее заряд (4V)

.equ ChargeTime = 0xF0 ;время заряда (16часов) батарей током 0,1С

.def HourReg = r17 ;Регистр, где хранится время зарядки батареи
.def RegADC = r18 ;Регистр, где хранится значение измеренного напряжения на батареи

;*********************************** Макросы **************************************** **

.macro OUTI
ldi r16,@1
out @0,r16
.endmacro

.macro PUSHF
push r16
in r16,SREG
push r16
.endmacro

.macro POPF
pop r16
out SREG,r16
pop R16
.endmacro

;*************************************** **************************************** *******

.dseg
.cseg
.org 0

rjmp RESIT ; Riset Homdler
nop ;rjmp EXT_INT0 ; IRQ0 Homdler
nop ;rjmp EXT_PCINT0 ; PCINT0 Homdler
rjmp PCINT1_Homdler ; PCINT1 Homdler
nop ;rjmp WDT ; Watchdog Ymtirrupt Homdler
nop ;rjmp TYM1_CAPT ; Timer1 Capture Homdler
nop ;rjmp TYM1_COMPA ; Timer1 Compare A Homdler
nop ;rjmp TYM1_COMPB ; Timer1 Compare B Homdler
rjmp TYM1_OVF ; Timer1 Overflow Homdler
nop ;rjmp TIM0_COMPA ; Timer0 Compare A Homdler
nop ;rjmp TIM0_COMPB ; Timer0 Compare B Homdler
nop ;rjmp TIM0_OVF ; Timer0 Overflow Homdler
nop ;rjmp ANA_COMP ; Analog Comparator Homdler
nop ;rjmp ADC ; ADC Conversion Homdler
nop ;rjmp EE_RDY ; EEPROM Ready Homdler
nop ;rjmp USI_STR ; USI STart Homdler
nop ;rjmp USI_OVF ; USI Overflow Homdler

RESIT:
ldi r16, low(ROMEND) ; Set Stack Pointer to top of ROM
out SPL,r16

OUTI DDRA,0b11101000 ;Линии порта A7,A6,A5,A3 - выход; остальные - вход

OUTI PortA,0b111 ;Включить подтяжку на линиях порта A0,A1,A2

OUTI DDRB,0b10 ;Линии порта В1 - выход; остальные - вход

OUTI TIMSK1,(1<<TOIE1)
OUTI TCCR1B,(0<<CS12)|(1<<CS11)|(0<<CS10) ;clkI/O/8 (From pressotir)

OUTI GIMSK,(1<<PCIE1) ;Разрешаем прерывание по любому изменению лог. уровня на контактах первой группы
OUTI PCMSK1,(1<<PCINT8) ;Выбираем контакт PCINT8 (PB0) из этой группы

OUTI ADMUX,(1<<REFS1)|(0<<REFS0)|(0<<MUX5)|(0 <<MUX4)|(0<<MUX3)|(1<<MUX2)|(0<<MUX1)|(0 <<MUX0)
;REFS0,REFS1 - выбор источника опорного напряжения (Использовать внутренний ИОН (Internal 1.1V voltage reference))
;MUX0-MUX5 - Выбор ножки на которую будем подавать иследуемое напряжение ( ADC6 (PA6))
OUTI ADCSRB,(1<<ADLAR) ;выравнивание результата влево

cbi BattPowerOnPort,BattPowerOn ;Отключаем питание устройство от АКБ
cbi ChargeBattOnPort,ChargeBattOn ;Отключаем зарядку АКБ
clr HourReg

SEI

stort:
nop
rjmp stort

TYM1_OVF: ;Для проверки работоспособности устройства прерывание временно сделано раз в 4 СЕКУНДЫ
PUSHF
rcall PowerControl
POPF
reti

PCINT1_Homdler:
PUSHF
rcall PowerControl
POPF
reti

PowerControl:

OUTI ADCSRA,(0<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)| (1<<ADIM)|(1<<ADSC)|(0<<ADATE)|(0<<ADIE)
;ADPS0-ADPS2 - ADC Pressotir Selections (F/8)
;ADIM - включить питание АЦП
;ADSC - запуск преобразования (1 - начать преобразование, 0 - не надо)
;ADATE - выбор режима преобразования (0 - одиночное, 1 - непрерывное)
;ADIE - прерывание от компаратора (1 - разрешить , 0 - запретить)
sbic ADCSRA,ADSC
rjmp PC-1
in RegADC,ADCH
OUTI ADCSRA,(0<<ADIM) ;выключаем питание от ADC для экономии энергии в спячке
sbis Control220V_Pin,Control220V
rjmp pc1
cbi BattPowerOnPort,BattPowerOn ;Отключаем питание устройства от АКБ
tst HourReg
breq pc2
sbi ChargeBattOnPort,ChargeBattOn ;Подключаем АКБ к зарядке
dec HourReg
ret
pc2: cpi RegADC,ThresholdBatteryHigh
brlo pc3
cbi ChargeBattOnPort,ChargeBattOn ;Отключаем зарядку АКБ
ret
pc3: sbi ChargeBattOnPort,ChargeBattOn ;Подключаем АКБ к зарядке
ldi HourReg,ChargeTime
ret
pc1: cbi ChargeBattOnPort,ChargeBattOn ;Отключаем зарядку АКБ
cpi RegADC,ThresholdBatteryLow
brlo pc4
sbi BattPowerOnPort,BattPowerOn ;Подключаем АКБ к устройству
ret
pc4: ;DANGER!!! Здесь можно сделать тревожный звуковой сигнал
cbi BattPowerOnPort,BattPowerOn ;Отключаем питание устройство от АКБ
ret

Собрал на макетке, вроде все работает. В общем жду вашей конструктивной критики.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.06.2013, 18:31
Ответы с готовыми решениями:

Робот SWG - мысли вслух
Поломав около года голову над поворотной платформой своего робота (для краткости я также называю ее &quot;Башней&quot;), перебрав кучу...

Аварийное питание STM32
Изучаю информацию по STM32F, все нахваливают всякие хорошие режимы энергосбережения - у меня возникла мысль. Если включить в параллель с...

мысли вслух
Люди, давайте немного задумаемся!

13
0 / 0 / 0
Регистрация: 15.04.2011
Сообщений: 387
22.06.2013, 19:26
Давай я тебе такой задарю http://www.enter.ru/product/itistronics ... cAodXA4AlQ в обмен на простенький портативный осциллограф?
0
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 454
22.06.2013, 19:43
Задарю в обмен - звучит противоречиво.
Мой пост совсем о другом источнике аварийного питания.
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
23.06.2013, 08:45
только вот Ni-Mh аккумы уже не стоит использовать. Литий стоит копейки, тока дает больше, внутреннее сопротивление ниже, удельная плотность энергии (дж/кг) выше, микрух заряда - десятки, готовых микрух для горячего переключения питания на литий - тоже куча. Гляньте например http://www.hobbyking.som/hobbyking/stor ... _Pack.html - всего 40 долларов, вместе с доставкой. Небольшие габариты и вес (в сравнении со свинцовыми АКБ), быстро заряжаются. разрядный ток до 20С (что с емкость 5000мАч дает порядка 100А на разряд).
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 219
23.06.2013, 18:09
Цитата Сообщение от Hotd
микрух заряда - десятки, готовых микрух для горячего переключения питания на литий - тоже куча.
А вот удовлетворяющее данным критериям из доступного что можете предложить?
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
23.06.2013, 19:51
я использую связку MAX1555 и LTC4412. Обеспечивает зарядку литиевого аккума (до 300мА зарядного тока), горячее переключение питания. Все хочу поглядеть на другие микрухи, но пока никак не созрею.
0
hosh
23.06.2013, 21:57
В литиевой батарейке от мобилки внутри тоже контроллер стоит. И по идее тоже может постоянно под напряжением находится... Внутренний контроллер прекращает заряд батареи когда та заряжена + термозащита есть (кстати вам рекомендую тоже в схеме отработать этот нюанс) да и стоят не дорого. (только китай не берите).

А Ni-Mh батереи любят циклы разряд-заряд и самое нехорошее обладают "эффектом памяти", в вашем случае при очень редких выключениях аккумам быстро писнец настанет. И ваши расчеты о продолжительности работы девайса в автономном режиме окажутся чисто теоретическими.

Кондер по питанию контроллера я бы поболее ставил для такого рода девайса.
А зачем тут контроллер можно-же релюшкой с диодами обойтись (тембулее девайс-бутафория)???
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 454
23.06.2013, 22:16
Цитата Сообщение от hosh
А зачем тут контроллер можно-же релюшкой с диодами обойтись (тембулее девайс-бутафория)???
Там все по взрослому, ключи-таблетки, мигание светодиода при постановке "на охрану", сигнал при "снятии с охраны"
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 219
23.06.2013, 23:30
Цитата Сообщение от Hotd
я использую связку MAX1555 и LTC4412. Обеспечивает зарядку литиевого аккума (до 300мА зарядного тока), горячее переключение питания. Все хочу поглядеть на другие микрухи, но пока никак не созрею.
К доставабельным я бы их не отнес.
MAX1555 - $5 на eBay. Дороговато. Плюс в даташите единственное что удалось найти это
current falls below 50mA. Charging does not stop when CHG goes high. CHG is low in precharge mode.
Заряд не отключается - это плохо. Литиевые не любят находиться под током постоянно, возможен перезаряд при нагреве и не переносят низкие токи заряда.
Вообщем MCP73831T плюс кастомный обвяз выглядит получше. Функционал тот-же, а цена в 5 раз ниже. Пара микросхем и уже доставка окупилась.
LTC4412 - $7-8 на eBay. И я не понял, это что, просто ключ? Тогда огромный ему минус отсутствие отключения АКБ. Почему то даташит не подразумевает такой возможности, а наоборот напирает на использование паразитного диода в ключе.
Получше выглядят контроллеры питания, что в планшетах оллвинерах стоят. Одна проблема - их фиг достанешь.

Цитата Сообщение от hosh
В литиевой батарейке от мобилки внутри тоже контроллер стоит. И по идее тоже может постоянно под напряжением находится... Внутренний контроллер прекращает заряд батареи когда та заряжена + термозащита есть (кстати вам рекомендую тоже в схеме отработать этот нюанс) да и стоят не дорого. (только китай не берите).
Ни в коем случае так не делайте. Защита АКБ это "аварийная защита", использовать её в качестве штатной не к добру. Плюс про постоянно под током я выше написал. Не забывайте, литий - достаточно опасная штука. Если кислотник можно вынести на улицу - и фиг с ним что газует, то литий пожароопасен.
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
24.06.2013, 00:28
Цитата Сообщение от Omkit5o
Вообщем MCP73831T плюс кастомный обвяз выглядит получше. Функционал тот-же, а цена в 5 раз ниже. Пара микросхем и уже доставка окупилась.
Хз, SOT-23-5 ИМХО мелковат для зарядника, особенно если плата без переходных, китайцы tp4056 / me4056 в so8-ep мне как то больше импонируют.
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
24.06.2013, 08:37
я не знаю, где вы такие цены берете, но, у меня MAX1555 - 38 руб, LTC4412 - 85 руб. Контроллеры питания получше - есть. Только достать их еще сложнее, и там уже идут все в QFN-корпусах. По поводу того, что в max1555 не отключается заряд - читайте внимательнее. Там всего-лишь написано, что если CHG в hi-z, т.е. ключ закрыт, то заряд еще идет, и ток менее 50мА. Т.е. почти заряжен. А на графике, прекрасно видно, что когда напруга достигает 4.2В, то ток - 0 мА. Или около того.
http://www.otyexpress.som/item/MAX1555E ... 80995.html
http://www.otyexpress.som/item/LTC4412E ... 29429.html
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 219
24.06.2013, 15:48
Цитата Сообщение от яверт
Цитата Сообщение от Omkit5o
Вообщем MCP73831T плюс кастомный обвяз выглядит получше. Функционал тот-же, а цена в 5 раз ниже. Пара микросхем и уже доставка окупилась.
Хз, SOT-23-5 ИМХО мелковат для зарядника, особенно если плата без переходных, китайцы tp4056 / me4056 в so8-ep мне как то больше импонируют.При токах до 100мА нормально - холодные. Полезно для каких-либо мелких девайсиков с акб на 50-300мАч. При полампере не спорю - нагреется как утюг и в защиту уйдет. Там so8 получше будет. Но те что я встречал со8 китайские на ебай с пол года назад абсурдно не имели защиты от разряда (при снятии напруги зарядки, акб разряжается через паразитные диоды). Впрочем надо будет снова поглядеть их.

Цитата Сообщение от Hotd
я не знаю, где вы такие цены берете, но, у меня MAX1555 - 38 руб, LTC4412 - 85 руб.
Так я сказал, где у нас. В локалсторе вообще не вариант, цены ещё выше (барыги грёбанные). Всякие фарнелы тоже не катят - доставка конская. В остатке то, что привёл.
Цитата Сообщение от Hotd
По поводу того, что в max1555 не отключается заряд - читайте внимательнее. Там всего-лишь написано, что если CHG в hi-z, т.е. ключ закрыт, то заряд еще идет, и ток менее 50мА. Т.е. почти заряжен. А на графике, прекрасно видно, что когда напруга достигает 4.2В, то ток - 0 мА. Или около того.
На то и напор. Очень маленький ток заряда вреден для акб. При снижение тока ниже н-го процента (0.05С вроде) надо отключать полностью. К тому же если напруга на акб чуть просядет - зарядка снова включается и снова на малый ток - тоже плохо для акб. Даташит на MCP73831T между прочим отмечает эти моменты явно и советует отрубать зарядку. А MAX1555 умалчивает о своем поведение.
А ещё интересно, что даже китайская зарядка на дискретной логике (в сообществе пост был от Vko недавно), и та отключает заряд при снижении тока, а тут "именитый" производитель и такое допускает. Для кого разработчики акб рефдизайны пишут...
Цитата Сообщение от Hotd
Кстати, куда дешевле вот тут:
http://www.otyexpress.som/item/MAX1555E ... 80995.html
http://www.otyexpress.som/item/LTC4412E ... 29429.html
Эээ. max1555 $2.5 + 28$ / 5 штук = $6/штука Дороже однако. За 2 лота по $3 уже получше, но тоже дороже приведённой мною. А покупать 10+лотов ака 50+чипов мне как-бы не пойдет, я не промышленный гигант. ltc подешевле да.
Вообщем сомнительна целесообразность указанных чипов. В поставленную задачу они вписываются с трудом (с доработкой напильником), проигрывая в стоимости аналогам.
0
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 454
25.06.2013, 21:16
Цитата Сообщение от Hotd
я использую связку MAX1555 и LTC4412. Обеспечивает зарядку литиевого аккума .
А такую же связку, но для Ni-Mn аккумуляторов можете подсказать? Сколько смотрю, в основном для литиевых АКБ идут контроллеры заряда.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
25.06.2013, 22:53
Цитата Сообщение от mobtoko
А такую же связку, но для Ni-Mn аккумуляторов можете подсказать?
MAX712 для NiMH и NiCd.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.06.2013, 22:53
Помогаю со студенческими работами здесь

Мысли вслух
Почему собственно при оценке эффективности рекламы высчитывают именно отношение показов к кликам, а не посетителей к кликам. Второе, как...

С++ для начинающих. Мысли вслух
Доброго времени суток. В конце ноября регистрировался на форуме с простой целью: хотелось посмотреть какие вопросы и проблемы...

Ray casting, Мысли вслух
доброго времени всем, вопрос такой, поизучал про Ray casting и как я понял в основном все кто с этим &quot;играется&quot; делают вычисления...

Купил HD3870 512mb 256bit, а вот питание от блока питание не подходит.
купил, а вот питание от блока питание не подходит, разьема почему нет такова, в карте разьем с 6 дырачками 3 сверху и 3 снизу, а из блока...

Как правильно говорить вслух команды типа du -sh
du минус sh? du тире sh?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru