PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > AndroidCar > Питание

Результаты опроса: Писать ли про развитие проекта, или пофиг, есть свой и работает.
Пиши дальше 210 96.33%
Не пиши, лучше займись чем нибудь (другим) полезным. 8 3.67%
Голосовавшие: 218. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2016, 00:54   #581
Furai2014
Новый Пользователь
 
Регистрация: 25.10.2014
Возраст: 40
Регион: Украина
Сообщений: 25
Furai2014 is on a distinguished road
По умолчанию

Еще такой нюанс случился, хотел померять между пинами "gnd_in" и "батарея планшета" напругу, сгорел конденсатор С4 (у меня 1000мкф 16В) это может быть проблема с кив?
Furai2014 вне форума   Ответить с цитированием
Старый 28.11.2016, 08:37   #582
Az0m@
Старший Пользователь
 
Регистрация: 07.01.2016
Регион: 02
Сообщений: 152
Az0m@ is on a distinguished road
По умолчанию

Цитата:
Сообщение от Furai2014 Посмотреть сообщение
Здравствуйте, а кив должен щелчки выдавать когда работает?. Rx2.2низ1 и Rx2.2низ ставить 334 или лучше как у Вас на фото 224 и 684?. Спасибо.
без разницы... главное чтобы итоговой суммарный номинал сопротивления был аналогичен
P.S. у меня без щелчков работает
Az0m@ вне форума   Ответить с цитированием
Старый 28.11.2016, 08:41   #583
Az0m@
Старший Пользователь
 
Регистрация: 07.01.2016
Регион: 02
Сообщений: 152
Az0m@ is on a distinguished road
По умолчанию

Цитата:
Сообщение от oleg707 Посмотреть сообщение
ок, это уже тенденция, у Азома тоже глюки со 2 каналом.
Давайте разбираться.
кстати... тоже замечал что второй канала при холоде не заводится ... или через раз... но я пока на это забил ибо решил плату БП заново все собрать...
Az0m@ вне форума   Ответить с цитированием
Старый 28.11.2016, 09:05   #584
jonikus81
Старший Пользователь
 
Аватар для jonikus81
 
Регистрация: 07.09.2015
Возраст: 43
Город: Алматы
Регион: Казахстан
Машина: MMC DELICA 94 (булка)
Сообщений: 209
jonikus81 is a jewel in the roughjonikus81 is a jewel in the roughjonikus81 is a jewel in the roughjonikus81 is a jewel in the rough
По умолчанию

у меня один из кивов "звенел", как оказалось коротыш на выходе и конденсатор горел только при переплюсовке. От сопротивлений подтягивающих SS1 и SS2 отказался применив оптроны, но схема пока только на столе, в морозы пока нет возможности проверить.
jonikus81 вне форума   Ответить с цитированием
Старый 28.11.2016, 13:25   #585
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 40
Город: Gdynia
Регион: другой - для добавления сообщить ab
Сообщений: 2,548
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от Furai2014 Посмотреть сообщение
Здравствуйте, а кив должен щелчки выдавать когда работает?. Rx2.2низ1 и Rx2.2низ ставить 334 или лучше как у Вас на фото 224 и 684?. Спасибо.
кив выдаёт щелчки если нет конденсатора на выходе. или неправильно задано напряжение резисторами R2.2.
ИЛИ это уже было и кив успел сгореть. Без R2.2 и кондёров на выходе кив включать запрещено.


зы
2 канал работает нормально, на холод НЕ реагирует.
Единственное, что меня беспокоит, так это при старте есть пиковая просадка на доли секунды до 7,8-8В. Из-за этого может отвалиться звуковая и (или) потухнуть экран (редко, но бывает). Лечится ресетом ардуины или передёргиванием ключа. Попробую поменять алгоритм включения планшета после старта, а там видно будет.
oleg707 вне форума   Ответить с цитированием
Старый 28.11.2016, 13:52   #586
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 40
Город: Gdynia
Регион: другой - для добавления сообщить ab
Сообщений: 2,548
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от jonikus81 Посмотреть сообщение
у меня один из кивов "звенел", как оказалось коротыш на выходе и конденсатор горел только при переплюсовке. От сопротивлений подтягивающих SS1 и SS2 отказался применив оптроны, но схема пока только на столе, в морозы пока нет возможности проверить.
SS1 в воздухе, a SS2 как вариант через диод и резистор подключить.
Массу диод с проца пропустит (просадив опорное напряжение кива до 0,2), а +5В не пройдут.
oleg707 вне форума   Ответить с цитированием
Старый 28.11.2016, 14:45   #587
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 40
Город: Gdynia
Регион: другой - для добавления сообщить ab
Сообщений: 2,548
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
Question

