Электронный барометр для дома. Метро обозначит границы: когда столичный транспорт введет оплату по зонам Самодельный барометр на микроконтроллере
По просьбам тех, кто собрал предыдущую конструкцию барометра на PIC 16F684 и датчике давления BMP180, публикуем статью (продолжение). Данное устройство позволяет отображать одновременно и температуру и давление. Для этого в конструкции был применен индикатор на базе микросхемы MAX7219 которая позволяет работать с матрицей 8Х7, применение данного индикатора позволило сократить число задействованных портов микропроцессора.
Датчик температуры применен самый распространенный — 18b20, который имеет трехвыводную конструкцию. DS18B20 (Programmable Resolution 1-Wire® Digital Thermometer). Диапазон измерения температуры составляет от -55 до +125 °C. Для диапазона от -10 до +85 °C погрешность не превышает 0,5 °C.
Схема устройства показана на рисунке 1.
Индикатор MAX7219 приобретался на Aliexpress. Но данный индикатор продается уже в готовом виде и вам остается только 5ю проводниками его подключить к запрограммированной плате.
Принципиальная схема индикатора показана на рисунке 2, внизу показано фото такого индикатора.
Внешний вид собранного устройства показан на фото ниже.
Отрицательные температуры отображаются, минус перед числом и градусы отображаются без десятых долей.
Скачать рисунок печатной платы, схему и прошивку.
Подключение мотора постоянного тока к Ардуино (коллекторного двигателя) требуется при сборке машинки или катера на микроконтроллере Arduino. Рассмотрим различные варианты подключения двигателей постоянного тока: напрямую к плате, через биполярный транзистор, а также с использованием модуля L298N. В обзоре размещены схемы подключения и коды программ для всех перечисленных вариантов.
Управление двигателем на Ардуино
Коллекторный моторчик может быть рассчитан на разное напряжения питания. Если двигатель работает от 3-5 Вольт, то можно моторчик подключать напрямую к плате Ардуино. Моторы для машинки с блютуз управлением, которые идут в комплекте с редукторами и колесами рассчитаны уже на 6 Вольт и более, поэтому ими следует управлять через полевой (биполярный) транзистор или через драйвер L298N.
На схеме показано устройство моторчика постоянного тока и принцип его работы. Как видите, для того, чтобы ротор двигателя начал крутиться к нему необходимо подключить питание. При смене полярности питания, ротор начнет крутиться в обратную сторону. Драйвер двигателей L298N позволяет инвертировать направление вращения мотора fa 130, поэтому его удобнее использовать в своих проектах.
Как подключить моторчик к Arduino
Для занятия нам понадобятся следующие детали:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- мотор постоянного тока (Motor DC);
- транзистор полевой/биполярный;
- драйвер двигателей L298N;
- провода «папа-папа», «папа-мама».
Перед выбором способа управления двигателем от Arduino Uno r3 , уточните на какое напряжение рассчитан ваш моторчик. Если питание требуется более 5 Вольт, то следует использовать транзистор или драйвер. Распиновка транзисторов может отличаться от приведенного примера (следует уточнить распиновку для своего типа). Драйвер L298N позволит не только включать мотор, но и изменять направление вращения.
Скетч. Подключение мотора напрямую
Подключение мотора к Ардуино напрямую — самый простой вариант включения вентилятора на Arduino или машинки. Команда для включения двигателя не отличается, от команды при подключении светодиода к микроконтроллеру. Функция digitalWrite включает/выключает подачу напряжения на цифровой порт, к которому подключен двигатель постоянного тока. Соберите схему и загрузите программу.
void setup () { pinMode (12, OUTPUT ); // объявляем пин 12 как выход } void loop () { digitalWrite (12, HIGH ); // включаем мотор delay (1000); // ждем 1 секунду digitalWrite (12, LOW ); // выключаем моторПояснения к коду:
- для подключения мотора без драйвера можно использовать любой порт;
- если двигатель не включается, то, возможно, не хватает силы тока на цифровом выходе, подключите двигатель через транзистор к порту 3,3V или 5V.
Скетч. Подключение мотора через транзистор
Подключение мотора через транзистор к Ардуино потребуется, если двигатель никак не хочет включаться от платы напрямую, то следует использовать порт 5 Вольт на микроконтроллере или внешний источник питания. Транзистор будет играть роль ключа, замыкая/размыкая электрическую цепь. Сам транзистор управляется цифровым портом. Соберите схему, как на картинке и загрузите программу.
Подключение FA-130 мотора постоянного тока — Motor DC Arduino void setup () { pinMode (13, OUTPUT ); // объявляем пин 13 как выход } void loop () { digitalWrite (13, HIGH ); // включаем мотор delay (1000); // ждем 1 секунду digitalWrite (13, LOW ); // выключаем мотор delay (1000); // ждем 1 секунду }Пояснения к коду:
- при необходимости можно подключить два мотора FA-130 к Ардуино;
- в зависимости от характеристик, двигатель подключается к 3,3 или 5 Вольтам.
Скетч. Подключение мотора через драйвер
Подключение мотора к Ардуино через драйвер L298N или Motor Shield L293D позволит менять направление вращения ротора. Но для использования данных модулей потребуется установить соответствующие библиотеки для Ардуино . В примере мы использовали схему подключения двигателя с помощью модуля L298N. Соберите схему, как на картинке ниже и загрузите следующий скетч с использованием.
// задаем имена для портов #define IN1 3; #define IN2 4; #define IN3 5; #define IN4 6; void setup () { pinMode (IN1, OUTPUT ); pinMode (IN2, OUTPUT ); pinMode (IN3, OUTPUT ); pinMode (IN4, OUTPUT ); } void loop () { // вращаем моторчики в одну сторону digitalWrite (IN3, HIGH ); digitalWrite (IN4, LOW ); digitalWrite (IN5, HIGH ); digitalWrite (IN6, LOW ); delay (2000); // ждем 2 секунды digitalWrite (IN3, LOW ); digitalWrite (IN4, LOW ); digitalWrite (IN5, LOW ); digitalWrite (IN6, LOW ); delay (1000); // выключаем на 1 секунду // вращаем моторчики в обратную сторону digitalWrite (IN3, LOW ); digitalWrite (IN4, HIGH ); digitalWrite (IN5, LOW ); digitalWrite (IN6, HIGH ); delay (2000); // ждем 2 секунды digitalWrite (IN3, LOW ); digitalWrite (IN4, LOW ); digitalWrite (IN5, LOW ); digitalWrite (IN6, LOW ); delay (1000); // выключаем на 1 секунду }Пояснения к коду:
- драйвер двигателей позволяет управлять скоростью и направлением вращения мотора, подробнее читайте в обзоре — Подключение драйвера L298N к Arduino;
- если моторчики не крутятся, подключите к драйверу источник питания 6-12В.
Температура
и давление окружающего воздуха оказывают большое влияние на самочувствие
человека. Их важно знать и в походе, и на даче, и дома. Предлагаемый компактный
прибор как нельзя лучше подходит для этого. Его можно использовать также для
приблизительной оценки высоты, например, при подъеме в горы. Уменьшение
давления на 1 мм ртутного столба соответствует увеличению высоты над уровнем
моря приблизительно на 10 м.
Пределы
измерения и погрешность прибора
определяются в основном примененными в нем датчиками температура -55…+125
°С, атмосферное давление 225. 825 мм ртутного столба Прибор питается
напряжением 9 В от гальванической батареи типа “Крона” или сетевого
адаптера Потребляемый ток - 30 мА (при выключенной подсветке ЖКИ). Размеры
корпуса - 118×72 28 мм. Работа прибора была проверена при температуре от -5 до
+25 С Погрешность измерения давления не превысила 4 мм ртутного столба Схема
прибора изображена на рис. 1 причем собранный на отдельной плате модуль
измерения давления выделен штрихпунктирной линией.
Необходимые
для работы датчика тактовые импульсы частотой 32768 Гц вырабатывает кварцевый
генератор на элементах микросхемы DD1 В принципе, эти импульсы мог бы
формировать и микроконтроллер DD2 с помощью одного из имеющихся в нем таймеров
Но это потребовало бы усложнения программы.
Напряжение
3,6 В для питания датчика В1 и микросхемы DD1 получено с помощью стабилитрона VD1
Резисторы R1 -R3 - нагрузочные для линий связывающего датчик с микроконтроллером
интерфейса 1С и сигнала XCLR Печатная плата модуля измерения давления показана
на рис. 2
Хотя
датчик HP03SB содержит и встроенный измеритель температуры, его показания
используются программой микроконтроллера DD2 только для уточнения результатов
измерения давления. На ЖКИ HG1 вместе со значением давления выводятся
показания другого датчика температуры - DS1624 (В2) Причина этого проста - он
точнее При необходимости датчик В2 можно сделать выносным и расположить там где
температура представляет наибольший интерес. При установке в корпусе прибора
этот датчик следует вынести на боковую стенку, сделав в ней окно по его
размерам Иначе неизбежна ошибка на 1,5 ..1,8 ‘С, в чем я убедился на практике
Напряжение питания +5 В стабилизировано микросхемой DA1 Подстроеч ным
резистором R8 устанавливают наилучшую контрастность изображения на ЖКИ Кнопкой
SB1 включают подсветку его табло. Остальные элементы необходимы для работы
микроконтроллера Элементы R7 R9 СЮ VD2 - цепь установки микроконтроллера в
исходное состояние Кварцевый резонатор ZQ2 с конденсаторами С11.С12 - частотозадающая
цепь тактового генератора мик роконтроллера.
На
рис. 3 представлен чертеж основной печатной платы прибора а на рис. 4 -
расположения деталей на ней В переходное отверстие показанное залитыми (плата
на рис. 2), необходимо вставить и пропаять с двух сторон проволочную
перемычку. Для микроконтроллера DD1 должна быть предусмотрена панель, так как
в процессе налаживания прибора эту микросхему придется извлекать и вновь
устанавливать.
Остановимся
на некоторых особенностях датчика HP03SB. общий вид и габаритные размеры
показаны на рис. 5 Для определения давления необходимо предварительно прочитать
из памяти установленного в приборе экземпляра этого датчика двухбайтные
значения коэффициентов С,-С- и однобайтные значения параметров A-D. Все они индивидуальны
для данного экземпляра.
Результаты
измерения представляют собой два двухбайтных числа- D1 - давление D2 -
температура. Прочитав их из памяти
датчика программа должна вычислить вспомогательные значения
Более
подробные сведения о датчике HP03SB имеются в . Однако необходимо отметить
что там указаны неверно адреса внутренней памяти датчика, по которым хранятся
его индивидуальные константы. Следует пользоваться теми адресами что приведены
в В приборе можно применить и другие датчики серии НРОЗ Некоторые из них
имеют меньшую точность, другие отличаются конструктивным оформлением.
Работа
программы начинается с инициализации портов микроконтроллера и ЖКИ Успешную
инициализацию подтверждает вывод на табло надписи “TER- MOBAR” (буква
Н пропущена). Затем инициализируется датчик давления, счи состояние регистра
статуса модуля TW1 микроконтроллера не проверяется.
Для
чтения коэффициентов и параметров датчика предназначена специальная программа
ReadCC, которую необходимо загрузить в программную память микроконтроллера полностью собранного
прибора (с подключенным модулем измерения давления), включить его и через
несколько секунд выключить. После этого нужно извлечь микроконтроллер и с
помощью программатора прочитать содержимое его EEPROM. В нем по адресам,
указанным в табл. 1, находятся значения индивидуальных коэффициентов и параметров
датчика. Далее необходимо открыть файл рабочей программы барометра-термометра
BARO-2 asm, найти в нем фрагмент, приведенный в табл. 2, и исправить значения
объявленных там констант в соответствии с прочитанными из EEPROM Параметр D
в программе не используется
Теперь
программа готова к работе с установленным в прибор экземпляром датчика
Остается оттранслировать ее с помощью AVR Studio и загрузить полученный НЕХ- файл
в микроконтроллер Учтите, что аналогичный файл, приложенный к статье, рассчитан
на работу с датчиком, имевшимся у автора Если загрузить его в микроконтроллер
прибор с другим экземпляром датчика давления будет работать но давать неточные
показания
В
разработке использованы фрагменты программ из и . Подпрограммы преобразования
чисел из шестнадцатеричного формата в двоично-десятичный переработаны с
учетом разрядности чисел. Подпрограммы перемножения и деления двухбайтных
чисел, предназначенные для микроконтроллеров семейства MCS-51, переведены на
язык ассемблера AVRASM Меньше всего подверглась изменениям подпрограмма
управления ЖКИ, учтены лишь особенности индикатора MT-10S1 а для ввода и вывода
сигналов использованы другие порты микроконтроллера.
Схема барометра для измерения атмосферного давления построена с использованием датчика давления MPXHG6115. Сам датчик обеспечивает на его выходе напряжение, пропорциональное давлению воздуха. Рабочий диапазон перекрывает атмосферное давление (90 - 110 кПа) на уровне моря. Минимальное рабочее давление воздуха датчика 15 кПа, что позволяет использовать его даже в горной области. Для этого, правда, нужно пересчитать резисторы на его плате. Для атмосферного давления в районе недалеко от уровня моря диапазон выходных напряжений датчика составляет 3.625 - 4.55 вольт. В аналоговой части схемы (затененная на схеме) на выходе формируется линейное напряжение диапазона 0 - 5 В, которое находится в нормальном диапазоне микроконтроллерного АЦП. Сопоставление выполняется с помощью двух ОУ. Левая (на схеме) обеспечивает оптимальное сопротивление нагрузки для датчика (51 кОм) и инвертирует опорноео напряжение около 2.5 В. Опорное напряжение получается с помощью делителя напряжения, состоящего из двух резисторов 11.5 к (точность 1%). Правая ОУ обеспечивает необходимое масштабирование напряжения и начальную установку в 0. Рекомендуем использовать сдвоенный OPA2374.
Технические характеристики
- Диапазон измерений: 700 - 800 мм Рт.ст
- Напряжение питания: 5 вольт
- Ток потребления: 40 мА
Датчик масштабирования и аналоговый усилитель собран на небольшой печатной плате. Он подключается к основной плате с помощью 3-х проводов. Тест схема состоит из микроконтроллера и ЖК-модуль с интерфейсом, смонтированный на ее задней стороне. Интерфейсная карта устанавливает все связи с PIC, используя только два провода и его программное обеспечение реализует упрощенную версию стандартного интерфейса I2C. Программа контроллера PIC16F84 присваивает ее ввод пин-RC3 на вход АЦП. Он просто вычисляет давление в зависимости от входного напряжения в соответствии с формулой, преобразует его в двоично-десятичный код и выдает на экран.
Кто выиграл тендер
Победителем тендера стал разработчик программного обеспечения «Программный продукт». Цена контракта составила 670 млн руб. Срок исполнения — 910 календарных дней с даты заключения контракта.
«Вопрос зонирования — это вопрос тарифов. Тарифы и правила пересадок определяются структурами дептранса Москвы, наша задача в рамках контракта — поддержать эти правила технологически», — рассказал РБК Дмитрий Чурсин, исполнительный директор «Программного продукта».
Чурсин не пояснил, как именно может контролироваться пересечение пассажирами определенных зон. «В перспективе трех лет в этой системе могут появиться новые виды билетных носителей и устройств пассажирской автоматики для бесконтактных способов валидации билетов», — сказал он.
Как рассказала РБК Татьяна Семенова, гендиректор ООО «МСП» (совместное предприятие производителя микроэлектроники «Микрон» и Московского метрополитена, отвечает за развитие транспортных проектов), одна из задач в рамках развития инфраструктуры «умного» города — оптимизация транспортных расходов пассажиров в зависимости от продолжительности, регулярности и времени поездок, а также обеспечение возможности использования проездных билетов в соседних регионах.
С 2013 года «Микрон» является производителем и поставщиком пластиковых бесконтактных смарт-карт для оплаты проезда «Тройка». По словам Семеновой, ООО «МСП» готово выпустить новый микроконтроллер (находится внутри билета), который сможет обеспечить функции новой билетной системы. «Первая модификация нового чипа с поддержкой открытых мировых протоколов будет завершена через год. Следующий шаг — разработка второй модификации, которая будет поддерживать криптографию по отечественному ГОСТу», — отметила она, добавив, что российских моделей такого чипа на данный момент нет.
Как изменится билетная система Москвы
В ноябре 2018 года пресс-служба Московского метрополитена о разработке новой билетной системы. В сообщении отмечалось, что карту «Тройка» персонализируют, а также будет проведена интеграция с билетными системами других регионов. Новая билетная система сможет обрабатывать более 6 млрд транзакций в год. Однако о введении зоновой оплаты проезда в сообщении не упоминалось.
Согласно техническому заданию метрополитена, новая билетная система должна объединить перевозчиков и городские сервисы, действующие на территории Москвы и Новой Москвы. На ее базе должны быть организованы единая эмиссия билетов и управление единым городским транспортом через приложение «Тройка», через интеграцию с другими операторами перевозок. К этой системе также будет подключена возможность оплаты популярных городских сервисов (каршеринг, велопрокат), билетов в кино, театр, выставочные залы. Предполагается динамическое многоступенчатое определение стоимости проезда, которая будет зависеть, например, от времени суток, зональности, количества пересадок и используемых видов транспорта.
Кроме того, система позволит управлять пассажиропотоками, предлагая новые продукты, программы лояльности. В нее будет заложена возможность тиражирования предложенных решений в других регионах. По оценкам, данным в техническом задании метрополитена, средний ежедневный пассажиропоток, обрабатываемый новой билетной системой, должен составить не менее 16 млн пассажиров в день. В среднесрочной перспективе он может увеличиться до 24 млн.
Когда возникла идея оплаты по зонам
О необходимости внедрения зоновой оплаты проезда представители Московского метрополитена заявляли несколько лет назад. В частности, в 2009 году экс-глава столичной подземки Дмитрий Гаев говорил, что тарифные зоны — это будущее метрополитена. По его словам, внедрение такой системы оплаты будет возможно только после завершения строительства третьего пересадочного контура, когда у пассажиров появятся варианты альтернативных маршрутов. По действующему плану оно должно завершиться в 2020 году.
Зональная тарификация в метро применяется во многих мегаполисах, например в Париже, Барселоне, Лондоне. Чем дальше станция располагается от центра, тем дороже проезд. К примеру, в Шанхае стоимость зависит от дальности поездки: за первые 6 км пассажир платит 3 юаня (около 29 руб.), а за каждые следующие 10 км — по 1 юаню (9,7 руб.). При этом на одной из веток, которая идет в развивающийся район города, проезд стоит 2 юаня (19,46 руб.).
Фото: Евгений Разумный / Ведомости / ТАСС
Что это даст метрополитену
По мнению гендиректора «INFOLine Аналитики» Михаила Бурмистрова, необходимость разделения Московского метрополитена на тарифные зоны назрела. «Метро активно расширяется, уходя все дальше в область и Новую Москву. В планах — продление веток до аэропортов. В этих условиях перераспределение тарифной нагрузки на пассажиров вполне логично», — сказал аналитик.
По данным СПАРК, в 2017 году (последний доступный период) убыток Московского метрополитена составил 2,9 млрд руб., а выручка от продаж — 108,27 млрд руб. Тарифное зонирование позволит подземке увеличить доход за счет роста платы за проезд для жителей удаленных станций, отметил Бурмистров. Однако оценить, насколько может увеличиться доход, пока не определены тарифная политика и принципы зонирования, невозможно.
Бурмистров отметил, что на внедрение новой тарифной системы потребуется несколько лет. «Скорее всего, начнут с тестовых зон. Не исключаю, что в будущем эту же систему применят в метрополитене Санкт-Петербурга. В других российских городах подземка не столь разветвленная и смысла в тарифных зонах просто нет», — заключил Бурмистров.
По словам заместителя директора Аналитического кредитного рейтингового агентства (АКРА) Александра Гущина, зоновая система оплаты может повысить выручку перевозчика за счет перераспределения тарифной нагрузки на пассажиров. «Повышение стоимости проездных билетов — это всегда очень чувствительная тема для населения. Но когда у перевозчика есть механизм точечной настройки тарифов, это повышение будет не так заметно. Поэтому, если систему зонирования все-таки внедрят и она приживется, то при правильной настройке тарифов это способно позитивно отразиться на доходах метрополитена. Конечно, эффект будет виден не сразу», — заключил аналитик.
Что будет со старыми способами оплаты
В пресс-службе Московского метрополитена заявили, что проведенный тендер предполагает создание системы с поддержкой оплаты и контроля проезда на общественном транспорте Москвы, а также персонификацию карты «Тройка». «Поскольку система рассчитана на использование на разных видах общественного транспорта, то в техническом задании предусмотрены разные виды контроля билетов — как на входе, так и на выходе», — говорится в ответе пресс-службы на запрос РБК. В метрополитене отметили, что в Москве уже применяются зональные тарифы. В столице действуют две тарифные зоны для наземного городского пассажирского транспорта: зона А (Москва в пределах МКАД и Новомосковский административный округ) и зона Б (Троицкий административный округ).
«Поэтапное внедрение новой билетной системы начнется с 2020 года. Она будет поддерживать все имеющиеся сейчас технические решения в системах оплаты и контроля проезда, поэтому ее внедрение произойдет практически незаметно для пассажиров. Такая логика «бесшовного» перехода на новую систему заложена в качестве одного из ключевых требований», — сообщили в Московском метрополитене. Перед реализацией проекта анализировался в том числе опыт Токио, Сингапура, Лондона, Нью-Йорка и других мегаполисов с развитыми транспортными системами, отметили в пресс-службе столичной подземки.