How-to реанимировать плату woodpecker для китайских ЧПУ
Добавлено: 28 сен 2017, 15:32
Удачная перепрошивка внезапно ''умершего'' микроконтроллера Atmega 328P с использованием дешёвого usb программатора на CH341
(Может пригодится и в случае неудачной прошивки контроллера)
История такая:
купил пару недель назад на алиекспресс станочек т.н. CNC 1610 с лазером 5.5вт и платой контроллера arduino/woodpecker с grbl 0.9j. Всё шло более-менее нормально, осваивал потихоньку grbl коды, программы и нюансы фрез и материалов, как вдруг, окончив прожиг лазером небольшой картинки, в процессе ухода обратно в ноль на полпути мой станок умер. Просто остановился и больше не реагирует на команды.
После непродолжительной проверки всего того, что можно проверить мултиметром (напряжения питания 5-12-24В) и компьютером (usb-serial CH340) единственным подозреваемым для меня остался процессор Atmega328P. Так как никакого опыта с такими микроконтроллерами не имею (ни разу не программист) естественно впал в уныние. Связался с продавцом и после непродолжительного обмена информацией он согласился, что плата контроллера дохлая, он посоветовать ничего толкового не может и высылает новую.
Про себя подумал- вариантов два: или процессор сгорел (Китай всё таки, хотя читал, что эти Атмеги почти неубиваемы) или что то случилось с прошивкой (что тоже не очень хорошо, т.к. в флеше всё должно храниться вечно). Но, т.к. плата всё равно ''в утиль'', решил погуглить- как же Атмеги/Ардуины прошиваются? Вариантов море, самое распостранённое- через имеющийся usb, но тогда микроконтроллер должен содержать т.н. bootloader иначе связи через usb не будет. Попробовал, используя программу Arduino IDE и статью из wiki- конечно, программа в конце usb кабеля ничего не видит. Был ли bootloader с завода/при покупке или нет- уже не узнать.
Чтобы прошить bootloader или любую прошивку, если нет связи по usb/в ''пустых'' микроконтроллерах, используется т.н. In-system programming, или программирование, не отключая чип от остальной схемы. В нормальных девайсах типа оригинальных Ардуино для этого есть специальный порт/гнездо/штеккер ICSP/ISP. На плате этих woodpecker-ов такого, естественно, никто не сделал. Поэтому пришлось с помощью интернета найти распиновку (datasheet) и подпаять тонкие проводочки напрямую к ножкам микроконтроллера (15-я-MOSI; 16-я MISO; 17-я SCK; 29-я Reset), плюс и минус 5в питания взял из шины внешних подключеный.
Ок, ISP порт теперь есть, но чем же прошивать? По нормальному- есть много разных программаторов именно для прошивки Ардуино, начиная от других Ардуино, которых можно использовать в качестве программаторов, кончая всякими специальными программаторами под разные порты компьютера и разным функционалом. И все программы, предназначенные для прошивок контроллеров Атмега, узнают только этих ''специальных'', широкоизвестных программаторов. Самые частоупоминаемые из таких программ- Arduino IDE, Avrdude.
У меня в силу моей тупизны в вопросах программирования ничего подобного и близко не валялось и, чтобы экспериментировать со сдохшим микроконтроллером ЧПУ, приобретать я ничего не собирался. К тому же, не уверен что в радиусе 150км от меня есть место, где можно купить что-то свяазанное с Ардуино. Единственная штука у меня, что более менее подходит к категории ''программатор''- usb программатор TTL, I2C, SPI EEPROM/flash памятей на чипе CH341, которого иногда пользую для чтения/записи флеш-памяти разных угробленных неумелыми действиями прошивки не-заводскими прошивками устройств. И оказалось, что у этого программатора есть побочная функция- он может прошивать по ICSP. Но- такой программатор напрямую не узнает ни одна из вышеназванных программ прошивки Атмега.
К счастю во всем Гугле нашелся один человек, который сделал именно то, что мне требовалось- ''научил'' программу Avrdude работать с программатором на чипе CH341 для чтения записи микроконтроллеров Атмега. Линк на обсуждение: форум easyelectronics.ru (это не реклама этого форума!). Скачал отсюда программу Avrdude с графической оболочкой Avrdudess (ну не любитель коммандной строки я), подключил к usb связку "плата контроллера на Атмега 328P на программатор на CH341 через ISP'' и- о чудо! в Avrdudess самоопределился микроконтроллер Атмега 328P! Первым делом прочел память- там только что то одинаковое-повторяющееся одно и то же. Из всего этого я подтвердил свой вывод, что: во-первых- микроконтроллер скорее жив, чем мёртв; во-вторых- станок остановился, потому что по какой то причине слетела его программа grbl.
После прочтения памяти пробовал с помощю того же Avrdudess записать прошивку grbl 0.9 (отсюда) но что то не сраслось- в стадии проверки записанного всегда получил результат failed, то есть- содержание записанного не соответствует исходному файлу. Подумал- ну что-ж, не зря же этот микроконтроллер сдох, что то у него там внутрях стряслось. Но, т.к. после всего сделанного и узнанного уже страх что то сделать хуже, чем было, взял Arduino IDE, через нее стандартным образом через тот же ISP записал bootloader, и в конце через штатный usb с помощью прошивальщика Ардуино (Xloader) залил прошивку grbl 0.9.
Подключил плату обратно к станку и он ожил! Уже ради интереса таким же образом записал свежую grbl 1.1 но потом откатился обратно на 0.9 т.к. с версией 1.1 нормально не заработала программа для лазера LiteFire, которая шла в комплекте с станком.
Закругляя свою длинную историю- станок после вышеперечисленной реанимации без примечаный отработал уже пару часов и ничего не свидетельствует о каких то проблемах. Вопрос- что это было/от чего он потерял свою память? остаётся невыясненным. Возможно, что то ''проскачило'' по шине питания. Возможно всё-таки микроконтроллер с дефектом. Время покажет. От платы, высланной взамен, не отказался.
И главная мораль сей басни- есть возможность оживить микроконтроллер ЧПУ woodpecker для китайских 1610, 2418 и тому подобных, даже если кажется, что всё совсем плохо. Самое трудное (не для меня- я паяю уже 30 лет)- это подпаять провода к микроконтроллеру. И пара долларов для дешёвого программатора.
Удачи всем!
(Может пригодится и в случае неудачной прошивки контроллера)
История такая:
купил пару недель назад на алиекспресс станочек т.н. CNC 1610 с лазером 5.5вт и платой контроллера arduino/woodpecker с grbl 0.9j. Всё шло более-менее нормально, осваивал потихоньку grbl коды, программы и нюансы фрез и материалов, как вдруг, окончив прожиг лазером небольшой картинки, в процессе ухода обратно в ноль на полпути мой станок умер. Просто остановился и больше не реагирует на команды.
После непродолжительной проверки всего того, что можно проверить мултиметром (напряжения питания 5-12-24В) и компьютером (usb-serial CH340) единственным подозреваемым для меня остался процессор Atmega328P. Так как никакого опыта с такими микроконтроллерами не имею (ни разу не программист) естественно впал в уныние. Связался с продавцом и после непродолжительного обмена информацией он согласился, что плата контроллера дохлая, он посоветовать ничего толкового не может и высылает новую.
Про себя подумал- вариантов два: или процессор сгорел (Китай всё таки, хотя читал, что эти Атмеги почти неубиваемы) или что то случилось с прошивкой (что тоже не очень хорошо, т.к. в флеше всё должно храниться вечно). Но, т.к. плата всё равно ''в утиль'', решил погуглить- как же Атмеги/Ардуины прошиваются? Вариантов море, самое распостранённое- через имеющийся usb, но тогда микроконтроллер должен содержать т.н. bootloader иначе связи через usb не будет. Попробовал, используя программу Arduino IDE и статью из wiki- конечно, программа в конце usb кабеля ничего не видит. Был ли bootloader с завода/при покупке или нет- уже не узнать.
Чтобы прошить bootloader или любую прошивку, если нет связи по usb/в ''пустых'' микроконтроллерах, используется т.н. In-system programming, или программирование, не отключая чип от остальной схемы. В нормальных девайсах типа оригинальных Ардуино для этого есть специальный порт/гнездо/штеккер ICSP/ISP. На плате этих woodpecker-ов такого, естественно, никто не сделал. Поэтому пришлось с помощью интернета найти распиновку (datasheet) и подпаять тонкие проводочки напрямую к ножкам микроконтроллера (15-я-MOSI; 16-я MISO; 17-я SCK; 29-я Reset), плюс и минус 5в питания взял из шины внешних подключеный.
Ок, ISP порт теперь есть, но чем же прошивать? По нормальному- есть много разных программаторов именно для прошивки Ардуино, начиная от других Ардуино, которых можно использовать в качестве программаторов, кончая всякими специальными программаторами под разные порты компьютера и разным функционалом. И все программы, предназначенные для прошивок контроллеров Атмега, узнают только этих ''специальных'', широкоизвестных программаторов. Самые частоупоминаемые из таких программ- Arduino IDE, Avrdude.
У меня в силу моей тупизны в вопросах программирования ничего подобного и близко не валялось и, чтобы экспериментировать со сдохшим микроконтроллером ЧПУ, приобретать я ничего не собирался. К тому же, не уверен что в радиусе 150км от меня есть место, где можно купить что-то свяазанное с Ардуино. Единственная штука у меня, что более менее подходит к категории ''программатор''- usb программатор TTL, I2C, SPI EEPROM/flash памятей на чипе CH341, которого иногда пользую для чтения/записи флеш-памяти разных угробленных неумелыми действиями прошивки не-заводскими прошивками устройств. И оказалось, что у этого программатора есть побочная функция- он может прошивать по ICSP. Но- такой программатор напрямую не узнает ни одна из вышеназванных программ прошивки Атмега.
К счастю во всем Гугле нашелся один человек, который сделал именно то, что мне требовалось- ''научил'' программу Avrdude работать с программатором на чипе CH341 для чтения записи микроконтроллеров Атмега. Линк на обсуждение: форум easyelectronics.ru (это не реклама этого форума!). Скачал отсюда программу Avrdude с графической оболочкой Avrdudess (ну не любитель коммандной строки я), подключил к usb связку "плата контроллера на Атмега 328P на программатор на CH341 через ISP'' и- о чудо! в Avrdudess самоопределился микроконтроллер Атмега 328P! Первым делом прочел память- там только что то одинаковое-повторяющееся одно и то же. Из всего этого я подтвердил свой вывод, что: во-первых- микроконтроллер скорее жив, чем мёртв; во-вторых- станок остановился, потому что по какой то причине слетела его программа grbl.
После прочтения памяти пробовал с помощю того же Avrdudess записать прошивку grbl 0.9 (отсюда) но что то не сраслось- в стадии проверки записанного всегда получил результат failed, то есть- содержание записанного не соответствует исходному файлу. Подумал- ну что-ж, не зря же этот микроконтроллер сдох, что то у него там внутрях стряслось. Но, т.к. после всего сделанного и узнанного уже страх что то сделать хуже, чем было, взял Arduino IDE, через нее стандартным образом через тот же ISP записал bootloader, и в конце через штатный usb с помощью прошивальщика Ардуино (Xloader) залил прошивку grbl 0.9.
Подключил плату обратно к станку и он ожил! Уже ради интереса таким же образом записал свежую grbl 1.1 но потом откатился обратно на 0.9 т.к. с версией 1.1 нормально не заработала программа для лазера LiteFire, которая шла в комплекте с станком.
Закругляя свою длинную историю- станок после вышеперечисленной реанимации без примечаный отработал уже пару часов и ничего не свидетельствует о каких то проблемах. Вопрос- что это было/от чего он потерял свою память? остаётся невыясненным. Возможно, что то ''проскачило'' по шине питания. Возможно всё-таки микроконтроллер с дефектом. Время покажет. От платы, высланной взамен, не отказался.
И главная мораль сей басни- есть возможность оживить микроконтроллер ЧПУ woodpecker для китайских 1610, 2418 и тому подобных, даже если кажется, что всё совсем плохо. Самое трудное (не для меня- я паяю уже 30 лет)- это подпаять провода к микроконтроллеру. И пара долларов для дешёвого программатора.
Удачи всем!