Обзор моей первой печатной платы для робота управления поливом.

Я строю небольшой регулятор полива для одного из моих больших комнатных растений.

Это мой первый настоящий проект по электронике вне школы. Хотя я изучал EE в университете и занимался базовой теорией компонентов и фильтров; Я изучал почти исключительно цифровую электронику. Так что дизайн печатной платы и схемы смешанных сигналов для меня в новинку.

Характеристики:

  • Может управлять водяным насосом 12 В до 5 А,
  • Имеет датчик уровня воды в резервуаре для предотвращения работы насоса всухую.
  • Может считывать влажность почвы из горшка.
  • Может считывать температуру почвы с горшка.
  • Автоматически и мгновенно остановит насос, если кастрюля переполнится водой.
  • Один разъем питания.
  • Расширяемый.
  • Легко программируется.
  • UART для получения данных.

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

Насос будет управляться реле 5 В с сопротивлением катушки 125 Ом (40 мА, 200 мВт). Датчик уровня воды представляет собой плавающее кольцо, которое приводит в действие микропереключатель, когда уровень становится слишком низким. Микропереключатель нормально разомкнут и при замыкании замыкается на землю. Внутренняя подтяжка вывода INT1 будет поддерживать высокий уровень сигнала, когда переключатель разомкнут. Обработчик IRQ для INT1 выполнит устранение дребезга.

У меня есть два основных разъема: P2, который идет к горшку и содержит датчики перелива, температуры и влажности, и P1, который идет к насосу и имеет датчик уровня воды.

Схема цепи:

Схема

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

Я попытался оценить потребляемую мощность от регулятора, и я должен быть в пределах допусков, чтобы не нуждаться в радиаторе даже при максимальной тяге. Однако, как правило, микроконтроллер прощупывает почву и, если она слишком сухая (каждые 4-5 дней), поливает ее. Затем он вернется в спящий режим на 4 часа. Таким образом, время включения действительно короткое, около 20 секунд, когда он фактически запускает помпу, по сравнению с 4 часами сна.

MIC94090 ( техническое описание ) представляет собой переключатель нагрузки с высокой боковой нагрузкой с максимальным непрерывным током 1,2 А. Нужен ли мне диод свободного хода с этой микросхемой?

Должен ли я добавить маленькую заглавную букву от LEVEL_ALERTдо GND? Я не уверен насчет D2, нужен ли он мне? Это вредно?

C1 добавлен, потому что меня беспокоит падение напряжения при включении насоса. Я не уверен, как рассчитать падение, или если это вообще что-то, поэтому я был бы признателен за некоторые рекомендации по этому поводу. D1 — это изолирующий диод, который пытается предотвратить падение напряжения (если оно есть) на стабилизаторе.

Я считаю, что внутреннего RC-генератора, разделенного до 1 МГц, будет достаточно для моего приложения. 10 минут в ту или иную сторону не убьют растение.

Микро будет запускать PID для управления продолжительностью работы насоса в зависимости от того, как часто он должен поливать. Он также будет выполнять запись низкочастотных данных в EEPROM, которые можно прочитать с UART. Я посчитаю, чтобы не превысить количество циклов записи в своей жизни.

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

Разводка печатной платы

Я размещу это на двухсторонней печатной плате с медным слоем 1 унция / фут (35 мкм). Я нацелился на SeeedStudio для производства моей печатной платы, поэтому я использую правило 6/6 и заплачу за паяльную маску 0,12 мм.

Меня беспокоит пайка микроконтроллера, судя по его внешнему виду, даже у маски для припоя толщиной 0,12 мм практически не будет маски между контактными площадками. Будет ли это проблемой?

Я нашел так много разной информации о том, как компоновать печатную плату со смешанными сигналами, звездообразное заземление, заземляющую плоскость, разделенную заземляющую плоскость, и, по правде говоря, я до сих пор не уверен, какой способ лучше. Основываясь на документах, которые я нашел, я выбрал твердую заземляющую пластину и разделил маршрутизацию аналоговых и цифровых сигналов. Является ли это предпочтительным подходом?

