Перейти к содержанию

Avr Удлинитель Поворотов Для Машины


ukr823f

Рекомендуемые сообщения

Добрый день дорогие драйвовчане-электронщики, хочу реализовать себе удлинитель поворотов, так как нужно же идти в ногу со временем. К всех есть, а у меня нет :). Уже думал, так как у меня субара, то японцы ничего ноого не изобразят, и думал просто использовать уже готовую разработку Степана Павловича (Самокат -Ветерана), но не тут то было.В его схеме рычажок поворотников при нажатии в ту или иную сторону просто замыкаются на массу. Но у меня в машине япошки что то не то видать съели с утра, и вместо такой простой схемы, взяли и сделали как на ВАЗе, т.е. при нажатии на рычажок, мы управляем сильноточными цепями. +12В с реле поворотов (трёхконтактное) отправляется на лампы поворотов.

Вот такая у меня схема

0027-01.jpg

Ну и теперь вот вопрос, написать код который по первому короткому нажатию на рычажок в ту или иную сторону, откроет полевик (P-канальный) на нужное время удлинения поворотника. Допутим нажали на рычажок, и мы на 3 секунды делаем удлинение. Всё хорошо, поворотник мигает сколько нужно. А может не мигает, или будет так мигать постоянно? Ведь у нас контроль за поворотниками ведётся по каналу, на котором при работе поворотника будет то +12В то масса (поворотник то мигает). и теперь контроллер удлинителей повротов, теперь каждое моргание будет заново думать что нужно включать удлинение поворотов? Но ведь уже есть готовые устройства.

subaru-legacy-lc14h-03-09.jpg

Которые работают по моему стандартному алгоритму?..

Нехочу переределывать штатную проводку, так как видел уже, что можно почикать в некоторых местах проводку. Рычажок переделать, чтобы он управлял только слаботочным замыканием на массу. Вобщем, давайте обсудим алгоритм, как это реализовать, чтобы просто и надёжно.

Я думал так.

Два выхода с удлинителя повротоников, на P-канльные транзисторы (IRF7210)

Эти выходы, будут параллельно штатной провдке подключены к нопке аварийки.

Исток транзисторов общий, подключён к центральному контакту реле — прерывателю поворотов. (там три контакта — +12В, масса, и выход). Далее стоки полевиков образуют два выходных канала (левый поворот и правый поворот). Два входа через резистивные делители, подключаем к силовым цепям правого и левого поворотника.Как только мы коснулись рычажка поворотника в любую сторону, сразу начинает работу штатное реле поворотов, и выдаёт импульс +12В на лампы. По этому нажатию, мы сразу же открываем нужный нам полевик (в какую сторону включили поворот) на нужное количество времени (время удлинения). Но вот главная проблема, у нас то поворотник мигает, и точно такой сигнал у нас на входе в контроллер удлинителей. Никак не могу понять, как так реализовать, чтобы контроллер удлинителей понимал, что мы нажали коротко рычажок, значит удлиняем допустим 3 секунды, и далее на протяжении этих 3 секунд контроллер удлинителей понимал, что моргания поворотов, это заслуга самого контроллера удлинителя поворотов, а не новая его активация с каждым морганием…

думаю более менее доступно объяснил…

Изменено пользователем ukr823f
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Доброго...Как я понял вы хотите одним касанием переключателя поворотов -достигнуть некоторое время вкючения сигнала на 3-4-5 -6 секунд...В инете есть простенькая схема на одной микпосхеме К155 АГ3 ...просто и надежно ...к томуже организованна кнопка СПАСИБО ..клац и аварийка мигнула 3-4 секунды... никаких существенных переделок не требуется ..просто подкидывается к штатной системе и все... :bye:

Покажи мне свое окружение 

Я тебе покажу твое будущее 

Все просто)

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Я не стараюсь сделать как проще. Я хочу от начала и до конца своё устройство реалзовать. Хочется ж учиться программированию микроконтроллеров...

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Я никак вот немогу понять, зачем заведён сигнал COM на PB2?

Ведь мы по поступлению сигнала на PB1 и PB0 можем видеть - включены ли поворотники или нет...

COM - это +12В , которые при нажатии на рычажок через реле прерыватель подавать переменный сигнал на лампочки.

schv2.png

Изменено пользователем ukr823f
Ссылка на комментарий
Поделиться на другие сайты

Вот такой получился код для удлинителя поворотов. Может есть какие то замечания или предложения по алгоритму?

