Вакуумный упаковщик Tinton Life. Радикальный ремонт

  • Цена: $12.62
  • Обзоров на это чудо здесь, наверное с десяток, и на один из них я повелся, купив этот упаковщик. Конкретного применения этому аппарату я не представлял тогда, ну, были мыслишки о сале и мороженой сливе. Кстати, для сомневающихся в надобности прибора написан шикарный обзор с массой применений данного устройства, надеюсь автор не будет против, что я позаимствую оттуда несколько фотографий.

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

    Особый случай не заставил себя долго ждать, у родственников появилось какое-то неприличное количество сала, и я был вызван в село для его (сала) копчения.

    Готовый продукт
    Вакуумный упаковщик Tinton Life. Радикальный ремонт

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

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

    Вскрытие показало, что взорвался конденсатор на 4.7мф, погорели несколько элементов, и, самое главное, контроллер тоже сдох, ибо при подаче 12в напрямую схема признаков жизни не подавала.

    Фото похожей платы, свою сфотографировать не додумался
    Красным помечены сгоревшие деталиВакуумный упаковщик Tinton Life. Радикальный ремонт

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

    Принцип работы устройства.

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

    После запуска режима вакуумирования с запайкой включается насос, устройство понимает, что нужное разрежение достигнуто, считывая показания вакуумного датчика. Датчик замыкается накоротко при определенном разрежении, порог можно регулировать, судя по крутилке под шестигранник, расположенной на датчике. Трогать регулировку не стал. Ещё один нюанс — при откачанном воздухе крышка специальным зубом давит на скрытую кнопку, активируя тем самым процесс запайки. Если датчик долго не срабатывает, насос вырубается, запайки не происходит. Так бывает, когда пакет криво заправлен, и насос сосёт со всех фронтов, а не только из пакета.

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

    Рождение схемы.

    • За мозги решил взять микроконтроллер аттини45, потому что он был.
    • Мотор насоса будет включаться микроконтроллером через биполярный транзистор, выход мотора я шунтировал диодом, потому что так правильно.
    • Датчик давления завел на другой пин контроллера, параллельно воткнул светодиод зеленого цвета, пусть он загорается только при достижении нужного давления.
    • Нагревательный элемент. С ним я провозился подольше. В родной схеме грелка включалась через тиристор bt137, притом контроллер дергал его непосредственно, никаких опторазвязок и драйверов, только ограничительный резистор на управляющем выводе. Я использовал типовую схему подключения тиристора с оптопарой с симисторным выходом MOC3023. Посадил это на отдельный пин контроллера, параллельно присоединил красный светодиод, чтобы он показывал состояние грелки.
    • Кнопкам выделил отдельные пины контроллера.
    • Итого занято 5 пинов, беспроблемно доступных для пользователя. Можно ещё использовать reset, но тогда контроллер будет прошиваться только через высоковольтный программатор, так что пусть будут 5 пинов, достаточно.
    • Питание. Запитать решил от маленького драйвера для светодиодной ленты. Тока он дает достаточно для работы насоса, в корпус умещается, и выглядит надёжнее родного питальника, совмещённого с управляющей частью. Теперь на новую плату будет приходить 220В, будет дополнительный выход 220В для блока питания и вход для получения с него 12 вольт. Питание контроллера — через 78m05, просто и сердито.

    Готовая схема:

    Вакуумный упаковщик Tinton Life. Радикальный ремонт

    Печатная плата.

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

    Проект платы:

    Вакуумный упаковщик Tinton Life. Радикальный ремонт

    Вооружившись жёлтыми китайскими бумажками и утюгом вытравил плату…

    Изготовление
    3D модель:

    Вакуумный упаковщик Tinton Life. Радикальный ремонт

    Вытравленная ЛУТом плата

    Вакуумный упаковщик Tinton Life. Радикальный ремонт

    После лужения и сверления всех отверстий примерил плату в корпус. По моему идеально.

    Вакуумный упаковщик Tinton Life. Радикальный ремонт

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

    Вакуумный упаковщик Tinton Life. Радикальный ремонт

    Набрасываю тестовую прошивку, чтобы проверить работоспособность схемы, и, собственно, тестирую

    Видео тестирования

    Насос насосит, команда грелке греть подаётся. Пора подключать всё это к устройству и тестировать на нём. При испытании с подключенной грелкой оказалось, что она довольно ядрёная и может запросто пережечь пакет, если её передержать включенной. Датчик давления вполне адекватно оценивает это самое давление, и запайку можно инициировать только им, а не ждать когда крышка надавит на кнопку, так я и реализовал это в коде.

    КОД.

    Вакуумный упаковщик Tinton Life. Радикальный ремонт

    Кодить для меня это боль, даже в среде разработки ArduinoIDE. Я потратил на это весь день, с перерывами на истерики. Надо было с детства тренировать мозг. Тем не менее, к вечеру я получил какой никакой результат.

    Код
    //attiny45,attinycore. 8 мгц
    
    #define HOTPin 0 //13//0
    #define MotPin 1 //12//1
    #define BaroPin 2 //11//2
    #define But1Pin 3 //10//3
    #define But2Pin 4 //9//4
    int but1_state;
    int but2_state;
    int barostate;
    int startpump = HIGH;
    long previousMillis = 0;
    long interval = 77; // 130примерно секунда в миллис. одна секунда
    boolean start_suck = false;
    boolean start_hot = false;
    int hottime_max = 2;
    int hottime = 0;
    int sucktime_max = 20;
    int sucktime = 0;
    int preheatdelay = 4;
    boolean sucksuccess = false;
    void setup() {
    //Serial.begin(9600);
    pinMode(HOTPin, OUTPUT);
    digitalWrite(HOTPin, HIGH);
    pinMode(MotPin, OUTPUT);
    pinMode(BaroPin, INPUT);
    pinMode(But1Pin, INPUT);
    pinMode(But2Pin, INPUT);
    }
    void loop() {
    unsigned long currentMillis = millis();
    but1_state = digitalRead(But1Pin); // читаем кнопки. это большая
    but2_state = digitalRead(But2Pin); // это маленькая
    barostate = digitalRead(BaroPin); // датчик давления
    if (currentMillis - previousMillis >= interval) {
    // сохраняем время последнего изменения состояния светодиода
    previousMillis = currentMillis;
    autohot();
    if (start_suck == true) { // откачка воздуха
    if (sucktime_max > sucktime) { // если не превышен таймаут мотора
    digitalWrite(MotPin, HIGH); // запускаем мотор и крутим счетчик таймаута
    sucktime++;
    if (barostate == LOW) { // если датчик давления сработал, то запаиваем
    sucksuccess = true;
    }
    } else { // заканчиваем цикл
    digitalWrite(HOTPin, HIGH); // выключаем грелку
    digitalWrite(MotPin, LOW); //вырубаем мотор
    start_hot = false; //сбрасываем флаги
    start_suck = false;
    hottime = 0;
    }
    } else { // если превышен таймаут мотора
    digitalWrite(MotPin, LOW); // вырубаем
    sucksuccess = false; // сбрасываем флаги
    start_suck = false;
    }
    if (start_hot == true && start_suck == false) { //просто запайка
    if (hottime < hottime_max) {
    digitalWrite(HOTPin, LOW);
    hottime++;
    } else {
    digitalWrite(HOTPin, HIGH);
    start_hot = false;
    start_suck = false;
    digitalWrite(MotPin, LOW);
    hottime = 0;
    }
    }
    /*
    Serial.print("sucktime ");
    Serial.println(sucktime);
    Serial.print("hottime ");
    Serial.println(hottime);
    Serial.print("sucksuccess ");
    Serial.println(sucksuccess);
    Serial.print("preheatdelay ");
    Serial.println(preheatdelay);
    */
    }
    if (but1_state == LOW) {
    start_hot = true;
    }
    if (but2_state == LOW) {
    start_suck = true;
    sucktime = 0;
    }
    }
    void autohot(void) {
    if (sucksuccess == true) {
    if (preheatdelay < 1) { // задержка перед жаркой
    if (hottime < hottime_max) { // ограничиваем время жарки
    digitalWrite(HOTPin, LOW); //нагреваем
    hottime++;
    } else {
    digitalWrite(HOTPin, HIGH); // выключаем грелку
    digitalWrite(MotPin, LOW); //вырубаем мотор
    start_hot = false; //сбрасываем флаги
    start_suck = false;
    hottime = 0;
    sucksuccess = false;
    preheatdelay = 3; // здесь нужно ставить +1, так как последний цикл все таки вычитает
    }
    }
    preheatdelay--;
    }
    }

    Алгоритм работы таков:

    -нажатие прозрачной кнопки запускает автовакуумирование с запайкой в конце. Если насос работает больше 20 секунд, то выключается, цикл прерывается. Если пользователю надо, чтобы насос работал дольше 20 секунд, то нужно периодически нажимать прозрачную кнопку для обнуления счетчика. После того, как датчик давления подаст сигнал, подаётся напруга на нагреватель в течении примерно секунды (подобрано экспериментально), затем выключается нагреватель и насос. Готово.

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

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

    Спасибо за внимание!

    Исходники. Проект в proteus 8 и код в arduinoide. Для работы с микроконтроллерами attiny нужно через менеджер плат добавить AttinyCore

Оцените статью