Посудомоечная машина

m-zzz
Offline
Зарегистрирован: 30.05.2015

ЕвгенийП пишет:
Нет там и реле для включения нагрузок, кстати.

Смелое утверждение... Но вам виднее, вы специалист в данной теме.

Не могли бы вы зайти по этой ссылке и прокомментировать что там на всех фотографиях за детали такие, неизвестные мне, установлены в больших количествах на платах ЭБУ от посудомоек?

Если конечно это не реле, которых "там нет".

Просто они мне ОЧЕНЬ реле напоминают.. Прямо теряюсь.

Если не затруднит, помогите опознать детали..

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

Не скажу , что видел вообще все контроллеры, но в том примерно десятке, что довелось поковыряться, в платах ЭБУ не редкостью были и реле и симисторы (разные), а вот моськи наблюдал только в одном экземпляре..

Опять же, позанудствую )) если от пускового импульса моська и спасет, то от импульса выключения то каким боком? 

Только снабберная цепочка ослабит выброс...

 
v258
Offline
Зарегистрирован: 25.05.2020

m-zzz пишет:

Опять же, позанудствую )) если от пускового импульса моська и спасет, то от импульса выключения то каким боком? 

Только снабберная цепочка ослабит выброс...

Типовая схема включения

Цепочка R9-C3 ни о чем не говорит? ))

m-zzz
Offline
Зарегистрирован: 30.05.2015

Типовую схему вижу. Снабберные цепочки в ЭБУ я видел очень часто, а вот моськи как раз не очень..

 Это от какой именно модели ПММ схема, мы же про ПММ вроде бы писали? 

Или это вы тупо типовушку из и-нета дернули? И как оно кореллируется с обсуждаемым тут?

 

m-zzz
Offline
Зарегистрирован: 30.05.2015

b707 пишет:
я сэкономил 8 тыс рублей ".

Опять ваши влажные фантазии. Прямо прикипела вам эта цифирка...

Цитатку потрудитесь привести, где писали про 8 тыров..

Или говорить о сэкономленной двадцатке не так красиво выглядит?)))

b707
Онлайн
Зарегистрирован: 26.05.2017

m-zzz вы бы тогда поделились схемой управления симистором без моськи, типичной для тех "десяти ЭБУ от ПММ", что вы видели

m-zzz
Offline
Зарегистрирован: 30.05.2015

b707 пишет:
Подход чисто Гайверовский.

Спасибо что с Гитлером не сравнили))

b707 пишет:
Вывалить проект, похвалится, собрать лайки - а то что все, кто хотел повторить - получают кучу гемора - это за кадром.

Вы ж изначально вроде обиделись как раз на не "вываленный" проект? Вы уж внутри себя определитесь, как правильно)))

И не выложили как раз, чтоб бездумно-повторившие не поимели в результате гемору с проектом.

b707 пишет:
Мне обидно... для меня в творчестве важен процесс, а не результат.

А некоторым вот не шашечки, а ехать..

v258
Offline
Зарегистрирован: 25.05.2020

m-zzz пишет:

Типовую схему вижу. Снабберные цепочки в ЭБУ я видел очень часто, а вот моськи как раз не очень..

 Это от какой именно модели ПММ схема, мы же про ПММ вроде бы писали? 

Или это вы тупо типовушку из и-нета дернули? И как оно кореллируется с обсуждаемым тут?

Вообще-то здесь идет речь по ПММ без мозгов. Какая разница, где и чего там вы видели. Вы много видели мозгов ПММ на ардуино?

m-zzz
Offline
Зарегистрирован: 30.05.2015

b707 пишет:
поделились схемой управления симистором без моськи, типичной

Вот прямо именно те, что делал я ессно не запоминал, ибо без особой надобности.

Но в схемах , что в сервис-мануалах от производителя, найти труда не составило.

Даже удивлен, что у вас это не получилось...

Вот, пожалуйста, именно управление симисторами без моськи. В полной схеме таких семь каналов..

Если очень надо, могу дать ссыль на саму схему от Самсунга..

 У них применена KID35003, но чаще встречаются схемы с ULN2x03

 

b707
Онлайн
Зарегистрирован: 26.05.2017

