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

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

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

Выход давно найден: станок с ЧПУ позволяет вырезать из фанеры своими руками такие сложные фигуры, о которых «операторы лобзиков» могут лишь мечтать.

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


Возможности таких станков безграничны. Существуют модели с двухмерным и трехмерным позиционированием. Однако стоимость их настолько высока, что приобретение может быть оправдано лишь коммерческим использованием. Остается своими руками собрать ЧПУ станок.

Принцип работы координатной системы

Основа станка – мощная рама. За основу берется идеально ровная поверхность. Она же служит рабочим столом. Второй базовый элемент – это каретка, на которой закрепляется инструмент. Это может быть дремель, ручной фрезер, лазерная пушка – в общем, любое устройство, способное обрабатывать заготовку. Каретка должна двигаться строго в плоскости рамы.

Для начала рассмотрим двухмерную установку


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

Для перемещения в одном направлении (условно назовем его X), размещаются две направляющих. Они должны быть строго параллельны друг другу. Поперек устанавливается мостовая конструкция, также состоящая из параллельных направляющих. Вторая ось – Y.


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

Решил написать эту заметку, потому как надоело отвечать 100500 раз одно и то же на ВиО.

Многие начинающие веб-программисты рано или поздно сталкиваются с задачей внедрения в свой сайт человеко-понятных линков (ЧПУ). До внедрения ЧПУ все ссылки имеют вид /myscript.php или даже /myfolder/myfolder2/myscript3.php, что тяжело для запоминания и ещё хуже для SEO. После внедрения ЧПУ линки принимают вид /statiya-o-php или даже на кириллице /статья-о-пхп.

Кстати о SEO. Человекопонятные линки на САМОМ деле придумали не для удобного запоминания, а в основном для повышения индексируемости сайта, потому что совпадение поискового запроса и части URL даёт хорошее преимущество в рейтинге поиска.

Эволюция начинающего PHP-программиста может быть выражена следующей последовательностью шагов:

  1. Размещение plain-PHP кода в отдельных файлах и доступ к этим файлам через линки вида /myfolder/myscript.php
  2. Понимание, что все скрипты имеют значительную часть общего (например, создание подключения к БД, чтение конфигурации, запуск сессии и проч.) и как следствие создание общей начальной точки «входа», некоторого скрипта, который принимает ВСЕ запросы, а потом выбирает — какой внутренний скрипт подключить. Обычно этот скрипт имеет имя index.php и лежит в корне, вследствие чего все запросы (они же URLы) выглядят так: /index.php?com=myaction&com2=mysubaction
  3. Необходимость внедрения роутера и переход к человекопонятным линкам.

Замечу, что между пунктами 2 и 3 большинство программистов делают очевидную ошибку. Я не ошибусь, если назову это значением около 95% программистов. Даже большинство известных фреймворков содержат эту ошибку. И заключается она в следующем.

Вместо того, чтобы реализовывать принципиально новый способ обработки линков, ошибочно делается концепция «заплаток и редиректов» на базе.htaccess, которая заключается в том, чтобы с помощью mod_rewrite создавать множество правил редиректа. Эти строки сравнивают URL с каким-либо регулярным выражением и при совпадении расталкивают выуженные из URL значения по GET-переменным, в дальнейшем вызывая всё тот же index.php.

#Неправильный метод ЧПУ RewriteEngine On RewriteRule ^\/users\/(.+)$ index.php?module=users&id=$1 #....Ещё куча подобных правил...

У данной концепции множество недостатков. Один из них — трудность создания правил, большой процент человеческих ошибок при добавлении правил, которые сложно выявить, но они приводят к ошибке сервера 500.

Другой недостаток в том, что часто правится по сути конфига сервера, что само по себе нонсенс. И если в Apache конфиг можно «пропатчить» с помощью.htaccess, то в популярном nginx такой возможности нет, там всё находится в общем файле конфигурации в системной зоне.

И ещё один недостаток, вероятно, наиболее важный, что при таком подходе невозможно динамически конфигурировать роутер, то есть «на лету», алгоритмически менять и расширять правила выбора нужного скрипта.

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

Суть заключается в том, что начальный запрос всегда хранится в переменной $_SERVER[‘REQUEST_URI’], то есть его можно считать внутри index.php и разобрать как строку средствами PHP со всеми обработками ошибок, динамическими редиректами и проч и проч.

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

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f #Если файл не существует RewriteCond %{REQUEST_FILENAME} !-d #И если папка не существует RewriteRule ^.*$ index.php

Причём это правило можно разместить как в.htaccess, так и в основном файле конфигурации Apache.

Для nginx соответствующее правило будет выглядеть вот так:

Location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php last; } }

Всё просто.

Теперь рассмотрим кусок кода PHP в index.php, который анализирует ссылки и принимает решение — какой скрипт запускать.

/часть1/часть2/часть3

