Главная › Форумы › Конструкторское бюро › Автоматизация › Хотелось бы совета
-
АвторСообщения
-
05.12.2019 в 23:06 #54584
Совершенно
пьяныйDark, думал и вот что у него получилось :5 датчиков температуры
10 клапанов
2 управления тэнами
3 мотора
Минимальная хотелка в автоматике.
Температура (бак, царга, узел отбора, охлаждающая жидкость, температура продукта)
Клапана (подача воды(или мотор один насоса) открытие отбора, 6 отбор по емкостям, верхний и Нижний отбор)
Тэны(один разгонный, и один основной)
Моторы (подача воды охлаждения, мешалка, насос сусла)
Весы под вопросом.
Может что пропустил
Да! Я с виду шут, но в душе король, и ни кто как я не может...
02.03.2020 в 01:42 #60709Чтобы не плодить тем. Может кто сталкивался с подключением нескольких esp по шине i2c, c разным количеством подключённых модулей i2c на каждой. Вопрос возможно ли организовать две шины i2c для каждого устройства, или они все будут весеть на одной?
Да! Я с виду шут, но в душе король, и ни кто как я не может...
03.04.2020 в 07:51 #62819На квадратной шине должно находиться ОДНО мастер устройство и несколько подчиненных. При использовании аппаратной шины I2C, ESP может работать ТОЛЬКО в режиме мастер. Поэтому в подчиненных устройствах необходимо будет реализовать программный I2C.
Опять же никто не запрещает, используя программный протокол, назначать под него имеющиеся пины.
16.10.2020 в 10:14 #73641Трезвый ум творит всякую чепуху, вот что получилось, и есть мысля что этот код можно чуток оптимизировать:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <iarduino_I2C_connect.h>
//#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C lcd(0x27,20,4);
iarduino_I2C_connect I2C2;
int Tem_pin[8]={1, 2,3,4,5,6,7,8}; //номера пинов к которым подключенны датчики
int Temp_dal[8]={0,0,0,0,0,0,0,0};
int work_on = 0;
int work_rez = 0;// пока резерв
OneWire mt_ds_1(Tem_pin[0]);
OneWire mt_ds_2(Tem_pin[1]);
OneWire mt_ds_3(Tem_pin[2]);
OneWire mt_ds_4(Tem_pin[3]);// резервOneWire dt_ds_1(Tem_pin[4]);
OneWire dt_ds_2(Tem_pin[5]);
OneWire dt_ds_3(Tem_pin[6]);
OneWire dt_ds_4(Tem_pin[7]);// резервDallasTemperature sensor_main1(&mt_ds_1);
DallasTemperature sensor_main2(&mt_ds_2);
DallasTemperature sensor_main3(&mt_ds_3);
DallasTemperature sensor_main4(&mt_ds_4);// резервDallasTemperature sensor_safuty1(&dt_ds_1);
DallasTemperature sensor_safuty2(&dt_ds_2);
DallasTemperature sensor_safuty3(&dt_ds_3);
DallasTemperature sensor_safuty4(&dt_ds_4);// резервbyte Temp_Massive[38];
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Wire.begin(0x02);
I2C2.begin(Temp_Massive);
sensor_main1.begin();
sensor_main2.begin();
sensor_main3.begin();
sensor_main4.begin();
sensor_safuty1.begin();
sensor_safuty2.begin();
sensor_safuty3.begin();
sensor_safuty4.begin();
}void loop() {
// put your main code here, to run repeatedly:
switch (work_on){
case 0:{
work_on = Temp_Massive[0]<<8; // Считываем указатель начала работы
work_on += Temp_Massive[1];
work_rez = Temp_Massive[2]<<8; // Считываем указатель режим работы – резерв – или другое
work_rez += Temp_Massive[3];
break;
}
case 1:{
int t=0;
for (int i=4;i<20;i=i+2){
Temp_dal[t] = Temp_Massive<<8; // Считываем используемые датчики
Temp_dal[t] += Temp_Massive;
if (Temp_dal[t]=1) { // Если датчик используется то запрашиваем температуру
switch (t){
case 0:{
sensor_main1.requestTemperatures();
break;
}
case 1:{
sensor_main2.requestTemperatures();
break;
}
case 2:{
sensor_main3.requestTemperatures();
break;
}
case 3:{
sensor_main4.requestTemperatures();
break;
}
case 4:{
sensor_safuty1.requestTemperatures();
break;
}
case 5:{
sensor_safuty2.requestTemperatures();
break;
}
case 6:{
sensor_safuty3.requestTemperatures();
break;
}
case 7:{
sensor_safuty4.requestTemperatures();
break;
}
}
}
t==t++;
}
float temp_temp;
for(int i=0;i<8;i++){
if (Temp_dal[t]=1) { // Если датчик используется то запрашиваем температуру
switch (t){
case 0:{
temp_temp == sensor_main1.getTempCByIndex(0);
t== temp_temp*100;
Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
Temp_Massive[21+(i*2)] = t;
t==0;
break;
}
case 1:{
temp_temp == sensor_main2.getTempCByIndex(0);
t== temp_temp*100;
Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
Temp_Massive[21+(i*2)] = t;
t==0;
break;
}
case 2:{
temp_temp == sensor_main3.getTempCByIndex(0);
t== temp_temp*100;
Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
Temp_Massive[21+(i*2)] = t;
t==0;
break;
}
case 3:{
temp_temp == sensor_main4.getTempCByIndex(0);
t== temp_temp*100;
Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
Temp_Massive[21+(i*2)] = t;
t==0;
break;
}
case 4:{
temp_temp == sensor_safuty1.getTempCByIndex(0);
t== temp_temp*100;
Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
Temp_Massive[21+(i*2)] = t;
t==0;
break;
}
case 5:{
temp_temp == sensor_safuty2.getTempCByIndex(0);
t== temp_temp*100;
Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
Temp_Massive[21+(i*2)] = t;
t==0;
break;
}
case 6:{
temp_temp == sensor_safuty3.getTempCByIndex(0);
t== temp_temp*100;
Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
Temp_Massive[21+(i*2)] = t;
t==0;
break;
}
case 7:{
temp_temp == sensor_safuty4.getTempCByIndex(0);
t== temp_temp*100;
Temp_Massive[20+(i*2)] = t>>8; // отправляем данные c датчика температуры
Temp_Massive[21+(i*2)] = t;
t==0;
break;
}
}
}
}
Temp_Massive[36] = work_on>>8; // отправляем данные что приступили к работе
Temp_Massive[37] = work_on;
break;
}
}
}Да! Я с виду шут, но в душе король, и ни кто как я не может...
21.10.2020 в 09:43 #73895Спасибо Sergey_r, что не вмешивались в процесс, Dark, пьяный, но еще большое содержание крови в алкоголе.
Обидно, ошибку на самом видном месте и ни кто не сказал, маленькая подсказка про экранчик, ни кто не поинтересовался, а зачем тебе Dark, там такая приблуда, ну да ладно.
Описание, модуль контроля температуры, при установки экрана 4х20, и парочки изменений, получаем простой индикатор температуры на 8 точек. В автоматике будет всегда с номером 0x01 ошибся, с 0x02 пойдет модуль отбора на 6 клапанов и 2 крана, управление тэном будет скорее всего в самой простой конфигурации аналогично управлению тэном от Sergey_r, только управление будет по i2c и номер будет 0x03, контроль за безопасностью модуль с номером 0x04, весы с номером 0x05 , модуль охлаждения будет или такой-же как и модуль отбора но уже с номером 0x06 или просто будет использовать часть ресурсов модуля отбора, модуль управления всякими двигателями будет с номером 0x07, возможно в будущем, часть модулей можно будет устанавливать парами.
Ну и самое не нужное модуль с номером 0x08, будет отвечать за вэб и всякие другие приблуды отображения.
На сим Dark, уходит в
запойнирвану.Да! Я с виду шут, но в душе король, и ни кто как я не может...
23.10.2020 в 10:51 #73993А теперь не много серьезного, после долгого отсутствия, замены нескольких компьютеров, встал вопрос о восстановление, схем, прошивок элементов лакибокса, центральный блок, управление тэном, весы и так далее, и Dark, не может столько пить, может сделать отдельную тему где размещать только схемы и прошивки, а все обсуждения удалять, а то не хочется писать люди подскажите где искать …. и получать ответ типа тебе чего лень три ветки сообщений посмотреть, или этот вопрос уже обсуждали три страницы назад.
Да! Я с виду шут, но в душе король, и ни кто как я не может...
27.11.2020 в 20:29 #75782Черт, на каркал, подскажите как прошивать Ардуино нано, а то уно прошивается спокойно а нано выдаёт ошибки
Да! Я с виду шут, но в душе король, и ни кто как я не может...
27.11.2020 в 20:50 #75783Черт, на каркал, подскажите как прошивать Ардуино нано, а то уно прошивается спокойно а нано выдаёт ошибки
Так у них 2 типа бутлоадера встречается, в среде Ардуино можно из этих 2-х вариантов выбирать. Хотя конечно лучше лог ругачки показал бы.
27.11.2020 в 21:29 #75785Примерно так.
Второй файл с фоткой не нрузиться
Вложения:
Вы должны войти для просмотра вложений.Да! Я с виду шут, но в душе король, и ни кто как я не может...
28.11.2020 в 10:46 #7580828.11.2020 в 11:08 #75809Спасибо за помощь, поменял усб порт и выбрал старый загрузчик и все прошивается.
Да! Я с виду шут, но в душе король, и ни кто как я не может...
28.11.2020 в 15:07 #75826Честно говоря, не понимаю как автоматизировать процесс. Куб нагревается, царга нагревается, срабатывает клапан воды, далее стабилизация, после этого открывается кран, начинается отбор голов. Почему после отбора голов в автоматическом режиме невозможно отобрать в другую емкость тело используя кран? Далее отжать хвосты в третью ёмкость. И только потом все процессы должны быть завершены, как мне кажется. Или я чего-то не понимаю? Интересует только отбор по пару с использованием роботизированного крана и клапанов отбора голов и тела
07.12.2020 в 09:50 #76287Вопрос для умников, есть такой код:
void test(){
i=k; (допустим k=1)
if (i=0) {} else{}
if (i=1) {} else{}
if (i=2) {} else{}
}
после этого кода получаем i=2, и к=1; внутри i и k ни где не используются, если if поменять местами, то i будет равно последнему условию в if, на всякий случай прошивка 72% переменные 71%. Ваше мнение? Sergey_r, не вмешиваемся
Да! Я с виду шут, но в душе король, и ни кто как я не может...
07.12.2020 в 14:19 #76308В СИ один символ “=” это операция присвоения значения. Поэтому i получает значение, присвоенное в последней строчке.
В твоём случае нуно писать if (i==0) {}
Посмотри в сторону case. Несмотря на то, что он тоже построен на условиях, мне кажется выходной объем меньше.
Эта типа тестирования?
Если внутри подпрограммы переменные i и k не модифицируются, нет необходимости i=k. Сократится число переменных. А если такое практикуется повсеместно – ещё высвободится память.
07.12.2020 в 16:20 #76325Ищу того кто будет оптимизировать код 🙂
Да! Я с виду шут, но в душе король, и ни кто как я не может...
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.