Ребят, есть еще вопрос.
Периодически мне что-либо приходит в голову и я это реализую (в данном случае речь идёт про код - скетч).
Такой код получает статус тестового. Обычно по прошествии 10-50 дней тест успешно завершается ( иногда неуспешно).
Так вот вопрос: Нужно ли выкладывать самые свежие версии программы, либо ждать и потом выкладывать?
oleg707 вне форума   Ответить с цитированием
Старый 28.11.2016, 16:19   #588
Az0m@
Старший Пользователь
 
Регистрация: 07.01.2016
Регион: 02
Сообщений: 152
Az0m@ is on a distinguished road
По умолчанию

Цитата:
Сообщение от oleg707 Посмотреть сообщение
Ребят, есть еще вопрос.
Периодически мне что-либо приходит в голову и я это реализую (в данном случае речь идёт про код - скетч).
Такой код получает статус тестового. Обычно по прошествии 10-50 дней тест успешно завершается ( иногда неуспешно).
Так вот вопрос: Нужно ли выкладывать самые свежие версии программы, либо ждать и потом выкладывать?
выкладывай... ибо чем больше тестировщиков тем больше вероятность найти болячки
Az0m@ вне форума   Ответить с цитированием
Старый 28.11.2016, 16:26   #589
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 40
Город: Gdynia
Регион: другой - для добавления сообщить ab
Сообщений: 2,548
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
По умолчанию толком не тестировал, только себе залил.

PHP код:
byte ver =80;// ( чем больше цифра, тем новее)
// дата правки 28.11.16.1336

// для 5й версии блока питания ( для 4й тоже подходит, только нужно поменять местами в программе A0 и A1 в строках 161-164)
//ТЕСТОВАЯ!
// скетч проверен и записан на версии ардуино IDE 1,6,11 win7, 1.63 xp
//Перед прошивкой скетча убедитесь в наличии нужных библиотек,например  d:\777\Soft\arduino\arduino-1.6.11\libraries\LiquidCrystal_I2C\

/* _______Сделано__________________________________________________
Контроль напряжения АКБ машины.
вывод информации на внешний дисплей по I2C, c версии 63 включительно поменяна библиотека вывода на экран. НОВАЯ  ВЗЯТА https://github.com/enjoyneering/LiquidCrystal_I2C  и http://elchupanibrei.livejournal.com/27443.html
если в скетче в названии 0x27, значит библиотека старая.
активный вотчдог,
программная защита its716G(statepin)-тестово,
умное мигание встроенным светодиодом, в зависимости от напряжения АКБ и состояния АСС.
усреднение замеров по напряжению ACC и AKB, по 100 замерам.
информация на дисплее обновляется не постоянно, а каждые 350мс ( 0,35 с), чтобы не мельчешить.
Управление REM: если напруга батареи больше 11.8 В, то включаем еще и усилитель звука (выход REM) /но включаем его только на 30-60мин, если не заведены. После заводки счетчик обнуляется.
________________________________________________________________
 потребление блока по 12 вольтам, без планшета - при 10В +30 и +15 включены - 0,02 А  
                                        - при 12В +30 и +15 включены  - 0,092-0,1 А
________________________________________________________________
поведение встроенного светодиода
    низкое напряжение АКБ авто                                         - коротко моргает
    нормальное напряжение АКБ авто, ACC выключено.                     - быстро моргает
    нормальное напряжение, включено ACC, рабочий режим.                - медленно моргает */

 
//***************************************************************************************************************************************************
// Массив режимов работы светодиода
byte modes[] = {
  
0B00000000//Светодиод выключен
  
0B11111111//Горит постоянно
  
0B00111111//Мигание по 0.8 сек
  
0B00000001//Короткая вспышка раз в секунду 
  
0B00000101//Две короткие вспышки раз в секунду  
  
0B00010101//Три короткие вспышки раз в секунду
  
0B01010101  //Частые короткие вспышки (4 раза в секунду) 
};

uint32_t msms1 0
uint8_t  blink_loop 0;
uint8_t  blink_mode 0;

//***************************************************************************************************************************************************
 
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <avr/wdt.h> //Чтобы использовать функции Watchdog нужно подключить к проекту стандартную библиотеку ( https://geektimes.ru/post/255800/ )

LiquidCrystal_I2C lcd(0x27162); // set the LCD address to 0x27 for a 16 chars and 2 line display для 0x27 - настройка экрана для библиотеки LiquidCrystal_I2C2004V1

//LiquidCrystal_I2C lcd(PCF8574_ADDR_A21_A11_A01, 4, 5, 6, 16, 11, 12, 13, 14, POSITIVE);  // для newE  описание библиотеки http://elchupanibrei.livejournal.com/27443.html#t23347

