www.horizontautomatics.ru

Программирование, автоматизация.

Помогите пожалуйста в вопросе построения прошивки ATTYNY13A

Модератор: Евгений

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Прохожий » 14 июн 2018, 09:17

Давай на ты, вроде по братски и удобнее :)
Если выбор между 13 и 2313 не критичен, то использовать АЦП имеет смысл только из спортивного интереса :) Потому, что ввод данных в память и прочие возможные приятности могут не влезть в объём 13 :) А на более жирненьком контроллере кто тебе мешает приладить к проекту индикацию и приспокойно иметь возможность устанавливать не фиксированные значения, а произвольные с помощью кнопок или энкодера? :) Как видишь аппетит растёт во время еды :)
13 зашибись использовать в машине, если применять хорошие схемные решения по питанию. Например, независимое управление от одной кнопки двумя устройствами. Или звуковое оповещение при достижении предельной скорости. Или жопогрейку учудить с несколькими режимами. А на большем контроллере вообще климат замутить :)
Контроллеры штука классная, особенно если использовать вместе с ними микросхемы периферии :) Думаю, раз Горизонт перезапустили в нём и протоколы общения с периферией появятся и прочие штуки. Например MAX7219 (драйвер 8-ми штук, 7-ми сегментных индикаторов, обмен данными по шине SPI, использует всего три пина контроллера) просто волшебная микросхема.
Заранее проверь как работает EEPROM на 13 и 2313. Не помню, вроде на 328 и 85 проблемы были :)

В примере, как мне показалось, до первого срабатывания триггера 4 нажатия. Потом все остальные циклы строго по пять :) Хотя могу ошибаться, проверить сейчас не на чем :)

P.S: Мысль в догонку. А если у тебя напряжение с энкодера гуляет, но без особых помех и по нему не прилетит высокое, почему бы именно туда АЦП не пришпандорить, задав устраивающий тебя гестерезис ??? :)
http://radioparty.ru/programming/avr/c/ ... -voltmeter
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 363
Зарегистрирован: 21 май 2016, 06:23

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Evgeny555 » 14 июн 2018, 21:57

я думаю все же использовать сразу с запасом 2313 под нее и будет дальнейший расчет . касаемо внешней периферии то образцы подобраны и тестируются нет желание вход мк заводить на прямую да и в целях безопасности лучше этого не делать пусть будет по больше элементов за то надежнее да и мк будет защищен . как вариант можно пойти вообще другим путем ибо на этом механизме стоит энкодер работающий в паре со счетчиком импульсов который декодирует сигналы в градусы и он же имеет порт 485 от туда можно снять информацию для управления дополнительным устройством но это более сложно а может и нет конечно но устройство будет совсем другое и честно сказать не особо горю желанием вскрывать и изучать данный модуль а может и стоило бы . Пока остановлюсь на первом варианте с мк 2313 ( с запасом ) а далее в процессе развития ! наставите на путь истинный ? тех задание все то же поменялся только мк даба не испытывать неудобств уберем кнопки выбора поставим энкодер хотя у меня есть микро джойстики 4 направления и центральное нажатие подтверждение по сути те же кнопки только в одной и очень маленькой , да и энкодеры есть так что с периферией проблем нет а вот с построением логики прошивки проблемы !
Evgeny555
 
Сообщения: 12
Зарегистрирован: 11 июн 2018, 18:40

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Прохожий » 14 июн 2018, 23:07

