💾 Archived View for r2aze.observer › archive › 2011-05-24-ob-elektronike.gmi captured on 2022-06-03 at 23:36:40. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Электроника в существующих репрапоидах бывает весьма разнообразная. Собственно, если мы пытаемся использовать уже существующий софт¹ перед нами стоят следующие задачи:
┄┄
1. Лучше Skeinforge все равно ничего нет и долго не предвидится.
1. Интерпретировать G-код.
2. Превращать его в сигналы управления моторами и нагревателями.
3. Коммутировать питание на означенные согласно сигналам.
4. Снимать температуру и делать на ее основе выводы.
5. Принимать данные от датчиков положения и делать на их основе выводы.
Все способы решения этих задач можно подразделить на два основных направления:
1. Использовать уже существующий хороший универсальный интерпретатор G-кода для управления станками с ЧПУ, например [EMC2] или [Mach3] или [Ninos],² привинтить температурный контроль при помощи штатных средств расширения этих программ и микроконтроллера.³
2. Заставить микроконтроллер помощнее интерпретировать G-код, привесить к нему все остальное, и сделать таким манером систему более или менее в одном флаконе.
┄┄
2. Ninos, кстати, имеет специальную поддержку кода порождаемого Skeinforge.
3. Без микроконтроллера и тут никак. Теоретически можно обойтись одними параллельными портами, на практике всем это показалось слишком муторно.
Хотя у нас уже был опыт работы с EMC2, хлам из которого можно было бы собрать очередную линюховую машину с ядром реального времени уже закончился, ставить ее все равно было некуда, и мы направились в сторону второго решения – поэтому, серьезных советов по первому я никому дать не могу, за исключением того что это уже было несколько раз проделано и это заведомо возможно.
Сначала я надеялся повторить электронику [Generation 3].⁴ Когда мы уже собрались было травить плату, выяснилось что просто так микросхему A3982 в Москве не найдешь, надо знать места, про которые мы тогда не знали, и что нашей квалификации в применении лазерно-утюжного метода хватает дай Бог на дорожки 0.4мм, чего уж там говорить про то что нарисовали авторы канонических модулей Generation 3. Понюхав некоторое время [Generation 6] я понял, что если четырехслойную плату заказать еще можно, и я даже знаю где, то вот заказывать элементную базу выльется в неопределенно длительную задержку,⁵ а механика Мёбеля к тому моменту уже была готова.
┄┄
4. Кстати, сразу советую не считать Generation 3, Generation 4, Generation 6 и т.д. чем-то последовательным – наименования этих проектов никакого поступательного развития на самом деле не отражают, и создавались они для очень различных целей.
5. Как я уже писал, нам совершенно фатально с этим не везет, и это диагноз.
И тогда поворотили мы свои взоры в направлении [RAMPS]. Повторить ее в чистом виде нам тоже не светило, потому что [Arduino Mega] как такового в городе на тот момент не нашлось, и [Pololu A4983] тоже, но базовая идея оставалась плодотворной – использовать только уже готовые модули, после чего задача самой платы сводится к их коммутации, а сама плата может быть тривиальной.
Приводить всю схему и разводку пожалуй не буду – для специалиста она тривиальна, советовать ее для повторения неспециалисту я бы не стал, потому что там наверняка еще много глупостей, рано еще – поэтому, остановлюсь лишь на основополагающих моментах. Вместо Arduino Mega нам досталась [Freeduino Mega] (для Мёбеля) и [Seeeduino Mega] (для новой машины). Первое является отечественным клоном второго и ничем значительным не отличается. Вместо просто Pololu A4983, которых в тот момент не было не только у местных продавцов, но даже у производителя, удалось добыть другой вариант этого модуля, [со стабилизатором напряжения непосредственно на плате] что несколько упростило схему, хотя и оверкилл.
со стабилизатором напряжения непосредственно на плате
Электроника Мёбеля. Часть платы скрывается за вентилятором.
Модулям A4983 достаточно было подать сигналы enable/step/direction на каждый из четырех, питание 12 вольт, и снять с них четыре провода для мотора, и можно больше было ни о чем не думать, дальше они сами. Остались только температурные датчики и транзисторные ключи.⁶
┄┄
6. Вообще, можно конечно релюшками, но знающими людьми не рекомендуется – реле, если вдруг подохнет, может остаться в замкнутом положении, так и до пожара недалеко. Проблему снимают различного рода предохранителями, но охота собственно связываться? Мне нет.
Проблема транзисторных ключей решилась довольно просто – чтением форумов и даташитов были найдены [IRL3803]. Они отличаются следующими полезными свойствами:
1. На наших токах, которых не бывает 20A даже по религиозным праздникам, они даже не греются.⁷
2. Cрабатывают от токов которые микроконтроллеры AVR, то бишь Arduino, способны выдать на свои логические ноги – т.е. могут быть подключены к ним непосредственно без каких-либо извращений.
┄┄
7. Вольф правда все равно прикрутил туда радиаторы, чисто из параноидальных соображений. На новой плате ничего такого уже нет.
Но для того, чтобы что-то нагревать, надо знать на сколько именно, и тут обнаружился очередной капитальный затык – термодатчики, о которых следует сказать особо.
Репрапоиды издревле применяли для этого в основном разнообразные NTC-термисторы, т.е. резисторы, сопротивление которых падает с повышением температуры. Для того чтобы благополучно покрыть диапазон температур до 300 градусов⁸ необходимы термисторы стартующие от 100K или около того, а ничего похожего найти не удалось. Для чтения термопары применяются экзотические в наших краях микросхемы [MAX6675], [AD597] и иже с ними, и хотя можно при желании без них, связываться с операционными усилителями и отрицательным питанием не хотелось совсем. Зато я нашел в ассортименте Вольтмастера датчики [Pt100 и Pt1000].⁹
┄┄
8. Рабочая температура 220-240 градусов, а некоторый запас нехудо бы иметь.
9. На днях, когда мы опять потеряли пакет с последними остатками маленьких датчиков по 100 рублей, я плюнул и купил все 34 штуки что оставались на складе – ибо из-за постоянных экспериментов с нагревателями, из которых уже заклееный туда датчик извлечь нельзя, они уходят со свистом. Теперь ждите пока еще привезут…
Pt1000. Размер примерно 2х3мм, совсем мелкие.
Pt100/Pt1000 – платиновые резисторы с положительным термальным коэффициентом, отличающиеся достаточно линейной по стандарту характеристикой¹⁰ и хотя они подороже более обычных терморезисторов, они всяко дешевле термопары. Оставался вопрос как бы их подключить, так чтобы не перенапрягаться – по науке, для этого тоже требуются специальные микросхемы.¹¹
┄┄
10. 0.385 ом на градус для Pt100 и 3.85 ом на градус для Pt1000.
11. Как я говорил много-много раз, инженер-электронщик из меня никакой. Теперь вы понимаете, насколько?
Вкурив маны и даташиты, я придумал следующее:
1. Берем Pt1000, ибо ловить разницу в 0.385 Ом совсем не прикалывает.
2. Если мы подадим сигнал с такого датчика непосредственно на аналоговый вход Arduino, разброс все равно будет слишком маленький, поэтому сделаем делитель напряжения.
3. Давайте посчитаем сколько же нам надо иметь сопротивления на втором плече делителя, чтобы выдавить максимум полезно используемых бит на интересующем нас температурном участке.
В общем, я насчитал целую таблицу, из которой выходила вот такая вот схема:
Схема подключения Pt1000. Разъемы для датчиков слева, ноги контроллера справа.
Это дает нам перепад на выходе датчика от 0.6 до 1.13 вольт на диапазоне 0-300 градусов. АЦП контроллера обычно принимает за единицу 5 вольт, но есть еще возможность использовать внутренний референс в 1.1 вольт. Это дает нам разрешение в 6 бит из 11 возможных, что в данном случае составляет немногим больше половины градуса.¹²
┄┄
12. Если кто-то придумает не шибко сложный, но более идеологически правильный способ чтения таких датчиков, будет очень кстати.
Для того чтобы датчики можно было откалибровать и учесть сопротивление соединений,¹³ я сделал одну глупость, которой в новой машине больше нет – я поставил вторым плечом подстроечники на 10K. Эти подстроечники периодически сползают, а вместе с ними сползают и температуры. В новой машине вместо них стоят последовательно два 1% резистора – 6.8K и 499Ом – и калибровка осуществляется уже программно.
┄┄
13. Припоя с серебром на такие температуры тоже под руку не попалось, поэтому датчики приклеены к проводам проводящим клеем для ремонта нагревателей автомобильных стекол – а его сопротивление хотя и близко к нулю, ему конечно тоже не равно.
Концевых датчиков и у Мёбеля и у новой машины шесть штук, на основе самого дешевого оптоинтерраптора какой удалось найти. Если у Мёбеля они все оптические, то у новой машины оптические только три, те об которые она ищет машинный ноль, а остальные три – обычные микровыключатели с колесиком.
Несмотря на явные огрехи изготовления, электроника Мёбеля показала себя относительно неплохо. Единственной выявленной на ней радикальной ошибкой оказались разъемы для нагревателей, которые безбожно прогорали, и дорожки на плате, которые оказались слишком для таких токов узкими. Разъемы были впоследствии заменены на колодки.
Выявился также один недостаток модулей A4983 – нагрев. A4983 на рабочих токах греются очень сильно. Несмотря на то, что там есть встроенная термозащита, от которой они просто отрубаются при перегреве, без радиатора и вентилятора их использовать просто нельзя, а если радиатор неаккуратно приклеен, то можно отплавить ножки самой микросхемы, что с нами однажды и случилось. Несмотря на то, что мне удалось таки припаять ее обратно, приключение это было не из приятных, и впоследствии мы ее заменили.
Для новой машины, еще задолго до того как были допечатаны все ее пластиковые детали, были заказаны у производителя маленькие Pololu A4983, которые приехали через две недели с доставкой по EMS.¹⁴ Сначала я думал, что нам понадобится городить отдельный стабилизатор на 5 вольт, но вскоре обнаружилось, что стабилизатор который есть на самой Seeeduino Mega достаточно толстый, а потребление A4983 настолько мизерно, что им можно пренебречь и обойтись тем что уже есть, и плата претерпела очень небольшие изменения, в основном в размерах – ну и проводков по верхней стороне пришлось прокинуть чуть больше.
┄┄
14. Меня разбудили утром и вручили пакет, чему я был несказанно и очень приятно удивлен.
Новая электроника в ее коробочке. Знаю что дырочки неаккуратно…
Джамперы, задающие модулям Pololu делитель шагов, стали переключателями, разъемы моторов с самих Pololu перекочевали на отведенное для них место, оставшиеся неиспользованными ноги контроллера выведены на гребенку в надежде на дальнейшее расширение, добавилась дублирующая кнопка Reset для экстренной остановки машины, светодиод тоже выведен на проводке на стенку коробки.
На чем мы собственно пока и остановились.
◀️ 2011-05-21: О горячем столе
© 2001-2022 Eugene Medvedev. All rights reserved, not like that ever stopped anyone, or means anything when not backed up by a corporation.