Начну с извинений. Как обидно получилось! Хотел собрать пятый сканер исправив все косяки, добротно все сделать, а тут проекты, ЕГЭ, олимпиады… В общем закрутилось все, так что извините все, кто ждал статей на эту тему. Для тех, кто не в теме, вот нулевая статья. А те, кто в теме и все еще интересуется, добро пожаловать под кат первой части. И будет она, как вы уже поняли, про электронику…
В процессе отлынивания от работы над сканером мне написало более 10 человек о том, что им нужно помочь с 3D сканером, причем большая часть вопросов касалась электроники. Про нее и пойдет речь в этой статье.
Что мы вообще должны сделать? Во-первых нам нужно управлять шаговым двигателем, во-вторых мы должны как минимум включать-выключать лазер, в-третьих мы должны как-то обмениваться данными с компьютером. Вот основные три задачи, которые должна выполнять наша плата. Ничего сложного. То есть мы можем применить практически любой микроконтроллер. Я большей частью программирую под STM32, так что его-то я и взял. Хотя общие принципы работы будут естественного одинаковыми для любого контроллера.
В третьей версии сканера я взял микроконтроллер STM32F030F4. Его отличает более паябельный корпус TSSOP20 (на тот момент платы под LQFP у меня упорно не получались даже фоторезистом). Из интересующих нас вещей — таймер с генерацией ШИМ и аппаратный USART. Думаю проблемы типа «Под мотор ног не хватило» никому не грозят. Вот такая у меня получилась разводка:
А вот такая будет схема:
Сразу скажу, что в схеме неправильно проведены проводники к микроконтроллеру, но разводка правильная. Нумерация компонентов на схеме и на плате совпадают, так что номиналы компонентов смотреть в схеме. Не подписан только кварц тактирования. Он располагается в левом верхнем углу платы. Кстати конденсаторы к нему не обязательно 10 пФ. Их номинал должен быть в пределах от 5 до 20 пФ.
Можно заметить, что на разводке нет отверстий под штырьки PLS. Я просто запаиваю их боком. Это видно на самой первой фотографии в начале статьи. Также на разводке видно, что красным я объединил эти штырьки в группы (G1, G2 и т.д.).
G1 — это разъем для общения с компьютером. Слева направо: GND, SWDIO, SWCLK, RX, TX, +5V.
G2 — питание для лазера. Плюс снизу.
G3 — подключение лазера. Плюс слева (ваш кэп).
G4 — подключение мотора.
Как можно догадаться из схемы — драйвим мы именно униполярный шаговый мотор. Для этого используются полевые транзисторы. Мне приглянулась идея поставить SMD сборки. Я применил вот эти сборки. Вы можете взять любые другие. Главное условие — это совместимость корпусов (не то, что ножек и у тех, и у тех 8, а то, что совпадает распиновка). Ну и еще то, что транзисторы должны быть N-канальными.
Для лазера сделан отдельный стабилизатор напряжения (левый нижний угол схемы). Это позволяет регулировать мощность лазера, регулируя выходное напряжение стабилизатора. Для этого необходимо изменять сопротивление резистора R5. Поэтому в качестве R5 лучше всего установить потенциометр. Внимательный читатель спросит: «А почему 9V?». Вообще потому, что лазер нужно запитать отдельно от мотора. Мотор — индуктивная нагрузка, а значит он создает скачки напряжения, которые могут убить лазерный диод. Запитать от 5V не получится из-за того, что падение напряжения на стабилизаторе достаточно велико и нам может банально не хватить напряжения для его нормальной работы. Поэтому поставил поставил блок питания на 9V, ибо он у меня уже был и прекрасно подходил по вольтажу. Стабилизатор установлен на радиатор, но не запаян на плату. Вместо этого он подключается к разъему G2.
ВНИМАНИЕ! Эта схема не является драйвером лазерного диода! Она подключается к нему и регулирует напряжение питания. То есть если вы собрали лазер сами, то хотя бы токоограничивающий резистор и конденсатор вам поставить придется.
В общем по схемотехнике все. Плата легко изготавливается ЛУТом. Вот ссылка на разводку в SprintLayout.
Тут ни фоток, ни схемы: все было собрано на макетной плате (breadbord). Микроконтроллер взял STM32F401RE. Нет, мощность такая конечно не нужна. Просто он установлен в STM32F401-Nucleo. Эта плата понравилась мне тем, что на ней есть не только штырьки, но и гнезда (как в Arduino), а еще тем, что на ней установлен ST-Link V2.1. Что же в нем хорошего? А то, что на нем помимо программатора присутствует еще и USB->UART адаптер. Это значит, что будет меньше проводов и меньше плат. Из минусов можно отметить то, что он определяется в системе как флешка, так что постоянно выскакивает «Проводник» в Windows. Но это так. Мелочи. Лучше он, чем провода. Схема в принципе остается той-же. Три микросхемы можно заменить одной ULNкой (ULN200x; x=1,2,3,4). Правда транзисторы там расчитаны на меньший ток и вообще биполярные, зато корпус один.
А вот про управление лазером нужно сказать отдельно. В четвертой версии я решил сделать мощность регулируемой программно. В смысле мы можем настроить мощность по UARTу. Для управления мощностью лазера загоним ШИМ на TDA2030. Схема этого блока будет такая:
Говорянечеловеческим языком это неинвертирующий повторитель сигнала на операционном усилителе. Он нужен для усиления тока. Питание ему можно дать любое от 5 до 18V — повторитель повторяет не только форму, но и амплитуду сигнала (усиливается только ток), так что беспокоиться не о чем. Разве что о том, что на выходе STM32 максимальное напряжение будет 3,3V. А значит мы не сможем выжать полную мощность из лазеров, питаемых Li-ion аккумуляторами — их максимальное напряжение 4,2V. Зато точно не спалим по программной ошибке. Фильтр на выходе такого усилителя лучше конечно поставить, но зачастую в лазерах и так имеется фильтрующий конденсатор, так что выбор за вами.
ВНИМАНИЕ! Если вы вдруг решили сделать полноценный усилитель, а не повторитель, то помните, что управляем мы при помощи ШИМа, а значит напряжение будет скакать от минимального значения до максимального. Лазерному диоду нужно совсем немного времени чтобы сгореть, так что если напряжение превысит максимальные 4,2V (даже кратковременно), то диод сгорит!
Существует много плат для управления моторами в RepRap 3D принтерах. Например такая. Подобные платы легко ищутся по названию чипа. Так чем же она хороша? Во-первых она может управлять биполярными двигателями, а любой униполярник превращается в биполярник банальным отключением средних отводов обмоток (вернее их неподключением). Во-вторых она легко управляется: один пин задает направление, а на второй мы подаем импульсы. Каждый импульс — шаг. И последняя фича — это деление шагов (микрошаг). То есть микросхема может сделать не полный шаг, а например 1/2. Не 5 градусов, как сделал бы шаговик предыдущих сканеров, а 2,5. И это не предел! Она поддерживает деление на 16. Но на самом деле оно не нужно.
Так что настоятельно рекомендую к применению. Экономит время, ноги (микроконтроллера конечно же), но не деньги. Но она того стоит.
Плату управления я бы лучше спаял на все том же STM32F030, ибо он дешевый и мелкий. Хотя последнее в такой огромной коробке роли не играет, но может стать скорее минусом для некоторых людей.
В управлении лазером менять особо нечего. Все и так хорошо работало на четвертом сканере, и что либо менять не имеет смысла. Разве что DAC прикрутить, но это скорее лишняя головня боль.
А теперь печатать, травить, паять и кодить, кодить, кодить! Но про кодить в следующей статье. И на этот раз мне забить уже не дадут. Надеюсь на большую часть вопросов по электронике я ответил. Вроде тут ничего особо сложного и пугающего нет. Постараюсь как можно скорее написать про код (выкинув все неприличные комментарии и удалив неработающие и ненужные куски).
Удачи всем с проектами/дипломами/посиделками в гараже, где пригодилась данная статья!
P.S. На схеме опечатка — конденсаторы возле кварца — 10 пФ, а не 10 нФ.
В процессе отлынивания от работы над сканером мне написало более 10 человек о том, что им нужно помочь с 3D сканером, причем большая часть вопросов касалась электроники. Про нее и пойдет речь в этой статье.
Общая идея
Что мы вообще должны сделать? Во-первых нам нужно управлять шаговым двигателем, во-вторых мы должны как минимум включать-выключать лазер, в-третьих мы должны как-то обмениваться данными с компьютером. Вот основные три задачи, которые должна выполнять наша плата. Ничего сложного. То есть мы можем применить практически любой микроконтроллер. Я большей частью программирую под STM32, так что его-то я и взял. Хотя общие принципы работы будут естественного одинаковыми для любого контроллера.
Третья версия
В третьей версии сканера я взял микроконтроллер STM32F030F4. Его отличает более паябельный корпус TSSOP20 (на тот момент платы под LQFP у меня упорно не получались даже фоторезистом). Из интересующих нас вещей — таймер с генерацией ШИМ и аппаратный USART. Думаю проблемы типа «Под мотор ног не хватило» никому не грозят. Вот такая у меня получилась разводка:
А вот такая будет схема:
Сразу скажу, что в схеме неправильно проведены проводники к микроконтроллеру, но разводка правильная. Нумерация компонентов на схеме и на плате совпадают, так что номиналы компонентов смотреть в схеме. Не подписан только кварц тактирования. Он располагается в левом верхнем углу платы. Кстати конденсаторы к нему не обязательно 10 пФ. Их номинал должен быть в пределах от 5 до 20 пФ.
Можно заметить, что на разводке нет отверстий под штырьки PLS. Я просто запаиваю их боком. Это видно на самой первой фотографии в начале статьи. Также на разводке видно, что красным я объединил эти штырьки в группы (G1, G2 и т.д.).
G1 — это разъем для общения с компьютером. Слева направо: GND, SWDIO, SWCLK, RX, TX, +5V.
G2 — питание для лазера. Плюс снизу.
G3 — подключение лазера. Плюс слева (ваш кэп).
G4 — подключение мотора.
Как можно догадаться из схемы — драйвим мы именно униполярный шаговый мотор. Для этого используются полевые транзисторы. Мне приглянулась идея поставить SMD сборки. Я применил вот эти сборки. Вы можете взять любые другие. Главное условие — это совместимость корпусов (не то, что ножек и у тех, и у тех 8, а то, что совпадает распиновка). Ну и еще то, что транзисторы должны быть N-канальными.
Для лазера сделан отдельный стабилизатор напряжения (левый нижний угол схемы). Это позволяет регулировать мощность лазера, регулируя выходное напряжение стабилизатора. Для этого необходимо изменять сопротивление резистора R5. Поэтому в качестве R5 лучше всего установить потенциометр. Внимательный читатель спросит: «А почему 9V?». Вообще потому, что лазер нужно запитать отдельно от мотора. Мотор — индуктивная нагрузка, а значит он создает скачки напряжения, которые могут убить лазерный диод. Запитать от 5V не получится из-за того, что падение напряжения на стабилизаторе достаточно велико и нам может банально не хватить напряжения для его нормальной работы. Поэтому поставил поставил блок питания на 9V, ибо он у меня уже был и прекрасно подходил по вольтажу. Стабилизатор установлен на радиатор, но не запаян на плату. Вместо этого он подключается к разъему G2.
ВНИМАНИЕ! Эта схема не является драйвером лазерного диода! Она подключается к нему и регулирует напряжение питания. То есть если вы собрали лазер сами, то хотя бы токоограничивающий резистор и конденсатор вам поставить придется.
В общем по схемотехнике все. Плата легко изготавливается ЛУТом. Вот ссылка на разводку в SprintLayout.
Четвертый сканер
Тут ни фоток, ни схемы: все было собрано на макетной плате (breadbord). Микроконтроллер взял STM32F401RE. Нет, мощность такая конечно не нужна. Просто он установлен в STM32F401-Nucleo. Эта плата понравилась мне тем, что на ней есть не только штырьки, но и гнезда (как в Arduino), а еще тем, что на ней установлен ST-Link V2.1. Что же в нем хорошего? А то, что на нем помимо программатора присутствует еще и USB->UART адаптер. Это значит, что будет меньше проводов и меньше плат. Из минусов можно отметить то, что он определяется в системе как флешка, так что постоянно выскакивает «Проводник» в Windows. Но это так. Мелочи. Лучше он, чем провода. Схема в принципе остается той-же. Три микросхемы можно заменить одной ULNкой (ULN200x; x=1,2,3,4). Правда транзисторы там расчитаны на меньший ток и вообще биполярные, зато корпус один.
А вот про управление лазером нужно сказать отдельно. В четвертой версии я решил сделать мощность регулируемой программно. В смысле мы можем настроить мощность по UARTу. Для управления мощностью лазера загоним ШИМ на TDA2030. Схема этого блока будет такая:
Говоря
ВНИМАНИЕ! Если вы вдруг решили сделать полноценный усилитель, а не повторитель, то помните, что управляем мы при помощи ШИМа, а значит напряжение будет скакать от минимального значения до максимального. Лазерному диоду нужно совсем немного времени чтобы сгореть, так что если напряжение превысит максимальные 4,2V (даже кратковременно), то диод сгорит!
А как сделать лучше?
Существует много плат для управления моторами в RepRap 3D принтерах. Например такая. Подобные платы легко ищутся по названию чипа. Так чем же она хороша? Во-первых она может управлять биполярными двигателями, а любой униполярник превращается в биполярник банальным отключением средних отводов обмоток (вернее их неподключением). Во-вторых она легко управляется: один пин задает направление, а на второй мы подаем импульсы. Каждый импульс — шаг. И последняя фича — это деление шагов (микрошаг). То есть микросхема может сделать не полный шаг, а например 1/2. Не 5 градусов, как сделал бы шаговик предыдущих сканеров, а 2,5. И это не предел! Она поддерживает деление на 16. Но на самом деле оно не нужно.
Так что настоятельно рекомендую к применению. Экономит время, ноги (микроконтроллера конечно же), но не деньги. Но она того стоит.
Плату управления я бы лучше спаял на все том же STM32F030, ибо он дешевый и мелкий. Хотя последнее в такой огромной коробке роли не играет, но может стать скорее минусом для некоторых людей.
В управлении лазером менять особо нечего. Все и так хорошо работало на четвертом сканере, и что либо менять не имеет смысла. Разве что DAC прикрутить, но это скорее лишняя головня боль.
И что теперь?
А теперь печатать, травить, паять и кодить, кодить, кодить! Но про кодить в следующей статье. И на этот раз мне забить уже не дадут. Надеюсь на большую часть вопросов по электронике я ответил. Вроде тут ничего особо сложного и пугающего нет. Постараюсь как можно скорее написать про код (выкинув все неприличные комментарии и удалив неработающие и ненужные куски).
Удачи всем с проектами/дипломами/посиделками в гараже, где пригодилась данная статья!
P.S. На схеме опечатка — конденсаторы возле кварца — 10 пФ, а не 10 нФ.
Alexufo
Вон девид помним начинал тож с вебкамер, а теперь его лого на камере
www.david-3d.com/en
Еще с полосатым проектором интересно. Анимацию снимать хорошо лицевую так.
Hellitron Автор
Да, технология конечно хорошая, но проектор стоит довольно дорого. Мы же хотели создать недорогой сканер.
Alexufo
лазером заказать пропилить в металле полоски, на худой конец напечатать на пленке на струйнике полоски черные, линзу для фокуса и лампу ватт на 300 ))
Если еще проще — фильмоскоп старый взять.