Сейчас мы стоим на самом трудном этапе при использовании МК- это определение пользовательского интерфейса устройства :) Давай определяться конкретно с тех. условием. Как я понимаю будем делать вариант с возможностью произвольной установки и использованием 2313? Значит:
1) Две кнопки набора значения + и - При этом если тыркнем раз - то и прибавится/убавится единица. Если жмём долго - бежит само. Нужна ли кнопка установить 0, для удобства набора?
2) Кнопка "Старт", начало отсчёта (если вообще нужна, я ведь не знаю, что за устройство)
3) Кнопка "Стоп", пришпандорим на резет. Контроллер резетим, нагрузка отключается.
4) Кнопка "Запись в EEPROM". Тут вариант или отдельная кнопка, или заморачиваться с одновременным нажатием + и -. При включении контроллера, всегда будет устанавливаться то, что ранее записано в EEPROM. (ВНИМАНИЕ!!! САМОЕ ВАЖНОЕ!!! При работе с EEPROM всегда включать в фьюз-битах контроллера порог питания, ниже которого контроллер сам резетится!!! А то в EEPROM может всякая фигня творится. Я делал розетку с таймером, как только помехи по питанию не давил, ничего не помогало, а теперь как часики!!! :)
5) Вход устройства
6) Выход на нагрузку
7) Если нужен светодиод или пьезик, которые сигнализируют включение нагрузки миганем или пищанием.
8) 8+2 = 10 для сдвоенного 7-ми сегментника. 8 - это если решим убегать за 99, что бы точку влепить на разряд сотен, заместо применения строенного 7-ми сегментника.
Примерно так напиши,что ты хочешь.

Теперь к практике. Из видеоуроков посмотри как подключить индикатор.
В итоге пока будет схема простая: Два входа притянутые к плюсу (в свойствах блока такая опция имеется) ---- подавитель дребезга на каждом входе (такой блок имеется)---- вход счётчика ---- вывод со счётчика на индикатор. При получении результата двинемся дальше :)
Дальше будет так. По линии прибавления, между подавителем дребезга и счётчиком ставим двухвходовый "И". На второй вход подключаем генератор. То же самое и в убавление. На то и на другое генератор общий (экономим ресурсы). Получится, так, что при нажатии одной из кнопок, генератор сквозняком пролетает в счётчик и счёт бежит сам. Пол проекта сделано!!! :)
Потом совсем легкотня. На входе от твоего энкодера ставим счётчик и в конечном итоге и тот и другой счётчики придут на блок равно или больше/меньше. Потом прикрутим EEPROM. А дальше только мелочи останется допилить.
ВАЖНО!!! Там где есть соединение от конца в начало, нужно в свойствах блоков с этим связанных выстроить приоритет. По умолчанию везде ноль. Иначе проект не соберётся :)
Кстати. Заместо кнопок + и - при желании можно поставить блок энкодер, а кнопка энкодера будет или стартом, или запись в EEPROM.
В общем решай какие кнопки нужны, и по какому алгоритму устройству работать :) Как скажешь так и будем делать :)
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 363
Зарегистрирован: 21 май 2016, 06:23

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Прохожий » 15 июн 2018, 17:30

Примерный проект, без излишеств в виде подавления дребезга и прочего. Контроллер 2313А. При первом старте данные установятся из памяти 255, так как такое значение в ячейке EEPROM. Счётчиком смотай до ноля. При прошивке в железо некоторые программаторы позволяют сразу записать туда ноли. Хотя пофигу, этот нюанс только при самом первом включении. Запись ведётся в первую ячейку. Возьми за правило в нулевую ничего не писать. В генераторе поставь удобную частоту, я не знаю на каких тактовых и делителях будет работать твой контроллер, подберёшь по месту. В общем нажал коротко, переключилось раз, нажал длинно, счёт бежит сам. В блоке LCD_word 1 позиция 0, в LCD_word 2 позиция 9, при сборке иногда слетает, проверяй.
Логика такая.
Две кнопки ввода.
Одна кнопка "запомнить".
Одна нога вход от твоего энкодера
Одна нога выход, на исполнительное
Остальные ноги на индикатор.
(ноги ставил произвольно, всё равно при разводке платы как удобнее ставить придётся)
Включил, кнопками выставил значение и его записал. Прилетают данные с твоего энкодера и сравниваются с установленным значением. Нюанс в том, что в данном варианте сравнивается с установленным!!! А можно сделать, что будет сравниваться строго с записанным :) При превышении включается нагрузка. Так как счётчик с энкодера циклический до двадцати. То по достижении 20 нагрузка отключается и начинается всё заново. Пока сделал так, я ведь не знаю, что тебе толком нужно :) После снятия питания автоматом загрузятся последние запомненные данные.
Если критично, то разрешение отсчёта с энкодера можно совместить с нажатием "запись". А для понта поставить задержку по времени, что бы первый импульс не проморгать.
Если поставишь индикатор LED на 4 разряда, тогда в первых двух можно установленные данные, а в оставшихся данные с энкодера.
Гоняй в протеусе, думай, решай.
Вложения
Project555_1.hc
(11.7 КБ) Скачиваний: 37
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 363
Зарегистрирован: 21 май 2016, 06:23

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Evgeny555 » 16 июн 2018, 19:51