Хотя аналоговая производительность важна, скорость не так важна, поэтому я могу использовать длительное время выборки для борьбы с шумом. Я также использую «режим с низким уровнем шума» на ATmega, когда я переводю микро в режим энергосбережения во время преобразования АЦП, что в основном останавливает все, кроме часов АЦП и таймера 2, которые являются моими «настенными» часами. Таким образом, аналоговые и цифровые сигналы программно исключают друг друга.

Я изо всех сил старался избегать токовых петель, но должен сказать, что не совсем уверен, как «видеть» токовые петли и что представляет собой «патч-антенна», о которой я видел несколько раз.

На плате 3 секции, слева "высокая мощность", реле и разъем насоса, возможно, до 5А при индуктивной нагрузке. Средний — питание 5 В и цифровой, а правый — аналоговый. Обратите внимание, что цифровые провода находятся на аналоговой стороне, но программно они молчат, когда АЦП измеряет.

Печатная плата будет помещена в напечатанный на 3D-принтере корпус и прикреплена к боковой части ящика для сеялки так, чтобы P2 (с зондами, уходящим в почву) был направлен вверх, а P1 (насос и уровень воды) — вниз.

Передняя печатная плата

Верхняя часть печатной платы

Задняя часть печатной платы

Нижняя часть печатной платы

Меня беспокоит маршрутизация ~LEVEL_ALERTсигнала, я не мог организовать схему, при которой я мог бы получить достойную маршрутизацию для него. Я также обеспокоен тем, что возможный большой ток в проводах 3 и 4 P1 может индуцировать ток в ~LEVEL_ALERTпроводе, идущем параллельно им, что ошибочно приводит к остановке насоса микроконтроллером.

Я старался изо всех сил, чтобы сделать достойную работу как над схематическим дизайном, так и над компоновкой. Ребята, вы верите, что это сработает так, как задумано?

Немного выставляю свою шею, но поскольку никто еще не оступился, мне интересно, не слишком ли ты волнуешься. Ничто здесь не работает с особенно высокой скоростью и близко к краю дизайна, и я склонен думать, что это будет нормально работать на небольшом кусочке картона для прототипа.
@IanBland Возможно, ты прав. Но я хочу избежать вредных привычек с самого начала, поэтому я хочу делать все «правильно» :)
О, абсолютно, я просто имел в виду, что у вас, вероятно, не будет особых проблем, поскольку вы не перебрасываете гигабиты данных :)
Никаких стопоров, которые я вижу, но два незначительных момента: 1) Установите резисторы светодиода на ~ 5 мА, разница между этим и 20 мА едва заметна, и максимальный ток падает с температурой, если он сидит на солнце (как растения часто это делают) тогда они могут сильно нагреться и не справиться с максимальным током. 2) (это очень основано на мнении) С точки зрения стиля в схеме отсутствует какой-либо реальный поток, чтобы понять, как все связано, вам нужно искать имена сигналов. Именованные сигналы имеют свое место, но там, где это практично, без излишнего беспорядка, соединяйте части напрямую.
@Эндрю, спасибо, схема прошла много итераций, и мне было проще перемещать метки, чем перемонтировать каждый раз, когда я что-то меняю.

Ответы (1)

Кажется, вы далеко ушли от своих первых мыслей об этом проекте.

Вы приложили огромные усилия, и я не вижу причин, по которым это не сработает. Но у меня есть некоторые комментарии:

  1. Вы выбрали Atmeg168-20AU, но, похоже, используете внутренние часы RC с внешним ICSP для программирования. Зачем вам использовать микро за 3 доллара, когда вы можете купить целую плату ( Arduino Nano ) со встроенной поддержкой загрузчика и ICSP. (контроллер с низким энергопотреблением, больше флэш-памяти, больше ОЗУ, регулятор мощности, последовательный интерфейс USB, светодиоды и переключатель сброса) решение примерно за 3 доллара на Ebay. Вам не нужно использовать среду Arduino для его программирования, вы можете перезаписать загрузчик, так что никаких недостатков не будет. Тогда сложность печатной платы будет значительно уменьшена без потери функциональности или выбора для проекта.

  2. Ваши сигналы Level Alarm и Moist представляют собой необработанные контакты ввода-вывода, снятые с платы. Я всегда против переноса незащищенных контактов ввода-вывода с платы в проводку, всегда есть риск, что короткое замыкание может вывести из строя вашу структуру ввода-вывода или контроллер. В этом случае ваш разъем имеет как необработанный вывод ввода-вывода, так и 12 В для сигнализации уровня.

  3. D3 не обязательно должен быть Шоттки. D2 не является насосом Шоттки и, по всей вероятности, вообще не требуется (при условии, что ваш насос относится к погружному типу BLDC).

