Перейти к содержимому

04s.ru

Только полезные вещи…

Меню
  • Главная
  • Объявления
    • Добавить объявления
    • Мои объявления
  • Полезные ресурсы
    • Другое
  • Генератор QR
  • Карта сайта
  • Контакты
Меню

Авторегулировка диаметра филамента

Опубликовано в 28.01.202118.08.2026 от Lis

И так после долгих мучений стабилизировать диаметр прутка с помощью своего самодельного Экструдера был найден ещё один способ который мне показался более стабильным чем его получить 1.75мм из экструдера))

Перерыв много инфы в интернете был взят на заметку вот этот датчик — (https://www.youmagine.com/designs/filament-diameter-sensor) описание тут — (http://diy3dprinting.blogspot.com/2014/01/diy-filament-diameter-sensor.html). После теста он мне показался более стабильным и особенность у него есть калибровка, если нормально откалибровать то можно добиться хороших результатов.

За основу был взят с датчика только код для ARDUINO по скольку датчик мне не подходил у меня принтер ANET-A6 с переделанной подачей филамента, была — Прямая подача, когда мотор, тянущий филамент находится прямо на каретке над экструдером. Стал — Боуден подача, когда за мотором, тянущем филамент находится гладкая трубка, утыкающаяся в экструдер.

/*
 Sample code for the magneto-mechanical filament diameter sensor.
 Calibrate your individual sensor by measuring objects of known diameter and creating a custom lookup table!
 */
 define verbose 0 //0: No error or debugging messages via serial, 1: Error messages, 2: Error and debugging messages
 define NUMTEMPS 4  //length of lookup table
 define smooth 50  //exponential smoothing factor, higher is smoother
 define sensIn A1  //Output of the hall sensor
 // ADC input, diameter output
 static float lut3[NUMTEMPS][2] = {
    {532, 0},
    {675, 2.5},
    {870, 3},
    {992, 3.2}
 };
 float sensbuf =lut3[0][0]; //smoothed raw value
 void setup() {
   Serial.begin(115200);
 }
 void loop() {
   int sensorValue = analogRead(sensIn);
   sensbuf += (sensorValue-sensbuf)/smooth; //smoothing
   Serial.print(sensbuf);
   Serial.print(" ");
   Serial.println(lookup(sensbuf, lut3),5);
   delay(10);        
 }
 float lookup(float inval, float lut[][2]){
    float out;
    byte i;
    for (i=1; i inval)
       {
          return lut[i-1][1] + (inval - lut[i-1][0]) * (lut[i][1] - lut[i-1][1]) / (lut[i][0] - lut[i-1][0]);
       }
    }
    if (i == NUMTEMPS){
      if (lut[0][1] > lut[NUMTEMPS][1])
      {
        #if verbose > 1
        Serial.println("WARNING: lookup out of range");
        #endif
        return lut[NUMTEMPS][1];
      }
      else
      {
        #if verbose > 1
        Serial.println("WARNING: lookup out of range");
        #endif
        return lut[0][1];
      }
    }
     #if verbose > 0
     Serial.println("ERROR: lookup failed");
     #endif
     return 0;
 }
Скачать: Arduino
Скачано: 349, размер: 10 B, дата: 28 Янв. 2021

И так по скольку Боуден у меня стоял далеко от каретки от нагревателя получалось что при вычислении размера диаметра филамента он отправлял его позже что не есть хорошо. Тогда было решено нарисовать свой датчик и поставить его прямо на каретку но всё равно получился запас в районе 5 см. но мы это поправили программно сделали некий буфер который копит показатели диаметра и отправляет его с опозданием на 50сек. вычислил это просто замерил от центра датчика до нагревателя получилось 5 см. Поставив метки отрезка 5см. на филаменте запустив принтер на печать засек время вот и получилось 5см. проходит приме 45-50 сек.

Датчик обновлённый

Забыл сказать почему я это сделал и всё затеял… Да просто вся инфа в интернете связана с прошивками да и к тому же очень большая нехватка пинов для прошивки… По скольку у меня уже прошит принтер ANET-A6 под автоуровень BLTouch то лишаться я его не хотел и пришлось выкручиваться программно.

