avatar_xxoma

Ваттметр/велокомп на ардуино

Автор xxoma, 10 Апр. 2014 в 17:42

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

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

Ghozt

Работа по добавлению возможности настройки через SD-карту почти завершена. В процессе написания кода столкнулся с неприятным глюком: ваттметр просто перестал писать лог в файл. А связано это было с большим объемом занимаемой памяти. Придется несколько облегчить код и выкинуть некоторые плюшки.

Sattva

Цитата: Ghozt от 26 Нояб. 2016 в 21:06
А связано это было с большим объемом занимаемой памяти.
Я тоже такое наблюдал. Использовано 77% памяти, а Arduino Nano 328P толком уже не работает.  :~-(
Даже, вроде было предупреждение, что при таком объеме вероятна нестабильная работа.
И она не просто вероятна, а будет.

Потому недавно нашел вот это:


Arduino Mega 2560 R3 Core Mini 2560 3.3V 5V + Кабель

https://www.aliexpress.com/item-img/Mega-2560-Core-Mini-2560-3-3V-5V-USB-2-0-SERIAL-for-Arduino-UC-2102/32602536366.html?spm=2114.10010208.1000017.2.wKjjNi
$10 Mega 2560 R3 Core
For Arduino Compatible Mini 2560 3.3V 5V
USB 2.0 SERIAL for Arduino Mega2560-Core
UC-2102 USB to UART Cable

Здесь и портов ввода/вывода хватит, и памяти на переменные, и на код, и на все.
Размер 5.2 см х 3.7 см.

На днях планирую заказать.  ;-)

Mavel

Плюшки важнее памяти. Возьмите другой микроконтроллер и две версии сделайте.

Ghozt

Выкинул на данный момент определение объема вставленной карты - заработало.  IDE все равно ругается на использование памяти - 97 и 75% соответственно для ROM и RAM. Тут кажись дело именно в оперативной памяти, при 80% ее занятности запись логов уже не работает. Делать вторую версию нет желания. Эту бы до ума довести

Sattva

Цитата: Mavel от 26 Нояб. 2016 в 21:21
Плюшки важнее памяти. Возьмите другой микроконтроллер и две версии сделайте.
Правильно. Чего уж там мелочиться!  B-)
Возьмем на следующую версию Omega 2 за $5 баксов
Linux-server с полноценной операционной системой, Apache, PHP, MySQL, Puthon и
запилим мега-ватт-метр  c Web-интерфейсом по WiFi.




Как раз в начале 2017 должна выйти.

Omega2: $5 Linux Computer with Wi-Fi, Made for IoT
World's smallest Linux server, with Wi-Fi built-in. Building for IoT doesn't get easier than this!
https://geektimes.ru/company/dadget/blog/279418/
https://www.indiegogo.com/projects/omega2-5-linux-computer-with-wi-fi-made-for-iot#/
https://www.kickstarter.com/projects/onion/omega2-5-iot-computer-with-wi-fi-powered-by-linux/description

Добавлено 26 Нояб. 2016 в 21:43

Цитата: Ghozt от 26 Нояб. 2016 в 21:32
Делать вторую версию нет желания. Эту бы до ума довести
Поддерживаю. Потому и написал отчасти с сарказмом этот пост.
Расширенный функционал всегда можно допилить.
Заработало бы то, что есть понадежнее.
И платили бы за это нормально.

А там и фирму по выпуску вело-компов можно было бы открыть
на зависть Sigma, Cat Eye и прочим. Но почему-то этого не происходит.
Нет бренда, нет спроса. :ireful:

Mavel

[user]Ghozt[/user], я имел ввиду такой же по архитектуре микроконтроллер с большей памятью. В этом случае не надо же переписывать код?

Добавлено 26 Нояб. 2016 в 21:51

[user]Sattva[/user],  зачем вам еще один очередной недокомпьютер?

Sattva

#240
Цитата: Ghozt от 26 Нояб. 2016 в 21:32
Тут кажись дело именно в оперативной памяти, при 80% ее занятности запись логов уже не работает.
Насколько мне удалось понять, проблемы возникают при работе переменных,
точнее при выделении памяти под их динамический размер. Для меня пока загадка
как количество локальных переменных одной функции влияет на недостаток памяти.
А вот глобальные переменные влияют точно.

И чем их больше, тем быстрее закончится память на отметке около 75%.