float UakbONorOFF 12.01;// в 258 строке ==  if ((15.5 > U_acc_real >= UaccONorOFF) && flagACC == 1)  {UakbONorOFF = 11.5;}  else {UakbONorOFF = 11.9;} 
float UaccONorOFF 11.4;//11.1 // напряжение порога сработки асс

/*ноги ардуины*/
byte SAMOZAPITKApin 9/*управление самозапиткой блока питания IN4*///1 = есть самозапитка; 0 = нет самозапитки
byte PlanshBATpin 6/*      включить 1 канал KIW            ..... управление питания БАТАРЕИ планшета через управляющую ногу IN2-5pin*/ //0 = нет питания; 1 = есть питание ( БАТАРЕИ планшета)
byte II_KIW_pin_POGOpin 2/*           включить 2 канал KIW    управление SS2 выходом питания  +5V (2 канал kiw3312s) на пого пин(или USB), чтоб планшет думал, что идет зарядка*/ //0 = нет 5V на POGO; 1 = есть 5V на POGO
byte OTGpin 12/*управление транзюком OTG Q1*/ //1 = есть масса на OTG; 0 = нет массы на OTG
byte SLEEPpin 10/*управление транзюком сна VT4 (на датчик холла))*/ //1 = потух экран(есть масса на пине сна); 0 = штатная работа планшета (нет массы на пине сна)
byte HUBpin 11/*управление транзюком питания хаба*/ // 0-есть питание, 1 - нет питания
byte REMpin 7/*  выход сигнала REM (+12v) (IN3)*/ //0 = нет 12В на выходе REM; 1 = есть 12В на выходе REM
byte REGISTRATORpin 4/*выход 12В для работы видеорегистратора (D4 -IN1)*/ 
//пины состояния ITS
byte STATEpinI 5/*логический вход для отслеживания аварийной ситуации ITS716G(724G)(питание KIW3312s-out2 и регистратор-out1) 0 = норма*/
byte STATEpinII 8/*логический вход для отслеживания аварийной ситуации ITS716G(724G)(выход REM-out3 и самозапитка БП-out4 )1 = авар. сит.*/

/*логические переменные, используемые в коде*/
byte flagACC 0/*признак включенного зажигания*/
byte flagAKB 0/* признак заряженной батареи*/
byte flagREM 0/* признак включенного выхода на усилитель звука (REM)*/
byte flagHALL 0/*флаг отработки морга экрана при холодном старте( flagHALL = 1 экран можно включать и выключать, датчик холла на планшете инициализировался)*/
/*счётчики времени*/
unsigned long eventTime 0;
unsigned long pauseTimeACC millis();// сброс времени для отсчета отключения самозапитки
unsigned long pauseTimeAKB millis();
unsigned long pauseDisplay 0/* таймер для обновления информации на дисплее, чтобы не мерцал*/
unsigned long pauseTimeHALL 140000/* время паузы перед морганием-тушением экрана (для датчика холла)(равен времени загрузки планшета плюс секунд 10-20)= 2мин*/
int timeAfterACC 5000/* время после выключения зажигания, после истечения которого вырубается экран, хаб, y-otg*/
unsigned long TimerREM 0/* отсчет до выключения выхода REM при заглушенном авто и включенном зажигании.3600000 = час */
unsigned long timeBeforeRemOff 1800000/*1800000=30мин. Время, оставшееся до отключения выхода REM после включения зажигания и незаводки машины. 209 строчка.*/
//===========================================================================================================================================================================================================================================================================
//===========================================================================================================================================================================================================================================================================
//===========================================================================================================================================================================================================================================================================

void setup() //настройки
{
// Serial.begin(115200); 
  
 
wdt_disable(); //Отключение таймера watchdog
 
 //lcd.begin(16, 2); для newE
lcd.init();                      /* initialize the lcd занимает почти секунду  для 0x27*/

// настройки портов  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~     
  
pinMode(STATEpinIINPUT);
  
pinMode(STATEpinIIINPUT);
  
pinMode(PlanshBATpinOUTPUT);
  
pinMode(SAMOZAPITKApinOUTPUT);
  
pinMode(OTGpinOUTPUT);
  
pinMode(SLEEPpinOUTPUT);
  
pinMode(II_KIW_pin_POGOpinOUTPUT);
  
pinMode(HUBpinOUTPUT);
  
pinMode(13OUTPUT); //светодиодик на плате ардуины
  
pinMode(REMpinOUTPUT);
  
pinMode(REGISTRATORpinOUTPUT);
// конец настроек портов  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 

//настройки состояний при подаче питания на БП ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
  
digitalWrite(PlanshBATpin0);  //вЫключаем питание на батарею планшета
  
digitalWrite(SAMOZAPITKApin0);  //выключаем SAMOZAPITKApin, при этом пропадает управление на IN4, система ПОЛНОСТЬЮ обесточивается
  
digitalWrite(OTGpin0); //вЫключаем минус на Y-OTG (8 pin PW1)
  
digitalWrite(II_KIW_pin_POGOpin0); //вЫключаем +5V (POGO(USB))
  
digitalWrite(HUBpin1); // подаем + на управляющий транзюк хаба, тот закрывается и не пускает +5В с KIW (2вых)на хаб = ВЫключаем хаб
  
digitalWrite(REMpin0); // // выключаем выход REM
  
digitalWrite(REGISTRATORpin0); // выключаем питание  на видеорегистратор
  
wdt_enable (WDTO_8S); // Запуск таймера watchdog:   Для тестов не рекомендуется устанавливать значение менее 8 сек. Таймер будет считать ровно столько, сколько указано в константе. По истечении этого времени произойдет перезагрузка. /* Возможные значения для константы WDTO_15MS WDTO_30MS WDTO_60MS WDTO_120MS WDTO_250MS WDTO_500MS WDTO_1S WDTO_2S WDTO_4S WDTO_8S  (   wdt_enable (WDTO_8S);)
 //конец настроек состояний при подаче питания на БП~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
}
//===========================================================================================================================================================================================================================================================================
//===========================================================================================================================================================================================================================================================================
//===========================================================================================================================================================================================================================================================================












