Вибір мікроконтролера для проекту збору даних від акумулятора


18

Я планую виміряти рівень води в свердловині, яка становить близько 10 м глибиною з максимальним рівнем води до 5 м. Мій план полягає у використанні ультразвукового датчика HC SR04 для вимірювання глибини, передачі його через ZigBee до Raspberry Pi всередині мого будинку.

Як обговорювалось у попередньому запитанні, мені потрібно вибрати мікроконтролер, щоб з'єднати ультразвуковий датчик та модуль ZigBee разом.

Параметри для вибору:

  1. Мала потужність: я планую запустити це на акумуляторі, тому низьке споживання енергії є пріоритетом. На сьогоднішній день я не маю жодної цілі для споживання енергії або днів між змінами батареї або навіть, яку батарею використовувати. Оскільки це більше навчальний проект, і це в моєму будинку, я гнучка, але краще енергоспоживання краще.

  2. Низька вартість: Це навчальний проект для мене, і я не хочу витрачати на це обурливу суму грошей, тому нижча вартість - краща.

  3. Робота всередині колодязя: Весь проект буде працювати зсередини свердловини і буде піддаватися різкому сонячному промінчику та дощу. Я забезпечу хороший випадок і захист.

  4. Легко програмувати.

Я вибрав ZigBee як простий, відповідає моєму використанню та низькій потужності. Але моя вимога - транспортувати дані датчика, і я відкритий для інших перевезень. Відстань від моєї криниці до Raspberry Pi становить близько 6 метрів зі стіною посередині. Я планую вимірювати глибину води кожні 10 хвилин та двічі на хвилину, коли працює насос для води (приблизно 20 хвилин щодня).


2
Це відчувається досить широко, або, можливо, поза темою. Будь-який невеликий MCU на дошці підійде. Якщо ви не визначилися зі Zigbee, я б запропонував переглянути мікро-біт BBC: біт, який має BLE на борту, і роз'єм для акумулятора.
Шон Хуліхане

2
Якщо ви хочете радіо-зигбі, вам слід хоча б оцінити частини, які поєднують його з процесором MCU (як правило, ARM Cortex-M). Це не означає, що вам потрібно пройти цей маршрут, але якщо ви вирішите його не зробити, це має бути вагома причина.
Кріс Страттон

2
Що ви маєте на увазі під «всередині колодязя»? Чи буде справа під водою? Не чекайте будь-якої передачі чи прийому від модулів Xbee під водою. Багато хто працює в діапазоні 2,4 ГГц, який добре поглинається водою; інші працюють близько 900 МГц, які, ймовірно, також не можуть добре проникати у воду. Якщо корпус не під водою, 6 м + стіна повинна бути добре з ксебелями.
Йонас Шефер

"всередині колодязя" означає, що пристрій буде розміщений всередині свердловини, але над водою.
Радж

Відповіді:


20

Загальний процес вибору мікроконтролера.

  1. Підсумуйте свої вимоги до мікроконтролера. Наприклад у цьому випадку:

    • 1 апаратний таймер для вимірювання часу між тригерними та ехо-імпульсами.
    • 2 штифти GPIO для інтерфейсу датчиків Echo і Trigger.
    • Можливо UART для інтерфейсу модуля зв'язку RF.
    • 1 вхід АЦП для контролю напруги акумулятора.


    Для цього можна отримати 8-контактний контролер, що може вимагати використання штифтів програміста і для загальних цілей.

  2. Визначте необхідні вимоги до продуктивності процесора та пам'яті . Чи достатньо використовувати 8-бітний MCU або вам потрібен 32-розрядний? Яких частот тактової частоти процесора прийнятні десятки МГц або 1 МГц? Скільки потрібно пам'яті програми, оперативної пам’яті та ПЗУ?

    Враховуючи описане додаток, вам не потрібні високі показники обчислень. Ймовірно, 8-бітовий контролер буде достатньо (хоча це не буде набагато дешевше 32-розрядного, так що ви можете визначитися тут за ціною).

  3. Мала потужність . Якщо це не важливо, ви, ймовірно, можете уживатися майже з будь-яким типом контролера, використовуючи режим низької потужності з найнижчою напругою живлення та тактовою частотою системи. Якщо це важливіше, ви можете почати звужувати список пошуку, починаючи з виділених MCU ядер малої потужності, таких як (ядра ARM® Cortex®-M0 або M0 + CPU). Зазвичай дані таблиці містять таблиці для більшості режимів низької потужності / частоти VCC / SysClk , більш кращі будуть також перелічувати споживання кожної периферії.

  4. Інструменти для розробників . Я вважаю це дуже важливим аспектом. Виділені інструменти програмного забезпечення апаратних засобів можуть коштувати цілих статків, тому зазвичай я дотримуюся MCU, у яких я вже мав програмістів. Коли ви переходите на іншу родину чи бренд, добре інвестувати в плату розвитку, яка має вбудований програміст, який згодом може бути використаний для програмування ваших користувальницьких плат. Загалом завжди спочатку перевіряйте, скільки коштуватиме можливість завантаження програм на мікроконтролер.