Мк будет 2313 , Касаемо кнопок выбора параметров счетчика можно обойтись и одной пусть гоняет значения по кругу но нужна индикация установленного параметра перед сохранением ( допустим 1,2,3,4,5,6 значений каждому из которых присвоен определенный параметр счетчика , 1- 4 импульса и так далее с прибавлением по 4 к предыдущему значению ) , кнопка 0 соответственно не нужна . Касаемо кнопки стоп сделать можно но не через рессет а отдельным входом не в виде кнопки а виде перемычки снята контроллер работает одета не выполняет программу ( Хотя это можно банально отключением питания сделать , либо как вариан после рессета не подтверждать ввод значения мк будет в ожидании ввода соответственно исполнять программу не будет тут уж как проще и удобнее ) Рессет останется только для сброса установленных значений и перезапуска нажал мк рессетнулся параметры сбросились опять же желательна индикация состояния мк допустим программа установлена ожидает исполнения иле программа сброшена ожидает установки индикация может проходить серией вспышек 2- сброшен ,3 раза программа установлена ну иле что то в таком духе . касаемо записи в память то лучше отдельная кнопка , выбрал значение визуально проверил допустим по светодиоду иле по биперу нажал сохранить , нужно изменить жмем рессет выставляем новое значение и подтверждаем сохранением . Касаемо питания порог нужно установить в минимально допустимое питание мк для стабильной работы , а тут все зависит от частоты работы мк чем она ниже тем меньше нижний порог минимальное значение 1,8v по моему . 1 - Вход считывания импульсов , 2 - выход на нагрузку , 3 - вход установки параметров счета , 4 - вход запись параметров , 5 выход индикации выбранного параметра , 6 – рессет , 7 – вход сигнала для запуска счетчика ( поступление разрешающего сигнала активирует процесс счета , пропадание сигнала должно переводить исполнение программы в статус ожидания ) , ну а все что осталось на индикацию , так же если получится второй вход для команды исполнения аналогичный ( № 7 ) но не иле иле а ожидание статуса на обоих входах независимо друг от друга . сейчас заморочился сигналами энкодера разберусь с конкретно полученными числами в соответствии с градусами тогда буду точно знать подойдут ли параметры с прибавление по 4 . а за одо с макетирую работу в протеусе .
Evgeny555
 
Сообщения: 12
Зарегистрирован: 11 июн 2018, 18:40

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Прохожий » 16 июн 2018, 23:18

Тыркая разрешение ввода данных одновременно отключаем вход от энкодера и нагрузку. При этом обнуляем счётчик от энкодера. Далее тыркая ввод данных осуществляем движение по пяти порогам, на том, который нравится тыркаем запись Если хочется перепроверить, тыркая ввод данных смотрим на каком светодиоде порога загорится светодиод памяти Где совпало на том и записалось :) Далее тыркаем разрешение ввода данных тем самым обнуляя счётчик от энкодера, разрешаем счёт от энкодера подключив вход и нагрузку.
Важно!!! Схему собирал думая только о самом алгоритме. Где высокий уровень нужен, где низкий тебе самому допиливать логическими НЕ , так же необходимо установить первоначальные значения на триггерах. Так же в константах равенств, поставить нужные тебе значения. Последнее равенство сбрасывает счётчик энкодера в ноль и круг начинается заново. В этом варианте константы меняются только при прошивке МК.
Часть схемы данные из памяти и сброс по питанию скорее всего можно исключить. Хотя сброс при подаче питания вроде не помешает, потому, что без него данные из памяти могут не установиться (я не проверял, посмотришь - скажешь)
Погоняй в протеусе, посмотри сам. Более сложный вариант, что бы в реал-тайме видеть, что в памяти потребует ещё 5 ног (пинов) контроллера и 5 светодиодов. Хотя совпадение светодиода памяти и нагрузка тоже наглядно.
Project555_2.hc
(18.2 КБ) Скачиваний: 37
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 363
Зарегистрирован: 21 май 2016, 06:23

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Evgeny555 » 17 июн 2018, 11:59