При чем даже удобный метод отладки
String OutString = String(Data1) + " " + String(Data2);
Serial.println (OutString);
кушает больше памяти, чем
Serial.print (Data1);
Serial.print (" ");
Serial.println (Data2);
что печально.

Sattva

Цитата: Mavel от 26 Нояб. 2016 в 21:48
[user]Ghozt[/user], я имел ввиду такой же по архитектуре микроконтроллер с большей памятью. В этом случае не надо же переписывать код?

Добавлено 26 Нояб. 2016 в 21:51

[user]Sattva[/user],  зачем вам еще один очередной недокомпьютер?
[user]Mavel[/user], вмешаюсь и отвечу. К сожалению каждый микроконтроллер имеет свои особенности:
размер, количество выводов, компилированный код. И если код за нас готовит компилятор, и здесь вы правы,
говоря, что переписывать код не нужно. То в плане размеров, разводки, номеров выводов
Arduino Mini,
Arduino Nano,
Arduino Uno - все на 328P имеют одинаковый чип и свойства.
И из явно не хватает для проектов более серьезных чем вкл/выкл
какого-то устройства по паре датчиков и простому алгоритму.

Выходом является только Arduino Mega 2560 R3,
но такая как раз огромная и для ватт-метра не годится, хотя чип ее как раз может подойти.

Решением скорее всего будет приведенная выше маленькая Mega 2560,
но там снова-такие другая геометрическая форма и без перепайки не обойтись.

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

Ghozt

[user]Mavel[/user], следующий МК с удвоенным количеством памяти - Atmega644. Код может переписывать и не надо, а вот плату разводить под него не хочу. Под 328 практически разведена уже

Sattva

Цитата: Ghozt от 26 Нояб. 2016 в 22:01
[user]Mavel[/user], следующий МК с удвоенным количеством памяти - Atmega644. Код может переписывать и не надо, а вот плату разводить под него не хочу. Под 328 практически разведена уже
Вот и я о том же.  ;-)

Mavel

Я бы сначала в протеусе отладил, потом железо делал

Sattva

Цитата: Mavel от 26 Нояб. 2016 в 22:05
Я бы сначала в протеусе отладил, потом железо делал
Проблемы памяти 328P чипа, Протеуст не показывает никогда.
Это видно только, когда всю прошивку дописать.  :-(
И когда ты понимаешь, что чип слабоват, все уже почти закончено.  O_O

Mavel

#246
[user]Sattva[/user], Вы хотите сказать что при моделировании в протеусе запись на SD карту проходила бы успешно, а в реальном железе было бы по другому?
Спасибо, теперь понятно что протеус не дает тех возможностей что дает IDE.

Mavel

#247
Не сложно же добавить простую математическую функцию: ("оставшаяся энергия" - "расход энергии на километр усредненный за 5 минут" * "оставшийся путь")/"оставшаяся энергия" пропущенная через функцию ПИ регулирования и выдачей на аналоговый выход(0-5В) с добавлением 2 В. :ah:

Ghozt

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

Sattva

Цитата: Mavel от 26 Нояб. 2016 в 22:25
[user]Sattva[/user], Вы хотите сказать что при моделировании в протеусе запись на SD карту проходила бы успешно, а в реальном железе было бы по другому?
Спасибо, теперь понятно что протеус не дает тех возможностей что дает IDE.
Протеус моделирует электрическую цепь.
IDE Arduino компилирует код и тоже ошибок не видит.
А вот уже сам микроконтроллер выдает ошибку зависает
или работает непредсказуемо, когда код скомпилирован,
загружен в микроконтроллер и запущен.  >:D

Mavel

Надо смотреть и думать куда едешь а не на компьютер и вычислять математические функции. Я так раз занялся включением фары и въехал в бок только что нарисовавшегося автомобиля!

Ghozt

Как-то раз мне надо было проехать около 90км на моей батарее. Перед поездкой я прикинул: при мощности в 250вт можно ехать 25км/ч. 250вт при 48в - это 5а (ну чуть больше, не суть). Батарея - 20Ач, соответственно при токе 5а она разрядится за 4 часа. При скорости в 25км/ч за 4 часа можно проехать 100км. Минус всякие потери кпд - ну 80-90. Ну и проехал как раз эти 90км в итоге, и даже не разрядился. Где здесь матан? Все в пределах школьной программы.

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

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