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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Питание (http://pccar.ru/forumdisplay.php?f=173)
-   -   Блок питания NEXUS7-2012,2013 (или любого другого планшета) (http://pccar.ru/showthread.php?t=23236)

Az0m@ 02.06.2016 10:58

одну проблему вроде как решил, изменил код:
Код:

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

на
Код:

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

теперь если не подключать БП (когда арудирина при этом включен по ЮСБ), то светодиод L не горит, при подаче питания - моргает, при подаче АСС - горит постоянно.

остался вопрос момент только под 2ому пину на пого пин. почему при подключенном планшете там не появляется +5В. при чем мультиком проверил что напруга не приходит с самого KIW. причем если пробудить планшет и после этого только подключить 2ой пин к пого то зарядка работает. но стоит переподключить АСС и снова на 2ом пину нет +5В

oleg707 02.06.2016 13:45

Цитата:

Сообщение от Az0m@ (Сообщение 361999)
одну проблему вроде как решил, изменил код:
Код:

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

на
Код:

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

теперь если не подключать БП (когда арудирина при этом включен по ЮСБ), то светодиод L не горит, при подаче питания - моргает, при подаче АСС - горит постоянно.

остался вопрос момент только под 2ому пину на пого пин. почему при подключенном планшете там не появляется +5В. при чем мультиком проверил что напруга не приходит с самого KIW. причем если пробудить планшет и после этого только подключить 2ой пин к пого то зарядка работает. но стоит переподключить АСС и снова на 2ом пину нет +5В

во первых я предлагаю разобраться для начала с режимами индикации. Проц один и тот же, прога та же самая, а поведение РАЗНОЕ. Так не бывает.
во вторых, Планшет ВООБЩЕ никаким боком не должен влиять на поведение блока питания. Совсем!

Может тебе вибер дать или скайп, так проще и быстрее, чем тонны текста писакать.

Az0m@ 02.06.2016 14:23

Цитата:

Сообщение от oleg707 (Сообщение 362028)
во первых я предлагаю разобраться для начала с режимами индикации. Проц один и тот же, прога та же самая, а поведение РАЗНОЕ. Так не бывает.
во вторых, Планшет ВООБЩЕ никаким боком не должен влиять на поведение блока питания. Совсем!

Может тебе вибер дать или скайп, так проще и быстрее, чем тонны текста писакать.

И то и другое есть, чиркани пжлста контакты в личку

T_r_D 03.06.2016 17:04

Вот что получилось с "антизависанием".
Делей в 10 секунд, такой большой, потому что после восстановления питания планшет почему-то просыпается на несколько секунд показывая зарядку.
Осталось организовать вочдог на 555.
Решил использовать SE555 подключённую через диод и с кондёром на питание автомобиля (у SE максимальное 18 вольт)
и дёргать ей ногу EN БП на kis3r33 который питает ардуину следящую за питанием.
PHP код:

unsigned long time0 0;
unsigned long time1 0;
boolean OnceLoPow false;
boolean TabErr true;
unsigned int accpower 0;
int accpowercount 0;
int accpoweravg 1023;

void setup() {
  
//Arduino Pro-Micro
  //21 = A3
  //20 = A2
  //19 = A1
  //18 = A0
pinMode(18OUTPUT); //Tablet button
pinMode(19OUTPUT); //HUB power
pinMode(20INPUT);  //Tablet Screen action. Analog! If input >232 then screen on 
pinMode(21OUTPUT); //Tablet power
pinMode(10OUTPUT); //Tablet power supply low if car bat level low

pinMode(A7INPUT);   //Car bat level (In bord PIN 6!!!) 541=11,91 **analogRead(A7) * (1.1 / 1023.0*20.50);
pinMode(8INPUT);   //Radio input
pinMode(9INPUT);   //ACC input

digitalWrite(21LOW);
digitalWrite(19LOW);
digitalWrite(18LOW);
digitalWrite(10LOW);
}

void loop() {
WorkLoop();
//Измеряем среднее значение напряжения автомобиля.
  
if ((millis() - time0) > 100){
      if (
accpowercount == 60){
      
accpoweravg accpower 60;
      
accpowercount 0;
      
accpower 0;
      }
      else{
      
accpower accpower analogRead(A7);
      
accpowercount accpowercount 1;
      }
    
time0 millis();
  }

//Планшет завис, питание выключено, напряжение в норме.
  
if ((millis() - time1) == 5000 && analogRead(20) > 400 && !TabErr){
       
digitalWrite(10HIGH);
       
delay(2000);
       
digitalWrite(10LOW);
       
delay(10000);
       
TabErr true;
  }
}

void WorkLoop(){
//_____________________________ON_______________________________
  
if (digitalRead(8) == HIGH || digitalRead(9) == HIGH){
    
OnceLoPow false;
    
digitalWrite(19LOW);
    
digitalWrite(21LOW);
    if(
analogRead(20) < 400) {
     
BtnClick(300);
      if (
analogRead(20) < 400BtnClick(3000);
    }
  }
//____________________STAND-BY or LO POWER_______________________  
   
else{
    if (
accpoweravg 541){
      
OnceLoPow false;
      if(
analogRead(20) > 400) {
        
BtnClick(300);
        
delay(4000);
        if (
analogRead(20) > 400 && TabErr){
            
time1 millis();
            
TabErr false;
        }
      }
     
digitalWrite(19HIGH);
    }
    else{
      if (!
OnceLoPow){
       
digitalWrite(10HIGH);
       
delay(2000);
       
digitalWrite(10LOW);
       
OnceLoPow true;
      }
    
digitalWrite(19HIGH);
    
digitalWrite(21HIGH);  
    }
   }
}

void BtnClick(int Interval) {
    
digitalWrite(18HIGH);
    
delay(Interval);
    
digitalWrite(18LOW);
    
delay(1000);
  } 


ruzzzteg 03.06.2016 19:06

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

oleg707 04.06.2016 01:38

Цитата:

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

5й, в шапке же есть

можно и 3й, но я её забросил, так что все последние плюшки в 5й
http://pccar.ru/showpost.php?p=354913&postcount=278

oleg707 04.06.2016 01:41

Цитата:

Сообщение от T_r_D (Сообщение 362162)
Вот что получилось с "антизависанием".
Делей в 10 секунд, такой большой, потому что после восстановления питания планшет почему-то просыпается на несколько секунд показывая зарядку.
Осталось организовать вочдог на 555.
Решил использовать SE555 подключённую через диод и с кондёром на питание автомобиля (у SE максимальное 18 вольт)
и дёргать ей ногу EN БП на kis3r33 который питает ардуину следящую за питанием.
PHP код:

unsigned long time0 0;
unsigned long time1 0;
boolean OnceLoPow false;
boolean TabErr true;
unsigned int accpower 0;
int accpowercount 0;
int accpoweravg 1023;

void setup() {
  
//Arduino Pro-Micro
  //21 = A3
  //20 = A2
  //19 = A1
  //18 = A0
pinMode(18OUTPUT); //Tablet button
pinMode(19OUTPUT); //HUB power
pinMode(20INPUT);  //Tablet Screen action. Analog! If input >232 then screen on 
pinMode(21OUTPUT); //Tablet power
pinMode(10OUTPUT); //Tablet power supply low if car bat level low

pinMode(A7INPUT);   //Car bat level (In bord PIN 6!!!) 541=11,91 **analogRead(A7) * (1.1 / 1023.0*20.50);
pinMode(8INPUT);   //Radio input
pinMode(9INPUT);   //ACC input

digitalWrite(21LOW);
digitalWrite(19LOW);
digitalWrite(18LOW);
digitalWrite(10LOW);
}

void loop() {
WorkLoop();
//Измеряем среднее значение напряжения автомобиля.
  
if ((millis() - time0) > 100){
      if (
accpowercount == 60){
      
accpoweravg accpower 60;
      
accpowercount 0;
      
accpower 0;
      }
      else{
      
accpower accpower analogRead(A7);
      
accpowercount accpowercount 1;
      }
    
time0 millis();
  }

//Планшет завис, питание выключено, напряжение в норме.
  
if ((millis() - time1) == 5000 && analogRead(20) > 400 && !TabErr){
       
digitalWrite(10HIGH);
       
delay(2000);
       
digitalWrite(10LOW);
       
delay(10000);
       
TabErr true;
  }
}

void WorkLoop(){
//_____________________________ON_______________________________
  
if (digitalRead(8) == HIGH || digitalRead(9) == HIGH){
    
OnceLoPow false;
    
digitalWrite(19LOW);
    
digitalWrite(21LOW);
    if(
analogRead(20) < 400) {
     
BtnClick(300);
      if (
analogRead(20) < 400BtnClick(3000);
    }
  }
//____________________STAND-BY or LO POWER_______________________  
   
else{
    if (
accpoweravg 541){
      
OnceLoPow false;
      if(
analogRead(20) > 400) {
        
BtnClick(300);
        
delay(4000);
        if (
analogRead(20) > 400 && TabErr){
            
time1 millis();
            
TabErr false;
        }
      }
     
digitalWrite(19HIGH);
    }
    else{
      if (!
OnceLoPow){
       
digitalWrite(10HIGH);
       
delay(2000);
       
digitalWrite(10LOW);
       
OnceLoPow true;
      }
    
digitalWrite(19HIGH);
    
digitalWrite(21HIGH);  
    }
   }
}

void BtnClick(int Interval) {
    
digitalWrite(18HIGH);
    
delay(Interval);
    
digitalWrite(18LOW);
    
delay(1000);
  } 


kis3r33 слишком ЖИРНО для дежурного источника питания. Или режима ожидания у тебя нет?
Сколько потребление самого блока при выключенном зажигании и при активном состоянии (без планшета) ?

T_r_D 04.06.2016 04:08

Пока ни чего не мерил.
Я потом схему выкину- рисовать её в лом.
Суть такая- промикра запитана от киса и управляет двумя блоками питания на LM2596.
Один БП на хаб, флешку и ардуину которая связывает CAN с планшетом.
Второй (на самом деле спараллеленые два БП с одним резистором подстройки, так как один от планшета сильно греется)на планшет выдающий 4,35 вольта и при необходимости "жёстко" вырубить планшет падающий до 2,8.

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


Сегодня ради развлекухи решил сделать часы- на столе валяется промикра ещё одна, часы на DS3231 и напоролся на косяк. Я конечно попробую на второй промикре, но походу это у всех!
Заливаем в промикру тупой блинк
if (millis() - timer0 > 1000){
digitalWrite(19, !digitalRead(19))
timer0 = millis();
}
И получаем что первую минуту интервал выдерживается, а потом светодиод тупо горит! Нет- промикра не виснет и светодиод на самом деле мигает, но очень быстро.
Если в луп накидать кода, то станет видно это.

Заметил вообще случайно! В часах сделал палку крутящиюся которая на дисплее отображалась, так вот первую минуту она крутилась с заданной скоростью, а потом ускорялась в несколько раз. Ей не давал в сплошной засвет привратиться только код самих часов поскольку lcd.print работает долго.

У кого есть промикра- проверьте плиз.

oleg707 04.06.2016 13:32

Цитата:

Сообщение от T_r_D (Сообщение 362191)
Пока ни чего не мерил.
Я потом схему выкину- рисовать её в лом.
Суть такая- промикра запитана от киса и управляет двумя блоками питания на LM2596.
Один БП на хаб, флешку и ардуину которая связывает CAN с планшетом.
Второй (на самом деле спараллеленые два БП с одним резистором подстройки, так как один от планшета сильно греется)на планшет выдающий 4,35 вольта и при необходимости "жёстко" вырубить планшет падающий до 2,8.

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


Сегодня ради развлекухи решил сделать часы- на столе валяется промикра ещё одна, часы на DS3231 и напоролся на косяк. Я конечно попробую на второй промикре, но походу это у всех!
Заливаем в промикру тупой блинк
if (millis() - timer0 > 1000){
digitalWrite(19, !digitalRead(19))
timer0 = millis();
}
И получаем что первую минуту интервал выдерживается, а потом светодиод тупо горит! Нет- промикра не виснет и светодиод на самом деле мигает, но очень быстро.
Если в луп накидать кода, то станет видно это.

Заметил вообще случайно! В часах сделал палку крутящиюся которая на дисплее отображалась, так вот первую минуту она крутилась с заданной скоростью, а потом ускорялась в несколько раз. Ей не давал в сплошной засвет привратиться только код самих часов поскольку lcd.print работает долго.

У кого есть промикра- проверьте плиз.

кис много жрёт для дежурного источника. Крен5 используй.

А распиши ка подробнее, как работает эта строчка, в качестве ликбеза.digitalWrite(19, !digitalRead(19)
timer0 ансигнед лонг?
На другой ардуине такое же поведение ( на базе 328P или меги) ?

T_r_D 04.06.2016 17:10

oleg707 про ансигнед лонг угадал! Я в ночи написал ансигнед инт случайно- отсюда и глюк.

А строчка- ну чего тут не понятного?
Задаётся состояние пина обратное его нынешнему состоянию.
Я надеюсь что все знают что типы типа булена можно в условии указывать как
boolean A = true;
if (A) {} Это условие выполнится когда A == true
if (!A) {} Это условие выполнится когда A == false

Соответственно в верхней строчке берётся просто обратное состояние от нынешнего.
Тоесть если оно HIGH, тоесть true, то получаем !HIGH (!true), тоесть false и наоборот.

а если ещё точнее, то
if (A == LOW)
A = HIGH;
else
A = LOW;
тоесть сокращённо
A != A;

Хреново я объясняю короче :)


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

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