Спасибо за наглядный пример построения !!! Для меня это важно так как правильное начало это уже залог хорошего окончания !!! Далее буду корректировать сам а за одно и смотреть как и что меняется при коррекции , так гораздо легче понять что и на чем построено и как работает алгоритм . Спасибо что не пожалели времени !!! Со своим энкодером закончу , тогда смоделирую в протеусе а там по ходу отпишусь если что то не пойму как настроить .
Evgeny555
 
Сообщения: 12
Зарегистрирован: 11 июн 2018, 18:40

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Прохожий » 17 июн 2018, 13:33

Да не за что :) Это только один из возможных вариантов. Например, незначительно усложнив проект можно на одной кнопке сделать: коротким нажатием переход в режим ввода, а длинным запись и сэкономить один пин (ногу).
Ты как сделаешь всё, выложи готовый проект на этот форум как пример, с пояснениями. Тем кто придёт за тобой, будет легче ориентироваться, а на форуме накопятся готовые решения.
Очень рекомендую в протеусе гонять блоки по отдельности, что бы разобраться как и что работает :) То есть на элементарных задачах попрактиковаться.
По поводу твоего энкодера. На контроллере можно спокойно перевести импульсы в градусы и вытолкнуть их на дисплей. У тебя случайно не серводвигатель в проекте? :)
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 363
Зарегистрирован: 21 май 2016, 06:23

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Evgeny555 » 17 июн 2018, 16:10

весь механизм уже построен на серво двигателях с контроллерами ! к нему требуется внешнее устройство ! усложнять нет желания простым решением снять данные с того что есть также задействовать сигналы которые имеются что бы запустить внешнее устройство ! По сути для этого и обычного таймера достаточно ! так как задача стоит в управлении магнитным тормозом и дополнительным приводом ! суть в том что тормоз должен удерживать валы некоторое время соответствующее 1му иле 2м оборотам вала а потом должен отключится до отключения главного привода и так каждый раз после старта главного привода . Пока не получается просчитать на сколько вал должен провернуться что бы прошла команда на отключения тормоза ! Возможно получится определить градусное значение и тогда можно будет все переработать !
Evgeny555
 
Сообщения: 12
Зарегистрирован: 11 июн 2018, 18:40

Re: Помогите пожалуйста в вопросе построения прошивки ATTYNY

Сообщение Прохожий » 17 июн 2018, 16:50

Я думал, что у тебя реально стоит задача высчитать градусы с точностью как на одном шаге шагового двигателя. Посчитай дырки на энкодере и высчитай количество импульсов на один оборот :) Хотя в контроллере можно и напрямую всё сделать. Допустим на один оборот энкодер выдаёт 256 импульсов, значит в контроллер загоняем импульсы, а не обороты :) Тупо два оборота - это 512 импульсов. Если нужно точно подгадать отлипание тормоза, пока реле сработает и прочее, то забиваем 500 импульсов. А для такого решения более точной синхронизации, нужно делать уже с индикатором и выставлять данные по месту. Ну а если уж совсем-совсем точно, то схема будет более продвинутая, энкодер на двух валах, а синхронизацию делать изменением усилия на электромагнитном тормозе :)
"Attiny 85 из Atmega328P сделать совсем не сложно, достаточно просто откусить лишние ноги!"
Прохожий
 
Сообщения: 363
Зарегистрирован: 21 май 2016, 06:23

Пред.След.

Вернуться в Микроконтроллеры AVR

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron