Алгоритмы самотестирования системы автономной печати для 3D-принтера

Описание системы автономной печати для 3D-принтера и алгоритмы самотестирования ее компонентов. Настройка подключения к 3D-принтеру, тестирование сервоприводов и температурных датчиков. Работа с файлами на съемном носителе. Вывод списка файлов на дисплей.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 16.03.2019
Размер файла 2,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru//

2

Размещено на http://www.allbest.ru//

Алгоритмы самотестирования системы автономной

печати для 3D-принтера

Ильин И.В.

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

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

1. ОПИСАНИЕ СИСТЕМЫ

Разрабатываемая система представляет собой одноплатный компьютер с модифицированным программным комплексом Pronterface, которому подключены устройства ввода-вывода (текстовый дисплей, блок тактовых кнопок и съемный накопитель информации). Система подключается по USB к 3D-принтеру и может получать энергию от блока питания смартфона или планшетного компьютера. Система не требует подключения монитора, клавиатуры, мыши так далее, так как имеет собственный блок кнопок и дисплей, позволяющие управлять печатью 3D-принтера, не пользуясь внешними устройствами ввода-вывода.

Система практически полностью заменяет персональный компьютер при эксплуатации вместе 3D-принтером, но в то же время намного компактнее и экономичнее. Такая система обеспечит 3D-принтеру возможность автономной печати. Система автономной печати для 3D-принтера состоит из компонентов, которые перед началом работы должны быть протестированы на работоспособность: текстовый дисплей на контроллере HD44780, накопитель информации и сам 3D-принтер. Диаграмма использования, представленная на рисунке 1, отображает компоненты системы, которые необходимо протестировать перед началом работы.

Рисунок 1 - Компоненты система автономной печати

Порядок тестирования всех компонентов системы представлен на рисунке 2.

Размещено на http://www.allbest.ru//

2

Размещено на http://www.allbest.ru//

Рисунок 2 - Порядок тестирования компонентов

Порядок тестирования имеет значение. Тестирование можно разделить на четыре этапа:

Тестирование дисплея (осуществляется с помощью Raspberry Pi);

Тестирование и калибровка всех компонентов (осуществляется с помощью Arduino или любого другого устройства, управляющего 3Dпринтером);

Тестирование накопителя и проверка файла (осуществляется с помощью Raspberry Pi);

Запись результатов тестирования в файл (осуществляется с помощью Raspberry Pi).

2/ ТЕСТИРОВАНИЕ ДИСПЛЕЯ. СКАНИРОВАНИЕ ПОРТОВ

В данной работе в качестве устройства используется текстовый монохромный жидкокристаллический дисплей Winstar WH1602A-YGH-CTK, управляемый контроллером S6B0066U, который является аналогом HD44780. HD44780 - контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев с параллельным 4- или 8-битным интерфейсом. Разработан фирмой Hitachi. Управляющий интерфейс и протокол являются стандартом для такого типа дисплеев. Он имеет множество аналогов, например, S6B0066U. На базе этого контроллера выпускается огромное количество моделей с различным конструктивом и разрешением, начиная с 8x1 (восемь символов в одной строке), и заканчивая 40x4 (содержащих два независимых управляющих чипа). Часто встречаются 16x2 и 20x4, а также некоторые другие. Дисплеи нашли широкое применение в принтерах, копирах, факс-машинах, сетевом оборудовании (например, в роутерах) и других устройствах. Экраны предоставляют только возможность вывода монохромного текста. Существуют варианты дисплеев с подсветкой и без.

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

Так как количество пинов GPIO у одноплатного компьютера ограничено, для экономии пинов данные передаются на устройство вывода по 4-битной шине. В этом случае пины с седьмого по десятый не используются, а данные передаются через Pin 11 - Pin 14, по четыре бита за такт (старший полубайт, затем младший полубайт).[1]

Поэтому необходимо произвести инициализацию дисплея в определенном порядке для корректной передачи данных, отличной от инициализации в 8-битном режиме.

Перед началом работы устройства необходимо убедится, что его дисплей исправен. Для этого необходимо подать напряжение на сам контроллер (VSS и VDD), запитать подсветку (A и K), а также настроить контрастность. Для настройки контрастности следует использовать потенциометр на 10 кОм. На крайние ноги подается +5V и GND, центральная ножка соединяется с выводом VO.[2]

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

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