Первое, что приходит в голову — разбить её с помощью explode(‘/’, $uri) и сделать сложный роутер на основе switch/case, анализирующий каждый кусок запроса. Не делайте этого! Это сложно и в итоге приводит код в ужасный непонимабельный и неконфигурабельный вид!

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

"page404.php", // Страница 404 "/" => "mainpage.php", // Главная страница "/news" => "newspage.php", // Новости - страница без параметров "/stories(/+)?" => "storypage.php", // С числовым параметром // Больше правил); // Код роутера class uSitemap { public $title = ""; public $params = null; public $classname = ""; public $data = null; public $request_uri = ""; public $url_info = array(); public $found = false; function __construct() { $this->mapClassName(); } function mapClassName() { $this->classname = ""; $this->title = ""; $this->params = null; $map = &$GLOBALS["sitemap"]; $this->request_uri = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); $this->url_info = parse_url($this->request_uri); $uri = urldecode($this->url_info["path"]); $data = false; foreach ($map as $term => $dd) { $match = array(); $i = preg_match("@^".$term."$@Uu", $uri, $match); if ($i > 0) { // Get class name and main title part $m = explode(",", $dd); $data = array("classname" => isset($m)?strtolower(trim($m)):"", "title" => isset($m)?trim($m):"", "params" => $match,); break; } } if ($data === false) { // 404 if (isset($map["_404"])) { // Default 404 page $dd = $map["_404"]; $m = explode(",", $dd); $this->classname = strtolower(trim($m)); $this->title = trim($m); $this->params = array(); } $this->found = false; } else { // Found! $this->classname = $data["classname"]; $this->title = $data["title"]; $this->params = $data["params"]; $this->found = true; } return $this->classname; } } $sm = new uSitemap(); $routed_file = $sm->classname; // Получаем имя файла для подключения через require() require("app/".$routed_file); // Подключаем файл // P.S. Внутри подключённого файла Вы можете использовать параметры запроса, // которые хранятся в свойстве $sm->params

Несмотря на то, что код довольно длинный, он прост логически. Мне не хочется его объяснять, я считаю любой код на PHP самообъясняющим, если он правильно написан. Учитесь читать код.

На файл htaccess мы сильно отвлекаться не будем, его работа не так уж и сложна, тем более если Вы знакомы с регулярными выражениями в php . Вот, что касается самого модуля ЧПУ, то он представлен в виде двух файлов (ну можно и в один, но у меня почему то получилось два =) ) и "сети условий" по всему движку. Не пугайтесь, под термином "сети условий", я подразумеваю тот геморрой с автоматической смены ссылок по всему движку ! Сегодня мы займемся лишь фундаментом, и добьемся того что бы пост, на странице нашего блога, был доступен по адресу с человеко-понятной ссылкой

Цели я указал в анонсе, так что сейчас пару слов для новоприбывших, и приступим =)

Для тех кто на блоге в первые

Если Вы на блоге в первый раз, то эта маленькая заметка именно для Вас! Пускай тема ЧПУ обширная и применима к любому проекту, Вам, именно в материале на этой странице, будет очень сложно выявить что-то полезное для себя, по причине того, что этот пост, как и большинство на моем блоге, является частью цикла статей "Создать блог с нуля ". Цикл ориентирован на аудиторию которая хочет на практике научится программировать на php. Если Вы из таких, то добро пожаловать! Переходите по ссылке, что я дал Вам выше и приступайте к изучению изложенного мной материала

Если Вы собираетесь задержаться на моем блоге, то подпишитесь на RSS ленту блога через ридер, или же по почте

Новая колонка в таблице базы данных

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

Заходим в структуры таблицы blog, и после id создаем новую колонку

Заполняем поля приблизительно вот так (имя поля nameurl )

Теперь, необходимо заполнить новую колонку. У меня лишь одна запись в базе данных, поэтому для меня заполнение новой колонки не является проблемой =)

В конце имени необходим поставить ".html". Если у Вас в планах не использовать такое окончание у Ваших страниц, то можете не писать, только в этом случае Вам придется немного переделать файл htaccess , а именно убрать расширение там.

Я для тестовой странице использовал вот такое имя: dobro-pozhalovat.html

Ну чтож, с этой задачей мы справились, теперь приступим к самому файл htaccess

Создаем файл htaccess

Создавать лучше всего с помощью программы Notepad++ , ибо в некоторых случаях виндоус ругается, что у файла нет имени, ведь имени и в правду нет =) только расширение.htaccess

На всякий случай я скину Вам файл, вот он . Этот файл необходимо поместить в корень нашего блога

Содержимое файла следующее:

RewriteEngine on
RewriteRule ^post/([-a-z0-9]+.html)$ index.php?post=$1 [L]
RewriteRule ^category/([-a-z0-9]+.html)$ index.php?category=$1 [L]
RewriteRule ^contacts.html$ index.php?contact=1 [L]