Слушайте, вы троллите что ли? У вас тут схема управления постоянным током. Понятно что ей зеро-кросс не нужен. Только ведь для коммутации АС-потребителей она не подходит. А в большинстве ПММ и сигналок именно такие.

К чему вы ее вообще запостили?

 

m-zzz
Offline
Зарегистрирован: 30.05.2015

b707 пишет:
У вас тут схема управления постоянным током.

Серьезно? )))) разуй глаза и посмотри на полную схему, от Самсунга!! Найдешь в коммутируемой цепи постоянный ток, не забудь сообщить где именно нашел, специалист!))

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

Так вы говоришь троллю тебя, да? ))) Мож это не я тут главный тролль?))

b707
Онлайн
Зарегистрирован: 26.05.2017

хмм... 12в, но переменка... придумают же

Тогда у них должен быть где-то зеро-кросс. При семи синфазных каналах от одного источника логично иметь один общий ZC.  На схеме не вижу. Может он у них программный? Но, как мне кажется, без него вряд ли стали бы делать

Green
Онлайн
Зарегистрирован: 01.10.2015

b707 пишет:

Тогда у них должен быть где-то зеро-кросс. 


Скорее всего сразу с моста - самый верхний провод.

uragan
Offline
Зарегистрирован: 23.02.2015

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

DenElektro
Offline
Зарегистрирован: 30.12.2020

uragan пишет:

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

Поделитесь проектом, если не секрет.

uragan
Offline
Зарегистрирован: 23.02.2015

DenElektro пишет:

uragan пишет:

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

Поделитесь проектом, если не секрет.

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

DenElektro
Offline
Зарегистрирован: 30.12.2020

спасибо, буду благодарен.

uragan
Offline
Зарегистрирован: 23.02.2015
//Программа посудомойки 3.02.21 
 #include <avr/wdt.h>
#include <cstdlib>
#include <EEPROM.h>
#include <SoftwareSerial.h>
const int sol =10;     //клапан соли 
const int nasos =8;     //насос 
const int ten =4;    //ТЭН
const int pompa= 6;     //помпа
const int uroven =9;//прессостат
const int porosok =7;// крышка моющего
const int klapan=5;// клапан
const int pint =A0;//температура
const int Pin3 =2;//
const int pinalarm =2;//кнопка выкл аварии
const int pinled= 3;// включение диода
int n[12]={ 78, 105, 145, 193, 260, 340, 420, 525, 600,  950}; //массив для определения температуры 
int t[12]={1100, 1000, 900, 800, 700, 600, 500, 400, 350,  0}; //терморезистор 10 кОм и 4.7 кОм в делител
unsigned long tpomp=45000;// длительность откачки
//unsigned long tklapan=600000;// предельная длителность подчи воды
unsigned long tznasos=600000;//замочка 1 600000
unsigned long tnasos1=2400000;//время мойки 
unsigned long tnasos2=600000;//первое полоскание
unsigned long tnasos3=600000;// второе полоскание
unsigned long pausa=60000;//пауза перед откачкой
unsigned long deltzam=30000;//интервал замера температуры
unsigned long tpor=180000;//пауза для открытия порошка и ополаскивателя
unsigned long tnagr=1200000;//предельное время включеня тэна
unsigned long tsol=210000;//время открытия солевого клапана
unsigned long previousMillis = 0; //переменная для текущего времени
unsigned long previousMillis1 = 0; //переменная для текущего времени замера температуры
unsigned long deltnabor=240000;//ограничение по времени набора воды
unsigned long tafter=20000;//время дополнительного набора воды
const int ustt1=60;//уставка температуры мойки
const int ustt2=60;//уставка температуры полоскания
int flag5, tkomn, value=0, flag1=0, flag2=0, flag4 = 0, flagsol=0, flag7; // 

