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

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

laytya 26.10.2015 15:14

Да не дочитал. Я вспомнил почему я отказался от этого варианта. Тупо не хватило выводов в тиньке =)

YAM1966 26.10.2015 15:16

Цитата:

Сообщение от laytya (Сообщение 341527)
Да не дочитал. Я вспомнил почему я отказался от этого варианта. Тупо не хватило выводов в тиньке =)

Я вместо тинек использую atmega8a, цена 50 центов, ног гора... Памяти, ОЗУ и так далее....

oleg707 26.10.2015 15:37

Цитата:

Сообщение от YAM1966 (Сообщение 341528)
Я вместо тинек использую atmega8a, цена 50 центов, ног гора... Памяти, ОЗУ и так далее....

вот вот, я на ардуину сгоревшую вместо 328p 8а передул феном. Те же яйца, вид сбоку, только памяти меньше (2k против 8k) и бутлоадер не пишется((, так что icsp...
Да ту же attiny 2313 можно, тоже ног куча, и в смд корпусе есть - меньше секаса.

laytya 26.10.2015 16:56

больше чем тинька45 для БП не нужно. Даже с настройкой по узб. =)

YAM1966 26.10.2015 17:06

Цитата:

Сообщение от laytya (Сообщение 341541)
больше чем тинька45 для БП не нужно. Даже с настройкой по узб. =)

Ну да, вот потом и возникает:
Цитата:

Сообщение от laytya (Сообщение 341527)
Тупо не хватило выводов в тиньке =)

:rofl:

laytya 26.10.2015 18:17

Минимализм рулит, помница кто-то говорил =)

Так все что нужно работает. Большего и не нада.

mr_nixon 28.10.2015 11:03

Вот подскажите в чём загвоздка, начал пробовать писать СКЕТЧ, оттолкнувшись от форумных, пока как эксперемент, дабы разобраться, НО не пойму такой момент. 1 мои реле от ардуиновского комплекта 5 вольтовые и управляются сигналом LOW на включение(это предистория)
Смысл задачи при подаче ACC - Сразу включается HUB и чрез 2 секунды за ним NEXUS отключение в обратной последовательности.
Итак вопрос ПОЧЕМУ если я подключаю АРДУИНО УНО к ЮСБ, релюхи ВКЛ потом ОТКЛ а затем ВКЛ Nexus, но после подачи АСС всё начинает работать так как мне хочется.
ВОПРОС ВТОРОЙ(это ваще не догоняю)
Почему при подаче питания уже просто 8 вольт, без ЮСБ, когда схема должна начать работать автономно. реле Nexus просто сразу включается и не отключается, а реле Hab (клацнуло, я так понимаю запуск программы) и начало работать как мне хочется.
прилагаю секч
****************
int ACC = 4; // D4 вход ACC
int Nexus = 5; // D5 выход управления Nexus
int Hall = 6; // D6 выход управления датчиком холла
int flagACC = 0;
unsigned long pauseTime = 0;

void setup()
{
pinMode(ACC, INPUT);
pinMode(Nexus, OUTPUT);
pinMode(Hall, OUTPUT);
}
void loop()
{
if (digitalRead(ACC)== HIGH && flagACC == 0)
{
digitalWrite(Nexus, LOW); //вкл реле
pauseTime = millis();
flagACC = 1;
}
if (millis()-pauseTime>=2000 && flagACC == 1) // пауза 2 Сек
{
digitalWrite(Hall, LOW); //вкл реле
pauseTime = 0;
}
if (digitalRead(ACC)== LOW && flagACC == 1)
{
digitalWrite(Hall, HIGH); //откл реле
pauseTime = millis();
flagACC = 0;
}
if (millis()-pauseTime>=1000 && flagACC == 0) // пауза 2 Сек
{
digitalWrite(Nexus, HIGH); //откл реле
pauseTime = 0;
}
}

mr_nixon 28.10.2015 11:07

Вложений: 1
Благодоря YAM1966, вот такой вариант схемы сейчас собираю, решил остаться на реле, так они у меня уже есть, ну и гдето читал на форуме с реле шумов почемуто меньше.

Вложение 41437

ali_vlad 28.10.2015 11:13

У тебя значени LOW и HIGH не перепутаны случайно?

YAM1966 28.10.2015 11:28

Ну, во первых я не вижу где выставляются значения на ногах при включении питания. Вижу только установку направления ног.
Далее, ACC и BAT надо получать не digitalRead, а analogRead с проверкой на нужный уровень. Для этого можно воспользоваться макросом:
Код:

#define Rinput        47.0 // Последовательное сопротивление
#define Rground      10.0 // Сопротивление на массу
#define VRef          5.0 // Опорное для ADC
#define Kmnog        ((Rground + Rinput) / Rground)
#define V2ADC(v)      ((u16)(((v) * 1024.0) / (VRef * Kmnog)))

и сравнивать со значением, например V2ADC(10.0)

p.s.
Далее, чтобы не запутаться в своих-же if() else.... лучше void loop() написать с использование switch, т.е.
Код:

#define POWER_ST_OFF 0
#define POWER_ST_ACC_ON 1

#define ACC_MIN_TRIP_POINT  V2ADC(10.0)

int POWER_ST;
int POWER_CNT;

в setup()
POWER_ST = POWER_ST_OFF
POWER_CNT = 0;

в loop()
{
  // Вызывать с интервалом например 1 мСек по таймеру
  PowerCheck();
}

void PowerCheck()
{
  switch(POWER_ST)
  {
  case POWER_ST_OFF:
    if(analogRead(ACC) >= ACC_MIN_TRIP_POINT)
    {
      // напряжение на АСС больше минимального
      if(++POWER_CNT >= 1000)
      {
        // АСС больше минимального более 1 сек
        POWER_CNT = 0;
        POWER_ST = POWER_ST_ACC_ON;
      }
    }
    else
    {
      POWER_CNT = 0;
    }
    break;
  case POWER_ST_ACC_ON:
    ..................
    break;
  }
}

Ну и так далее, меньше условий тут запутаться.


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

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