#include <tiny13a.h>
#include <delay.h>
#include <stdio.h>
#define CONFIG PINB.2 //кнопка программирования
#define IN_LEFT PINB.3 //вход рычажка при нажатии влево
#define IN_RIGHT PINB.4 //вход рычажка при нажатии вправо
#define OUT_LEFT PORTB.0 //выход для включения поворота влево
#define OUT_RIGHT PORTB.1 //выход для включения поворота вправо

char counter_msek;//переменная для хранения значения милисекунд
eeprom char ee_dlina; //переменная еепром для хранения времени удлинения.
char dlina; //переменная для использования времени удлинения.
char udlinenie; //переменная-счётчик для счёта времени удлинения при нажатии на рычажок															  
bit udlinenie_status_left; //статус включения удлинения влево
bit udlinenie_status_right; //статус включения удлинения вправо
bit timer_ok;// переменная запуска программного таймера
bit otkaz;  // переменная принимает 1 если во время удлинения, нажали рычажок в другую сторону

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
if(timer_ok==1)   //  Запускаем программынй таймер
{ 
  counter_msek++; //Считаем милисекунды - какждое увеличение на единицу это 55 мсек
}
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 8
#pragma optsize-
CLKPR=0x80;
CLKPR=0x03;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out
// State5=P State4=P State3=P State2=P State1=0 State0=0
PORTB=0x3C;
DDRB=0x03;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4.688 kHz
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x04;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x02;
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
dlina=ee_dlina; //присваиваем нашей рабочей переменной dlina значение из eeprom

// Global enable interrupts
#asm("sei")

