Перейти к контенту
МОРСКОЙ АКВАРИУМ - форум Аква Лого

Содержание Если вы решили приобрести крупного попугая, то нужно подойти к этому вопросу со всей ответственностью. Крупный попугай - не просто домашний питомец, это потрясающе умная и красивая птица, это ваш друг и соратник на десятилетия. Что же следует учесть при желании завести в доме крупного попугая?
1) Это очень сообразительные и общительные птицы, им необходимо общаться с хозяином. В день для этого должен быть выделен как минимум час, а то и больше. Без этого они будут скучать и от стресса могут не только громить квартиру, но и ощипывать самих себя. Подробнее

Кольчужные сомы

Рыбы без кольчуги

Рыбья кольчуга

Рекомендуемые сообщения

Начитавшись про разные компьютеры и собрав несколько схем решил все-таки сделать свой. В опубликованных самоделках один но очень серьезный недостаток - чаще всего это закрытый код, невозможно (или трудно) переделать, если что не нравится. Делая для себя нет нужды строить универсальную систему с кучей ненужных функций. Можно сделать именно то, что нужно для себя в настоящий момент. А если потом что еще понадобится, то добавить нужные функции изменив программу. Повторять один в один такие системы смысла нет, но тем не менее решил выложить на форум мою версию, может кому-то и пригодится. Исходный код программы, если кому надо, тоже могу дать, но предупреждаю еще раз - писалось все чисто для себя, так что повторить один в один не получится, но может поможет понять как на основе этого написать свое.

Копок управления у компьютера нет. Экрана или монитора тоже нет. Менять режимы и настройки можно через обычный компьютер (подключается к COM-порту или USB если надо). Выводит любую информацию тоже на обычный PC - написана программа интерфейс. Но, конечно же, для работы PC не нужен. Выглядит все это так:

post-2056-1236075210_thumb.jpg

post-2056-1236074995_thumb.jpg

post-2056-1236075255_thumb.jpg

Поделиться этим сообщением


Ссылка на сообщение

:vo: :vo: :vo: Карен ,это еще одно Ваше увлечение ,или специальность?В любом случае здорово.Читая темы, я понимала что чтото можно автаматизировать,но чтобы на столько? Теперь обязательно займусь самообразованием в этом направлении.Спасибо. :)

Поделиться этим сообщением


Ссылка на сообщение

Карен ,это еще одно Ваше увлечение ,или специальность?

Cпециальность - морская зоология.

Читая темы, я понимала что чтото можно автаматизировать,но чтобы на столько?

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

Теперь обязательно займусь самообразованием в этом направлении.

А это вполне реально. Я довольно быстро освоил азы (после того как увидел тему sarunas на этом форуме, где он подробно описал свой компьютер). Ну и затянуло...

Поделиться этим сообщением


Ссылка на сообщение

Супер. Люблю всё такое.

вот только схема только маленькая. Большая не грузиться.

Тыкал несколько раз

Это только у меня так?

Поделиться этим сообщением


Ссылка на сообщение

Схема не открывается. Перезалей пожалуйста

Поделиться этим сообщением


Ссылка на сообщение

Перезалил схему. В общем-то все подобные схемы построены по одному принципу - в центре процессор, здесть это ATMega32 (ценой в 120рублей), вокруг совсем немного периферии. Схема переделана с контроллера Юсупова. Точнее с его первой версии (кажется сейчас у него на сайте другой, не интересовался). История такая. Сначала я собрал контроллер Юсупова. Что-то в нем не понравилось - (зависал, сбрасывался счет времени и т.п.). Попросил его дать мне исходный код, обещал нераспространение. Он отказался. Написал свой код к его схеме. Все работало, но проблема осталась - периодически виснул, видимо от того, что у меня линии управления длинные и ловят помехи, особенно при включении мощной нагрузки. У подобных процессоров есть возможность включить автоматическую перезагрузку при любом зависании, но у Юсуповкой схемы это не имело смысла, так как при перезагрузке обнуляется счетчик времени. Решено было сделать схему+программу, нечувствительную к перезагрузке центрального процессора. Для этого добавил микросхему часов реального времени DS1307 (50 рублей) с часовым кварцем. Часики в микросхеме тикают независимо от работы остальной части схемы, при пропадании питания она переключается на литиевую батарейку, которой хватает на 10 лет непрерывной работы. Программа процессора постоянно проверяет таймеры и датчики и постоянно выдает управляющие сигналы на силовой блок. Если по каким либо причинам процессор виснет, то wachdog таймер его тут же перезагружает и все параметры восстанавливаются.

Подключается к COM-порту большого компьютера через микросхему MAX232N (17 рублей) (на схеме обозначена как HIN232CP1).

Силовая часть - процессор включает/выключает оптотиристоры MOC3063 (20руб) со встроеннми Zero-cross детекторами. Из-за zero-cross детекторов они не пригодны для ШИМ-регулирования мощности нагрузки или диммирования, но зато идеальны для включения выключения. MOC3063 включают мощные симисторы. На схеме показаны BTA08-600CW (на 8 ампер), на деле поставил BTA12-600CW - могут коммутировать ток до 12 ампер (то есть нагрузка до двух с половиной киловатт!), при этом без проблем включают маломощные тунзеновские стримы. Главное обращать внимание на последние буквы названия при покупке, должно быть именно CW - эти могут работать и на индуктивную нагрузку.

 

post-2056-1236130336_thumb.jpg

Поделиться этим сообщением


Ссылка на сообщение

:vo: :vo: :vo: Карен ,это еще одно Ваше увлечение...

Просто замечательно, когда есть люди, умеющие не только писать умными словами :gygy: , но и делать интересные вещи :lol: , не боясь представить их на всеобщее обозрение!!!!!!!!! :vo: :vo: :vo:

Поделиться этим сообщением


Ссылка на сообщение

к сожалению, схема не хочет открываться :(

Поделиться этим сообщением


Ссылка на сообщение

я тоже ничего не понял, но описание понравилось. конечно-же, молодцы такие специалисты.

а автоматизировать всегда все интересно.

Поделиться этим сообщением


Ссылка на сообщение

к сожалению, схема не хочет открываться :(

У меня в Опере открывается без проблем. Последняя попытка, перезаливаю как jpeg:

post-2056-1236152888_thumb.jpg

Поделиться этим сообщением


Ссылка на сообщение

Теперь открывается. Схема интересная, получше чем у Юсупова. Не понятно только для чего канал "Deltec 4040" ? Каналы "актинник" и "МГ" диммируемые? Какую роль играют каналы "Помпа левая/правая" ? Для чего нужен измеритель PH и OPR, если нет монитора?

Поделиться этим сообщением


Ссылка на сообщение

Теперь открывается. Схема интересная, получше чем у Юсупова. Не понятно только для чего канал "Deltec 4040" ? Каналы "актинник" и "МГ" диммируемые? Какую роль играют каналы "Помпа левая/правая" ? Для чего нужен измеритель PH и OPR, если нет монитора?

канал "Deltec 4040" - чисто моя заморочка (как и все остальное), одно время надо было регулировать мошность возврата, простейшее решение - слегка снижать на ней напряжение включая последовательно небольшую нагрузку. Все остальные силовые каналы (помпы, актиники, МГ...) тоже заточены именно под мой аквариум, не обращайте внимания. Считайте их просто выходами на управляемые розетки, которые процессор может включать и выключать. В настоящее время диммирования нет (не нужно оно мне), но не вижу проблем добавить.

ORP и PH каналы занимаются измерением ORP (который я уже убрал за ненадобностью) и PH. Данные выводятся в непрерывном режиме на компьютер, за которым я практически целый день сижу и работаю. Туда же выводится и значение температуры в аквариумах и сампах. ЖК монитор подключить тоже не проблема, если кому-то покажется нужным. Но мне больше нравятся семисегментные индикаторы, наверное вмонтирую в тумбу под аквариумом (PH и температуру).

Поделиться этим сообщением


Ссылка на сообщение

Да, всё сделано отлично. Хотя всё же дисплейчика-индикатора не хватает.

Софт на PC тоже, сами писали? Протокол обмена тоже?

Поделиться этим сообщением


Ссылка на сообщение

Да, всё сделано отлично. Хотя всё же дисплейчика-индикатора не хватает.

Софт на PC тоже, сами писали? Протокол обмена тоже?

Да, и софт на PC тоже (С++, в СBuilder). Протокол обмена через COM-порт - программа пишет в него команду для МК (1 байт) + параметры если надо, микроконтроллер (МК) в ответ на полученную команду должен ответить. Программа считывает из COM-порта ответ и высвечивает на экран. Она опрашивает все датчики раз в секунду или что-то около того. Если программа не просит, то сам МК в ком-порт ничего не пишет. Самое трудное здесь оказалась дурацкая работа стандартных виндосовских функций с ком-портом. Если ответ не приходит, то функция намертво виснет, потратил много времени, чтобы обойти это (проблема частично решилась созданием отдельного потока работающего с портом и сообщающего программе считанные данные).

Поделиться этим сообщением


Ссылка на сообщение

Когда я все это писал мне очень не хватало готовых образцов кода для контроллера, чтобы понять с какой стороны вообще к этому делу надо подходить (ни Сарунас с нашего форума, ни Юсупов не открывают свой код). Так что, хотя написанный мною код совершенно бесполезен для слепого повторения, он может быть полезен если будете писать свой, просто посмотреть как у других сделано. Поэтому выкладываю как он есть: source_code.zip

Поделиться этим сообщением


Ссылка на сообщение

Karen, а стабилитрон VD1 в питании усилителя PH случайно не переполюсован на схеме?

Изменено пользователем Mike_PA (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Похоже на то...

Блок pH передран у Юсупова один в один, и, честно говоря, не помню как я припаял стабилитрон...

Поделиться этим сообщением


Ссылка на сообщение

Если по каким либо причинам процессор виснет, то wachdog таймер его тут же перезагружает и все параметры восстанавливаются.

Несмотря на то, что перезагрузки процессора в моей схеме никак не влияют на работу устройств решил все таки выяснить почему процессор периодичеки перезагружался (несколько раз в сутки). Оказалось, что причина в некорректной реализации TWI (I2C) протокола (обмен данными с часами, дисплеем и т.п.) - если делать по примерам из даташита и не обрабатывать ошибки то возможны случаи глухого зависания в циклах while, так что самодельщики, имейте в виду - ошибки надо обрабатывать!

Поделиться этим сообщением


Ссылка на сообщение

Мало того что все ошибки надо обрабатывать Карен. Эти ошибки надо искуственно создавать (или симулировать) при прогоне софта. Например, что произойдет при включении/отключении кабеля в момент чтения внешнего датчика, что произойдет если по RS232 посыпется мусор или некорректная комманда, что произойдет если вместо сигналов датчика на входе повиснет глухой 0 или 1. Как будет работать программа если одна из кнопок залипнет наглухо, не остановит ли это весь процесс и тд итп. Что будет если от датчика вместо ожидаемого диапазона кодов прийдет чтото другое (ждал от 0 и до 7F, пришло FF ;) ) Только так можно добится нормальной и устойчиво работающей в любых условиях программы.

Поделиться этим сообщением


Ссылка на сообщение

Это все понятно, я просто хотел сказать, что если делать по примерам из официальных даташитов, где далеко не все возможные ошибки обрабатываются, зато полно строк ожидания конца хардварных операции вроде таких:

while (!(TWCR & (1<<TWINT))){};

то неприятности рано или поздно гарантированы. В итоге мне пришлось все это безобразие переписывать по своему. Заработало как часы :)

Поделиться этим сообщением


Ссылка на сообщение
Это все понятно, я просто хотел сказать, что если делать по примерам из официальных даташитов, где далеко не все возможные ошибки обрабатываются, зато полно строк ожидания конца хардварных операции вроде таких:

while (!(TWCR & (1<<TWINT))){};

то неприятности рано или поздно гарантированы. В итоге мне пришлось все это безобразие переписывать по своему. Заработало как часы :)

 

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

 

 