Первая строчка включает возможность перенаправления с динамических ссылок на ЧПУ. Вторая отвечает за ссылки на посты. То есть если ссылка будет вот такого вида

http://rsblog.ru/post/dobro-pozhalovat.html

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

http://rsblog.ru/category/testovaya-kategoriya.html

http://rsblog.ru/contacts.html

Обратите внимание что регулярное выражение находится в скобках, если Вы знакомы с регулярками, то прекрасно знаете, что скобки это сохранение . Вопрос, куда переносятся сохраненные данные? Ответ: В переменную 1. Да, именно 1 (единица).

Если Вам нужны ЧПУ без.html то редактируйте регулярное выражение в файле htaccess, на такой вид ссылок, который Вам нужен!

Особо останавливаться тут не будем, я многое тут не знаю, поэтому долго разглагольствовать на эту тему не имею право, единственное что бы я еще добавил, это пару слов о флаге [L]. Я может и ошибаюсь, но как я понял этот флаг останавливает проверки, что идут ниже, это что-то типа break (прерывание работы всего цикла ) у циклов.

Под итожу то что написано в файле htaccess: Условия, для каждого вида станиц которые есть у нашего движка, а именно

  • для постов
  • для категорий
  • для страницы контактов

Если Вы знакомы с регулярками , то разобраться в файле Вам не составит труда.

php функция chpu() - Алгоритм поиска id записи в таблице базы данных

Начнем с создания алгоритма поиска. Для этого нам понадобится знать в какой таблице искать и что искать . У Вас может возникнуть вопрос, что значит в какой таблице? Ведь таблица у нас одна - blog . Это не совсем так, сегодня мы рассматриваем только посты, но так же нам известно, что у категорий тоже есть свои ссылки, а таблица которая будет содержать имена категорий называется menu , именно поэтому алгоритм должен знать в какой таблице ему искать. Пускай функция chpu() на данном этапе будет работать лишь на половину, зато в следующих постах нам не придется редактировать ее (функцию).

Создаем файл chpu.php помещаем его в пользовательские модули нашего движка, и пишем в этом файле следующую функцию:

function chpu($url,$dirDB)//функция ЧПУ
{
//$url - имя с помощью которого мы определим id
//$dirDB - режим, с помощью которого мы определим в какой таблице базы данных нам искать
//определяем запрос в зависимости от того какую страницу открывает пользователь (текст поста или категорию)
if($dirDB == "post")$sql = "SELECT id FROM blog WHERE nameurl = "$url"";//текст поста
if($dirDB == "category")$sql = "SELECT id FROM menu WHERE nameurl = "$url"";//категория

$result_index = mysql_query($sql);//Выводим из базы статью
$myrow_index = mysql_fetch_array($result_index);

if($myrow_index != "") return $myrow_index;//если найдена строчка в БД выводим id
else return "";//если нет, выводим пустоту
}
?>

Функция очень простая, так что не будет на ней останавливаться, тем более я уже не раз разъяснял логику поиска id в таблице.

Скрипт позволяющий определить какая страница открыта

Цель этого скрипта определить в каком режиме запустить функцию chpu(). Определить это можно по GET запросу который создает нам сервер при обращение к станице по ЧПУ. Если Вы внимательно смотрели содержимое файла htaccess, и приблизительно поняли его работу, то Вы должны догадаться, что сервер для себя определяет ссылку вот такого вида

http://rsblog.ru/index.php?post=dobro-pozhalovat.html

То есть, если пользователь обратился к станице с помощью ЧПУ то сервер создаст GET запрос post, создание такого запроса сигнализирует нам о том что пользователь обратился на страницу поста, стало быть функцию chpu() необходимо запускать в режиме поиска id в таблице blog

Создаем файл getchpu.php, сохраняем его в папке пользовательских модулей и пишем в нем следующий скрипт

if($chpu == 1)//если блог работает в режиме вкл ЧПУ
{
include("moduls/chpu.php");
//GET ПЕРЕМЕННАЯ post
if(isset($_GET["post"]))
{
if(!preg_match("/^[-a-z0-9]+\.html$/",$_GET["post"]))//если имя не корректное,то переносим
{
exit;
}
$blog = chpu($_GET["post"],"post");//по имени страницы достаем из бд id
if($blog == "")//если результат функции пустота, то переносим пользователя
{
header("location: ".$server_root);//на главную страницу
exit;
}
}
//GET ПЕРЕМЕННАЯ post
//GET ПЕРЕМЕННАЯ category
if(isset($_GET["category"]))
{
if(!preg_match("/^[-a-z0-9]+\.html$/",$_GET["category"]))//если имя не корректное,то переносим
{
header("location: ".$server_root);//на главную страницу
exit;
}
$cat = chpu($_GET["category"],"category");//по имени страницы достаем из бд id
if($cat == "")//если результат функции пустота, то переносим пользователя
{
header("location: ".$server_root);//на главную страницу
exit;
}
}
//GET ПЕРЕМЕННАЯ category
}
?>