Возможно, использование Arduino лишило бы его удовольствия, поскольку Эмили явно хочет спроектировать и построить этот проект и извлечь из него уроки. Для любителя/ученика существует грань между «изобретать велосипед» и «просто пойти и купить», и для всех она где-то разная. Использование «сырого» микроконтроллера одновременно познавательно и весело. И если вам, как и мне, нравится быть ближе к металлу, это больше похоже на инженерию, чем на готовое решение. Я полностью согласен с незащищенным вводом-выводом. Всегда должна быть какая-то буферизация, даже если просто резистор.
@IanBland при деньгах. Для меня это отдых и обучение, у меня уже есть плата Arduino Uno и релейные модули на 250 В переменного тока для нее. Я могу все это подключить и запустить, но я делаю это не для этого. :) Nr2 - очень хороший момент, я об этом не подумал. Как вы думаете, внутренних диодов ESD avr будет достаточно, чтобы справиться с коротким замыканием? Или я должен добавить Schottky к Vcc? Под резистором вы имеете в виду токоограничивающий резистор, например, сто Ом или что-то в этом роде?
Это, и я возьму любой повод, чтобы достать свой паяльник :)
Лично мне не нравится, что все, что находится рядом с внешним миром, должно справиться с коротким замыканием. Особенно, когда рядом вода. Простой резистор уменьшит ток короткого замыкания, и вы можете использовать высокое значение, если ваш вход буферизован. 100R при 12В это 120мА и 1,44Вт на резисторе...
Поскольку цифровые входные контакты, по сути, представляют собой несколько входов CMOS, последовательный резистор может быть довольно высоким ... 10 кОм или более. Аналоговые входы могут выиграть от защищенных буферов. Цифровые выходы, как правило, более выносливы, хотя рекомендуется потреблять только ток IMO. Я понимаю склонность операторов к обучению, однако, когда вы впервые пытаетесь создать микроконтроллер с компонентами SM, вероятность ошибки становится немного выше. Это сложнее, если вам нужно отлаживать печатную плату, схему и программное обеспечение одновременно. Стоит начать с известной базы (Arduino) и сначала запустить простой тестовый код.
Что ж, это правда, но обычно есть промежуточная стадия макетирования и/или прототипирования платы, чтобы проверить, выходит ли волшебный дым, и идентифицировать неизвестные неизвестные.
Волшебный дым не является моей главной заботой, большинство пакетов схем/печатных плат имеют простые проверки правил. Если операционист доволен, беря на себя это, все в порядке. Работа с SMT, когда у вас нет духовки, на мой взгляд, является сложной задачей и требует значительных навыков пайки.
@JackCreasey, похоже, это очень зависит от того, сколько вы готовы практиковаться. Я перешел от отсутствия опыта пайки к созданию довольно сложной платы SMD собственной разработки с пассивными элементами 0603 и микроконтроллером с шагом 0,5 мм (и некоторыми транзисторами SOT363, которые мне показались наиболее сложными), просто собрав два комплекта сквозных отверстий, один комплект SMD, и одна простая плата SMD собственной разработки. Обычно я считаю себя совершенно неопытным в рукоделии, поэтому я просто говорю, что, по моему мнению, большинство людей способны выполнить SMD-сборку с помощью утюга, при некоторой практике.
И, заметив, что ОП изучала ЭЭ, она, вероятно, уже имеет опыт пайки SMD.
На самом деле, теперь, когда я об этом думаю, меня больше беспокоит замыкание +12 В на PGND или GND, чем LEVEL_ALERT. LEVEL_ALERTпредставляет собой высокоимпедансный вход микроконтроллера. Я думаю, что мне придется добавить какой-нибудь предохранитель.