Датчика автоуровня 3DTouch ( BLTouch )

<<Controller>>

И так продолжаем… Была написана программа под названием «Controller» с помощью которой брались данные с COM порта в виде диаметра филамента ARDUINO и передавались тоже с помощью COM порта но уже в 3D принтер. Вот так всё просто… ARDUINO считывает показание и отправляет команды (G-CODE) их уже в 3D принтер. Да но есть одно Но печатаем только с флешки… По скольку для программы «Controller» нужен свободный COM порт а поскольку слайсеры их используют то в месте не получится.

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

Тестовая печать

Так же был напечатан ещё один датчик для того что-бы сигнализировал что кончился или оборвался филамент. Он был установлен конечно выше перед Боуден,ом. Он не просто сигнализирует но и шлёт команду принтеру на данный момент вот такую — M600 – Замена филамента. И я спокойно беру и меняю филамент либо устраняю обрыв…

Кому интересно пишите спрашивайте в комментариях я буду дополнять статью более подробнее))

4.4/5 - (98 голосов)
Просмотров: 66 017


Место для продажи

6 комментариев для “Авторегулировка диаметра филамента”

  1. Сергей:
    25.07.2021 в 14:12

    Отличная затея… Как один из вариантов когда не хватает пинов на принтере.

    Ответить
    1. Lis:
      25.07.2021 в 14:15

      Спасибо.

      Ответить
  2. Валера:
    11.02.2021 в 22:02

    Интересная затея…

    Ответить
    1. Lis:
      11.02.2021 в 22:05

      Спасибо Валерий.

      Ответить
  3. Алексей:
    02.02.2021 в 11:43

    У вас для ардуино код не рабочий.

    Ответить
    1. Lis:
      02.02.2021 в 11:58

      Спасибо Алексей… Поправил и выложил для скачивания.

      Ответить

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Свежие записи

  • Авто выключатель для мультиметра
  • Индикатор разряда аккумулятора
  • Схема индикатора заряда аккумулятора на светодиодах
  • Linux mint восстановление системы с помощью LiveCD/USB
  • Схема стабилизатора тока на LM358

Популярные записи

  • Металлоискатель пират своими руками подробная инструкция (67 722)
  • Авторегулировка диаметра филамента (66 017)
  • A4988 и Arduino (18 846)
  • DT9205a — ремонт мультиметра (15 633)
  • ШИМ-регулятор 220 В ( IGBT ) (14 152)
  • Пробник для проверки оптопар (13 622)
  • ШИМ-регулятор на Arduino (12 027)
  • Шим регулятор на NE555 (11 078)
  • Схема стабилизатора тока на LM358 (10 766)
  • Linux mint восстановление системы с помощью LiveCD/USB (10 424)

Разделы

3D (1) Android (1) Arduino (14) CCleaner (1) Controller (1) DT9205a (2) LG (1) Linux (3) LM339 (1) LM358 (1) NE555 (9) NTC 100K (2) Power Bank (2) Server (4) SSD (1) SSL (1) Ubuntu (3) USB (2) VPS (1) Windows (8) АКБ (6) Авто (18) Асинхронный (3) Вирусы (1) Датчик (2) Двигатель (5) Индикатор (2) Металлоискатель (2) Мультиметр (2) Оптопара (1) Пластик (2) Полезное (18) Примочка (1) Разное (18) Реле (1) Сабвуфер (2) Симистор (1) Система (12) Схемы (36) Телевизоры (1) Телефон (1) Термистор (2) Тиристор (1) Тюнинг (5) Электроника (57)

Коментарии

  • Lis к записи ШИМ-регулятор 220 В ( IGBT )
  • Hdns Klos к записи ШИМ-регулятор 220 В ( IGBT )
  • Lis к записи Схема индикатора заряда аккумулятора на светодиодах
  • Lis к записи Индикатор разряда аккумулятора
  • Lis к записи Авто выключатель для мультиметра

Форма подписки

Подпишитесь на блог и получайте новые статьи!



QR код

QR код

Telegram канал

И смех и Грех — Тут весело и Интересно))
Красиво, но не факт… — Поделки на лазерном гравёре.