Eeprom что это принтер
Это информация для новичков, для тех кто только осваивает 3D принтер, опытные пользователи и так все это знают, но почему то не делятся информацией.
Сразу, фото с экрана принтера не очень хорошие, потому как сложно фоткать на телефон он пытается сфокусироваться не туда, но все настройки продублированы печатным текстом, а фото просто для ознакомления.
Описание настроек прошивки Marlin для 3D принтера Creality3D Ender 3 Pro
При нажатии на "About Printer" (О принтере)
Можно посмотреть версию прошивки, у меня
Как видно версия: 1.1.6.2
Поэтому все остальное рассмотренное ниже относится к версии 1.1.6.2
Info Sreen
Info Sreen - Информационный, главный экран по умолчанию
Состоит из четырёх подразделов
1. Название 3D принтера.
2. Температуры сопла, стола и скорость вращение вентилятора
- Вверху установленная температура в настройках
- Внизу температура реальная.
На скриншоте видно, что в установках температуры нулевая, а реальная температура это комнатная температура. Лайфхак - 3D принтер можно использовать как градусник
3. Координаты сопла.
4. Работа с картой памяти (SD картой).
При нажатии на энкодер входим в экран настроек
И еще строчка "About Printer" но об этом было раньше (см. выше)
- Prepare - Подготовка
- Control - Контроль
- Print fromTF - Печать с SD карты вставленный в принтер
- Change TF card - Инициализировать карту SD
- About Printer - О принтере
Давайте все рассмотрим подробно
Prepare - Подготовка
В этом разделе действие выполняются сразу тут же еще до печати, поэтому и название раздела "Подготовка". Вы готовите принтер для печати, если конечно, вам это надо. Например, выбрали нагрев сопла и оно стало нагревается, выбрали перемещение сопла по оси Z и оно поехало вверх и так далее.
Prepare подразделы
- Move axis - Перемещение по осям (есть подразделы)
- Auto home - Автоматическая парковка (печатающая головка уедет на нулевые координаты)
- Set home offset - Установить исходное смещение
- Disable Steppers - Отключить шаговый двигатели
- Preheat PLA - Предварительный нагрев для PLA пластика
- Preheat ABS - Предварительный нагрев для ABS пластика
Подразделы для Preheat PLA или Preheat ABS (они одинаковые)
Preheat PLA (ABS ) - общий нагрев
Preheat PLA (ABS )end - нагрев сопла или вернее его "горячего конца" (что такое "горячий конец" в отдельной статье: " Словарь терминов используемых при 3D печати ")
Preheat PLA (ABS) bed - нагрев стола
Если выбрать один из этих разделов то появляется новый пункт меню: "Cooldown"- выключить нагрев.
Move axis - Перемещение по осям
Move axis X, Y, Z - можно подвигать экструдер по осям X, Y, Z
Extruder - можно включить шаговый двигатель "холодного конца" экструдера, но если "горячий конец" экструдера не нагрет, т. е. не было выбрано ранее Preheat PLA или Preheat ABS то при заправленном экструдере ничего не произойдет. При не заправленном прогонит нить до нагревателя т. е. до сопла. Если нагрев "горячего конца" произведен то начнет вылезать нагретый пластик при положительных значениях.
Control - Контроль
Этот раздел позволяет контролировать что происходит уже при печати и менять если это надо, сразу, на лету или заранее и вносит изменения в настройки.
- Temperature -Температура (есть подразделы)
- Motion - Движение (есть подразделы)
- Filament - Нить (есть подразделы)
- Store settings - Сохранение настроек
- Load settings - Загрузка настроек
- Initialize EEPROM - Инициализировать EEPROM
Рассмотрим все более подробно
Temperature - Температура
Nozzle - Температура "горячего конца " (по умолчанию 0)
Bed - Температура стола (по умолчанию 0)
Fan Speed - Скорость вентилятора (по умолчанию 0). Начинает крутится от 60, но ели помочь рукой то может раскрутится даже от 20 (по крайне мере так у меня)
Preheat PLA - настройки для PLA пластика, есть подпункты
- Fan Speed - Скорость вентилятора (по умолчанию 255)
- Nozzle - Температура "горячего конца " (по умолчанию 185)
- Bed - Температура стола (по умолчанию 45)
- Store setting - Сохранить настройки
Preheat ABS - настройки для ABS пластика, есть подпункты
- Fan Speed - Скорость вентилятора (по умолчанию 255)
- Nozzle - Температура "горячего конца " (по умолчанию 240)
- Bed - Температура стола (по умолчанию 70)
- Store setting - Сохранить настройки
Motion - Движение (везде есть подпункты меню)
- Velocity - Скорость
- Acceleration - Ускорение
- Jerk - Рывок
Steps/mm - Шаги/мм. Коэффициенты шаг/мм по осям. Учитывается передаточный коэффициент осей.
А теперь подробно разберем подпункты этого меню
Velocity - Скорость
Максимальная скорость перемещения
- V max X - (по умолчанию 500)
- V maxY - (по умолчанию 500)
- V maxZ - (по умолчанию 5)
- V max E -(экструдер) (по умолчанию 25)
Acceleration - Ускорение
- Accel -ускорение (по умолчанию 500)
- A-Retract ускорение при ретрактах (откатах) (по умолчанию 500)
- A-Travel ускорение при перемещениях (по умолчанию 1000)
- Amax X, Y, Z, E - максимальное ускорение по осям (по умолчанию 500)
Jerk - Рывок
Моментальное изменение скорости
- Vx - Jerk (по умолчанию 10)
- Vy - Jerk (по умолчанию 10)
- Vz - Jerk (по умолчанию +000.40)
- Ve - Jerk (по умолчанию 5)
Steps/mm - Шаги/мм
- Xsteps/mm (по умолчанию 80)
- Ysteps/mm (по умолчанию 80)
- Zsteps/mm (по умолчанию 400.00)
- Esteps/mm(по умолчанию 93)
Разберем что значат все эти параметры
Новичку в эти настройки лучше не лезть, но понимать их надо, поэтому чуть, чуть теории, что бы понимать все это.
Ну со скоростью (Velocity) все понятно, это скорость с которой ездит сопло ("горячий конец") экструдера. А вот дальше нужно разбирается.
Понятия "Acceleration" (ускорение) и "Jerk" (рывок) различаются. Так как принтер понимает и знает что ему предстоит делать, передвинуть сопло (экструдер) на большое расстояние или сдвинуть на малое расстояние, для принтера это разные вещи. Если принтер делает "длинное движение" перемещает сопло на большую дистанцию, к примеру 30мм, то движение начинается с постепенного разгона и заканчивается постепенным торможением и в этом случае уместно говорить о ускорении - Acceleration . Если движение короткое, миллиметры, то о постепенном разгоне и торможении говорить не уместно, просто на это нет времени и происходит сдвиг сразу на максимальной скорости, называется это рывок - Jerk. Если цифры "рывка" слишком высоки, то это приводит в повышенным износам движущихся частей подшипникам и ремней шаговых двигателей, и вообще принтер может колбасить и он будет прыгать по столу, то же кстати относится и к "Ускорению". Причем Ускорение (Acceleration) задается разным не только для осей, но и для того когда оно происходит при обычном "холостом" движении A-Travel или при "всасывании" нити A-Retract (откат)
Для себя нужно понимать, что чем более ровная или постоянная скорость движение при печати, тем лучше качество. А значит чем меньше разгонов и торможения, тем лучше. Поэтому важно иметь мощные моторы и мощные цепи питающие их, и драйвера для управления моторами, а так же малый вес печатающей головки так как инерцию не кто не отменял. Кстати, поэтому и получил распространение Боуден-экструдер, где разнесены нагревательный элемент и подающая филамент части. В 3D принтерах настройка этих параметров это компромисс между качеством, скоростью и износом.
Steps/mm (Шаги) - это параметр для калибровки принтера высчитывается по формулам, если принтер работает, то вообще не лезем сюда.
Тип | Чтение из программы | Запись из программы | Очистка при перезагрузке |
Flash | Да, PROGMEM | Можно, но сложно | Нет |
SRAM | Да | Да | Да |
EEPROM | Да | Да | Нет |
EEPROM представляет собой область памяти, состоящую из элементарных ячеек с размером в один байт (как SRAM). Объём EEPROM разный у разных моделей МК:
- ATmega328 (Arduino UNO, Nano, Pro Mini): 1 кБ
- ATmega2560 (Arduino Mega): 4 кБ
- ATtiny85 (Digispark): 512 Б
Важный момент: все ячейки имеют значение по умолчанию (у нового чипа) 255.
Скорость работы с EEPROM (время не зависит от частоты системного клока):
Возможны искажения при записи данных в EEPROM при слишком низком VCC (напряжении питания), настоятельно рекомендуется использовать BOD или вручную мониторить напряжение перед записью.
При использовании внутреннего тактового генератора на 8 МГц, его отклонение не должно быть выше 10% (7.2-8.8 МГц), иначе запись в EEPROM или FLASH скорее всего будет производиться с ошибками. Соответственно все разгоны внутреннего клока недопустимы при записи EEPROM или FLASH.
Библиотека avr/eeprom.h
Запись:
Обновление:
Макросы:
Рассмотрим простой пример, в котором происходит запись и чтение единичных типов данных в разные ячейки:
Точно так же можно хранить массивы:
Ну и напоследок, запись и чтение блока через EEMEM. Адрес придётся преобразовать в (const void*) вручную:
Библиотека EEPROM.h
В отличие от avr/eeprom.h у нас нет отдельных инструментов для работы с конкретными типами данных, отличными от byte, и сделать write/update/read для float/long/int мы не можем. Но зато у нас есть всеядный put/get, который очень удобно использовать! Также можем пользоваться тем, что нам даёт avr/eeprom.h, которая подключается автоматически с EEPROM.h. Рассмотрим пример с чтением/записью байтов:
Логика работы с адресами такая же, как в предыдущем пункте урока! Обратите внимание на работу с EEPROM как с массивом, можно читать, писать, сравнивать, и даже использовать составные операторы, например EEPROM[0] += 10 , но это работает только для элементарных ячеек, байтов. Теперь посмотрим, как работает put/get:
Гораздо удобнее чем write_block и read_block, не правда ли? Put и get сами преобразовывают типы и сами считают размер блока данных, использовать их очень приятно. Они работают как с массивами, так и со структурами.
EEPROM.h + avr/eeprom.h
Ну и конечно же, можно использовать одновременно все преимущества обеих библиотек, например автоматическую адресацию EEMEM и put/get. Рассмотрим на предыдущем примере, вместо ручного задания адресов используем EEMEM, но величину придётся привести к целочисленному типу, сначала взяв от него адрес, т.е. (int)&адрес_еемем
С возможностями библиотек разобрались, перейдём к практике.
Реальный пример
Рассмотрим пример, в котором происходит следующее: две кнопки управляют яркостью светодиода, подключенного к ШИМ пину. Установленная яркость сохраняется в EEPROM, т.е. при перезапуске устройства будет включена яркость, установленная последний раз. Для опроса кнопок используется библиотека GyverButton. Для начала посмотрите на первоначальную программу, где установленная яркость не сохраняется. Программу можно чуть оптимизировать, но это не является целью данного урока.
- Подключить библиотеку EEPROM.h
- При запуске: чтение яркости из EEPROM и включение светодиода
- При клике: запись актуального значения в EEPROM
Полезные трюки
Инициализация
- Чтение из EEPROM в переменную
- Использование переменной по назначению
Рассмотрим на всё том же примере со светодиодом и кнопками:
Теперь при первом запуске мы получим инициализацию нужных ячеек. Если нужно переинициализировать EEPROM, например в случае добавления новых данных, достаточно изменить наш ключ на любое другое значение в пределах одного байта (0-254). Я пишу именно до 254, потому что 255 является значением ячейки по умолчанию и наш трюк не сработает.Скорость
Как я писал выше, скорость работы с EEPROM составляет:
При большом желании можно использовать ячейку вместо переменной, т.е. выше мы с вами рассматривали пример, в котором EEPROM читался в переменную в программе, и дальнейшая работа происходила уже с ней. При сильной нехватке оперативной памяти можно читать значение напрямую из EEPROM, ведь это занимает ничтожно мало времени. А вот с записью всё гораздо хуже, там целых 3.3 мс. Например так:
Для изменения значения придётся прочитать ячейку, выполнить нужные операции, и снова в неё записать. Ещё один удобный хак: можно ввести макросы на чтение и запись определённых значений, например:
Получим удобные макросы, с которыми писать код будет чуть быстрее и удобнее, т.е. строка SET_MODE(3) запишет 3 в ячейку 0
Уменьшение износа
Посмотрим на всё том же примере:
-
Ёмкий конденсатор по питанию микроконтроллера, позволяющий сохранить работу МК после отключения питания на время, достаточное для записи в EEPROM (
Вариантов уменьшения износа ячеек EEPROM можно придумать много, уникально под свою ситуацию. Есть даже библиотеки готовые, например EEPROMWearLevel. Есть очень интересная статья на Хабре, там рассмотрено ещё несколько хороших алгоритмов и даны ссылки на ещё большее их количество.
Видео
Забросил я уроки для начинающих, сегодня поговорим о EEPROM — энергонезависимой памяти.
Эта память одно из главных составляющих в функционале поделок на микроконтроллерах, любой начинающий микроконтроллерщик подходит к этапу освоения этой энергонезависимой памяти. Оно и ежу понятно, что сохранять настройки очень часто надо, нужно и без этого нельзя.
В даташитах все рассусолено сухим техническим языком про особенности работы еепром, я же остановлюсь на основополагающих правилах использования этой памяти, правильную на мой взгляд.
Объявляется еепром так же как и переменная, работают с еепром так же как с переменной, кроме некоторых но. Пример (Code Vision AVR):
unsigned char a; // объявляем беззнаковую переменную размером 8 бит
unsigned char eeprom eea; // объявляем "переменную" в еепром такого же типа, этого достаточно, всю остальную работу делает компилятор.
Переменную я обозвал в кавычках, ибо с ней можно обращаться как с обычной переменной, а в остальном она ведет себя по другому:
1. — значение хранимое в ЕЕПРОМ по умолчанию равно максимально возможному числу, в нашем случае после объявления в eea лежит число 255 или оно же 0xFF или оно же 0b11111111.
2- количество циклов стирания-записи у памяти ЕЕПРОМ относительно мало, поэтому нужно максимально ограничивать число записей в алгоритме программы.
3. Память ЕЕПРОМ самый тормозной тип данных, это нужно учитывать. Особенно при записи в ЕЕПРОМ. Можно получить каку, например, запихнув обработку еепром в прерываниях. В особо ответственных моментах можно использовать флаги состояния памяти ЕЕПРОМ, бывает очень полезно.
После обявления еепром и переменной я делаю команду присвоения числа из еепром в переменную, до начала основного цикла и как правило до начала работы прерываний:
После этого я верчу как хочу эту переменную, пишу в нее, читаю, используя ее в алгоритме и в нужный момент, когда нужно сохранить делаю так, чтоб данные закатились из этой переменной обратно в ЕЕПРОМ единожды:
Вот пример куска кода записи в ЕЕПРОМ:
unsigned char a; // объявляем беззнаковую переменную размером 8 бит
unsigned char eeprom eea; // объявляем еепром такого же типа,
unsigned char trig; // объявляем переменную, которая будет помнить, что кнопка нажата.
Далее идет основанная часть программы void main(void), в ней :
a=eea; // загоняем данные в с еепром в переменную
Далее идет главный цикл while(1) и в теле цикла:
if(key==1) // если кнопка настройки нажата, то:
trig=1; // включаем триггер, который запоминает, что кнопка нажата
a*b+b^2 ; //тут что то делаем нужное, когда кнопка нажата
>
else // если кнопка отжата
LED=1 ; //тут что то делаем нужное, когда кнопка отжата
if(trig) //если кнопка отжата и триггер включен, то:
eea=a; // пишем переменную а в еепром
trig=0; // сбрасываем триггер
>
>
Запись в ЕЕПРОМ срабатывает по отжатию кнопки единожды, когда триггер равен единице.
EEPROM (также E 2 PROM ) обозначает электрически стираемую программируемую постоянную память и представляет собой тип энергонезависимой памяти, используемой в компьютерах, интегрированных в микроконтроллеры для смарт-карт и удаленных систем без ключа , а также других электронных устройств для хранения относительно небольших объемов данные, позволяя стирать и перепрограммировать отдельные байты.
EEPROM организованы как массивы транзисторов с плавающим затвором . EEPROM можно программировать и стирать внутри схемы, применяя специальные программные сигналы. Первоначально EEPROM были ограничены однобайтовыми операциями, что делало их медленнее, но современные EEPROM допускают многобайтовые операции со страницами. EEPROM имеет ограниченный срок службы для стирания и перепрограммирования, теперь он достигает миллиона операций в современных EEPROM. В EEPROM, которая часто перепрограммируется, срок службы EEPROM является важным аспектом проектирования.
Флэш-память - это тип EEPROM, разработанный для обеспечения высокой скорости и высокой плотности за счет больших блоков стирания (обычно 512 байт или больше) и ограниченного количества циклов записи (часто 10 000). Между ними нет четкой границы, но термин «EEPROM» обычно используется для описания энергонезависимой памяти с небольшими блоками стирания (размером всего один байт) и длительным сроком службы (обычно 1 000 000 циклов). Многие микроконтроллеры включают в себя как флэш-память для прошивки , так и небольшую EEPROM для параметров и истории.
По состоянию на 2020 год флеш-память стоит намного меньше, чем байтово-программируемая EEPROM, и является доминирующим типом памяти там, где системе требуется значительный объем энергонезависимой твердотельной памяти . Однако EEPROM по-прежнему используются в приложениях, которым требуется только небольшой объем памяти, например, при последовательном обнаружении присутствия .
СОДЕРЖАНИЕ
История
В начале 1970-х годов различные компании и организации выполняли некоторые исследования, изобретения и разработки электрически перепрограммируемой энергонезависимой памяти . В 1971 году ранние исследования доклад был представлен на 3 - й Конференции по твердотельными устройствами , Токио в Японии Ясуо Таруи, Yutaka Hayashi и Кийоко Нагаи в электротехнической лаборатории ; Японский национальный исследовательский институт. Они изготовили устройство EEPROM в 1972 году и продолжали это исследование более 10 лет. Эти статьи неоднократно цитировались в более поздних статьях и патентах.
Одна из их исследований включают в себя Моноса ( металл - оксид - нитрид -oxide- полупроводник ) технологию, которая использовала Renesas Electronics " флэш - память интегрированы в однокристальных микроконтроллерах .
В 1972 году Фудзио Масуока из Toshiba, который также известен как изобретатель флеш-памяти, изобрел тип электрически перепрограммируемой энергонезависимой памяти . Большинство крупных производителей полупроводников, таких как Toshiba , Sanyo (позже ON Semiconductor ), IBM , Intel , NEC (позже Renesas Electronics ), Philips (позже NXP Semiconductors ), Siemens (позже Infineon Technologies ), Honeywell (позже , Atmel ), Texas Instruments до 1977 года изучала, изобретала и производила некоторые электрически перепрограммируемые энергонезависимые устройства.
Теоретической основой этих устройств является инжекция горячего носителя Avalanche . Но в целом программируемая память, включая EPROM, начала 1970-х годов имела проблемы с надежностью и долговечностью, такие как периоды хранения данных и количество циклов стирания / записи.
В феврале 1977 года Элияху Харари из Hughes Aircraft Company изобрел новую технологию EEPROM, использующую туннелирование Фаулера-Нордхейма через тонкий слой диоксида кремния между плавающим затвором и пластиной . Хьюз продолжил производство этих новых устройств EEPROM. Но в этом патенте цитируется изобретение NEC EEPROM®.
В мае 1977 года Fairchild и Siemens обнародовали важный результат исследования . Они использовали структуру SONOS ( поликремний - оксинитрид - нитрид - оксид - кремний ) с толщиной диоксида кремния менее 30 Å и структуру SIMOS ( MOS с многослойной инжекцией ), соответственно, для использования туннельной инжекции горячих носителей Фаулера-Нордхейма .
Примерно с 1976 по 1978 год команда Intel, включая Джорджа Перлегоса, сделала несколько изобретений, чтобы улучшить технологию туннелирования E 2 PROM. В 1978 году они разработали устройство Intel 2816 с битом 16K (2K слов × 8) с тонким слоем диоксида кремния , который составлял менее 200 Å . В 1980 г. эта структура была публично представлена как FLOTOX ; оксид туннеля с плавающим затвором . Структура FLOTOX повысила надежность циклов стирания / записи на байт до 10 000 раз. Но этому устройству требовалось дополнительное напряжение смещения 20–22 В PP для стирания байта, за исключением операций чтения 5 В. В 1981 году Перлегос и двое других участников покинули Intel, чтобы сформировать Seeq Technology , которая использовала накачки заряда на устройстве для подачи высокого напряжения, необходимого для программирования E 2 PROM. В 1984 году Perlogos покинул Seeq Technology, чтобы основать Atmel , затем Seeq Technology была приобретена Atmel.
Читайте также: