Pull to refresh

Comments 33

Во-первых, была проблема реализации приёма данных из контроллера в компьютер на этапе написания компьютерной программы.

В чем сложность оказалась? Как мо мне реализация i2c на COM-порте не легче, чем организовать обмен по uart.
И, что ещё существеннее, увеличивался объём программы для контроллера.

Не думаю, что от реализации обменна объём программы для контроллера столь существенно увеличится.
1. Из-за отсутствия опыта совместно с отсутствием желания. Были какие-то небольшие сложности на уровне WinAPI с организацией приёма по RS-232. Если бы хотел, то разобрался. Но мне больше захотелось реализовать I2C через COM-порт. Там действительно было не меньше сложностей, но я их все преодолел.
2. Существеннее не объём увеличился, а существеннее для меня любое увеличение объёма памяти МК. Программа в результате заняла 98% памяти, а реализация обмена данными по UART, которую я исключил из кода, добавляла около 5% памяти
>не очень качественного чипа RTC: зимой при низких температурах время заметно спешит, приходится раз в месяц корректировать.

Не совсем так. У любого кварцевого резонатора есть зависимость от температуры:
image
хотите точность на морозе / жаре — ставьте термокомпенсированный генератор, ну или RTC с встроенной термокомпенсацией что то типа DS3232.

Еще вопрос, зачем куча резисторов между экраном и мегой? можно же все от 3.3В запитать.
Про DS3231 я тогда не знал (об это я написал уже в середине статьи). А так это хорошая микросхема, я уже в курсе её достоинств. ПЗУ 24XX515 не совсем корректно работает от 3.3В. И мне захотелось именно 5В, а резисторы при дисплее меня не напрягают.
UFO just landed and posted this here
Ну не на базе дисплея же, а на базе микроконтроллера. Питание от 5 вольт вообще не оправдано, если что в МК есть EEPROM. Дисплей лучше использовать от Nokia 1202(контроллер ste2007). И если уж на то пошло, то лучше использовать m41t56 вместо ds1307, если без изменения схемы. В m41t56 есть коррекция хода секунд. Плату лучше лудить всю или покрыть лаком, ибо окислится за пару дней использования и будешь ловить помехи на линиях данных. Использование MAX756 не оправдано тем, что стоит 500р в среднем, что-то бюджет не тот уже. Лучше тогда использовать mc33063, копеечный dc-dc(только именно mc33063, а не 34063, так-как у 33063 расширенный диапазон рабочих температур). Аккумулятор использовать лучше li-po, так-как их легко достать и подобрать размер. В качестве контроллера заряда для li-po можно использовать tp4056, так же копеечный контроллер заряда. (в схеме вообще нет контроллера заряда, как вы аккум собрались использовать?)
В m41t56 есть коррекция хода секунд.

Чем она поможет при температурном диапазоне градусов эдак 50?
Ничем, просто задавать коррекцию на m41t56 гораздо проще, чем костыли писать для ds1307.
Это ваше мнение! К названию статьи, я думаю, придраться не стоит. Понимай как хочешь. Читайте внимательнее, зачем я использую внешнюю EEPROM. Какой дисплей использовать — это дело разработчика. И использовал ровно то, чем я владел. Про m41t56 я не слышал, но обязательно почитаю. Спасибо за советы, но я бы предпочёл покрывать платы прозрачным лаком. А так, я ни разу пока не встречал проблем с необлуженной платой.
Интересно, а почему нет критики по поводу габаритов основного кварца и его частоты? А, и кстати! Я не запаял конденсаторы на массу параллельно ногам обоих кварцев. Это тоже влияет на скорость хода часов.
Для кварца RTC не нужны конденсаторы(это по датащиту), кварц должен быть 12,5пФ. А для кварца для МК на частоте ниже 8МГц можно пренебречь кварцами.
1. И правда, не нужны. Не обращал даже на это внимание. Кстати, на материнках возле часового кварца конденсаторы ставятся. Я однажды пробовал ставить один (не 2) подстроечный конденсатор в районе 15пФ, настраивал SQW на выход частоты 32768 (без делителей) и, подкручивая его, частотомером добивался точности. Однако, вы пишете про ёмкость кварца. Я ни разу не встречал, чтобы этот параметр оговаривался при приобретении кварца.
2. Пренебречь конденсаторами, а не кварцами. Или всё же кварцами?
Ой извините опечатался, конденсаторами конечно же можно пренебречь. Можно вообще без кварца обойтись. На материнках вообще другой разговор, там ставятся более продвинутые RTC, а что для них нужно по datasheet'у смотреть надо. Еще точность хода кварца зависит от длины ножек кварца, как бы странно это не было.
Учту насчёт длины ножек. А на материнках RTC в основном встроены в чипсет. А ещё мне встречались RTC с батарейкой внутри. У меня есть несколько таких микросхем новых. Это ds12b887.