void setup() 
{ 
 // инициирование собаки 
 // uint8_t mcusr_state = MCUSR;
//MCUSR = 0; 
 // wdt_disable(); // бесполезная строка до которой не доходит выполнение при bootloop
  //wdt_enable (WDTO_8S);// срабатывание собаки через 8 сек
  Serial.begin(9600); // инициализация порта монитора на 9600 bps:
  analogReference(DEFAULT);// внутреннее опорноеи 5 В
  tkomn=analogRead(pint);//холостой замер
    pinMode(pint, INPUT);
     pinMode(uroven, INPUT);
     digitalWrite (pinalarm, HIGH);
  pinMode(nasos, OUTPUT);
  pinMode(ten, OUTPUT); 
  pinMode(pompa, OUTPUT);
  pinMode(porosok, OUTPUT);
  pinMode(klapan, OUTPUT);
 pinMode(sol, OUTPUT); 
  digitalWrite(nasos, LOW);
  digitalWrite(ten, LOW); 
  digitalWrite(pompa,LOW);
 digitalWrite(porosok, LOW); 
  digitalWrite(klapan, LOW); 
  digitalWrite(sol, LOW);

   pinMode(pinled, OUTPUT);
    digitalWrite (pinled, HIGH);
  
      // wdt_reset();
      value = EEPROM_int_read(4);
      Serial.println(value);
      delay(1000);
      //digitalWrite (pinled, LOW);
       value = EEPROM_int_read(2);
       if(value==0){//если авария
                     alarm();
                    }
      
     
       flag5=0;
       EEPROM_int_write(2, flag5);
       
       digitalWrite (pinled, HIGH);
       zamert(ustt1);//проверка датчика температуры
         if(digitalRead(uroven)==0)//               если вода внутри
                                   {alarm();} 
}


void loop() 
{ 
//wdt_reset();
 delay(20000); // пауза для подключения монитора
value = EEPROM_int_read(4);
      Serial.println(value);
      delay(1000);
    flag7=100;
  Serial.println(flag7);
   delay(1000);
    otkaska();//откачка
     flag7=21;
   EEPROM_int_write(4, flag7);
  Serial.println(flag7);
  delay(1000);  
    nabor();// набор воды
   flag7=20;
   EEPROM_int_write(4, flag7);
  Serial.println(flag7);
   delay(1000);
    otkaska();//откачка
    flag7=1;
  Serial.println(flag7);
   delay(1000);
   EEPROM_int_write(4, flag7); 
   delay(1000);
   nabor();// набор воды
   flag7=2;
   EEPROM_int_write(4, flag7);
  Serial.println(flag7);
   delay(1000);
    digitalWrite(klapan, HIGH);
   delay(tafter);
    digitalWrite(klapan, LOW);
   otmoh();//замачивание
   flag7=3;
    Serial.println(flag7);
    delay(1000);
   EEPROM_int_write(4, flag7); 
 otkaska();//откачка 
    flag7=4;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
    nabor();// набор воды
     flag7=5;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
   delay(1000);
    digitalWrite(klapan, HIGH);
   delay(tafter);
    digitalWrite(klapan, LOW);
   delay(5000);
   if(digitalRead(uroven)==1)alarm();
   moika(tnasos1,ustt1);               //мойка
    flag7=6;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
   //delay(pausa);
  delay(1000); 
   otkaska();//откачка
    flag7=7;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
   delay(1000);
   nabor();// набор воды
    flag7=8;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
   delay(1000);
    digitalWrite(klapan, HIGH);
   delay(tafter);
    digitalWrite(klapan, LOW);
   delay(1000);
   otmoh();//замачивание
    flag7=9;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
   delay(1000);
    otkaska();//откачка
    flag7=10;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
   delay(1000);
   
      nabor();// набор воды
    flag7=14;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
   delay(1000);
    digitalWrite(klapan, HIGH);
   delay(tafter);
    digitalWrite(klapan, LOW);
   delay(1000);
   digitalWrite(klapan, LOW);
   //digitalWrite(porosok, HIGH);
   delay(5000);
   //digitalWrite(porosok,LOW);
    if(digitalRead(uroven)==1)alarm();
   flagsol=1;
    moika(tnasos3,ustt2);//ополаскивание с нагревом
    flagsol=0;
     flag7=15;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
    //delay(pausa);
    delay(1000);
   otkaska();//откачка
    flag7=16;
   EEPROM_int_write(4, flag7);
   Serial.println(flag7);
   flag5=1;// успешное окончание мойки 
  EEPROM_int_write(2, flag5);
  Serial.println(flag5);
  while(digitalRead(pinalarm)==1 ) // окончание мойки
    {
            digitalWrite (pinled, HIGH);
       delay(2000);
       digitalWrite (pinled, LOW);
        delay(2000);
    }
  
}

  void nabor()// набор воды 
  {
    if(digitalRead(uroven)==0)alarm();
     previousMillis=millis();
    while (digitalRead(uroven)==1)
    {
      if((millis()- previousMillis)>deltnabor)//время набора воды превышает лимит
               {digitalWrite(klapan,LOW);alarm(); }
     else
       { digitalWrite(klapan,HIGH);}
      digitalWrite(pompa, LOW);
    }
    digitalWrite(klapan,LOW);
   return;
    
  }
 
 void otmoh()//замачивание
{
  previousMillis=millis();
 while((millis()- previousMillis)<tznasos)
 {
   digitalWrite(nasos,HIGH);
   digitalWrite(klapan, LOW);
 }
 digitalWrite(nasos,LOW);
 return;
}

