Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Аппаратная платформа Arduino для автоматизации наших процессов

Форум самогонщиков Автоматика
1 ... 57 58 59 60 61 62 63 64 60
dee Научный сотрудник Минск 6.5K 1.7K
Отв.1180  08 Февр. 16, 15:54
надеюсь, кому-нибудь пригодиться

подключение енкодера KY-040_2 по одному проводу на аналоговый вход

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

Скрытый текст
byte EncoderRead;
byte EncoderState;
byte EncoderLastState;
byte EncoderCode;
byte EncoderRot;

//демонстрация
byte up;
byte dw;
byte sw;

void setup() {
 Serial.begin(9600);
}

void loop() {
 
 EncoderRead = analogRead(A7) / 4; // 127 (148) 170 (180) 191 (223) 255
 if (EncoderRead > 25) { //если что то нажато:
   if (EncoderRead < 148) {EncoderState = 1;} //замкнут первый резистор
   if (EncoderRead >= 148 && EncoderRead < 180) {EncoderState = 2;} //замкнут второй резистор
   if (EncoderRead >= 180 && EncoderRead < 223) {EncoderState = 3;} //замкнуто оба резистора
   if (EncoderRead >= 223) {EncoderState = 4;} //нажата кнопка
   
   if (EncoderState != EncoderLastState) { //если возникло новое состояние
     EncoderCode = EncoderCode * 10 + EncoderState; //записываем в EncoderCode последовательность возникновения EncoderState
     if (EncoderCode == 13 || EncoderCode == 32) { // вычисляется последовательность 132 или 231
       EncoderRot = 1;
       EncoderCode = 0;
     }
     if (EncoderCode == 23 || EncoderCode == 31) {
       EncoderRot = 2;
       EncoderCode = 0;
     }      
     if (EncoderCode == 4) { //если нажата кнопка
       EncoderRot = 3;
       EncoderCode = 0;
     }
     if (EncoderCode > 33) { //если какой то глюк
       EncoderRot = 0;
       EncoderCode = 0;
     }      
     EncoderLastState = EncoderState;
   }
 }
 else { //обнуляем переменные
   EncoderCode = 0;
   EncoderState = 0;
   EncoderLastState = 0;
 }  
 

//демонстрация:

 if (EncoderRot == 1) {
   EncoderRot = 0;
   up++;  
 }

 if (EncoderRot == 2) {
   EncoderRot = 0;
   dw++;  
 }
 
 if (EncoderRot == 3) {
   EncoderRot = 0;
   sw++;  
 }

   Serial.print("UP=");
   Serial.print(up);
   Serial.print(" DOWN=");
   Serial.print(dw);
   Serial.print(" SWITCH=");  
   Serial.print(sw);
   Serial.println("");
   
}