Ясно, что в финале получилось всё же больше 500р. Но хобби бесценно!


Если смотреть на дешманский велоспидометр (который тупо коробочка с экраном, одной-двумя кнопками и герконом на проводе), то у него есть весьма интересные качества. Например, то, что он работает от единственной полуторавольтовой "таблетки", и при этом уверенно тянет по два-три года, невзирая на погоду (в сильный мороз за -30 разве что обновляется медленно, но в остальном вполне функционирует).
Модели чуть понавороченнее уже питаются от трёхвольтовой литиевой "таблетки", и иногда даже могут передавать измерения в компьютер (не говоря уже о подсветке и беспроводных датчиках). Батарейка при этом выжирается быстрее, но всё равно работает достаточно долго (на сезон хватает точно).
У вас на схеме батарейка, как я понял, только для часов RТС, остальная схема уже от "кроны" или чего-то подобного (на сколько времени, кстати, хватает?)


Стремление отказаться от "стандартных библиотек" и погрузиться в даташит — в целом, похвально (расширяет кругозор, вносит ясность о деталях работы и т.д.). Да, даташит + еррата — достаточный набор. Но разработка в целом получается медленной (никакого rapid development, всё медленно и вдумчиво, как на ассемблере).


Но при этом в конкретных деталях всё равно остаются элементы "бейсика". Например, то же RTC. Что мешает повесить на сам МК часовой кварц, и самому по прерыванию считать секунды-минуты-часы-дни-недели-годы? А в остальное время спать? И ещё по прерыванию на геркон и кнопки управления? (ваши 4,5МГц с делителем 1024 — это примерно 4.5КГц. Т.е. тот же часовой кварц с делителем 8 даст примерно то же самое).
Ну и сам МК. Да, "ардуина" всех подсадила на atmega. Но это не всегда оправдание (всё зависит от того, на какой МК в первый раз попал. Так-то их много, и в зависимости от требований (производительность, возможности, энергопотребление) — есть, из чего выбрать.


Я сам 4-5 лет назад взялся делать звонок для учебного заведения (чтоб звонки подавать по расписанию). И вот там хватило для начала ланчпада msp430, часового кварца, пары кнопок и текстового экранчика 4х16 (да, напрямую по даташиту, без всяких преобразователей в i2c и т.д.). И там один из "любопытствующих интересов" бы в области "спать как можно глубже". В итоге схема (вся логическая часть, исключая реле и питание экранчика) так и живёт все эти годы на единственной литиевой "таблетке"; садиться пока вроде не собирается.


А достаточно "прожорливая" схема может быть вполне уместна на домашнем велотренажёре (там то можно при необходимости и в розетку воткнуть...)

Спасибо за интересный комментарий. Энергопотребление, конечно же, играет немаловажную роль. Но когда я разрабатывал данную конструкцию, я не думал об этом. У меня была цель прежде всего — познание, как вы сказали, расширение кругозора, приобретение опыта в данном хобби. Я был в курсе, что существуют контроллеры с выводами для дополнительного низкочастотного часового кварца, спящий режим и т.д. Думаю, всё ещё впереди. А питается моё устройство от ёмкого АКБ (7Ah), и не только устройство, в самом конце статьи я написал. Кроны — на месяц. Самый худший вариант. Ещё применение LM7805 тоже извращение: КПД теряется. По поводу второго вопроса. Существует множество разных контроллеров разных фирм и уровней. Но AVR я выбрал не из-за Ардуино, а из-за наличия соответствующей литературы. Интернета у меня тогда ещё не было. Да и в журналах Радио было много статей про конструкции на AVR. Про Ардуино я узнал значительно позже.
Ну и сам МК. Да, «ардуина» всех подсадила на atmega.

Не согласен, еще до адурины многие на атмегу подсели, т.к. в свое время был один из самых доступных, мощных и дешевых МК. Авторы адурины потому его и взяли за основу (а не какой нить msp/pic/итд).
Ага, я тоже когда-то начал с PIC, а потом восхитился архитектурой AVR на их фоне (особенно, помню в PIC раздражал аппаратный ограниченный стек для вызовов), и прочно на них сел. Ардуино тогда ещё и в проекте не было.
UFO just landed and posted this here
Конкретно эта реализация, конечно, не претендующая, но мне понравилась идея взять за основу дешёвый наборчик «корпус, дисплей, кнопки, разъёмы, аккумулятор» для подобных самоделок. Ещё бы ему водонепроницаемость и слот для sd карты.

Для велосипеда много велосипедов было изобретено )
Есть же готовые библиотеки, генераторы шрифтов и готовые шрифты. Плюс не обязательно было насиловать старый 3310, такие дисплеи с рамкой, распашными выводами и подсветкой, продаются за копейки.