Логика скрипта следующая:

  • Скрипт будет работать только в случае если блог работает в режиме вкл ЧПУ, то есть переменная chpu равна единице (это сделано для того чтобы режимы можно было поменять воздействуя лишь на одну переменную )
  • Далее подключается функция поиска id в базе данных
  • Дальше идут два варианта развития, и оба они работают по той же логике, то есть если существует GET запрос post или category то запускается проверка на корректность имени. Эта проверка поможет избежать простейших способов взлома нашего движка . Если проверка прошла успешно (если же нет, то нас перекинет на главную страницу ) запускается функция chpu(), тем самым в переменную blog или cat (в зависимости от того какая часть скрипта будет работать =) ) попадет id записи в базе данных. Если переменная пустая, то нас перекинет на главную страницу.

Тут есть один момент. Если Вы писали движок с самого начала курса, то у Вас скорее всего нет переменной server_root. Если Вы ставили копию движка, что я давал в посте "Установка нашей CMS ", то эта переменная у Вас есть.

Если у Вас нет этой переменной, то откройте пользовательский файл index.php, и сразу после подключение к базе данных пропишите эту переменную


$nameDB = "rsblog";//Название БД
$nameSERVER = "localhost";//Сервер
$nameUSER = "root";//Имя пользователя БД
$passUSER = "";//Пароль пользователя БД
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));

$server_root = "http://адрес_вашего_блога.ru/";
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)

Значение переменной является адрес Вашего блога. Эта переменная необходима была в админке для авторизации , тут же она необходима для реализации ЧПУ , в частности для тега что мы применим чуть ниже.

вставляем вот такой тег

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

Заключение

Теперь при заходе на страницу http://rsblog.ru/post/dobro-pozhalovat.html я попадаю на страничку статьи

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

Если у Вас есть какие вопросы, то пользуйтесь формой ниже

Если Вы еще не подписаны на мой блог, исправляйте дело и подпишитесь на RSS ленту блога через ридер, или же по почте , так Вы точно не пропустите новые заметки на блоге

Всего Вам наилучшего! У меня Все!

P.S.: В интернете нашел подборку довольно не плохих статей на тему веб-дизайн , если кто-то видит себя в будущем как дизайнера, то обязательно почитайте эти статьи, очень полезная информация.

Набор, с помощью которого можно собрать свой фрезерный станок с ЧПУ.
В Китае продаются готовые станки, обзор одного из них на Муське уже публиковался. Мы же с Вами соберем станок сами. Добро пожаловать…
UPD : ссылки на файлы

Я все-таки приведу ссылку на обзор готового станка от AndyBig. Я же не буду повторяться, не буду цитировать его текст, напишем все с нуля. В заголовке указан только набор с двигателями и драйвером, будут еще части, постараюсь дать ссылки на всё.
И это… Заранее извиняюсь перед читателями, фотографии в процессе специально не делал, т.к. в тот момент делать обзор не собирался, но подниму максимум фоток процесса и постараюсь дать подробное описание всех узлов.

Цель обзора - не столько похвастаться, сколько показать возможность сделать для себя помощника самому. Надеюсь этим обзором подать кому-то идею, и возможно не только повторить, но и сделать еще лучше. Поехали…

Как родилась идея:

Так получилось, что с чертежами я связан давно. Т.е. моя профессиональная деятельность с ними тесно связана. Но одно дело, когда ты делаешь чертеж, а после уже совсем другие люди воплощают объект проектирования в жизнь, и совсем другое, когда ты воплощаешь объект проектирования в жизнь сам. И если со строительными вещами у меня вроде как нормально получается, то с моделизмом и другим прикладным искусством не особо.
Так вот давно была мечта из нарисованного в автокаде изображения, сделать вжжик - и оно вот в натуре перед тобой, можно пользоваться. Идея эта время от времени проскакивала, но во что-то конкретное оформиться никак не могла, пока…

Пока я не увидел года три-четыре назад REP-RAP. Ну что ж 3Д принтер это была очень интересная вещь, и идея собрать себе долго оформлялась, я собирал информацию о разных моделях, о плюсах и минусах разных вариантов. В один момент перейдя по одной из ссылок я попал на форум, где сидели люди и обсуждали не 3Д принтеры, а фрезерные станки с ЧПУ управлением. И отсюда, пожалуй, увлечение и начинает свой путь.

Вместо теории

В двух словах о фрезерных станках с ЧПУ (пишу своими словами намеренно, не копируя статьи, учебники и пособия).

Фрезерный станок работает прямо противоположно 3Д принтеру. В принтере шаг за шагом, слой за слоем модель наращивается за счет наплавления полимеров, во фрезерном станке, с помощью фрезы из заготовки убирается «все лишнее» и получается требуемая модель.

Для работы такого станка нужен необходимый минимум.
1. База (корпус) с линейными направляющими и передающий механизм (может быть винт или ремень)
2. Шпиндель (я вижу кто-то улыбнулся, но так он называется) - собственно двигатель с цангой, в которую устанавливается рабочий инструмент - фреза.
3. Шаговые двигатели - двигатели, позволяющие производить контролируемые угловые перемещения.
4. Контроллер - плата управления, передающая напряжения на двигатели в соответствии с сигналами, полученными от управляющей программы.
5. Компьютер, с установленной управляющей программой.
6. Базовые навыки черчения, терпение, желание и хорошее настроение.))

По пунктам:
1. База.
по конфигурации:

Разделю на 2 типа, существуют более экзотические варианты, но основных 2:

С подвижным порталом:
Собственно, выбранная мной конструкция, в ней есть основа на которой закреплены направляющие по оси X. По направляющим оси Х передвигается портал, на котором размещены направляющие оси Y, и перемещающийся по нему узел оси Z.

Со статическим порталом
Такая конструкция представляет и себя корпус он же и является порталом, на котором размещены направляющие оси Y, и перемещающийся по нему узел оси Z, а ось Х уже перемещается относительно портала.

По материалу:
корпус может быть изготовлен из разных материалов, самые распространенные:
- дюраль - обладает хорошим соотношением массы, жесткости, но цена (именно для хоббийной самоделки) все-таки удручает, хотя если на станок имеются виды по серьезному зарабатыванию денег, то без вариантов.
- фанера - неплохая жесткость при достаточной толщине, небольшой вес, возможность обрабатывать чем угодно:), ну и собственно цена, лист фанеры 17 сейчас совсем недорог.
- сталь - часто применяют на станках большой площади обработки. Такой станок конечно должен быть статичным (не мобильным) и тяжелым.
- МФД, оргстекло и монолитный поликарбонат, даже ДСП - тоже видел такие варианты.

Как видите - сама конструкция станка весьма схожа и с 3д принтером и с лазерными граверами.
Я намеренно не пишу про конструкции 4, 5 и 6 -осевых фрезерных станков, т.к. на повестке дня стоит самодельный хоббийный станок.

2. Шпиндель.
Собственно, шпиндели бывают с воздушным и водяным охлаждением.
С воздушным охлаждением в итоге стоят дешевле, т.к. для них не надо городить дополнительный водяной контур, работают чуть громче нежели водяные. Охлаждение обеспечивается установленной на тыльной стороне крыльчаткой, которая на высоких оборотах создает ощутимый поток воздуха, охлаждающий корпус двигателя. Чем мощнее двигатель, тем серьезнее охлаждение и тем больше воздушный поток, который вполне может раздувать во все стороны
пыль (стружку, опилки) обрабатываемого изделия.

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

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

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

В моем случае был выбран шпиндель с воздушным охлаждением мощностью 300Вт.

3. Шаговые двигатели.
Наибольшее распространение получили двигатели 3 типоразмеров
NEMA17, NEMA23, NEMA 32
отличаются они размерами, мощностью и рабочим моментом
NEMA17 обычно применяются в 3д принтерах, для фрезерного станка они маловаты, т.к. приходится таскать тяжелый портал, к которому дополнительно прикладывается боковая нагрузка при обработке.
NEMA32 для такой поделки излишни, к тому же пришлось бы брать другую плату управления.
мой выбор пал на NEMA23 с максимальной мощностью для этой платы - 3А.

Также люди используют шаговики от принтеров, но т.к. у меня и их не было и все равно приходилось покупать выбрал всё в комплекте.

4. Контроллер
Плата управления, получающая сигналы от компьютера и передающая напряжение на шаговые двигатели, перемещающие оси станка.

5. Компьютер
Нужен комп отдельный (возможно весьма старый) и причин тому, пожалуй, две:
1. Вряд ли Вы решитесь располагать фрезерный станок рядом с тем местом, где привыкли читать интернетики, играть в игрушки, вести бухгалтерию и т.д. Просто потому, что фрезерный станок - это громко и пыльно. Обычно станок либо в мастерской, либо в гараже (лучше отапливаемом). У меня станок стоит в гараже, зимой преимущественно простаивает, т.к. нет отопления.
2. По экономическим соображениям обычно применяются компьютеры уже не актуальные для домашней жизни - сильно б/у:)
Требования к машине по большому счету ни о чем:
- от Pentium 4
- наличие дискретной видеокарты
- RAM от 512MB
- наличие разъема LPT (по поводу USB не скажу, за имением драйвера, работающего по LPT, новинки пока не изучал)
такой компьютер либо достается из кладовки, либо как в моем случае покупается за бесценок.
В силу малой мощности машины стараемся не ставить дополнительный софт, т.е. только ось и управляющая программа.

Дальше два варианта:
- ставим windows XP (комп то слабенький, помним да?) и управляющую программу MATCH3 (есть другие, но это самая популярная)
- ставим никсы и Linux CNC (говорят, что тоже очень неплохо все, но я никсы не осилил)