как это работает: когда происходит "щелчок" то енкодер замыкает на землю сначала один вывод (CLK или DT), потом оба, потом первый отключается а остается второй (DT или CLK), потом выключаются и второй. параллельно одному из "встроенных" резисторов подпаивается еще один на 10к, общее становиться 5к (можно поменять smd но кому нужен лишний геммор ?) на GND енкодера подпаиватся еще один один резюк на 10к, который дает делитель напряжения. если не подпаивать первый то направления вращения не определить а так через analogRead() понятно куда вращается енкодер: сначала возникает одно напряжение (10к--10к), потом второе(10к--(10к+5к), потом третье (10к--5к) . в зависимости от порядка возникновения понятно куда вал вращается. если возникает максимум - Vcc то нажата кнопка.

похожим способом т.е на один аналоговый вход при помощи резисторов можно подключить 12 разрядную клавиатуру (как у кнопочных телефонов)
KY-040_2 схема енкодера доработка.JPG
KY-040_2 схема енкодера доработка.JPG Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
2016203182423.jpg
2016203182423.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.

Encoder2analog.rar 812.0 б
dongrigorio Специалист Екатеринбург 116 19
Отв.1181  25 Февр. 16, 20:54
Добрый день, коллеги!

Применил Ардуино для реализации регулятора мощности тэнов в кубе, с использованием алгоритма Брезенхема.
Для определения перехода напряжения через ноль собрал схему из статьиhttp://www.rlocman.ru/shem/schematics.html?di=125698
Детектор нуля прицепил к прерыванию в Ардуино.
Требуемая мощность устанавливается енкодером, и по таймауту пересчитывается в таблицу включений симистора
в течение 1 секунды.
Например,  мощности 4% соответствует пропуск в нагрузку 2-х периодов питающего напряжения.

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

2016-02-2521-49-03.jpg
2016-02-2521-49-03. Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.

akip0007.jpg Аппаратная платформа Arduino для автоматизации наших процессов
akip0007.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.

2016-02-2521-49-03.JPG
2016-02-2521-49-03.JPG Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
AKIP0007.jpg
AKIP0007.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
droid Бакалавр луганск 95 13
Отв.1182  26 Февр. 16, 21:10
может кому пригодится
от кнопок отказался использую джойстик  намного проще и удобней
http://ru.aliexpress.com/...c1-04b1f4d5ad86

Добавлено через 2мин.:

еще было ардуина глючила периодически че тока не пробовал оказалось что изза  реле(http://ru.aliexpress.com/...97-40ed4236dd0f)

перешол на твердотельные стало все гут
max506 Специалист Москва 197 181
Отв.1183  24 Авг. 16, 16:36
А ну у меня Мега дает командыsebra, 07 Февр. 16, 16:22
Подскажи, а зачем ты выделил регулятор мощности в отдельный контроллер?
Отличается ли твой алгоритм регулирования от того, что реализовано в прошивке от msg31 (ветка [Доступная автоматика на Ардуино Мега 2560.])?
sebra Специалист Республика Коми 146 85
Отв.1184  24 Авг. 16, 16:52, через 16 мин
Подскажи, а зачем ты выделил регулятор мощности в отдельный контроллер?max506, 24 Авг. 16, 16:36

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

Отличается ли твой алгоритм регулирования от того, что реализовано в прошивке от msg31max506, 24 Авг. 16, 16:36

Алгоритм тот же, программа написана с нуля. Зачем так заморачиваться? - просто хотелось версию под свои потребности.
max506 Специалист Москва 197 181
Отв.1185  24 Авг. 16, 16:57, через 6 мин
У меня фазовый регулятор мощности для которого критично время выполнения, в основной программе его использовать - постоянно производить оптимизацию скорости кодаsebra, 24 Авг. 16, 16:52
Т.е. все-таки правильный путь отдавать управление мощностью отдельному устройству (пусть даже РМ-2)?
А как в твоей автоиматике реализована защита клапанов от перегрева?
sebra Специалист Республика Коми 146 85
Отв.1186  24 Авг. 16, 16:59, через 3 мин
Т.е. все-таки правильный путь отдавать управление мощностью отдельному устройству (пусть даже РМ-2)?max506, 24 Авг. 16, 16:57

Если рассматривать мой случай, то правильней делать так. Как будет в другом варианте не подскажу.

А как в твоей автоиматике реализована защита клапанов от перегрева?max506, 24 Авг. 16, 16:57

Никак, клапан на 12В и все.
Санек80 Студент Волгоград 46 10
Отв.1187  19 Сент. 16, 13:07
помогите запустить экран,он у меня просто светится белым и все уже перепробывал все примеры из arduino-1.6.11.
HTB1JGiUHpXXXXctXpXXq6xXFXXXH.jpg
HTB1JGiUHpXXXXctXpXXq6xXFXXXH.jpg Аппаратная платформа Arduino для автоматизации наших процессов. Автоматика.
woddy Доцент Новосиб 1.3K 489
Отв.1188  19 Сент. 16, 14:04, через 58 мин
обычно производитель дисплея предоставляет документацию и библиотеки. спроси у продавца
dee Научный сотрудник Минск 6.5K 1.7K
Отв.1189  19 Сент. 16, 15:57
экраны отличаются микросхемой-контроллером-драйвером, под них пишут бибилотеки. бывает так, что экраны внешне одинаковые а микросхемы внутири отличаются
pelecis Специалист Latvia-Germany 120 37
Отв.1190  21 Сент. 16, 10:06
Санек80, в личку те кинул подсказок. Помогло?
Nivlad Бакалавр Звени-город 73 14
Отв.1191  26 Сент. 16, 16:47
Алгоритм тот же, программа написана с нуля. Зачем так заморачиваться? - просто хотелось версию под свои потребности.sebra, 24 Авг. 16, 16:52
тоже планирую отдельный блок сделать.
где можно посмотреть схемотехнику и код?
sebra Специалист Республика Коми 146 85
Отв.1192  26 Сент. 16, 19:33
где можно посмотреть схемотехнику и код?Nivlad, 26 Сент. 16, 16:47

Не выкладывал, и честно говоря не планирую. Ветки msg31 думаю хватит с лихвой =)  Блок питания как отдельное устройство тут [Регулятор напряжения и тока на Arduino Pro Mini]
Kasperys Доцент Санкт-Петербург 1.8K 667
Отв.1193  14 Окт. 16, 10:23
Тут гуляя по просторам сети налетел на описание схемы Адруино со встроенным тачдисплеем и модулем ви-фи))