while (1)
  {

  /////////////////////////////
  if((IN_RIGHT==1)&&(IN_LEFT==1))
  {
 delay_ms(10);
 if((IN_RIGHT==1)&&(IN_LEFT==1))
 {
  timer_ok=1;
  while(udlinenie<dlina)
  {
   if(counter_msek>9)
   {	   
    counter_msek=0;
    udlinenie++;
    OUT_RIGHT=1;
    OUT_LEFT=1;	   

    }	
   }
   OUT_RIGHT=0;
   OUT_LEFT=0;
   udlinenie_status_right=0;
   timer_ok=0;
   counter_msek=0;
   udlinenie=0;

  }
  }
  ///////////////////////////////


  if (CONFIG==0) //если нажата кнопка настройки
   {
 dlina=0; //Обнуляем переменную перед каждым входом в режим настройки

 while(CONFIG==0) //Выполняем цикл, пока нажата кнопка настройки
 {
 if((IN_LEFT==1)||(IN_RIGHT==1)) //Если нажат рычажок в любую сторону вместе с нажатой кнопкой настройки
 {
  timer_ok=1; // то запускаем прграммынй таймер
  OUT_RIGHT=1; //включаем правый канал , тем самым имитируем нажатие вправо. Нужно для визуального подсчёта времени удлинения
  OUT_LEFT=1;  //включаем левый канал , тем самым имитируем нажатие влево

  if(counter_msek>9) //Отсчитываем по пол секунды
  {	 
   counter_msek=0; //Обнуляем счётчик таймера, тчобы заново отсчитать пол секунды
   dlina++;  //УУвеличиваем переменную хранения времени удлинения. Каждое увеличение это +500мсек к времени удлинения   
  }

 }	

   }
   //Если мы отбросили рычажок поворотников (закончился цикл while)
   OUT_RIGHT=0;  //......
   OUT_LEFT=0; //выключаем левый и правый каналы выхода с устройства	 
   timer_ok=0; //обнуляем переменную включения таймера(деактивируем таймер)
   counter_msek=0; //обнуляем переменную
   ee_dlina=dlina; //сохраняем в EEPROM значение удлинения   
  } //конец if(CONFIG==0) - Выход из режима настройки

  if((IN_LEFT==1)&& (udlinenie_status_left==0))  //Если нажат рычажок влево, и удлинение пока не активно
  {	  
 while(IN_LEFT==1){timer_ok=1;} //пока нажата кнопка,  то активируем таймер и счтаем...				   
 if((counter_msek>2)&&(counter_msek<8)&&(otkaz==0)) // Если перешли на эту строку кода, то рычажок мы отпустили, и смотрим после этого сколько времни мы жали на рычажок
 { //если мы нажимали не менее 100 мсек и и не более 500 мсек, то значит это было короткое нажатие по которому ...
   udlinenie_status_left=1; //присваиваем статусу удлинения - 1 
    timer_ok=0;			 //останавливаем таймер
    counter_msek=0;		 //сбрасываем значение таймера
 }
 else    // иначе? если жали долго, или очень мало жали а рычажок, то удлинение не включаем
 {
  udlinenie_status_left=0; //присваиваем статус удлинению - 0 
   timer_ok=0; //останавливаем таймер
   counter_msek=0; //сбрасываем значение таймера
   otkaz=0; //сбрасываем значение отказа от манёвра
 }
  }  

  if(udlinenie_status_left==1) // если удлинение активировано
  {
 timer_ok=1; //Активируем таймер, для счёта
 while(udlinenie<dlina) // выполняем цкл внутри, пока значение удлинения не будет равно длине нашего значения в ЕЕPROM
 {
  if(counter_msek>9) //отсчитываем по 500мсек
  {
   if(IN_RIGHT==0) // проверяем на условие отказа от манёвра. Если отказа небыло...
   {
   counter_msek=0; // то сбрасываем значение таймера
   udlinenie++; // инкрементируем значение удлинения
   OUT_LEFT=1; // и открываем полевик, тем самым делаем удлинение. 
   }
   else   //иначе.... сработал отказ от манёвра
   {
    udlinenie=dlina; //записываем значение удлинения равным нашему значению, который хранится в EEPROM
    otkaz=1; //и записываем переменную, которая показывает, что отказ от манёвра был произведён	  
   }
  }	
 } //если отказа небыло, то выполниться этот цикл, который показывает что наше удлинение закончилось и поэтому
   OUT_LEFT=0; //закрываем полевой транзистор
   udlinenie_status_left=0; //присваиваем статусу удлинения ноль
   timer_ok=0;    //выключаем таймер
   counter_msek=0; //сбрасываем значение таймера
   udlinenie=0;  //сбрасываем значения счётчика для реализации нашего удлинения
  }

  ////////////////////////////Далее тоже самое для правого поворота///////////////////
   if((IN_RIGHT==1)&& (udlinenie_status_right==0))
  {	  
 while(IN_RIGHT==1){timer_ok=1;}
 if((counter_msek>2)&&(counter_msek<8)&&(otkaz==0))
 {
   udlinenie_status_right=1;
    timer_ok=0;
    counter_msek=0;
 }
 else
 {
  udlinenie_status_right=0;
   timer_ok=0;
   counter_msek=0;
   otkaz=0;	  

 }
  }  

  if(udlinenie_status_right==1)
  {
 timer_ok=1;
 while(udlinenie<dlina)
 {
  if(counter_msek>9)
  {
   if(IN_LEFT==0)
   {
   counter_msek=0;
   udlinenie++;
   OUT_RIGHT=1;
   }
   else
   {
    udlinenie=dlina;
    otkaz=1;	  
   }
  }	
 }
   OUT_RIGHT=0;
   udlinenie_status_right=0;
   timer_ok=0;
   counter_msek=0;
   udlinenie=0;
  }
  //////////////////////////////



  }//конец while
}

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...
Вот такой получился код для удлинителя поворотов. Может есть какие то замечания или предложения по алгоритму?
Я прошу прощения, код написан а какая схема включения тиньки в лентяйку? Гоняю в протеусе, - не работает никак! Тем более, судя по коду, есть кнопка программирования (что само собой уважаемо).
Ссылка на комментарий
Поделиться на другие сайты

И так.

Схема, Приведенная постами выше испробована. Испробована с прошивкой, данной в той теме.

Результат ужасающий. Не, ну там под заднюю передачу вкл, подхват поворотов... не вопрос. Только на кой ляд, подхват поворотов длится 11 секунд?

Вопрос сейчас решается, как программно решить проблему "лентяйки" в подвязке к реле поворотов, работающих на нагрузку. И именно решить проблемму ПРОГРАММНО.

Идея алгоритма уже есть. И их несколько. Но надо воплотить в жизнь; а-ки, программно. Женя написал код, но он глубоко и далеко не верен. Нужно решение. И решение это, писать код по новой.

Второе решение, это добавление всяких дополнительных приблуд к устройству, что как по мне, - не приемлемо. А добить "Гаргону" просто необходимо. Довольно таки много желающих получить эту опцию, воплотив её в своего коня.

Ссылка на комментарий
Поделиться на другие сайты

В общем суть проблемы такова. Есть схема, есть собранная конструкция, вполне рабочая со всякими интересностями, но есть и своЁ НО. Жирное такое - НО.

Дело в том, что схем удлинителей поворотов в инете много, но вот с инсталяцией их на трехногое реле поворотов я так и не встретил. Выход с положения есть; это изменить (а скорее всего полностью переписать) код прошивки микроконтроллера.

Собственно говоря сама схема.

8576586b6bb23b16f6e2a609747163fe.png

Сам исходник схемы (Proteus)

Что тут? Тут по 7 ноге идет настройка удлинения. При пОданом сигнале на неё, замыкается ещё и один из выходов. И с этого момента отсчитывается время задержки, которое будет отрабатывать реле поворотов.

Фича интересная.

А проблема вся в том, что подвязаться под реле поворотов никак не возможно. При прямой подвязке, удлинитель срабатывает один раз и выбивает.

Входы на третей и второй ногах. Дополнительные диоды (D2, D3), то небольшой эксперимент по типу кнопки спасибо. Но это не важно.

Суть проблемы: - что бы программно решить, при включении удлинения сделать отключение порта данного входа. Точно так же и по второму порту. Тогда мы разрываем цикл и система отработает свое. Таким образом накроем лентяйкой всю классику и некоторые (многие) иномарки.

Сам в языке СИ никак не въеду. Для меня он, как изучить аглисский. Не дается мне сие. Узы разумею, выразить не могу. Если есть умельцы прописать данный алгоритм, был бы примного благодарен.

Джампер с транзистором стоит для подвязки порта программирования под какой нибудь кнопарь в подрульнике (расчитывалось на мигалку дальнего).

Изменено пользователем Vakula
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

ea75d46a1b3e.png

Реально реализованная схема и инсталлирована в авто с трехногим реле поворотов.

Подключение.

Сом - центральный провод переключателя или реле (нагрузочный вывод.).

Выводы от выключателя на лампы перерезать. J1-2 и J1-1 подключить к тем, что идут на лампы.

J3-2, J3-3 подключать к выводам переключателя. (в блоке немного опечатка).

J3-4 по желанию, кнопка спасибо. Можно подключить к плюсу при нажатии аварийки. Главное, что бы аварийка не зафиксировалась при спасибке.

J3-5 вывод управления настройками. Подключить кнопку к плюсу 12 в.

Для того, что бы настроить длительность нужно выполнить следующее:Нажать и удерживать кнопку SET. Далее включаем левый или правый поворот рычажком и считаем необходимое число морганий. Как только необходимое число морганий поворотника прошло — выключаем поворотник. Далее отжимаем кнопку настройки SET. Всё, число морганий запомнилось и теперь при кратковременном нажатии на рычажок поворотника поворотники будут домаргивать настроенное число раз. Максимальная длительность задержки морганий 10 секунд. Я думаю этого достаточно.

Кратковременным взмахом в противоположную сторону режим удлинения отменяется, но если отменить и удерживать больше времени удержания (от 0.2 секунд до секунды). то начнет моргать поворотник.

Добавлен режим настройки времени порога определения короткого включения поворотника. До этого порога времени (считается с начала включения рычажка поворотника) после отжатия подрулевого переключателя будет удлинение поворотников, после этого порога — обычный штатный режим. Алгоритм настройки: До подачи питания в схему (как правило до поворота ключа в замке зажигания) необходимо нажать и удерживать кнопку SET. Далее последуют моргания аварийки. Сначала одна моргуля, затем пауза примерно в секунды две, затем две моргули — пауза, три, четыре и пять. Если отжать кнопку настройки после необходимого числа моргулей, то получим необходимую задержку порога срабатывания:

1 моргуля — 0.2 секунды

2 моргули — 0.4 секунды

3 моргули — 0.6 секунд

4 моргули — 0.8 секунд

5 моргуль — 1 секунда.

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

За основу взято готовое решение (umat.ru/2013/03/02/turnex/).

Есть готовые изделия.

Желающие сами повторить, прошу в архив.

Плата под SMD, схема в протеусе (при запуске, удалить разъёмы), прошивки и фьюзы бин конфигурации.

В чем может быть загвозка? Реле поворотов может быть настроена на большую нагрузку. Лечится заменой шунта. Но его надо найти, потому, как там сопротивление равно сотым омма. У меня со штатным не заработало. Было запасное реле от Боша с фиата, стало на место и заработало на радость владельцу. Как проверить возможность реле? очень просто, отключить все поворотные лампочки и оставить или подключить лампочку в 3-5 Ватт. Если реле будет жужжать и лампочка гореть в пол накала, то вам не повезло. Нужно подобрать реле. Кстати, как вариант в магазине просто просить продавцом проверить реле на 5 ватную лампочку. Реально становятся и взаимозаменяемы реле от ВАЗ.

