avatar_V_O_R_O_N

Моя первая автоматика для РК.

Автор V_O_R_O_N, 21-02-2013, 14:54:16

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Бандерівець

Схема и плата В Орле JTAG ICE

В файле JtagIce.svg есть готовая печатная форма, уже сведена, нужно распечатать на прозрачной бумаге и совместить два рисунка.

Файл открывается в проге  inkscape
http://inkscape.org/download/

[attach=2]
[attach=3]




V_O_R_O_NTopic starter

Цитата: Vimax від 24-02-2013, 22:32:51V_O_R_O_N, Виктор может действительно в топку этот АВР. Пока не прикипели к этомузлу, давай может подумаем о смене камня?
Vimax, а кто нам поможет? Вова работает только с AVR, самим пытаться все сделать.... у тебя возможно жизни хватит, ты еще молодой, мне как быть? :)  Давай думать, решение принимаем вместе.

добавлено: 25-02-2013, 15:49:52

Цитата: vovanxp від 25-02-2013, 14:59:30Схема и плата В Орле JTAG ICE
Спасибо, это нам пригодится.
Все в нашей жиз

Бандерівець

Можно переделать схему ту что я выложил и сделать макетку, нужно разьем jtag  подключить к выводам jtag  то есть TCK, TMS, TDI, TDO.

Поставить для выводов ножек два разъема 8х2.

bobych

#123
V_O_R_O_N,если у вас в компе есть LPT порт,или в том который еще не успели выбросить на помойку,
то у вас уже есть программатор AVR.Останется припаять пять проводков,или шесть - питание с Game порта.
И уже можно "шить" ;)
Пистать,-тут есть варианты.Лично я долго пользовал AVR Studio для ассемблера.Потом довесил WINAVR.
Теперь есть и Си.
Можно и CodeVisionAVR пользовать.

имхо:
PIC - шаг назад,
ARM - шаг в перед,
по отношению к AVR.
Ну где то так.
Протеус фффтопку ;)

V_O_R_O_NTopic starter

Цитата: bobych від 25-02-2013, 16:22:05Протеус фффтопку
Не согласен, для обучения нормальная штука, мне помогает. Пока нет железа, кое в чем разобрался, спрошу у  Vimax его мнение.
Все в нашей жиз

bobych

Протеус не гаранитрует работу в "железе".
Железо не "обязано" работать в шпротеусе.

Vimax

Мнения по Протеусу не имею. Поставил только вчера, ковырял до 3-х ночи, очень заеп$я.
Что я там мог понять за это время?! Прикрутил к нему урок из книги Белова с тинькой2313 и LEDом,
сделал hex в AtmelStudio6.0, закинул в Протеус. Кнопку нажимаю - LED горит, в железе такую хрень
разумеется делать нет желания.
С ув. Виталий

V_O_R_O_NTopic starter

#127
Я не говорю об откатке рабочей программы, разговор о получении элементарных знаний в этой области. До экспериментов с Протеусом я не знал, как и что нужно изменить в программе, чтобы диод мигал на другой ножке МК. На реальном МК я это еще не проделал  потому, что еще не закончил программатор. Можно конечно через LPT но хочу через USB, сам порт жалко (ежели чего) и мамку тоже.
USB программатор уже в работе, скоро закончу.


добавлено: 25-02-2013, 17:48:43

Цитата: Vimax від 25-02-2013, 17:33:00такую хреньразумеется делать нет желания.
Значит и не делай, в железе будет тоже самое, кнопку нажал диод горит и т.д. И так все уроки. Если тебе в книге все понятно, значит у нас все очень хорошо. Давай по полочкам разложим, что тебе в AVR не нравится.
Все в нашей жиз

Vimax

V_O_R_O_N, Виктор я уже всерьёз задумываюсь о том, чтобы сойти с этого корабля.
Эта мысль приходит глядя на твой подход к делу: как организовано рабочее место и мой
сиротский паяльник и кусок припоя в моих двух левых руках)))
С ув. Виталий

Крокодил

Для новичков могу посоветовать среду АлгоритмБилдер.Это графический ассемблер.Все наглядно,быстро можно освоить.Конечно нужно знать азы ассемблера.И есть свой не плохой программатор.Осваивается быстро в живую,накидал програмку,нажал кнопку - результат на макетке. С компом соединение через сом-порт, пять проводков

m16

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

bobych

Протеус чем то смахивает на резиновую бабу.
Мне,по секрету, "старшие" сказали. :)

V_O_R_O_NTopic starter

Цитата: m16 від 25-02-2013, 17:57:12Vimax , протеус - зло, потерянное время.  изучи для начала основу основ цифровой техники - булеву алгебру ,  а также системы счисления- двоичную и шестнадцатеричную . научись делать простые арифметические  операции в них
Vimax похоже я по запарке тоже не в тот паравоз сел  :) Сижу думаю.....таки НЕТ тоже ответ.  Булеву алгебру точно учить не буду, а ты?


добавлено: 25-02-2013, 18:07:56

Цитата: bobych від 25-02-2013, 18:03:19Протеус чем то смахивает на резиновую бабу
Все о Протеусе ни слова, забыли :) Я уже удалил с компа и реестр почистил.
Все в нашей жиз

Игорь

#133
Я уже спрятался под стол - сейчас шквал табуреток полетит...
Тому, кто дружит с любым диалектом бейсика в любой его вариации (я, например, очень дружу с вижлбейсиком и VBA, который встроен в эксель), могу порекомендовать bascom. Это диалект бейсика для АВР. Для любителей бейсика практически ничего нового не будет - все знакомое, все родное. Не знаю как-кому, мне он нравится. Полно и встроенных библиотек, и навалом примеров.

Наверное, если бейсик не знаком, и все равно предстоит учиться, наверное есть смысл сразу браться за си.

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

Для старта могу публично, на глазах у изумленной публики, довести до ума автоматику для дистиллятора.

Задача, которую я перед собой поставил, такова.
Это прибор не для продвинутых юзеров микроконтроллерной техника, а для таких ребят, как я, как СМИТ или Дельта. Основное требование таких юзеров - поменьше меню, поменьше лишней информации и регулировок, все должно быть просто, интуитивно понятно  и наглядно.
Прибор должен дать возможность оставить систему дистилляцию работать и не бояться, что прорвет воду, перельется приемная емкость, пропадет вода. И должен вызвать хозяина когда потребуется его вмешательство. Писать буду на баскоме с детальным описанием каждого шага. Камень будет тини2313. Если не хватит памяти - перепрыгну на мегу8.
Публиковать, или не тратить свое и ваше время? Пока скрою.
Spoiler

Задумка такова.
Два датчика температуры - один в кубе, другой на трубке продукта. Первый датчик служит для управления и его температура отображается, второй - только отслеживает заранее заданный порог (40 - 50 градусов) и его показания не отображаются.
Хозяин устанавливает пороговую температуру, задает нужную мощность (это необязательная опция если цель перегонки - сырье для ректификации), кладет датчик потопа на пол, а датчик перелива на приемную емкость, запускает систему и уходит. Схема сама определит нужна ли вода, и включит ее только тогда, когда она действительно понадобится. остановка нагрева и подача сигнала произойдет в тот момент, когда будет достигнут порог температуры, либо произойдет перегрев продукта, либо приемная емкость будет заполнена, либо на полу появится вода. В последнем случае вода будет отключена одновременно с отключением нагрева. Во всех остальных случаях вода отключится только тогда, когда она будет уже не нужна.

Чтобы знать, нужна вода или нет, система будет запоминать максимальное достигнутое значение кубовой температуры. Изначально максимальное значение будет задано в 80-85 градусов. Вода будет подаваться только тогда, когда температура куба выше значения Тмакс-2 градуса. Может непонятно, потом прояснится.
Включать - выключать нагрев буду 40-амперным реле (хочу обойтись без симистора и радиатора), воду - моськой (она отлично управляет клапаном от стиралки без симистора). Хотя эти два пункта - не догма. Это можно будет решить потом.

Расскажу о рядовом процессе ректификации под управлением такого устройства.
Допустим, я хочу отобрать 200 мл предгона с головами, затем отобрать тело до кубовой температуры 95 грудусов, а потом дожать хвост до 99 в кубе.

Заливаю брагу, устанавливаю приемную емкость на 200 мл и на нее вешаю датчик перелива. Температуру сразу настраиваю на 95, проверяю, чтобы водяной кран был открыт, а трубка слива и датчик потопа были на месте. Нажимаю кнопку и иду проверять личные сообщения на форуме.