может кому пригодиться:
http://www.4dsystems.com.au/product/4Duino_24/
lohmag Студент Москва 47 10
Отв.1194  03 Нояб. 16, 13:45
посоветуйте какой электромагнитный клапан взять для управления с арудины с aliexpress?  Если шланг силиконовый 6х1.5мм
max506 Специалист Москва 197 181
Отв.1195  03 Нояб. 16, 15:01
посоветуйте какой электромагнитный клапан взять для управления с арудины с aliexpress?lohmag, 03 Нояб. 16, 13:45
Зачем тебе с Али ждать? Возьми в Москве вот такой на 12 вольт. Отлично работает.
http://valvesale.ru/...d_valve-SP61355
Штуцера к нему вот тут возьми
http://mir-elektro.ru/...-jg-10-0-4.html
lohmag Студент Москва 47 10
Отв.1196  03 Нояб. 16, 17:58
Зачем тебе с Али ждать? Возьми в Москве вот такой на 12 вольт. Отлично работает.
http://valvesale.ru/...d_valve-SP61355
Штуцера к нему вот тут возьми
http://mir-elektro.ru/...-jg-10-0-4.htmlmax506, 03 Нояб. 16, 15:01
Да я уже обленился вконец. ездить весь день по москве собирать из разных мест.. а так заказал на почту и ждешь себе, а почта то она совсем рядом у меня.
capsolo Профессор Зелик 5.3K 1.6K
Отв.1197  11 Нояб. 16, 23:18
Ребята хэлп! Прорабатываю архитектуру своей системы. Бэкенд на ардуине. Делает все и торчит наружу серийным интерфейсом. Фронтенд на одноплатнике с линухами. Тут есть все: апач мускул пхп. На нем интерфейс системы. Не могу понять как реализовать сервис, который бы слушал ком-порт, клал показания с бэкенда в мускул и торчал бы наружу через к примеру REST API, чтобы фронтенд мог бы спрашивать его о текущих значениях параметров и давать через него команды бэкенду. Мне что писать с нуля демона, который был бы альтернативным веб сервером, слушал бы порт и парсил запросы или это можно как-то менее неуклюже и проще сделать? Может какой-то веб сервис прямо на апаче завесить? Можно ли на него поставить код, который бы крутился без обращения к нему пользователя?
slony Магистр Сочи 246 63
Отв.1198  12 Нояб. 16, 07:45
А слушать порт постоянно обязательно ? Дернул бэкенд - получил ответ (или не получил). Аварийные ситуации все равно ардуина сама должна обрабатывать. Такую логику хоть на баше реализовать можно.
capsolo, а одноплатник какой ? Типа  Orange Pi ? И почему именно ардуино бекенд ?
capsolo Профессор Зелик 5.3K 1.6K
Отв.1199  12 Нояб. 16, 09:19
slony, одноплатник типа апельсинки, верно. На самом деле он может быть любой с серийником. На ардуиновском бэкенде не настаиваю, просто на ней скорость разработки высока. Я ничего особенного от нее не хочу, так что вполне подходит. Общение происходит в категориях: "свари-ка ты мне дружок пивка на таких то паузах!" Ну бэкенд и варит, рассказывая время от времени что как. Я так подумал можно и дергать, однако так можно аварию прошляпить. Лучше слушать.