DSC_0500.JPG

DSC_0503.JPG

turn_V.zip

Изменено пользователем Vakula
Ссылка на комментарий
Поделиться на другие сайты

  • 2 года спустя...
В 29.10.2014 в 17:47, ukr823f сказал:

Но вот главная проблема, у нас то поворотник мигает, и точно такой сигнал у нас на входе в контроллер удлинителей. Никак не могу понять, как так реализовать, чтобы контроллер удлинителей понимал, что мы нажали коротко рычажок, значит удлиняем допустим 3 секунды, и далее на протяжении этих 3 секунд контроллер удлинителей понимал, что моргания поворотов, это заслуга самого контроллера удлинителя поворотов, а не новая его активация с каждым морганием…

 

В 29.10.2014 в 21:07, ukr823f сказал:

Я никак вот немогу понять, зачем заведён сигнал COM на PB2?

Ведь мы по поступлению сигнала на PB1 и PB0 можем видеть - включены ли поворотники или нет...

 

День добрый!!!

 

Подскажите пожалуйста, Вам удалось найти ответы на эти вопросы?

Мы все учились по-немногу, чему-нибудь и как-нибудь...

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...
В 01.12.2017 в 19:08, -=FISHER=- сказал:

Подскажите пожалуйста, Вам удалось найти ответы на эти вопросы?

Статью написал, первую, отправил на проверку перед публикацией.

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

В 01.12.2017 в 19:08, -=FISHER=- сказал:

Подскажите пожалуйста, Вам удалось найти ответы на эти вопросы?

Оказывается промахнулся я с первого раза, только сейчас она добавилась "на модерацию".

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

В 01.12.2017 в 19:08, -=FISHER=- сказал:

Подскажите пожалуйста, Вам удалось найти ответы на эти вопросы?

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

void hardwareInit(){} //должена быть определена
#define cntrBitsSet(x, y) //должен быть определен или надо заменить на функцию!
int getRLC(){} //должена быть определена
void timerStartCount(){}//должена быть определена
void timerStart(int msecCount){}//должена быть определена
int timerStop(){}//должена быть определена
bool timerIsActive(){}//должена быть определена

void main()
{
int oldRLC, RLC;
int period;
const int repeatCount = 3;
const int ShortTime = 400;//msec
const int onPeriod = 500;//msec
const int offPeriod = 500;//msec
hardwareInit();
startPoint:
    cntrBitsSet(0,0);//РАЗОмкнуть паралельные ключи при включении питания
    // значение ноль – переводит ключ в разомкнутое состояние.
    while(!(RLC = getRLC()) & 0b101){};
    timerStartCount();
    oldRLC = RLC;//запомнить значение по которому вышли из ожидания 
    RLC = getRLC();
    while(RLC == oldRLC | RLC == 0)
    { RLC = getRLC();};//включился поворотник или аварийка – ждем и считаем время
    period = timerStop();
    if(RLC == 0b010)
    {
        if(period < ShortTime) goto ShortTimeBranch;
        else goto startPoint;
    }
    else goto startPoint;
ShortTimeBranch:
    for(int i =0; i < repeatCount;i++)
    {
        cntrBitsSet(oldRLC& 1, (oldRLC >> 2) & 1);//замкнуть паралельные ключи
        //в соответствии со значениями R and L!
        timerStart(onPeriod);
        while(timerIsActive()) {};

        cntrBitsSet(0,0);//РАЗОмкнуть паралельные ключи при включении питания
        timerStart(offPeriod);
        while(timerIsActive()) {};
    }
    goto startPoint;
}

из материалов ко второй статье (надо было в первую воткнуть наверно):

Мы пишем первую версию (и все промежуточные версии) программы не для того чтобы решить поставленную заказчиком программы (устройства) задачу!!! Сначала мы должны убедиться что задача правильно (корректно) сформулирована и мы ее правильно поняли! Поэтому первая задача которую мы должны решить и, соответственно, должна решать наша программа это демонстрация возможностей и идентификация/измерение параметров, значения которых и будут составлять  окончательные технические требования к устройству и его встроенной программе.

Изменено пользователем ruhi

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...