Добавлю, пожалуй, чтоб не обидеть излишне обеспеченных людей, что вполне можно поставить и не пенёк четвертый, а и какой-нибудь ай7 - пожалуйста, если это Вам нравится и можете себе это позволить.

6. Базовые навыки черчения, терпение, желание и хорошее настроение.
Тут в двух словах.
Для работы станка нужна управляющая программа (по сути текстовый файл содержащий координаты перемещений, скорость перемещений и ускорения), которая в свою очередь готовится в CAM приложении - обычно это ArtCam, в этом приложении готовиться сама модель, задаются ее размеры, выбирается режущий инструмент.
Я обычно поступаю несколько более долгим путем, делаю чертеж, а AutoCad потом, сохранив его *.dxf подгружаю в ArtCam и уже там готовлю УП.

Ну и приступаем к процессу создания своего.

Перед проектированием станка принимаем за отправные точки несколько моментов:
- Валы осей будут сделаны из шпильки строительной с резьбой М10. Конечно, бесспорно существуют более технологичные варианты: вал с трапециевидной резьбой, шарико-винтовая передача(ШВП), но необходимо понимать, что цена вопроса оставляет желать лучшего, а для хоббийного станка цена получается вообще космос. Тем не менее со временем я собираюсь провести апгрейд и заменить шпильку на трапецию.
- Материал корпуса станка – фанера 16мм. Почему фанера? Доступно, дешево, сердито. Вариантов на самом деле много, кто-то делает из дюрали, кто-то из оргстекла. Мне проще из фанеры.

Делаем 3Д модель:


Развертку:


Далее я поступил так, снимка не осталось, но думаю понятно будет. Распечатал развертку на прозрачных листах, вырезал их и наклеил на лист фанеры.
Выпилил части и просверлил отверстия. Из инструментов - электролобзик и шуруповерт.
Есть еще одна маленькая хитрость, которая облегчит жизнь в будущем: все парные детали перед сверлением отверстий сжать струбциной и сверлить насквозь, таким образом Вы получите отверстия, одинаково расположенные на каждой части. Даже если при сверлении получится небольшое отклонение, то внутренние части соединенных деталей будут совпадать, а отверстие можно немного рассверлить.

Параллельно делаем спецификацию и начинаем все заказывать.
что получилось у меня:
1. Набор, указанный в данном обзоре, включает в себя: плата управления шаговыми двигателями (драйвер), шаговые двигатели NEMA23 – 3 шт., блок питания 12V, шнур LPTи кулер.

2. Шпиндель (это самый простой, но тем не менее работу свою выполняет), крепеж и блок питания 12V.

3. Б/у компьютер Pentium 4, самое главное на материнке есть LPT и дискретная видеокарта + ЭЛТ монитор. Взял на Авито за 1000р.
4. Вал стальной: ф20мм – L=500мм – 2шт., ф16мм – L=500мм – 2шт., ф12мм – L=300мм – 2шт.
Брал тут, на тот момент в Питере брать получалось дороже. Пришло в течении 2 недель.

5. Подшипники линейные: ф20 – 4шт., ф16 – 4шт., ф12 – 4 шт.
20

16

12

6. Крепления для валов: ф20 – 4шт., ф16 – 4шт., ф12 - 2шт.
20

16

12

7. Гайки капролоновые с резьбой М10 – 3шт.
Брал вместе с валами на duxe.ru
8. Подшипники вращения, закрытые – 6шт.
Там же, но у китайцев их тоже полно
9. Провод ПВС 4х2,5
это оффлайн
10. Винтики, шпунтики, гаечки, хомутики – кучка.
Это тоже в оффлайне, в метизах.
11. Так же был куплен набор фрез

Итак, заказываем, ждем, выпиливаем и собираем.




Изначально драйвер и блок питания для него установил в корпус с компом вместе.


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


Ну и старенький монитор как-то сам поменялся на более современный.

Как я говорил вначале, никак не думал, что буду писать обзор, поэтому прилагаю фотографии узлов, и постараюсь дать пояснения по процессу сборки.

Сначала собираем три оси без винтов, для того чтобы максимально точно выставить валы.
Берем переднюю и заднюю стенки корпуса, крепим фланцы для валов. Нанизываем на оси Х по 2 линейных подшипника и вставляем их во фланцы.


Крепим дно портала к линейным подшипникам, пытаемся покатать основание портала туда-сюда. Убеждаемся в кривизне своих рук, все разбираем и немного рассверливаем отверстия.
Таким образом мы получаем некоторую свободу перемещения валов. Теперь наживляем фланцы, вставляем валы в них и перемещаем основание портала вперед-назад добиваемся плавного скольжения. Затягиваем фланцы.
На этом этапе необходимо проверить горизонтальность валов, а также их соосность по оси Z (короче, чтобы расстояние от сборочного стола до валов была одинаковой) чтобы потом не завалить будущую рабочую плоскость.
С осью Х разобрались.
Крепим стойки портала к основанию, я для этого использовал мебельные бочонки.