//===========================================================================================================================================================================================================================================================================
//===========================================================================================================================================================================================================================================================================
//===========================================================================================================================================================================================================================================================================

void loop()
{
                                                                                                               
  
long Uacc 0//Читаем напругу с делителя ACC R4-R5 и вычисляем среднее арифметическое
  
long Uakb 0////Читаем напругу с делителя R2-R3 и вычисляем среднее арифметическое 
    
for (int i=0i<20; ++i
  {   
// делаем 100 замеров. 1000 замеров = примерно секунда.
        
Uacc Uacc analogRead(A0); // замер для 5й версии
        
Uakb Uakb analogRead(A1); // замер для 5й версии
      //Uacc = Uacc + analogRead(A1); // замер для 4й версии
      //Uakb = Uakb + analogRead(A0); // замер для 4й версии
    
}
    
Uacc Uacc/20;
    
Uakb Uakb/20;
   
    
  
  
  
  
  
  
float U_acc_real 0.0 Uacc 0.01537;/*(5 / 1023.0 * 3.136); Вычисляем реальное напряжение +ACC на входе делителя (A0) 3.1189=поправка  делителя.(коэф деления) 0.2-падение на диоде*/
  
float U_akb_real Uakb 0.015330;/*(5 / 1023.0 * 3.145); Вычисляем реальное напряжение +30 на входе делителя (A1)*/

 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ кусок кода ниже нужен для того, чтобы при включении  и сразу выключении ACC при полностью выключенном планшете(холодный старт) экран мог тухнуть по сигналу датчика холла.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  
if ( (millis() > pauseTimeHALL && flagHALL == )|| ((millis() > 15000) && flagACC == 1)) 
  {
flagHALL 1;} /*проверка отсчета при холодном старте при включении  и сразу выключении ACC*/
  /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
        
 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~проверка, выключили ли мы зажигание или просто стартуем ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
if ((U_akb_real U_acc_real) >)/*проверка, выключили ли мы зажигание или просто стартуем (1 - выключили заж, 0 - стартуем), нужно для того, чтобы не моргать экраном при стартере и быстро тушить экран при выключении зажигания.*/
          
{timeAfterACC 300;} /*  1000       1 - выключили зажигание.  ЕСЛИ +15 ПРОПАДАЕТ ВО ВРЕМЯ СТАРТА, ТО ВМЕСТО 500 НАДО 5000 или вообще убрать этот блок if-else.*/
          
else {timeAfterACC 300;} /* 5000  0 - заводим машину (стартуем).*/
// ввести новую переменную int starting_mode = 1;//стартуем 0 = не_стартуем.      
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/


  //  ------------========================== блок ACC ========================-----------------------------------------------------------------------------


  //             -----------------=========ВКЛЮЧИЛИ ЗАЖИГАНИЕ=============---------------- 
  
if ((15.5 U_acc_real) && (U_acc_real >= UaccONorOFF) && flagACC == && flagAKB == //проверка напруги АСС и АКБ при флаге ACC = 0
  
{
    
flagACC 1;
    
pauseTimeACC millis();
    
pauseTimeAKB millis();
    
lcd.clear(); //очистка экрана
  
}




  if (
millis() - pauseTimeACC >= 300 && flagACC == 1/* пауза 1c после включения ACC и потом делать следующ(пока включено ACC):*/
        
{
          
digitalWrite(PlanshBATpin1);  /*включаем питание на батарею планшета (in2) = этим подаём 12В на KIW3312s. На 1м канале КИВ сразу появляется напряжение (3,8-4,2 - как настроено)*/ 
          
digitalWrite(OTGpin1); /*включаем минус на Y-OTG  (включается  звуковая карта) // тестово, для более устойчивого определения перифирии.*/
          
        
}
  
  if (
millis() - pauseTimeACC >= 600 && flagACC == 1/* пауза 1,6c после включения ACC и потом делать следующ(пока включено ACC): //через 01,6с после включения ACC , включаем питание  на видеорегистратор.*/
        
{
          
digitalWrite(II_KIW_pin_POGOpin1); /*включаем +5V (POGO(USB) нужно для распознавания планшетом признака зарядки. ( можно подавать на +5В USB кабеля (для тимуровской прошивки или если не используется датчик холла)*/
          
          
digitalWrite(REGISTRATORpin1); /* включаем питание  на видеорегистратор*/
        
}
    
  if (
millis() - pauseTimeACC >= 900 && flagACC == 1)/*через 2,2с после включения ACC включаем экран (вЫключаем минус на упр SLEEP), выход REM(если больше 12в), Включаем хаб (подаем минус на управляющий транзюк хаба, тот открывается и пускает +5В с KIW (2вых)на хаб)*/
        
{
          
digitalWrite(HUBpin0); /*Включаем хаб = подаем минус на управляющий транзюк хаба, тот открывается и пускает +5В с KIW (2вых)на хаб*/
          
digitalWrite(SLEEPpin0); /*включаем экран = вЫключаем минус на упр SLEEP*/
          
if( flagREM == 1  && flagAKB == ){digitalWrite(REMpin1);} /* включаем выход REM*/
        
}
   


/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~обработка статуса выхода REM~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*если напруга батареи больше 12В, то включаем еще и усилитель звука (выход REM) /но включаем его только на 1 час, если не заведены.*/

    
if (U_akb_real >= 11.8 && flagACC == && flagREM == 0) {flagREM 1TimerREM millis();} /*если подзаряжен акб и включили зажигание  - ВКЛЮЧАЕМ REM*/
    
if (U_akb_real >= 11.8 && flagACC == && ( millis() - TimerREM >= timeBeforeRemOff )) {flagREM ;}  /*  если кончилось время обратного отсчета - статус рем - 2.*/
    
if (U_akb_real 13.7){ (flagREM 1);TimerREM millis();} /* если завели машину, - ВКЛЮЧАЕМ REM, и постоянно обнуляем обратный отсчет вырубания РЕМ.*/
    
if (U_akb_real >= 11.8 && flagREM == && flagACC == 0){ flagREM 0;} /* если восстановилось напряжение при выключенном зажигании - обнуляем статус РЕМ.*/
    
if (U_akb_real 11.8 && flagACC == 1){ flagREM 2;} /*если подсел акб при включенном зажигании - статус рем - 2.*/
    
if( flagREM == ||  flagREM == 2){digitalWrite(REMpin0);}  /* выключаем выход REM*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~конец отработки выхода REM~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
    


  //-----------------=========ВЫКЛЮЧИЛИ ЗАЖИГАНИЕ=============----------------

  
if ((U_acc_real UaccONorOFF) && flagACC == 1)
        {
          
flagACC 0;  /*Выключили зажигание*/
          
digitalWrite(REMpin0);
          
flagREM 0/* выключаем флаг выхода REM*/
          
pauseTimeACC millis();
          
pauseTimeAKB millis();
          
lcd.noBacklight();/* тушим подсветку экрана для newE и для 0x27 // в 409 строке включение подсветки LCD дисплея*/
          
lcd.clear(); //очистка экрана
        
}
 
   if (((
millis() - pauseTimeACC) >= timeAfterACC) && flagACC == 0/*пауза 5c или 0.5c после вЫключения ACC и потом делать следующ://через 5с после выключения зажигания вЫключаем минус на Y-OTG, ВЫключаем хаб, вЫключаем +5V (POGO(USB)), тушим экран (если прошло 2мин со старта БП)*/
    
{
      if (
millis() - pauseTimeACC >= 1500 && flagACC == 0/* 3000 пауза 3с чтобы не пукал усилитель*/
                          
{
                          
digitalWrite(OTGpin0); /*вЫключаем минус на Y-OTG (8 pin PW1)*/
                          
digitalWrite(HUBpin1); /* ВЫключаем хаб = подаем + на управляющий транзюк хаба, тот закрывается и не пускает +5В с KIW (2вых)на хаб*/
                          
}
       if (
millis() - pauseTimeACC >= 1800 && flagACC == 0/* 3000 пауза 3с чтобы не пукал усилитель*/
                          
{
                          
digitalWrite(II_KIW_pin_POGOpin0); /*вЫключаем +5V (POGO(USB))*/
                          
}
      if (
flagHALL == 1)
            {
            
digitalWrite(SLEEPpin1); /*включаем минус на SLEEP (7 pin PW1)при этом тухнет экран (если прошло 2 минуты с момента включения ардуины)*/
            
}
            else
            {
digitalWrite(SLEEPpin0);}
    }

  
//  -------------------------========================= блок АКБ ==========================-------------------------------------------------------------------------------

  
if (U_acc_real >= UaccONorOFF)   {UakbONorOFF 11.5;}  else {UakbONorOFF 11.9;} /*при включении зажигания напряжение самовырубания станет 11,5 вместо 11,9*/

  
if (((U_akb_real UakbONorOFF) && flagAKB == 1)||(U_akb_real >15.5))/* ситуация, когда сел при работе ардуины аккумулятор, либо сел в процессе работы или простоя автомобиля, либо перезарядка > 15.5В*/
    
{
      
flagAKB 0;//спустили флаг батареи
      
flagACC 0;
      
pauseTimeACC millis();
      
pauseTimeAKB millis();
      
UakbONorOFF 11.9;
      
lcd.clear(); //очистка экрана
    
}

  if ((
15.5 U_akb_real) && ((U_akb_real >= UakbONorOFF) && flagAKB == 0)) /*проверка +30 на перезаряд >15.5В, и больше заданного в 266 строке, и флага акб */
    
{
      if ((
millis() - pauseTimeACC >= 2000) && flagAKB == 0)
        {
        
digitalWrite(SAMOZAPITKApin1);  /* включаем самозапитку через 2с*/
        
flagAKB 1/*подняли флаг батареи*/
        
}
    }

  if ((
millis() - pauseTimeAKB >= 20000) && flagAKB == 0/* если севший аккумулятор //через 20с вЫключаем питание на батарею планшета и вырубаем сам БП.*/
    
{
      
digitalWrite(PlanshBATpin0);       /*вЫключаем питание на батарею планшета (in2)*/
      
digitalWrite(OTGpin0);             /*вЫключаем минус на Y-OTG (8 pin PW1)*/
      
digitalWrite(II_KIW_pin_POGOpin0); /*вЫключаем +5V (POGO(USB))*/
      
digitalWrite(HUBpin1);             /* подаем + на управляющий транзюк хаба, тот закрывается и не пускает +5В с KIW (2вых)на хаб = ВЫключаем хаб*/
      
digitalWrite(REMpin0);             /* выключаем выход REM*/
      
digitalWrite(REGISTRATORpin0);     /* выключаем питание  на видеорегистратор*/
      
digitalWrite(SAMOZAPITKApin0);     /*выключаем SAMOZAPITKApin, при этом пропадает управление на IN4, система ПОЛНОСТЬЮ обесточивается*/
      
delay (5000);                        /* задержка для аппаратного выключения*/
    
}

  if (
flagAKB == && flagACC == 0)  /*ситуация, когда норм акб и выключено зажигание (ACC)*/
  
{
    if ((
millis() - pauseTimeAKB )>= 86400000 && flagAKB == 1/* если прошло 24 часа, как выключили ACC // пауза  (3600000 - 60мин) (60000 - 1 мин)(10800000=3ч) (1800000=5ч)*/
      

        
digitalWrite(PlanshBATpin0);  /*вЫключаем питание на батарею планшета (in2)//(батарея планшета))*/
      
}

    if ((
millis() - pauseTimeAKB) >= 172800000 && flagAKB == 1/* если давно выключили ACC     ) (2суток = 172800000))     (самозапитка для регистратора)*/
      
digitalWrite(REGISTRATORpin0); /* выключаем питание  на видеорегистратор*/
        
digitalWrite(SAMOZAPITKApin0);  /*выключаем SAMOZAPITKApin, при этом система ПОЛНОСТЬЮ обесточивается*/
        
delay (5000);              /* задержка для аппаратного выключения*/
      
}
  }
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~конец блока АКБ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

 


//******************************************отслеживания аварийной ситуации ITS716G (превышение по току по выходам out1-4)********************************************************************************************************************************************************************************
   
      
    /*отслеживания аварийной ситуации ITS716G канал 1 (питание KIW3312s-out2 и регистратор-out1) 0 = норма  1 = авар. сит.  //тогда моргаем 13 ногой код "1"*/
    /*отслеживания аварийной ситуации ITS716G канал 2 (выход REM-out3 и самозапитка БП-out4 )0 = норма  1 = авар. сит.  //тогда моргаем 13 ногой  код "2"*/
    
if(SAMOZAPITKApin==|| PlanshBATpin==||REMpin==|| REGISTRATORpin ==1// если проц включал любой канал ITS
              
{
                if(
STATEpinI == 0)             {   // и если пин защиты показал аварию
                                                                                                             
for (int i=0<= 300i++)   { //тогда моргаем 13 ногой код "1"  10 минут, если они прошли и асс ВКЛ, тогда еще раз и еще по кругу, пока неисправность не уйдёт
                                                                                                                                           
digitalWrite(131); delay(500); digitalWrite(130); delay(1493);
                                     
digitalWrite(PlanshBATpin0);  //вЫключаем питание на батарею планшета (in2)
                                     
digitalWrite(OTGpin0); //вЫключаем минус на Y-OTG (8 pin PW1)
                                     
digitalWrite(II_KIW_pin_POGOpin0); //вЫключаем +5V (POGO(USB))
                                     
digitalWrite(HUBpin1); // подаем + на управляющий транзюк хаба, тот закрывается и не пускает +5В с KIW (2вых)на хаб = ВЫключаем хаб
                                     
digitalWrite(REMpin0); // // выключаем выход REM
                                     
digitalWrite(REGISTRATORpin0); // выключаем питание  на видеорегистратор
                                     
digitalWrite(SAMOZAPITKApin0);  //выключаем SAMOZAPITKApin, при этом пропадает управление на IN4, система ПОЛНОСТЬЮ обесточивается
                                     
wdt_reset(); //Сброс таймера watchdog
                                                                                                                                           
}
                                   } ;
    if(
STATEpinII == 0)             {   // и если пин защиты показал аварию
                                                                                                             
for (int i=0<= 150i++)   { //тогда моргаем 13 ногой ногой код "2" 10 минут, если они прошли и асс ВКЛ, тогда еще раз и еще по кругу, пока неисправность не уйдёт
                                                                                                                                           
digitalWrite(131); delay(500); digitalWrite(130); delay(493); digitalWrite(131); delay(500); digitalWrite(130); delay(1493);
                                     
digitalWrite(PlanshBATpin0);  //вЫключаем питание на батарею планшета (in2)
                                     
digitalWrite(OTGpin0); //вЫключаем минус на Y-OTG (8 pin PW1)
                                     
digitalWrite(II_KIW_pin_POGOpin0); //вЫключаем +5V (POGO(USB))
                                     
digitalWrite(HUBpin1); // подаем + на управляющий транзюк хаба, тот закрывается и не пускает +5В с KIW (2вых)на хаб = ВЫключаем хаб
                                     
digitalWrite(REMpin0); // // выключаем выход REM
                                     
digitalWrite(REGISTRATORpin0); // выключаем питание  на видеорегистратор
                                     
digitalWrite(SAMOZAPITKApin0);  //выключаем SAMOZAPITKApin, при этом пропадает управление на IN4, система ПОЛНОСТЬЮ обесточивается
                                     
wdt_reset(); //Сброс таймера watchdog
                                                                                                                                           
}
                                   } ;
                               }

//**************************************************************************************************************************************************************************************************************************  


/******************************************индикация светодиодом и задержка вывода на дисплей********************************************************************************************************************************************************************************/
   
ms millis();
  
// Событие срабатывающее каждые 125 мс
  
if ( ( ms ms1 ) > 125 || ms ms1 ) {
    
ms1 ms;
    
// Режим светодиода ищем по битовой маске
    
if (  blink_mode << (blink_loop 0x07) ) digitalWrite(131);
    else  
digitalWrite(130);
    
blink_loop++;
  }
  
  
  
  
   
// Событие срабатывающее каждые 250 мс
  
if ( ( ms pauseDisplay ) > 350 || ms pauseDisplay )
  { 
    
pauseDisplay ms;
          
//_____________________________________________СООБЩЕНИЕ НА LCD ДИСПЛЕЙ____________________________________________________________

int H = (millis()/3600000);
int M = ((millis()-(H*3600000))/60000); 
//int S = (((millis()/1000)-(H*3600))- (M*60));
if ((((millis())-(H*3600000))- (M*60000)) < 200 ){lcd.clear(); }//очистка экрана


 
if (flagACC == 1){lcd.backlight();}// для newE и для 0x27  
 // в 256 строке выключение подсветки LCD дисплея

if (    ( (millis() / 60000 ) <)   ){lcd.setCursor(20); lcd.print("v");lcd.setCursor(30); lcd.print(ver);} /* Вывод версии блока на дисплей. */
//вывод времени работы
  
lcd.setCursor(00);
  
lcd.print((millis() )/60000); // вывод кол-ва минут работы блока ( 1 строка 1 символ)
  
  
lcd.setCursor(70);
  
lcd.print(flagAKB); // вывод флага AKB
  
  
lcd.setCursor(80);
  
lcd.print(flagACC); // вывод флага АСС
  
  
lcd.setCursor(90);
  
lcd.print(flagREM); // вывод флага rem
  
lcd.setCursor(110);
  
lcd.print(U_acc_real); // вывод напряжения АСС
  
  //lcd.setCursor(5,1);
  //-------------------2 строка---------------------------------
  
lcd.setCursor(01);
  
unsigned long TIMER = (  pauseTimeAKB  172800000 millis()  )/60000// вывод кол-ва минут, оставшиеся до выключения блока (когда выключено АСС)
  
lcd.print(TIMER);
  
lcd.setCursor(51);
  
lcd.print(( millis() - TimerREM )/60000); //
  
lcd.setCursor(111);
  
lcd.print(U_akb_real); /* вывод напряжения АКБ*/
  
  /* так выглядит индикация на дисплее
  
   
   ================
  |1  v75 111 0.000|          1 строка   *   вывод кол-ва минут работы блока                 *флаг АКБ*флаг АСС*флаг REM*  вывод напряжения АСС
  |616  10    14.50|    
   ================           2 строка   *   кол-во минут, оставшиеся до выключения блока    *     millis() - TimerREM, минут        *    вывод напряжения АКБ    
   

*/
//__________________________________________________________________________________________________________________________
  
}
    
 
/******************************************конец индикации светодиодом и задержка вывода на дисплей********************************************************************************************************************************************************************************/
   
 /*настраиваем режимы моргания встроенного светодиода ардуины*/  
  
if (blink_mode != modes[5] || blink_mode != modes[5]) 
  {
  if (
flagAKB == ){blink_mode modes[3];}                 // индикация напруги батареи на ардуинине.- низкое напряжение АКБ авто - коротко моргает
  
if (flagAKB == && flagACC == 0) {blink_mode modes[6];} //- нормальное напряжение АКБ авто, ACC выключено.                     - быстро моргает
  
if (flagAKB == && flagACC == 1) {blink_mode modes[2];} //- нормальное напряжение, включено ACC, рабочий режим.                - медленно моргает
      
  

 
/* ***********************данные для справки****************************************************************
    0B00000000, //Светодиод выключен blink_mode = modes[0]; 
    0B11111111, //Горит постоянно blink_mode = modes[1];      
    0B00111111, //Мигание по 0.8 сек  blink_mode = modes[2]; - нормальное напряжение, включено ACC, рабочий режим.
    0B00000001, //Короткая вспышка раз в секунду  = modes[3]; - низкое напряжение АКБ авто
    0B00000101, //Две короткие вспышки раз в секунду 
    0B00010101, //Три короткие вспышки раз в секунду
    0B01010101  //Частые короткие вспышки (4 раза в секунду)= blink_mode = modes[6]; - нормальное напряжение АКБ авто, ACC выключено.
   */
//**********************************************************************************************************


wdt_reset(); /*Сброс таймера watchdog*/

/*конец цикла void loop()*/
//===========================================================================================================================================================================================================================================================================
//===========================================================================================================================================================================================================================================================================
//=========================================================================================================================================================================================================================================================================== 
oleg707 вне форума   Ответить с цитированием
Старый 28.11.2016, 19:39   #590
avaRi
Пользователь
 
Регистрация: 02.09.2015
Регион: 25
Сообщений: 30
avaRi is on a distinguished road
По умолчанию

Цитата:
Сообщение от avaRi Посмотреть сообщение
как два дня тестирую блок в машине.
И есть полтергейст со вторым каналом KIW, Когда тачка холодная он не включается. Стоит проехать и прогреть машину примерно через 20 мин все отлично. можно целый день ездить. Включать и отключать зажигание. стартует отлично. Но если тачка остыла все он в отвале! вернее он уходит в защиту. На управляющей ноге есть +2.5v
Все ЕСТЬ РЕШЕНИЕ!
Пока пол дня проездил.
Вообщем нужно поставить больше емкость конденсатора на второй канал С4.
Сейчас стоит 2 по 2200mUF. Но и норм работало и на 3300.

R9 и R10 у меня 102
Вообщем все просто. пока машина холодная KIw не мог нормально запустить 2 канал так как емкость была низкая. И как прогревался начинал норм работать! И KIW не уходит в защиту.
А это я проверял просто на управляющей ноге есть 2.5в. а канал включался и гас почти сразу(это видно по светодиоду на хабе).
Либо у меня получалось симулировать на столе просто передернув питание на хабе получали просадку. Канал уходил в защиту.
ДЛЯ справки!
Емкость алюминиевого электролитического конденсатора зависит от температуры. С понижением температуры (особенно ниже 0°C) возрастает вязкость электролита и его удельное электрическое сопротивление, что ведет к уменьшению емкости конденсатора.
avaRi вне форума   Ответить с цитированием
Ответ

Метки
arduino, nexus7, блок питания, блок питания планшета


Здесь присутствуют: 17 (пользователей: 0 , гостей: 17)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 01:54.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot