avatar_UriBas

Моргалка на Arduino. Этюды для начинающих.

Автор UriBas, 08 Март 2017 в 16:08

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Dunkel

Цитата: Dkin от 21 Март 2017 в 14:41
Получится. Напряжение на ней должно быть не меньше 17-18 вольт, чтобы ток при напряжении на АКБ 14,4В не снижался.

Тогда, наверное, и понижайка не нужна, она запитана от БП 19В 2А, может сразу от него подключить?

Цитата: Dkin от 21 Март 2017 в 14:41
Я мигаю Кулоном 715А, напряжение поднял до 17В, ток он до 20А дает в импульсе.

Я тоже думал моргать Орионом, но там в инструкции запрещается отключать нагрузку при поключенном 220В.
Или моргать можно?
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

UriBas

https://electrotransport.ru/index.php?topic=30718.0 - "Моргалка от Павел Валерьевич".   реализация на таймерах.
https://electrotransport.ru/index.php?topic=34003.0  - "Моргалка на Attiny13" - реализация на МК.
В этих двух темах (есть больше тем) куча материала про алгоритмы и про то, к чему и к каким блокам питания подключаться..

Восточная мудрость - "Шакал воет - караван идет"  Эл.вел. 350Вт.   Верую в Иисуса Христа, НЛО.  тема "продвинутой моргалки" https://electrotransport.ru/index.php?msg=1669651

Dkin

Цитата: UriBas от 21 Март 2017 в 15:18
В этих двух темах (есть больше тем) куча материала про алгоритмы и про то, к чему и к каким блокам питания подключаться..

Я как раз оттуда первоначальную идею и взял.
Орион-325 в первой теме использовали для моргалки, вроде все работает.

Dkin

[user]Dunkel[/user], Вы какой алгоритм используете?

Dunkel

Цитата: Dkin от 21 Март 2017 в 15:36
[user]Dunkel[/user], Вы какой алгоритм используете?

Да пока никакой - обычный блинк для проверки.
Только начал делать. Пока разбираюсь с аппаратной частью.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dkin

Понятно, тоже пытаюсь разобраться дальше, как использовать millis в программе.

UriBas

Цитата: Dkin от 21 Март 2017 в 15:27..Я как раз оттуда первоначальную идею и взял.
Поморгать "блинком" конечно хорошо.. для пробы сил", но надо проследить всю эволюцию, как в теме таймеров, так и в теме Тини13 и (или) видимо логично остановится на последних достижениях в МК и пытаться реализовать здесь.. просто для экономии времени и сил, зачем повторять то, что уже пройдено кем-то.
Восточная мудрость - "Шакал воет - караван идет"  Эл.вел. 350Вт.   Верую в Иисуса Христа, НЛО.  тема "продвинутой моргалки" https://electrotransport.ru/index.php?msg=1669651

Dkin

Полностью согласен! Уже открыты алгоритмы с подстраивающимися временами паузы и заряда и т.д. Но с моим уровнем программирования на ардуино придется проходить в все от начала, чтобы понять как это все работает. К примеру, делать отсечку по напряжению (здесь тоже все непросто, т.к. присутствуют шумы от АЦП микроконтроллера и шумы аккумулятора, нужно обязательно делать фильтр или брать подряд 10 измерений и усреднять). Далее по мере добавления знаний будем измерять скорость изменения напряжения. Думаю, что все это не напрасно и поможет людям, программа будет полостью открытая с пояснениями. К тому же бросить никогда не поздно, если совсем не будет интереса к моргалке или что-то не смогу осуществить. Я все это вижу так, но процесс не простой, надеюсь на взаимный интерес к теме и помощь.

Dunkel

Цитата: Dkin от 21 Март 2017 в 15:42
Понятно, тоже пытаюсь разобраться дальше, как использовать millis в программе.

Может попроще сделать:

int zar = 7 ; //Zaryad Sec
int raz = 3 ; //Razryad Sec
int imp = 15 ; // Impuls mSec
int pause = 500 ; // Pause mSec
int n = zar * 1000 / (imp + pause) ;
void setup() {               
  pinMode(1, OUTPUT); //LED on Model A  or Pro
}
void loop() {
delay(raz * 1000);
for (int i=0; i <= n; i++) {
  digitalWrite(1, HIGH);
  delay(imp); 
  digitalWrite(1, LOW);
  delay(pause);
}
}
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dkin

delay - это плохо
И настройки вводить лучше в частоте, никто времена импульсов считать в мс не будет

Dunkel

Цитата: Dkin от 21 Март 2017 в 21:32
delay - это плохо

Обоснуйте. Только не вообще, а применительно к нашему изделию.

Цитата: Dkin от 21 Март 2017 в 21:32
И настройки вводить лучше в частоте, никто времена импульсов считать в мс не будет

Это уже дело вкуса. Мне, например, длительность импульса как-то понятнее.

Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dkin

Цитата: Dunkel от 21 Март 2017 в 21:39
Обоснуйте. Только не вообще, а применительно к нашему изделию.
В длинной паузе я мультиметром смотрю как быстро падает напряжение на акб и до какого значения.
В перспективе хотел бы это видеть на экране.
Delay не даст такой возможности.

Dunkel

Цитата: Dkin от 21 Март 2017 в 21:43
В длинной паузе я мультиметром смотрю как быстро падает напряжение на акб и до какого значения.
В перспективе хотел бы это видеть на экране.
Delay не даст такой возможности.

Никаких проблем - вместо одной большой паузы делаем цикл из маленьких пауз и измерений.
Можно измерять хоть каждую миллисекунду.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dkin

Ну да можно.
1 мс пауза
замер
пауза
замер
в теории неправильно, но работать будет!

Dunkel

Цитата: Dkin от 21 Март 2017 в 21:47
в теории неправильно, но работать будет!

К черту такие теории. Надо рассуждать применительно к конкретному изделию.
Вряд ли АКБ хуже зарядится из-за использования delay.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dkin

Скорее всего, измерения будут вносить дополнительное время задержки.
Например, без измерений пауза 20 сек
с измерениями 22 секунды, тогда корректировку подобрать опытным путем сколько в паузе мс убрать с одной секунды.

Dunkel

В любом случае потом надо будет делать калибровку по фактическим значениям.
А сейчас мы на чем остановились? У меня светодиод моргает с какой-то частотой и скважностью.
Что дальше?
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dkin

Еще идея
будет ли работать в вашем цикле уход на метку?

void loop() {
:label1
delay(raz * 1000);
for (int i=0; i <= n; i++) {
  digitalWrite(1, HIGH);
  delay(imp); 
  U = analogread (A0)
  if u>14,4 goto label1
  digitalWrite(1, LOW);
  delay(pause);
}

Написал без соблюдения синтаксиса. Меряем напряжение в цикле заряда, при превышении какого-то значения уход на метку, т.е в паузу