Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Таймер стиральной машины

Компоненты и расходные материалы

SparkFun Arduino Pro Mini 328 - 5 В / 16 МГц
× 1
1306 OLED-дисплей
× 1
DFRobot Gravity:цифровая кнопка (желтая)
× 2
Seeed Grove - 2-канальное реле SPDT
× 1
Импульсный источник питания Digilent 5 В, 2,5 А
× 1
SparkFun USB UART Serial Breakout - CY7C65213
× 1
Модуль Bluetooth HC-05
× 1

Необходимые инструменты и машины

Паяльник (универсальный)
Пистолет для горячего клея (общий)
Лента, двусторонняя
Лента, зеленая

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Введение

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

  • Введите x минут времени стирки от пользователя.
  • Поверните мотор стирального бака по часовой стрелке на несколько секунд.
  • Остановите двигатель на несколько секунд.
  • Поверните мотор стирального бака против часовой стрелки на несколько секунд.
  • Остановите двигатель на несколько секунд.
  • Продолжайте делать последние 4 шага, пока не истечет таймер стирки.

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

Демо

Следующее видео демонстрирует работу этого электронного таймера:

Аппаратное обеспечение

  • Arduino Pro Mini: Запускает код и все контролирует
  • 1306 OLED: Показать инструкции пользователя и обратный отсчет таймера
  • Красная / черная кнопка: Установить таймер и запустить таймер
  • Релейные модули на 5 В Подача питания переменного тока на двигатель и направление управления.
  • Адаптер 5 В . Включите электронный таймер

1306 OLED припаивается непосредственно к pro mini следующим образом:

Модуль с 2 реле, 2 кнопки, Arduino Pro Mini + 1306 OLED подключается к такой плате -

Программирование

Шаг 1: Получите модуль Bluetooth-Serial HC-05 и измените его скорость передачи данных на 57600 в соответствии с этим руководством или этим шагом. Для выполнения этого шага потребуется еще один Arduino Uno или USB-последовательный модуль.

Используйте следующие AT-команды

  AT 
AT + UART =57600,0,0
AT + RESET

Шаг 2: После изменения скорости передачи данных на 57600 подключите HC-05 к Arduino pro mini в соответствии со следующей схемой подключения

Шаг 3: Выберите плату в Arduino IDE, вставьте код и нажмите «Загрузить».

Я использую последовательный порт Bluetooth, потому что он обеспечивает возможность программирования беспроводной связи в системе, что помогло при необходимости обновить код на pro mini.

Объяснение проводки и работы устройства

Схема подключения может отличаться для новых / разных моделей стиральных машин, поэтому я расскажу о своей. Обратите внимание на диаграмму «Sharp» в правом нижнем углу:один БЕЛЫЙ ПРОВОД идет от сети и идет к таймеру стирки, один КРАСНЫЙ ПРОВОД и один СИНИЙ ПРОВОД выходит из таймера стирки. Я отсоединил эти 3 провода от оригинального (неисправного) таймера стирки и вытащил их через отверстие в верхней части стиральной машины.

Когда БЕЛЫЙ ПРОВОД переключается на КРАСНЫЙ ПРОВОД, двигатель вращается по часовой стрелке, а когда БЕЛЫЙ ПРОВОД переключается на СИНИЙ ПРОВОД, двигатель вращается против часовой стрелки.

Этот электронный таймер, созданный на базе Arduino pro mini, будет отслеживать время стирки, вращать двигатель стирального бака в одном направлении в течение 5 секунд, соединяя БЕЛЫЙ и КРАСНЫЙ провода через один контакт реле. Затем он остановит двигатель и подождет 5 секунд. После этого он будет вращать двигатель ванны в другом направлении в течение 5 секунд, подключив БЕЛЫЙ и СИНИЙ провода через другой контакт реле. Затем он остановится и подождет еще 5 секунд. При необходимости всю эту временную последовательность можно изменить из кода.

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

Теория однофазного асинхронного двигателя

Вы можете узнать больше о каждом компоненте в этих руководствах:

  • Руководство по реле
  • Руководство по кнопкам

Заявление об ограничении ответственности!

Этот проект связан с питанием от сети переменного тока, вы делаете это на свой страх и риск !

Код

  • Файл без названия
Файл без названия C / C ++
 #include "U8glib.h" // SSD1306 oled wavehare (clk, din, cs, d / c, res); U8GLIB_SSD1306_128X64 u8g (A4, A5,12,11,10); volatile int rbc =0; volatile int bbc =0; int sec =0; int mi =0; int motor_rotation =0; установка void () {u8g.setRot180 (); analogReference (ВНУТРЕННИЙ); pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (0, ISR_SW_RED, ПАДЕНИЕ); attachInterrupt (1, ISR_SW_BLACK, ПАДЕНИЕ); pinMode (5, ВЫХОД); digitalWrite (5, LOW); pinMode (4, ВЫХОД); digitalWrite (4, LOW);} void loop (void) {while (! rbc) {// показать меню установки таймера u8g.firstPage (); сделать {draw_menu (); } while (u8g.nextPage ()); // показать пользователю правильное сообщение о работе if (rbc> 0 &&bbc ==0) {u8g.firstPage (); сделать {draw_message (); } while (u8g.nextPage ()); задержка (2000); rbc =0; //u8g.clear (); }} // запускаем таймер if (rbc> 0) {sec =59; mi =bbc-1; while (mi> =0) {// показывать сообщение таймера обратного отсчета unsigned long temp =millis () + 1000; а (темп> =миллис ()) {u8g.firstPage (); сделать {draw_timer (); } while (u8g.nextPage ()); } сек =сек-1; если (сек% 5 ==0) {control_motor (); // вызов каждые 5 секунд} if (sec <=0) {sec =59; mi =mi - 1; }} rbc =0; bbc =0; mi =0; сек =0; digitalWrite (5, LOW); digitalWrite (6, LOW); }} // конец циклаvoid draw_menu (void) {u8g.setFont (u8g_font_timB24); если (bbc <10) {u8g.drawStr (22,30, "0"); u8g.setPrintPos (38,30); u8g.print (bbc); } еще {u8g.setPrintPos (22,30); u8g.print (bbc); } u8g.drawStr (54,30, ":00"); u8g.setFont (u8g_font_8x13); u8g.drawStr (0,62, «ТАЙМЕР СТИРКИ»); u8g.setFont (u8g_font_5x8); u8g.drawStr (0,47, «Красный:НАЧАЛО, черный:УСТАНОВИТЬ ВРЕМЯ»); } void draw_message (void) {u8g.setFont (u8g_font_8x13); u8g.drawStr (0,10, «УСТАНОВИТЬ ТАЙМЕР СТИРКИ»); u8g.drawStr (0,23, «ПЕРВЫЙ НАЖАТИЕМ»); u8g.drawStr (0,36, «ЧЕРНАЯ КНОПКА»); // u8g.setFont (u8g_font_8x13); u8g.drawStr (0,62, «ТАЙМЕР СТИРКИ»); u8g.setFont (u8g_font_5x8); u8g.drawStr (0,47, «Красный:НАЧАЛО, черный:УСТАНОВИТЬ ВРЕМЯ»); } void draw_timer (void) {u8g.setFont (u8g_font_timB24); если (mi <10) {u8g.drawStr (22,30, "0"); u8g.setPrintPos (38,30); u8g.print (mi); } еще {u8g.setPrintPos (22,30); u8g.print (mi); } u8g.drawStr (54,30, ":"); если (сек <10) {u8g.drawStr (70,30, "0"); u8g.setPrintPos (86,30); u8g.print (сек); } else {u8g.setPrintPos (70,30); u8g.print (сек); } если (motor_rotation ==0) {u8g.setFont (u8g_font_5x8); u8g.drawStr (0,47, "МОЙКА МОТОРА CW Spin"); digitalWrite (5, ВЫСОКИЙ); } если (motor_rotation ==1) {u8g.setFont (u8g_font_5x8); u8g.drawStr (0,47, «МОЙКА ДВИГАТЕЛЯ ОСТАНОВЛЕНА»); digitalWrite (5, LOW); digitalWrite (4, LOW); } если (motor_rotation ==2) {u8g.setFont (u8g_font_5x8); u8g.drawStr (0,47, «МОЙКА ДВИГАТЕЛЯ против часовой стрелки»); digitalWrite (4, ВЫСОКИЙ); } если (motor_rotation ==3) {u8g.setFont (u8g_font_5x8); u8g.drawStr (0,47, «МОЙКА ДВИГАТЕЛЯ ОСТАНОВЛЕНА»); digitalWrite (5, LOW); digitalWrite (4, LOW); } u8g.setFont (u8g_font_8x13); u8g.drawStr (0,62, «ТАЙМЕР СТИРКИ»); } void ISR_SW_RED () {sei (); rbc ++; cli ();} недействительным ISR_SW_BLACK () {sei (); bbc ++; cli ();} void control_motor () {motor_rotation ++; если (motor_rotation> 3) {motor_rotation =0; }} 

Схема


Производственный процесс

  1. Машина ЭЭГ
  2. Торговый автомат
  3. Машина для голосования
  4. Сменить машину
  5. Аппарат ЭКГ
  6. Швейная машина
  7. Доильный аппарат
  8. Части токарного станка
  9. Понимание токарного станка
  10. Компонент фрезерного станка