Крепим фланцы для оси Y к стойкам, на этот раз снаружи:


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

Далее крепим ходовые винты.
Отрезаем строительную шпильку М10 необходимой длины, накручиваем капролоновую гайку примерно на середину, и по 2 гайки М10 с каждой стороны. Удобно для этого, немного накрутив гайки, зажать шпильку в шуруповерт и удерживая гайки накрутить.
Вставляем в гнезда подшипники и просовываем в них изнутри шпильки. После этого фиксируем шпильки к подшипнику гайками с каждой стороны и контрим вторыми чтобы не разболталось.
Крепим капролоновую гайку к основанию оси.
Зажимаем конец шпильки в шуруповерт и пробуем переместить ось от начала до конца и вернуть.
Здесь нас поджидает еще пара радостей:
1. Расстояние от оси гайки до основания в центре (а скорее всего в момент сборки основание будет посередине) может не совпасть с расстоянием в крайних положениях, т.к. валы под весом конструкции могут прогибаться. Мне пришлось по оси Х подкладывать картонку.
2. Ход вала может быть очень тугим. Если Вы исключили все перекосы, то может сыграть роль натяжение, тут необходимо поймать момент натяга фиксации гайками к установленному подшипнику.
Разобравшись с проблемами и получив свободное вращение от начала до конца переходим к установке остальных винтов.

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

Но мы имеем строительную шпильку и пришлось подумать, как крепить. В этот момент мне попался в руки отрез газовой трубы, ее и применил. На шпильку она прямо «накручивается» на двигатель заходит в притирку, затянул хомутами - держит весьма неплохо.


Для закрепления двигателей взял алюминиевую трубку, нарезал. Регулировал шайбами.
Для подключения двигателей взял вот такие коннекторы:




Извините, не помню как называются, надеюсь кто-нибудь в комментариях подскажет.
Разъем GX16-4 (спасибо Jager). Просил коллегу купить в магазине электроники, он просто рядом живет, а мне получалось очень неудобно добираться. Очень ими доволен: надежно держат, рассчитаны на бОльший ток, всегда можно отсоединить.
Ставим рабочее поле, он же жертвенный стол.
Присоединяем все двигатели к управляющей плате из обзора, подключаем ее к 12В БП, коннектим к компьютеру кабелем LPT.

Устанавливаем на ПК MACH3, производим настройки и пробуем!
Про настройку отдельно, пожалуй, писать не буду. Это можно еще пару страниц накатать.

У меня целая радость, сохранился ролик первого запуска станка:


Да, когда в этом видео производилось перемещение по оси Х был жуткий дребезг, я к сожалению, не помню уже точно, но в итоге нашел то ли шайбу болтающуюся, то ли еще что-то, в общем это было решено без проблем.

Далее необходимо поставить шпиндель, при этом обеспечив его перпендикулярность (одновременно по Х и по Y) рабочей плоскости. Суть процедуры такая, к шпинделю изолентой крепим карандаш, таким образом получается отступ от оси. При плавном опускании карандаша он начинает рисовать окружность на доске. Если шпиндель завален, то получается не круг, а дуга. Соответственно необходимо выравниванием добиться рисования круга. Сохранилась фотка от процесса, карандаш не в фокусе, да и ракурс не тот, но думаю суть понятна:

Находим готовую модель (в моем случае герб РФ) подготавливаем УП, скармливаем ее MACHу и вперед!
Работа станка:


фото в процессе:


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

В двух словах:
При 2Д обработке (просто выпиливании) задается контур, который за несколько проходов вырезается.
При 3Д обработке (тут можно погрузиться в холивар, некоторые утверждают, что это не 3Д а 2.5Д, т.к. заготовка обрабатывается только сверху) задается сложная поверхность. И чем выше точность необходимого результата, тем тоньше применяется фреза, тем больше проходов этой фрезы необходимо.
Для ускорения процесса применяют черновую обработку. Т.е. сначала производится выборка основного объема крупной фрезой, потом запускается чистовая обработка тонкой фрезой.

Далее, пробуем, настраиваем экспериментируем т.д. Правило 10000 часов работает и здесь;)
Пожалуй, я не буду больше утомлять рассказом о постройке, настройке и др. Пора показать результаты использования станка - изделия.









Как видите в основном это выпиленные контуры или 2Д обработка. На обработку объемных фигур уходит много времени, станок стоит в гараже, и я туда заезжаю ненадолго.
Тут мне справедливо заметят - а на… строить такую бандуру, если можно выпилить фигуру U-образным лобзиком или электролобзиком?
Можно, но это не наш метод. Как помните в начале текста я писал, что именно идея сделать чертеж на компьютере и превратить этот чертеж в изделие и послужили толчком к созданию данного зверя.

