Небольшой экскурс в историю.
Как-то раз обратился ко мне океанариум с предложением сделать небольшую систему для мониторинга состояния аквариумной воды. Задача была довольно интересной и я решил попробовать. Смысл задачи был очень простой. Незадолго до этого был инцидент с отказом систему регулирования подачи озона. В результате акулам пришлось чуть ли искусственное дыхание делать. Были потери. Основная задача системы любыми путями предотвратить подобное в будущем.
Вкратце описание задачи было следующим.
1. Контроль неограниченного количества танков в достаточно большом количестве помещений.
2. Контроль pH, Redox и температуры.
3. Максимальная устойчивость к отказам или вранью электродов.
4. Вывод всех параметров в диспетчерский пульт с круглосуточным дежурным.
5. Подача аварийного сигнала (сирена) при выходе параметров за границы дозволенного.
6. В случае опасной ситуации и отсутствия реакции персонала физическое отключение питания озонаторов.
7. Минимизация количества вновь прокладываемых проводов.
8. Максимальная надежность и дурако-устойчивость.
9. Остальные требования уточнить в процессе проектирования.
Далее попробую рассказать процесс решения задачи, основные технические решения и трудности которые пришлось преодолеть.
1. Проектирование надо было начать с выбора архитектуры системы. В качестве архитектуры решил выбрать просто набор независимых контроллеров исходя из одного или двух контроллеров на танк. Независимость контроллеров обеспечит повышенную живучесть системы, так как выход из строя одних никак не повлияет на другие. Иметь возможность использовать два контроллера на один танк захотелось по причине очень большого размера некоторых танков. При объеме главного танка в 750 тыс. литров разница в редоксе в месте озонирования воды и в месте слива может достигать значительных величин и хотелось иметь возможность измерения в двух удаленных друг от друга точках. Заодно можно будет оценить эффективность перемешивания воды.
2. Далее встала необходимость выбора интерфейса связи. Об использования wifi особо не думал в связи с большими размерами помещений, наличию толстых бетонных стен, кучи сторонних фирм с большим количеством wifi и общему недоверию в этой технологии для условно промышленного применения. Различные промышленные интерфейсы связи типа CAN тоже решено было не использовать, так как надо было кидать кучу проводов и не хотелось применять последовательные линии связи. В результате решили использовать обычный ethernet. Это было достаточно удобно, так как от нужных нам точек достаточно было дотянуться до ближайшего свитча. Отказоустойчивость самих свитчей во-первых достаточно высока, а во-вторых это забота персонала океанариума.
3. Теперь надо выбрать на базе чего делать контроллер. Тут подход был простой. Сделать можно на чем угодно, смотрим что есть под рукой и на что есть необходимые наработки. Под руку попался процессор Silabs C8051F120. Простой и неплохой чип.
Стандартная 8-ми разрядная архитектура.
8 канальный 12-ти битный АЦП с программируемым усилителем + 8 канальный 8-ми битный АЦП.
100 MIPS, 8кБ RAM и 128кБ флэша за глаза для достаточно простой задачи.
Сторожевой таймер на случай зависания.
Все основные интерфейсы тоже есть, хотя особо и не нужны.
Ну, раз процессор взяли silabs то и интерфейс ethernet решили у него же поискать. Вполне подошел С2200. Стандартный 10 BASE-T с возможностью подключаться к 100/1000 BASE-T.
4. Теперь подключение электродов. Для обеспечения максимальной надежности решили поставить по три электрода на каждое измерение. В этом случае можно сравнивать каждый электрод с двумя другими и отключать если его показания начинают сильно отличаться от двух других. А если не сильно отличаются то можно брать среднее арифметическое.
5. Выбрали первый попавшийся корпус и дисплейчик, подходящий по размерам, сбацали клавиатурку нарисовали схему и приступили к разводке. В процессе проектирования схемы на всякий случай добавили туда 4 оптоизолированных входа, 6 мощных выходов через IRFR9024, часы на DS1307 и два выхода ЦАП 0..12В. Запихали туда это все просто на всякий случай по принципу что может пригодится в будущем.
Получили платку
и запихали ее в корпус.
В результате на первом этапе получили небольшую симпатичную конструкцию (у заказчика она выглядит еще лучше, это мой экземпляр).
продолжение следует...