Як зазначає @Sean у коментарях, можливим та економічно ефективним рішенням було б пошук таких модулів РФ, які поставляються з інтегрованим програмованим додатком MCU, який може запускати вашу прошивку під час роботи з частиною зв'язку РФ. Такі модулі існують для BLE, WiFi та ZigBee і, можливо, для багатьох інших технологій.

Крім того про те, як будь-який MCU виживе в свердловині. Це все знизиться на корпусі, який ви надасте для пристрою. Наприклад, не має великого значення, який MCU ви виберете, якщо корпус не є 100% водостійким.


TL; DR; Тут представлена ​​конкретна частина продукту.

  1. Ви можете вибрати ATtiny25, який коштує 0,87 $ / 1 штука на Farnell. 8-бітний, 8-контактний, тому не буде займати багато місця. У режимі відключення живлення він споживає 0,2 мкА при відключеному сторожовому дозі при 3 В. 2-4 мкА, якщо сторожовий собака включена. Він сумісний з Arduino, тому програмування не обійдеться вам дорого (програміст USBasp або AVRdude коштує близько 2 доларів на eBay). ( Зверніть увагу, що : ви повинні використовувати послідовну бібліотеку програмного забезпечення Arduino для інтерфейсу модуля зв'язку RF, оскільки цей MCU має лише апаратне забезпечення SPI.) Загалом, він невеликий, дешевий, з відносно низьким енергоспоживанням, але UART може трохи розбиватися. це все ж ускладнює . Він має 2 кБ програмної пам'яті, якої вам повинно вистачити.

  2. Або перейдіть з ARM Cortex M0, який споживає 2 мкА в режимі очікування та 5 мкА в режимі зупинки. Такий MCU є, наприклад, STM32F030F4, який коштує 1,09 $ / 1 штука . Це більш потужний 32-розрядний контролер з максимальною тактовою частотою 48 МГц, але як ви бачите лише за + 0,2 $. Він поставляється з програмною пам'яттю 16 кБ, що набагато більше, ніж для цього простого завдання. Він має SPI, UART, I2C та багато інших периферійних пристроїв. Програмування його обійдеться дорожче, присвячений програміст коштує 20 доларів у Farnell. На мою думку, не варто. Натомість ви можете інвестувати в плату розвитку для сім'ї F0, яка має вбудований програміст (ST-LINK) . STM32F0Доставка виявлення коштує ~ 10 $. Ви можете почати прототипувати цю плату і використовувати її як програміст пізніше.


3
Зауважте, що ST-LINKs відкриття та ядерних дощок часто можна використовувати для інших MCU, ніж ті, що знаходяться на самій платі. Не впевнений у тій конкретній дошці, але за зовнішнім виглядом на ній використовується SWD і її можна від'єднати за допомогою перемичок праворуч. Хороша річ у тому, що ST-LINK - це не лише програмісти, але і налагоджувачі , які значно полегшують розвиток .
Йонас Шефер

3
Крім того, якщо вам не байдужі відповіді від XBEE, ви можете використовувати Універсальний послідовний інтерфейс ATtiny, щоб отримати UART, який швидше, ніж розрядна реалізація програмного забезпечення.
Йонас Шефер

3
Варто зазначити, що радіомодулі часто постачаються з не виділеним ресурсом MCU (а модулі існують для спрощення відповідності типу). Процесор зазвичай ділиться з RF стеком, тому вам потрібно приймати періодичні переривання тощо.
Шон Хуліхан

3
ULPBENCH - це хороший ресурс, коли важлива робота з низьким енергоспоживанням (акумулятор).
неонезон

5

Дивлячись на простоту програмування та низьку вартість, я, мабуть, почав би з якогось модуля Arduino (або недорогого клону). Код для ультразвукового датчика вже існує, як і приклад коду для ZigBee, наприклад, використовуючи модулі Digi XBee. На останньому ви підключаєте XBee до послідовного порту, і після встановлення з'єднання з поважним старим інтерфейсом команд "AT" у вас є точковий канал, по якому ви можете відправляти будь-який текст вниз (на ваш Raspberry Pi ). ZigBee - це не найдешевший тип комунікацій на дальньому відстані, але модулі XBee в реальному виразі впали в ціні за останні 5 років.

Я знаю, що у деяких людей виникає проблема з мовою, що базується на C / C ++, що використовується на Arduino, але в цьому випадку ви б значною мірою об'єднали вже наявні сценарії від інших користувачів.

Якщо ви перебуваєте в Google для "режиму сну Ардуїно", ви знайдете приклади того, як ви можете перевести Arduino в режим низької енергії та пробуджуватися спорадично, щоб прочитати, повідомити його, а потім знову перейти у сплячий режим.


1
Хоча гарне управління потужністю можливо за допомогою мікросхеми ATmega, типова плата Arduino має паразитичні розряди електроенергії, що різко обмежить час роботи акумулятора.
Кріс Страттон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.