Рисунок 3 - Результат инициализации и самотестирования дисплея

Изначально HD44780 имеет предопределенную таблицу символов, размещенную в ОЗУ знакогенератора CGRAM (Character Generator RAM). Для отображения любого из них программа микроконтроллера должна передать координаты позиции и, непосредственно за ними, сам адрес символа из CGRAM.

Заглавные и прописные буквы латинского алфавита, числовые знаки, а также большинство знаков препинания совпадают в ней с кодами ASCII. Набор символов, размещенных по адресам 0xA0…0xFF, содержит национальный алфавит (в данном случае кириллицу) того региона, где предполагается его использование. Первые 16 ячеек CGRAM имеют особое значение. При желании, в них могут быть записаны любые пользовательские символы, которых нет таблице (сразу после включения модуля в них находится случайная информация).[3]

Для того чтобы убедится в корректной работе знакогенератора и таблицы, в первой строке дисплея выводится сообщение «-->Hello, world!», а во второй - «-->Ready to work». Таким образом, используются все 32 символьные ячейки дисплея и можно убедиться в их работоспособности.

Диаграмма данного процесса представлена на рисунке 4.

Размещено на http://www.allbest.ru//

2

Размещено на http://www.allbest.ru//

Рисунок 4 - Диаграмма тестирования дисплея

Настройка подключения к 3D-принтеру, тестирование сервоприводов и температурных датчиков

После включения система сканирует COM-порты и определяет, к какому из них подключен 3D-принтер. Затем определяется скорость обмена данными между 3D-принтером и системой. Слишком высокая или слишком низкая скорость приведет к нестабильной работе 3D-принтера при печати. После определения параметров порта, производится попытка подключения к 3Dпринтеру. При неудачной попытке выводится сообщение с текстом ошибки.

В случае удачной попытки, производится считывание информации с ПЗУ 3D-принтера, в котором хранятся данные о характеристиках 3D-принтра и типа установленной прошивки. Способы взаимодействия и тип выводимых данных зависят от установленной прошивки. После этого происходит тестирование датчиков, нагревательных элементов, экструдера, сервомоторов стола и экструдера.[4]

Качество изделия зависит как от адгезии пластика к печатному столу, так и от точно перемещения стола и экструдера. В этой связи большое значение приобретает автокалибровка печатного стола. В сущности, суть ее заключается в том, что 3D принтер посредством специального устройства (щупа, зонда, или иного устройства) проверяет плоскостность печатного стола при касании в нескольких точках (задаваемых программно в прошивке) после чего выстраивает «свою горизонтальную» плоскость. Плоскость может и вообще не совпадать с реальной горизонтальной плоскостью: 3D-принтер строит свою новую систему декартовых координат, внося в алгоритм перемещения необходимую «дельту».[5]

Процесс автокалибровки 3D-принтера выглядит так: сопло экструдера движется вниз до срабатывания датчика. Достигнув нижней точки, сопло останавливается и записывается его Z-координата. После этого сопло движется в сторону до крайней точки. Потом сопло движется в противоположную сторону до крайней точки. После этого записывается X-координаты крайних точек и рассчитывается пройденное расстояние.

Процесс автокалибровки представлен на рисунке 5.

Размещено на http://www.allbest.ru//

2

Размещено на http://www.allbest.ru//

Рисунок 5 - Автокалибровка 3D-принтера

Калибровка по Y-координате происходит за счет движения стола. Стол движется в сторону до крайней точки. Потом стол движется в противоположную сторону до крайней точки. После этого записывается Yкоординаты крайних точек и рассчитывается пройденное расстояние.

3. РАБОТА С ФАЙЛАМИ НА СЪЕМНОМ НОСИТЕЛЕ

Для работы с альтернативными устройствами ввода-вывода (блок кнопок и текстовый дисплей) написан модуль, подключаемый к Pronterface. Обработка нажатия кнопки выполняется с помощью бесконечного цикла и конструкций if. Таким образом при нажатии на кнопку, подсоединенной к GPIO 21 выполняется сканирование накопителя.

Все внешние накопители в операционной системе Raspbian по умолчанию находятся в директории /media/. Чтобы найти все файлы не только в корневой директории, но и во вложенных папках и после это записать имена всех файлов в массив используется следующая конструкция (листинг 1).

while True: try: if GPIO.input(21) == False:

arr = [] for top, dirs, files in os.walk('/media/'): for nm in files:

path = os.path.join(top, nm)

Листинг 1 - Поиск файлов

Для записи имен файлов поочередно в массив используется функция append (листинг 2)

arr[]

arr.append(path)

Листинг 2 - Запись в массив

Для отображения только файлов G-кода используется функция filter. После чего создается массив, в котором содержатся все имена найденных файлов G-кода (листинг 3).

gcode1 = filter(lambda x: x.endswith('.GCODE'), arr) gcode2 = filter(lambda x: x.endswith('.Gcode'), arr) gcode3 = filter(lambda x: x.endswith('.gcode'), arr) gcode = gcode1+ gcode2+ gcode3

Листинг 3 - Поиск файлов по маске

В переменную i записывается порядковый номер файла, отображаемого на первой строке дисплея (по умолчанию 0), в переменную j соответственно номер следующего за ним файла, отображаемого во второй строке (по умолчанию 1).

С помощью функции basename из массива gcode получаем краткие имена файлов, порядковые номера которых записаны в переменных i и j. Краткие имена записываются в переменные str1 и str2.

На дисплей полученные имена файлов выводятся с помощью функции lcd_string. Выбранный в данный момент файл помечается символом «>» (листинг 4).

i=0

j=i+1

str1=os.path.basename(gcode[i])

str2=os.path.basename(gcode[j]) lcd_string(">"+str1, LCD_LINE_1) lcd_string(" "+str2, LCD_LINE_2)

Листинг 4 - Вывод списка файлов на дисплей

Пролистывание вверх осуществляется с помощью кнопки, подключенной к GPIO 26. При ее нажатии значения переменных i и j увеличиваются на 1. Для того, чтобы избежать вызова индексов, превышающих длину массива, используется проверка: если значение переменной j меньше длины массива, то на дисплей выводятся файлы с действительными индексами, в противно случае переменной i присваивается значение g - 2 (g - длина массива, полученная с помощью функции len), а переменной j значение g - 1 и после этого на дисплей выводятся соответствующие значения. Код представлен на листинге 5.

печать принтер датчик самотестирование

if GPIO.input(26) == False:

i=i+1 j=i+1 g=len(gcode) g=int(g) if j < g:

str1=os.path.basename(gcode[i]) str2=os.path.basename(gcode[j]) lcd_string(">"+str1, LCD_LINE_1) lcd_string(" "+str2, LCD_LINE_2) else:

i = g - 2 j = g - 1

str1=os.path.basename(gcode[i]) str2=os.path.basename(gcode[j]) lcd_string(">"+str1, LCD_LINE_1) lcd_string(" "+str2, LCD_LINE_2)

Листинг 5 - Реализация прокрутки списка файлов вверх

Обработка кнопки листания вниз (GPIO 26) имеет такую же структуру и тоже имеет проверку на соответствие минимальному индексу массива (0). Если переменная i становится отрицательной, ей принудительно присваивается значение 0, а переменной j соответственно 1 (листинг 6).

if GPIO.input(20) == False:

i=i-1 j=i+1 k=abs(i) if k == i:

str1=os.path.basename(gcode[i]) str2=os.path.basename(gcode[j]) lcd_string(">"+str1, LCD_LINE_1) lcd_string(" "+str2, LCD_LINE_2)

else: i=0 j=1

str1=os.path.basename(gcode[i]) str2=os.path.basename(gcode[j]) lcd_string(">"+str1, LCD_LINE_1) lcd_string(" "+str2, LCD_LINE_2)

Листинг 6 - Реализация прокручивания списка файлов вниз

При нажатии на кнопку, подключенной к GPIO 19 переменной sname присваивается имя выбранного файла. После этого объявляется глобальная переменная full, в которую записывается полное имя этой файла (путь) с помощью os.path.join. После чего программа завершается, возвратив значение full и система Pronterface продолжает свою работу (листинг 7).

if GPIO.input(19) == False: sname=gcode[i] sname =str(sname) global full

full = os.path.join('/media/', sname) full = str(ful) return full sleep(0.1) except KeyboardInterrupt:

exit()

Листинг 7 - Сохранение имени выбранного файла

В функцию __init__, класса PronterApp добавляется код, который выполняет следующие функции: Pronterface получает значение имени файла, которое возвратил модуль, после этого добавяет к нему значение пути, в котором он находится. Далее полученная переменная в виде аргумента передается вызову функции loadfile, которая служит для загрузки файла G-кода (листинг 8).