Написание обзора меня наконец подтолкнуло произвести апгрейд станка. Т.е. апгрейд был запланирован ранее, но «руки все не доходили». Последним изменением до этого была организация домика для станка:


Таким образом в гараже при работе станка стало намного тише и намного меньше пыли летает.

Последним же апгрейдом стала установка нового шпинделя, точнее теперь у меня есть две сменные базы:
1. С китайским шпинделем 300Вт для мелкой работы:


2. С отечественным, но от того не менее китайским фрезером «Энкор»…


С новым фрезером появились новые возможности.
Быстрее обработка, больше пыли.
Вот результат использования полукруглой пазовой фрезы:

Ну и специально для MYSKU
Простая прямая пазовая фреза:


Видео процесса:

На этом я буду сворачиваться, но по правилам надо бы подвести итоги.

Минусы:
- Дорого.
- Долго.
- Время от времени приходится решать новые проблемы (отключили свет, наводки, раскрутилось что-то и др.)

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

Большое Вам спасибо, если Вы еще читаете. Надеюсь, что мой пост пусть хоть и не подобьет Вас к созданию такого (или другого) станка, но сколько-то расширит кругозор и даст пищу к размышлениям. Также спасибо хочу сказать тем, кто меня уговорил написать сей опус, без него у меня и апгрейда не произошло видимо, так что все в плюсе.

Приношу извинения за неточности в формулировках и всякие лирические отступления. Многое пришлось сократить, иначе текст бы получился просто необъятный. Уточнения и дополнения естественно возможны, пишите в комментариях - постараюсь всем ответить.

Удачи Вам в Ваших начинаниях!

Обещанные ссылки на файлы:
- чертеж станка,
- развертка,
формат - dxf. Это значит, что Вы сможете открыть файл любым векторным редактором.
3Д модель детализирована процентов на 85-90, многие вещи делал, либо в момент подготовки развертки, либо по месту. Прошу «понять и простить».)

Планирую купить +150 Добавить в избранное Обзор понравился +261 +487

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

Смотрите сами, какой урл для вас будет больше понятен. Этот:

Http://сайт/?p=3

Или все же этот:

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

Это лишь один из возможных примеров. Некоторые движки для создания сайтов автоматически генерируют такие адреса страниц, что, как говорится, без бутылки не разберешься. Урлы порой бывают на столько громоздкими, что даже адресной строки для них не хватает. ЧПУ же легки для восприятия, их можно запомнить, записать, продиктовать. Но это еще не все. Как уже говорилось выше, что удобно для пользователей интернета, не может не учитываться поисковиками. О влиянии ЧПУ на позиции сайтов в поисковой выдаче я утверждать не буду, так как не проводил таких экспериментов, но есть мнения, что влияют. А вот то что при помощи ЧПУ можно увеличить количество переходов с поисковых систем — это факт. Почему? Смотрите сами:

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

Настраивать ЧПУ на сайтах, сделанных на каких-либо cms, как правило, легко. Чаще всего их можно включить прямо в админке сайта, иногда для этого еще приходится устанавливать дополнения. Я покажу вам, как сделать ЧПУ, на примере wordpress.

Как настроить ЧПУ на wordpress

Вам потребуется всего лишь несколько минут, чтобы настроить ЧПУ на wordpress. Первым делом авторизуйтесь в админ-панели сайта и перейдите в параметры-постоянные ссылки.

Вы увидите вот такие вот несложные настройки. Изначально у вас будет выбран вариант «по умолчанию», естественно он неприемлем с точки зрения оптимизации. Вам нужно выбрать тот вариант, в примере которого имеется надпись «sample-post». Я на всех своих сайтах и блогах, созданных на wordpress, выбираю «название записи», так как считаю, что даты в урле указывать ни к чему. Можете также выбрать вариант «произвольно» и вписать в поле /%postname%/, получится тоже самое.

RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]

После этих трех несложных шагов на вашем сайте будут включены ЧПУ. На других движках в настройке ЧПУ также нет ничего сложного, хотя бывают и исключения.

Беда в том, что начинающие вебмастера слишком поздно задумываются о всех тонкостях оптимизации сайта. Их вины в этом конечно же нет. Ведь невозможно думать о том, что еще даже неизвестно. Чтобы избежать неприятных моментов, обязательно почитайте о том, . Осознание того, что такое ЧПУ, и для чего они нужны, чаще всего приходит тоже с опозданием. Иногда на сайте к этому времени уже написано несколько десятков статей, и тогда перед вебмастером встает нелегкий выбор, оставлять все, как есть, или все же переходить на ЧПУ. Если на ваш сайт еще нет множества внешних ссылок, и его позиции в выдаче еще не столь высоки, то рекомендую все-таки настроить ЧПУ. Ведь оптимизация сайта по сути состоит из множества пунктов, и чем больше из них будет выполнено, тем лучше.