Мало того что все ошибки надо обрабатывать Карен. Эти ошибки надо искуственно создавать (или симулировать) при прогоне софта. Например, что произойдет при включении/отключении кабеля в момент чтения внешнего датчика, что произойдет если по RS232 посыпется мусор или некорректная комманда, что произойдет если вместо сигналов датчика на входе повиснет глухой 0 или 1. Как будет работать программа если одна из кнопок залипнет наглухо, не остановит ли это весь процесс и тд итп. Что будет если от датчика вместо ожидаемого диапазона кодов прийдет чтото другое (ждал от 0 и до 7F, пришло FF ;) ) Только так можно добится нормальной и устойчиво работающей в любых условиях программы.

 

все это проверить совершенно невозможно, даже у такого простого устройства как аквакомп.

надо использовать методики защитного программирования и математические методы верификации.

Поделиться этим сообщением


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

надо использовать методики защитного программирования и математические методы верификации

Ну-ну. Космолет строим? Проверить залипшую кнопку - необходимо

математические методы верификации
Потому то программисты и у меня оборзели до невозможности. Лед зажечь и помигать - процессор с линуксом или win CE требуют, иначе никак нельзя. :gygy:

Поделиться этим сообщением


Ссылка на сообщение

Ну-ну. Космолет строим? Проверить залипшую кнопку - необходимо

 

вопрос не в космолете а в систематическом подходе к программированию. если человек им не владеет - работать надежно не будет.

 

Потому то программисты и у меня оборзели до невозможности. Лед зажечь и помигать - процессор с линуксом или win CE требуют, иначе никак нельзя. :gygy:

 

У меня тоже самое. Если у процессора меньше чем 500 ножек BGA и он не имеет ip стека то процессором уже не считается. :gygy:

Поделиться этим сообщением


Ссылка на сообщение

После доводки программы до ума, проработал у меня этот компьютер несколько месяцев без единного сбоя. Все таймеры, свет, баллинг (долив равномерно по нескольку раз в день), автодолив, регулировка мощности возврата, pH, температура - все висит на этом процессоре. Ног у процессора много, можно повесить еще кучу устройств... Одна только проблема. Аквариумы в разных комнатах, и сампы в разных, чтобы подключать новые устройства надо тянуть провода управления от центрального процессора.

 

Решил переделать, сделать модульную систему: центральный процессор и куча периферийных устройств, каждое устройство со своим процессором. По дому проложить один тонкий четырехжильный провод (земля, питание +5В, и две линии на управление по TWI (=I2C) интерфейсу). Теперь, все устройства управления и контроля можно подключать паралельно к этому проводу. Процессор каждого устройства принимает команды от центрального и соответственно включает/отключает нагрузку, или выводит показания на дисплей или индикаторы, или считывает показания датчиков и отсылает центральному процессору, т.е. делает конкретную работу.

 

В качестве центрального устройства решил (пока) использовать тот компьютер на процессоре ATMega32, который у меня сейчас подключен к аквариумам и работает (схема была в начале темы), без переделок. Даже его программу особо не пришлось переделывать, сделал только пока паралельно с выводами сигналов на его ножки, вывод тех же сигналов в виде команд на шину TWI.

 

Для периферийных устройств большие процесоры не нужны, но цены на них настолько низки, что по деньгам нет разницы ставить ли процессор впритык по функционалу, или ставить явно избыточный, но зато не мучаться потом с оптимизацией программы по размеру, расширением возможностей и прочее. Поставил ATMega8 - у них встроенный аппаратный TWI интерфейс, и памяти и ног явно больше, чем может понадобиться. Купил несколько штук в плоских квадратных корпусах, сначала боялся смогу ли дома сделать плату под них и припаять (очень уж мелкие), но ничего, не так красиво и аккуратно, как на фирменных платах, но и дома все делается и паяется:

post-2056-1251854549_thumb.jpg

Поделиться этим сообщением


Ссылка на сообщение

Первый уже работающий у меня блок - набор розеток, управляемых по TWI интерфейсу. Самое трудное ни схему нарисовать и собрать, и ни программу безглючную написать (чтобы там Борис не говорил :) ), а сделать корпус. Поэтому пока без корпуса, на куске ДСП. Подключается с одной стороны вилкой в сеть 220, а с другой маленький раъемчик на 4 контакта к шине TWI от центрального процессора.

post-2056-1251855292_thumb.jpg

Схема этого блока очень простая:

post-2056-1251855344_thumb.jpg

Силовая часть такая же, какая и была у меня раньше, на связке оптронов MOC3063 с zero-cross детекторами и мощных симисторов BTA16-600CW. У них изолированные "спинки", поэтому можно сажать всех на один радиатор. Я прикрутил алюминиевую пластину (видно на фото), ее размер оказался явно избыточным, под нагрузкой (2 МГ 150 + 2 актиника на 100 ватт) стоят едва теплые, но переделывать лень, да и незачем. (Можно подключать к каждому каналу до 3 киловатт... только тогда и радиаторы наверное понадобятся побольше.)

Из интересного в схеме - сигналы от процессора к оптронам пустил не напрямую (как делают поголовно все), а через тригерры Шмидта. Входы триггеров резисторами подвязаны к +5 и земле так, что при отсуствии сигнала от процессора тригер не переключается (то есть если он включен, то и остается включеным, если был выключен, то остается выключеным). Это позволяет сколько угодно перезагружать процессор - при перезагрузке ножки процессора переходят в Z-состояние, т.е. просто обрываются, и не переключают нагрузку (свет в аквариуме не мигает, МГ не отключаются и т.п.). Можно перепрограммировать процессор на ходу при включенной нагрузке - аквариум этого не заметит. В качестве триггеров Шмидта можно использовать и что-то современное, но я просто поставил старую советскую микросхему К155ТЛ2 выпаянную из какой-то платы, найденой на чердаке. Шесть триггеров в одной микросхеме. Работает отлично.

Поделиться этим сообщением


Ссылка на сообщение

Пожалуйста, авторизуйтесь, чтобы оставить комментарий

Вы сможете оставлять комментарии после авторизации



Войти

×
×
  • Создать...

Политика обработки персональных данных