filename=program.main() ful = os.path.join('/media/', filename) ful=str(ful)

self.mainwindow.loadfile(None, ful)

Листинг 8 - Получение полного имени файла

В самой функции loadfile (класс PronterWindow) добавляется строка self.connect(), которая вызывает функцию connect, служащую для подключения 3D-принтера. Таким образом организуется автоматическая загрузка файла Gкода и подключения 3D-принтера.

На выходе функции loadfile в переменную filename записывается имя загруженного файла, которое потом передается функции post_gcode_load, там значение имени загруженного файла присваивается глобальной переменной, значение которой в качестве аргумента передается вызову функции printfile, служащей для печати загруженного файла. Начинается подготовка 3Dпринтера, а затем сама печать (листинг 9).

global filename2 filename2 = self.filename self.printfile(filename2)

Листинг 9 - Запуск печати

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

Диаграмма работы с накопителем информации представлена на рисунке 6.

Размещено на http://www.allbest.ru//

2

Размещено на http://www.allbest.ru//

Рисунок 6 - Выбор файла с накопителя информации ЗАКЛЮЧЕНИЕ.

Важнейшие аспекты КИС - надежность, отказоустойчивость и простота в использовании. Поэтому в КИС должна быть реализована система самотестирования для превентивного обнаружения неполадок, с возможностью предоставления результатов самотестирования в удобном читаемом виде.

Корпоративная информационная система (КИС) - это масштабируемая система, предназначенная для комплексной автоматизации всех видов хозяйственной деятельности больших и средних предприятий, в том числе корпораций, состоящих из группы компаний, требующих единого управления. Объединяет систему управления персоналом, материальными, финансовыми и другими ресурсами компании, используется для поддержки планирования и управления компанией, для поддержки принятия управленческих решений ее руководителями. Под КИС можно понимать управленческую идеологию, объединяющую бизнес-стратегию и информационные технологии.

В данной статье описаны алгоритмы самотестирования отдельных компонентов системы и показана реализация этих алгоритмов с помощью UML-диаграмма и фрагментов программного кода на языке программирования Python.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

HD44780 [Электронный ресурс]. - Режим доступа: http://wp.wikiwiki.ru/wp/index.php/HD44780, свободный. - Заголовок с экрана (дата обращения: 8.01.2017).

Подключение LCD 1602 (HD44780) к Arduino [Электронный ресурс]. - Режим доступа: http://zelectro.cc/LCD1602, свободный. - Заголовок с экрана (дата обращения: 8.01.2017).

Символьный ЖКИ на базе контроллера HD44780 [Электронный ресурс]. - Режим доступа: http://cxem.net/mc/book52.php, свободный. - Заголовок с экрана (дата обращения: 10.01.2017).

Pronterface - управление 3D принтером [Электронный ресурс]. - Режим доступа: http://3deshnik.ru/blogs/akdzg/pronterface-upravlenie-3d-printerom, свободный. - Заголовок с экрана (дата обращения: 11.01.2017).

Устройства для автокалибровки стола 3D принтера [Электронный ресурс]. - Режим доступа: http://3dtoday.ru/blogs/injener3d/the-device-forcalibration-of-desktop-3d-printer/, свободный. - Заголовок с экрана (дата обращения: 12.01.2017).

Размещено на Allbest.ru

...

Подобные документы

  • Главный элемент матричного принтера. Синхронное взаимодействие всех механизмов принтера. Двухсторонний обмен информацией с ПК, хранение и проведение необходимых преобразований информации, формирование управляющих сигналов на рабочие органы принтера.

    контрольная работа [135,8 K], добавлен 06.09.2011

  • Изучение алгоритмов тестирования клавиатуры, CMOS-памяти и спикера с учетом выявленных особенностей процессов их диагностики. Исследование процессов самотестирования компьютерной системы при включении. Звуковые коды ошибок, выдаваемые процедурой POST.

    лабораторная работа [19,1 K], добавлен 06.08.2010

  • Ознакомление с приемами управления работой печатающих устройств в MS-DOS. Формирование новых символов для матричного принтера, разработка команд загрузки символов в оперативную память принтера и программы, реализующей процесс печати заданных символов.

    курсовая работа [1,2 M], добавлен 22.06.2011

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

    курсовая работа [201,1 K], добавлен 23.06.2011

  • Основные компоненты и принцип работы простейшего 3D принтера, построенного на основе картезианского робота. Мониторинг первого российского 3D принтера второго поколения PrintBox3D One. Установка программного обеспечения Repetier-Host и его настройка.

    курсовая работа [4,9 M], добавлен 25.08.2015

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

    дипломная работа [2,8 M], добавлен 30.10.2013

  • Использование маршрутизаторов и коммутаторов для соединения компьютеров в подсети. Физическая реализация принтера. Настройка маршрутизатора, принтера и компьютера. Интерфейс программы Cisco Packet Tracer. Команды операционной системы компании IOS.

    контрольная работа [2,1 M], добавлен 18.02.2013

  • Развитие печатающих устройств. Устройство печати цифровой информации на твердый носитель. Первый механический принтер. Лепестковые, матричные, струйные и лазерные принтеры. Технология пьезоэлектрической печати. Разработка первого лазерного принтера.

    реферат [24,2 K], добавлен 19.12.2010

  • Принцип действия лазерного принтера. Особенности конструкции LaserJet III. Блок-схема лазерного принтера. Обслуживание лазерных принтеров и уход за ним. Диагностика неисправностей и ремонт лазерного принтера. Аппаратные неисправности принтера LaserJet III

    курсовая работа [282,9 K], добавлен 26.12.2007

  • Понятие памяти, функции ОC по управлению работой печатающих уcтройcтв в MS-DOS. Формирование новых cимволов для матричного принтера, разработка команд для загрузки cимволов в оперативную память принтера и программы, реализующей заданный процеcc печати.

    курсовая работа [2,6 M], добавлен 24.06.2011

  • История развития принтера - устройства для печати изображений либо текста на бумаге, его виды и принцип работы. Основные параметры струйного и лазерного принтера. Области администрирования, создание учётных записей пользователя, их блокировка и удаление.

    дипломная работа [516,0 K], добавлен 03.11.2014

  • Исследование приемов управления работой печатающих устройств в MS-DOS. Изучение принципа действия матричного принтера, механизма печати литер, команд, позволяющих осуществить вывод символов на печать. Анализ реализации программных кодов на языке BASIC.

    курсовая работа [825,7 K], добавлен 23.06.2011

  • Алфавитно-цифровые печатающие устройства. Отличие светодиодного принтера от лазерного. Принтеры трёхмерной печати, уровень энергопотребления, разрешающая способность, интерфейс подключения. Набор дополнительных функций. Тип красителей и количество цветов.

    реферат [986,3 K], добавлен 16.05.2014

  • Технические характеристики и принцип работы принтера "Epson Lx 350". Принцип работы устройства по структурной схеме. Выбор и инсталляция операционной системы и драйверов. Диагностика матричного принтера, возможные неисправности и способы их устранения.

    курсовая работа [100,4 K], добавлен 07.12.2015

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

    курсовая работа [241,3 K], добавлен 01.07.2011

  • Основные характеристики принтера HP Laser Jet 4000: интерфейс, размер, комплектация. Блок-схема системы формирования изображения. Поиск неисправностей лазерного принтера. Расчет полной стоимости профилактического обслуживания и ремонта в фирме "ОАО ISIS".

    курсовая работа [2,3 M], добавлен 29.04.2014

  • Утилиты архивации для создания резервных копий файлов путем помещения их в архив в сжатом виде. Операции над архивами. Алгоритмы архивации. Универсальные алгоритмы уплотнения. Формат задания команд. Степень сжатия файлов. Основные виды архиваторов.

    презентация [241,0 K], добавлен 13.08.2013

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

    курсовая работа [49,8 K], добавлен 03.11.2009

  • Описание нестандартных компьютерных периферийных устройств: компактного принтера, мыши для 3D-дизайнеров, графического планшета, проекционной инфракрасной клавиатуры, 3D-принтера. Их внешний вид, возможности, способы использования и характеристики.

    реферат [1,0 M], добавлен 20.10.2014

  • 3-D принтер - устройство для вывода трёхмерных данных и создания физических объектов; особенности и преимущества технологии. Области применения: архитектура, геоинформационные системы, медицина. Принцип действия принтера, материалы для 3-D печати.

    презентация [655,5 K], добавлен 23.10.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.