Подозреваю, образовательная цель тоже преследовалась. Подозреваю даже, что эта цель являлась первоочередной.

Круто, но не покидает ощущение что проект 10 летней давности. Нокия, винда хр, компорт, лптпорт и остальные прихваты

Современный вариант: m5stack + расширение с припаяным ds3232, про что там писать? :)

Ну как вариант esp-12 + олед, да в таком же baremetal софте, плюс апп для андроида или айфона для синхронизации, такая же по мощности статья будет

Сейчас куча плат esp32+oled. Корпус сделать и всё.
Мне кажется, ваши предложения выходят за рамки моего хобби, которое связано не только с программированием, но и с конструированием. У меня есть один знакомый, который, будучи школьником, весьма быстро разработал и сконструировал вот такой гаджет. Это очень зачётно, но не совсем то, что меня интересует. Разрабатывая на подобном «высоком» уровне конструкции, разработчик не познает тонкости работы тех или иных интерфейсов или периферии. Я конечно понимаю, что с нуля разработать такие сложные вещи практически нереально (реально, но на порядки дольше), но устройство, о котором идёт речь в моей публикации, не стоит таких, хоть и простых, сложностей.
Вместо ПЗУ 24XX512 (на 512 Кбит) лучше использовать FRAM память, например:
www.digikey.com/product-detail/en/cypress-semiconductor-corp/FM24V05-GTR/428-3556-2-ND/3788940
www.digikey.com/product-detail/en/fujitsu-electronics-america-inc/MB85RC512TPNF-G-JNERE1/865-1269-2-ND/5456435

цена больше, но и больше плюсов:
— ресурс на запись приблизительно 90 лет.
— очень быстрая, не нужно ждать окончания записи (I2C и SPI, на максимальной скорости будут медленнее записи в память.)
— нет разделения памяти по банкам, вся память сплошной масив, например если нужно писать просто делаем write(addr, pointer_to_data_arr, total_data_bytes).

Пример работы с такой памятью:
www.cypress.com/documentation/code-examples/ce219174-interfacing-spi-nvram-psocr-4

Спасибо! Я учту, но пока что я не знаю проблем с 24XX512. Пока ресурс по перезаписи ещё не исчерпан. Скорости хватает, пропусков записи не обнаружил. Я специально в функции записи добавил «запас» delay_ms(5). И я не применяю постраничный режим записи, и даже не применяю постраничный режим чтения. Вот как раз в SD/MMC-карте — там возможны только посекторные (512 Байт) операции R/W.
По поводу самодельных шрифтов. Парсить BMP конечно приколько, но есть такой формат, Plain PBM, поддерживаемый любым нормальным графическим редактором, можно вообще в текстовом редакторе рисовать, а самое главное он удобно парсится, особенно скриптовыми языками. Я такой метод успешно использовал в нескольких своих проектах: рисовал шрифт и иконки в PBM, один файл на символ, потом пропускал через простенький скрипт на Ruby, который генерирвал нужный мне .h файл (массив из битовых масок).
Какой-то лютый мэдскилз во всем.
Sign up to leave a comment.

Articles