Работа 3D принтера без компьютера

в 5:24, , рубрики: diy или сделай сам

Здравствуйте, уважаемые читатели!
Вот и закончился мой переезд, кандидатский минимум сдан, первая катушка пластика закончилась и пришло время написать обещанную статью об электронной начинке моего принтера.
В этой статье речь пойдет об автоматизации принтера, а именно о подключении экрана, кнопок (вместо энкодера) и картридера ну и системы питания для всей дополнительной электроники.
За подробностями прошу под кат.

Хотелось бы сразу оговориться, что элементы на данные платы я брал из своих запасов. То, что было под рукой.

Начнем, пожалуй, с питания.

Работа 3D принтера без компьютера
Тут все просто. Стабилизатор на 5 вольт (я взял L7805CV с выходным током до 1,5А) для питания ардуины и дисплея. Обвязка — два конденсатора. Стабилизатор подключается к 12 вольтам. От него через резистор подключаем светодиод для индикации работы. Стабилизатор напряжения на 3.3 вольта (LD1117A33 с выходным током до 1А) для питания SD карты подключается к 5 вольтам. Обвязка так же — два конденсатора (ну и по аналогии светодиод через резистор).
Конкретные значения для конденсаторов выбираются по спецификации стабилизаторов, значения резисторов по току потребления диодов и напряжения питания (ну или опытным путем).

На RAMPS’е есть место для пайки диода D1. При его подключении на пин Vin ардуины подается 12 вольт и идет в стабилизатор на ардуине. Поначалу я его припаял, и все вместе даже работало, но через несколько минут принтер просто выключился и без подключения USB кабеля его было не включить (наверное, стабилизатор перегрелся или сгорел). Поэтому было решено выпаять диод и подключить внешний стабилизатор.

Картридер

Работа 3D принтера без компьютера
Для питания карты памяти нужно 3.3 вольта, логические уровни карты тоже 3.3 вольта. В готовых модулях под названием SDRamps используется стабилизатор (его мы уже собрали) и микросхема преобразователя уровней (5->3.3). Так как такой микросхемы у меня не было, поэтому было решено использовать обычный резистивный делитель.
Карта подключается в режиме SPI. Используются: 3 линии SCK, CS, MOSI от ардуины к карте через делители; линия MISO напрямую с карты к ардуине; так же подключается питание 3.3 вольта; земля; и еще я подключил детектор наличия карты. Картхолдер был выпаян со старого смартфона, но можно использовать переходник SD-microSD (но у него отсутствует детектор наличия карты).

Экран

Подойдет любой символьный дисплей, начиная от 2 строк на 16 символов. Чем больше строк, тем больше данных на нем можно отобразить. Так же можно подключить графический дисплей SPI LCD 128x64 (Controller ST7565R graphic Display Family). Подключаем по схеме описанной тут. 4 линии данных, RS, Enable, 5 вольт, земля и подстроечный резистор на 10кОм для регулирования контраста.

Кнопки

Так как энкодера у меня не нашлось, решил обойтись кнопочным интерфейсом. Подойдут любые 3 кнопки. Правда, прийдется править прошивку, но об этом чуть позже.

Мосфет на нагреваемый столик

Работа 3D принтера без компьютера
Как я уже упоминал в прошлой статье, этот самый мосфет сильно греется из-за неправильной работы. Я заменил его на APM2509N, взятый с видеокарты. Так же были нарощены дорожки питания столика. Скальпелем окуратно срезано лаковое покрытие и пропаяно толстым слоем припоя. Предыдущий мосфет грелся так, что через 30-50 минут об него можно было обжечь палец. А новый максимально нагревался до 38 градусов за 6 часовую печать. И да, мосфет стоит без радиатора.
Столик теперь нагревается до 100°С за 15-17 минут (раньше минут за 30). Да и светодиод на столике стал светить как-то ярче (а может это только кажется).

Подключаем

Выход со стабилизатора 5 вольт подключаем к любому пину 5V на RAMPS'е.
Картриадер подключается к разъему AUX-3 (слева пины RAMPS, справа — SD):Работа 3D принтера без компьютера
пин D50(MISO) — DO(MISO);
пин D51(MOSI) — делитель — DI(MOSI);
пин D52(SCK) — делитель — SCK;
пин D53 — делитель — CS;
3.3 вольта (со стабилизатора) — VCC;
GND — GND(VSS);
и при наличии SD Detect подключаем к нему пин D43 разъема AUX-4.Работа 3D принтера без компьютера

Кнопки и дисплей подключаются к разъему AUX-4.
Дисплей (слева пины RAMPS, справа — дисплея (шина данных начинается с D0)):
пин D16 — RS;
пин D17 — Enable (E);
пин D23 — Data 4 (D4);
пин D25 — Data 5 (D5);
пин D27 — Data 6 (D6);
пин D29 — Data 7 (D7);
5 вольт — VDD;
GND — VSS;
Подстроечный резистор подключаем к 5 вольтам и земле, а выход к пину VO(контрастность);
Пин RS дисплея подключаем к земле;
При наличии подсветки, подключаем 5 вольт через резистор 1.8кОм и землю.

Кнопки подключаются к земле и:
пин D31 — Up;
пин D33 — Down;
пин D35 — Click;
По умолчанию в прошивке настроены именно эти пины. Для подключения к другим, необходимо подправить файл pins.h в прошивке.

Для запуска поддержки SD карт, символьного дисплея и кнопок в прошивке в файле configuration.h раскомментируем строку:

#define REPRAP_DISCOUNT_SMART_CONTROLLER

При этом автоматически определяются ULTIPANEL, NEWPANEL, SDSUPPORT и ULTRA_LCD, отвечающие за работу дисплея, кнопок и картриадера.
Имя принтера, отображаемое на экране, задается строкой:

#define CUSTOM_MENDEL_NAME "This Mendel"

Количество символов и строк дисплея задается параметрами LCD_WIDTH и LCD_HEIGHT соответственно:

задаем размер дисплея

#ifdef ULTIPANEL
//  #define NEWPANEL  //enable this if you have a click-encoder panel
  #define SDSUPPORT
  #define ULTRA_LCD
  #ifdef DOGLCD // Change number of lines to match the DOG graphic display
    #define LCD_WIDTH 20
    #define LCD_HEIGHT 5
  #else
    #define LCD_WIDTH 20   // менять эти
    #define LCD_HEIGHT 4   // два параметра
  #endif
#else //no panel but just LCD
  #ifdef ULTRA_LCD
  #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display
    #define LCD_WIDTH 20
    #define LCD_HEIGHT 5
  #else
    #define LCD_WIDTH 16
    #define LCD_HEIGHT 2
  #endif
  #endif
#endif

Для поддержки кнопок вместо энкодера в файле ultralcd.cpp

находим строки

    //manage encoder rotation
    uint8_t enc=0;
    if(buttons&EN_A)
        enc|=(1<<0);
    if(buttons&EN_B)
        enc|=(1<<1);
    if(enc != lastEncoderBits)
    {
        switch(enc)
        {
        case encrot0:
            if(lastEncoderBits==encrot3)
                encoderDiff++;
            else if(lastEncoderBits==encrot1)
                encoderDiff--;
            break;
        case encrot1:
            if(lastEncoderBits==encrot0)
                encoderDiff++;
            else if(lastEncoderBits==encrot2)
                encoderDiff--;
            break;
        case encrot2:
            if(lastEncoderBits==encrot1)
                encoderDiff++;
            else if(lastEncoderBits==encrot3)
                encoderDiff--;
            break;
        case encrot3:
            if(lastEncoderBits==encrot2)
                encoderDiff++;
            else if(lastEncoderBits==encrot0)
                encoderDiff--;
            break;
        }
    }
    lastEncoderBits = enc;

меняем на

//manage encoder rotation
    uint8_t enc=0;
    if(buttons&EN_A) {
		 encoderDiff = 1;
		 delay(10);
    }
    if(buttons&EN_B){
		 encoderDiff = -1;
		 delay(10);
    }

При правильной сборке, после заливки прошивки, можно убрать USB кабель в ящик стола и печатать с SD карты.

На этом пока все. Как обычно с нетерпением жду вопросов и комментариев.

P.S. В ближайшем будущем планирую поставить автокалибровку стола с сервомотором. И собрать каркас второго принтера.

Автор: winKING

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js