void moika(unsigned long t, int t2)//мойка
{
   previousMillis=millis();
  previousMillis1=millis(); 
  flag1=1;
  flag2=1;
  while((millis()-previousMillis)<t)
  {digitalWrite(klapan, LOW);
    if(flagsol>0 && (millis()-previousMillis)<tsol){digitalWrite(sol,HIGH);}
    else{digitalWrite(sol,LOW);}
    digitalWrite(nasos,HIGH);
    if(flag1>0){digitalWrite(ten,HIGH);}
    else{digitalWrite(ten,LOW);}
    if((millis()-previousMillis1)>deltzam && flag1>0) zamert(t2);//замер темп.и вкл ТЭН
    if((millis()-previousMillis)>tnagr){digitalWrite(ten,LOW);}
    if((millis()-previousMillis)>tpor && flag2>0)vkl();// отк. крышку 
  }  
   digitalWrite(nasos,LOW);
   digitalWrite(ten,LOW);
 
} 

void zamert(int temp)//замер температуры и отключение тена
 {
   int  i=0, k=0,tkon, tkonn, tkomsum=0; 
  for(int l=0; l<10; l++)
  { 
    k=k+1;
  tkonn=analogRead(pint);
  if(tkonn<190 && tkonn>950)
                          {digitalWrite(ten,LOW);alarm();}
  delay(35);                    // замер комнатной 10 раз
   if(tkonn >=950){tkonn=950; }
   if(tkonn<=79){tkonn=79; }
   i=0;
    while ( n[i] < tkonn)// нумерация массива с конца кривой
  {
    i++;
    if (i> 12)break;
  }
  tkon=map(tkonn,n[i],n[i-1],t[i],t[i-1]);
  tkomsum=tkomsum+tkon;

  continue;
    }
          tkon=tkomsum/100;
          Serial.println(tkon);
          delay(1000);
   if(tkon>temp)
 {digitalWrite(ten,LOW); flag1=0;}
 previousMillis1=millis();
 
}

void vkl()//открытие крышки с порошком
{
digitalWrite(porosok,HIGH);
delay (1000);
digitalWrite(porosok,LOW);
flag2=0;
}

void otkaska()
{
  previousMillis=millis();
 while((millis()- previousMillis)<tpomp)
 {digitalWrite(klapan, LOW);
   digitalWrite(pompa,HIGH);
 }
 digitalWrite(pompa,LOW);
 return;
}
// чтение
int EEPROM_int_read(int addr) {    
  byte raw[2];
  for(byte i = 0; i < 2; i++) raw[i] = EEPROM.read(addr+i);
  int &num = (int&)raw;
  return num;
}
// запись
void EEPROM_int_write(int addr, int num) {
  byte raw[2];
  (int&)raw = num;
  for(byte i = 0; i < 2; i++) EEPROM.write(addr+i, raw[i]);
 
}

void alarm() //если авария
{
while(digitalRead(pinalarm)==1 ) // кнопка вывода из аварии
    {
            digitalWrite (pinled, HIGH);
       delay(500);
       digitalWrite (pinled, LOW);
        delay(500);
    }
        digitalWrite (pinled, HIGH);
    return;
}

 

uragan
Offline
Зарегистрирован: 23.02.2015

Вот такой код получился. Много лишнего. Вставлял для отладки.

DenElektro
Offline
Зарегистрирован: 30.12.2020

uragan пишет:

Вот такой код получился. Много лишнего. Вставлял для отладки.

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