А в это время куб разогревается, доходит до 83 градусов - включается вода. Куб закипает, предгон и головы текут в емкость, и когда их уровень доходит до датчика, нагрев останавливается, и звучит сигнал. Я неспешно отрываюсь от дел, бреду к кубу, ставлю солидную  емкость для продукта, не забываю перевесить датчик переполнения на нее, нажимаю кнопку, и возвращаюсь к оставленному занятию... или ложусь спать если ожидаемое время перегонки - несколько часов.
Перегонка продолжится до того момента, пока температура не дойдет до 95 градусов. Когда дойдет - нагрев остановится и система начнет звать меня. Если я замешкаюсь, или если буду спать, или если меня не будет дома, каб начнет остывать, и когда остынет на 1 градус (или два - пробный прогон покажет нужное значение), вода отключится.

Когда я услышу/проснусь/вернусь, мне останется поставить емкость для хвоста, повесить на нее датчик перелива, настроить 99 градусов, снова нажать кнопку и быть свободным. Когда температура дойдет до 99, повторится то, что изложено в предыдущем абзаце.

Возможно, я предусмотрю режим "обезгаживанния" - при достижении температуры - скажем - 75 градусов система на 5 минут будет входить в режим термостатирования, а затем продолжать нагрев.
Вот такую задачу я ставлю и готов решить ее публично.

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

Работа кнопки при включении.
Первое, что сделает система при появлении питания, это отключит нагрев, начнет подавать звуковой сигнал и показывать последнюю достигнутую температуру. При этом обе десятичных запятых будут светиться. Это будет продолжаться до тех пор, пока не будет нажата кнопка.
При нажатии кнопки система отключит звук, заменит запомненное максимальное достигнутое значение температуры на 85 (или 80?)  и покажет нынешнюю настройку температуры. Десятичные точки будут гореть.
Следующее нажатие вызовет индикацию текущей температуры, но так как работа не начата, десятичные точки будут перемигиваться.
Следующим нажатием мы сообщаем системе о том, что намерены поработать. На этом этапе мы можем захотеть одно из двух - либо сразу начать работу с сохраненными настройками, либо изменить настройки. Чтобы выбрать одной кнопкой одно из этих двух действий, на индикаторе будет по секунде последовательно, поочередно гореть символы Р и Н. если мы хотим перейти к работе, надо будет нажать кнопку пока горит символ Р, если к настройкам - Н. Пока мы не сделаем выбор, ни нагрев, ни охлаждение не включится.

Если мы выберем Р, система перейдет к работе - включит нагрев, если нужно - воду, и начнет следить за температурой, потопом и переполнением емкости. На индикаторе появится текущее значение температуры без светящихся десятичных точек, которое раз в 5 секунд будет сменяться значением настройки со светящимися десятичными точками. Так можно будет одновременно видеть и температуру, и настройку.

Работа кнопки при настройках.
Если выберем "Н", система покажет нынешнюю настройку температуры. Десятичные точки будут светиться. Если настройка нас устраивает, ничего не жмем, и через 5 (?) секунд система сама перейдет в рабочий режим.
Если есть необходимость изменить настройку температуры, нажимаем кнопку. Каждое нажатие приведет к увеличению настройки на 1 градус. Когда настройка дойдет до 99, следующее значение будет 80, и так по кругу. Когда "перелистывание" температуры дойдет до нужного значения, нужно прекратить нажатия. Через 5 секунд система запомнит новое значение и перейдет в рабочий режим.

Работа кнопки в рабочем режиме.
В рабочем режиме мы можем захотеть одно из двух - либо изменить настройки, либо прекратить работу. Поэтому на индикаторе начнут сменять друг друга два символа - Н и С.
При нажатии Н система перейдет в режим настроек, работу которого я описал, и выход из которого в рабочий режим происходит через 5 секунд бездействия.
При нажатии С система перейдет в режим остановки. Для этого она отключит нагрев, вода будет идти до тех пор, пока кубовая температура не упадет на 1 градус. После этого система остановит воду и будет подавать звуковой сигнал, напоминая о том, что можно отключить напругу, слить барду и разобрать систему или начать новую перегонку.
Теперь надо продумать действия в особых ситуациях, способы индикации и действия единственной кнопки.
"Слежка" за датчиками куба, перегрева и заполнения ведется всегда, когда включен нагрев. Слежка за датчиком потопа идет всегда, когда включена вода. При обнаружении любой из ситуаций "П" - порог, потоп, переполнение или перегрев, отключается нагрев и подается звуковой сигнал. Вода отключается только в случае потопа, во всех остальных ситуациях вода отключится только тогда, когда куб остынет на градус. На индикатор в каждом случае будет выводиться своя картинка, которая позволит с первого взгляда понять, что произошло. Эти символы-картинки я продумаю позже
Теперь о работе кнопки. После того, как наступила одна из указанных ситуаций, мы захотим либо прекратить работу, либо продолжить ее, изменив настройку или сменив посуду, устранив потоп или восстановив подачу воды. Поэтому, после нажатие кнопки после остановки по достижению порога температуры, система предложит либо выполнить процедуру стопа, либо перейти в настройки чтобы изменить порог.
Во всех остальных случаях нажатие кнопки предложит либо выполнить процедуру стопа, либо продолжить работу. Вроде всё...

Чтобы все было наглядно, выкладываю не готовое "причесанное" решение, а реальный ход мысли
Начинаю с конца.


[attachimg=1]
Для управления дистилляцией не буду размениваться на мелочи - температуру буду измерять с точностью до градуса, поэтому использую индикатор на два символа.
На переднюю панель вывожу минимум управления - два тумблера (от которых - возможно - откажусь) и кнопку, единственную кнопку управления.
Сразу вырисовывается необходимое количество ножек контроллера.
Для управления сегментами - 8 ног, плюс по одной на каждый символ, итого 10.
Для управления водой, нагревом и звуком - по одной (три), для "приема" температуры и двух мокрых датчиков - еще три. Еще одна нога - для кнопки. Всего понадобится 17 ножек ввода-вывода. Одна нога остается для резета - аппаратного сброса при включении в сеть.
У АтТини2313 их 18. Хватает, но может не хватить 2-х килобайт памяти. Начну с этого контроллера, если в 2 килобайта не помещусь, перепрыгну на более крупный.

Предварительно распределяю обязанности между ножками.
Вот распиновка этого контроллера. Основная информация для нас с этого рисунка - имена и номера  портов ввода-вывода. Обозначения в скобках нам почти не понадобятся, исключение - обрати внимание на надпись "INT0" возле ноги D2. Это ввод прерывания, мы используем его для кнопки. И на надпись "RESET" у ножки А2. Это будет аппаратный сброс.
Guests are not allowed to view images in posts, please Register or Login

Так как порт В полный - имеет 8 контактов - я использую его для управления сегментами.
Порт А имеет три вывода. А2 - резет, аппаратный сброс, А0 и А1 будут управлять символами.
Порт D имеет 7 выводов - от 0 до 6.
0,1,2 и 3 будут входами (термодатчики, потоп, кнопка и переполнение), 4,5 и 6 будут выходами (вода, нагрев и звук).
Далее. Контроллер будет работать на "родной" тактовой частоте от встроенного генератора.
Пора написать первые строки программы - дать программе знать какие из них будут входами, какие - выходами и присвоить портам ввода-вывода условные обозначения (это будет полезно если понадобится сменить камень).

$regfile = "2313def.dat" 'Тип микросхемы
$crystal = 1000000       ' Тактовая частота
Ddra = &B00000011        ' Нога 0 и 1 - выход, остальные входы
Ddrb = &B11111111        ' Все ноги порта В - выходы
Ddrd = &B01110000        ' Ноги 0,1,2 - входы, 3.4 и 5 - выходы
Water Alias Portв.4      ' Вывод, управляющий водой, я назвал "water"
Heat Alias Portd.5       ' Вывод, управляющий нагревом, я назвал "heat"
Alarm Alias Portd.6      ' Вывод, управляющий звуковым сигналом, я назвал "аlarm"
Potop Alias Pind,1       ' Вход, следящий за потопом, я назвал "Potop"
Full Alias Pind, 3       ' Вход, следящий за переполнением емкости, я назвал "Full"
Sim1 Alias Porta,0       ' Выход, включающий первый разряд индикатора, я назвал "Sim1"
Sim2 Alias Porta,1       ' Выход, включающий второй разряд индикатора, я назвал "Sim2"
Config 1wire = Pind.0    ' Даю контроллеру знать, что использую D0 как вход далласовских датчиков
Config Int0 = Falling    'Даю контроллеру знать, что использую вход  А2 как прерывание при спаде напряжения на нем
[close]
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Игорь

Цитата: V_O_R_O_N від 22-02-2013, 21:58:03У Игоря все вместилось в ATtiny 26 там 2 Кбайт.
Да, в 2 килобайта я втулил всю ректификацию и дистилляцию. НО... писал на асме, все последовательности кода, встречающиеся несколько раз, сделал подпрограммами, не читал датчики и не управлял жидкокристаллическим индикатором.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

SMF spam blocked by CleanTalk