Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Самодельный программатор для PIC-контроллеров

    Самодельный программатор для PIC-контроллеров

    Самодельный программатор для PIC-контроллеров

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

    Как ни странно, но при всём величии сети Интернет в нём очень мало информации о прошивке PIC-контроллеров, а тот материал что удаётся найти - очень сомнительного качества. Конечно, можно купить заводской программатор за неадекватную цену и шить сколько душе угодно, но что делать, если человек не занимается серийным производством. Для этих целей можно собрать несложную и не дорогую в реализации самоделку, именуемую JDM-программатором по приведенной ниже схеме (рисунок №1):


    Рисунок №1 - схема программатора

    Сразу привожу перечень элементов для тех, кому лень всматриваться в схему:

    • R1 - 10 кОм
    • R2 - 10 кОм (подстроченный). Регулировкой сопротивления данного резистора нужно добиться около 13В на выводе №4 (VPP) во время программирования. В моём случае сопротивление составляет 1,2 кОм
    • R3 - 200 Ом
    • R4, R5 - 1,5 кОм
    • VD1, VD2, VD3, VD4, VD6 - 1N4148
    • VD5 - 1N4733A (Напряжение стабилизации 5,1В)
    • VD7 - 1N4743A (Напряжение стабилизации 13В)
    • C1 - 100 нФ (0,1 мкФ)
    • C2 - 470 мкФ х 16 В (электролитический)
    • SUB-D9F - разъём СОМ-порта (МАМА или РОЗЕТКА)
    • Панелька DIP8 - зависит от используемого вами контроллера

    В схеме использован пример подключения таких распространённых контроллеров, как PIC12F675 и PIC12F629, но это совсем не значит, что прошивка других серий PIC будет невозможна. Чтобы записать программу в контроллер другого типа, достаточно перекинуть провода программатора в соответствии с рисунком №2, который приведён ниже.


    Рисунок №2 - варианты корпусов PIC-контроллеров с необходимыми выводами

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

    Хоть сама схема довольно проста и не вызовет трудностей в сборке, но она тоже требует уважения. Поэтому неплохо было бы сделать под неё печатную плату. После некоторых манипуляций с программой SprintLayout, текстолитом, дрелью и утюгом, на свет родилась вот такая заготовка (фото №3).


    Фото №3 - печатная плата программатора

    Скачать исходник печатной платы для программы SprintLayout можно по этой ссылке:
    pp_programmator.zip [17.67 Kb] (скачиваний: 2735)
    При желании его можно изменить под свой тип PIC-контроллера. Для тех, кто решил оставить плату без изменений, выкладываю вид со стороны деталей для облегчения монтажа (рисунок №4).


    Рисунок №4 - плата с монтажной стороны

    Ещё немного колдовства с паяльником и мы имеем готовое устройство, способное прошить PIC-контроллер через COM-порт вашего компьютера. Ещё тёпленький и не отмытый от флюса результат моих стараний показан на фото №5.


    Фото №5 - программатор в сборе

    С этого момента, первый этап на пути к прошивке PIC-контроллера, подошёл к концу. Второй этап будет включать в себя подключение программатора к компьютеру и работу с программой IC-Prog.
    К сожалению, не все современные компьютеры и ноутбуки способны работать с данным программатором ввиду банального отсутствия на них COM-портов, а те что установлены на ноутбуках не выдают необходимые для программирования 12В. Так что я решил обратится к своему первому ПК, который давным-давно пылился и ждал своего звёздного часа (и таки дождался).
    Итак включаем компьютер и первым делом устанавливаем программу IC-Prog. Скачать её можно с сайта автора или по этой ссылке:
    icprog105d.zip [432.25 Kb] (скачиваний: 3472)
    Подключаем программатор к COM-порту и запускаем только что установленное приложение. Для корректной работы необходимо выполнить ряд манипуляций. Изначально необходимо выбрать тот тип контроллера, который собираемся шить. У меня это PIC12F675. На скриншоте №6 поле для выбора контроллера выделено красным цветом.


    Скриншот №6 - выбор типа микроконтроллера

    Далее переходим в меню "Настройки"->"Опции", в появившемся окне выбираем вкладку I2C и ставим галочки, как показано на скриншоте №7.


    Скриншот №7 - настройка метода записи контроллера

    В этом же окне переходим во вкладку "Программирование" и выбираем пункт "Проверка при программировании". Проверка после программирования может вызвать ошибку, так как в некоторых случаях самой прошивкой устанавливаются фьюзы блокировки считывания СР. Чтобы не морочить себе голову данную проверку лучше отключить. Короче следуем скриншоту №8.


    Скриншот №8 - настройка верификации

    Продолжаем работу с этим окном и переходим на вкладку "Общие". Здесь необходимо задать приоритет работы программы и обязательно задействовать NT/2000/XP драйвер (скриншот №9). В некоторых случаях программа может предложить установку данного драйвера и потребуется перезапуск IC-Prog.


    Скриншот №9 - общие настройки

    Итак, с этим окном работа окончена. Теперь перейдём к настройкам самого программатора. Выбираем в меню "Настройки"->"Настройки программатора" или просто нажимаем клавишу F3. Появляется следующее окно, показанное на скриншоте №10.


    Скриншот №10 - окно настроек программатора

    Первым делом выбираем тип программатора - JDM Programmer. Далее выставляем радиокнопку использования драйвера Windows. Следующий шаг подразумевает выбор COM-порта, к которому подключен ваш программатор. Если он один, вопросов вообще нет, а если более одного - посмотрите в диспетчере устройств, какой на данным момент используется. Ползунок задержки ввода/вывода предназначен для регулирования скорости записи и чтения. Это может понадобится на быстрых компьютерах и при возникновении проблем с прошивкой - этот параметр необходимо увеличить. В моём случае он остался по умолчанию равным 10 и всё нормально отработало.

    На этом настройка программы IC-Prog окончена и можно переходить к процессу самой прошивки, но для начала считаем данные с микроконтроллера и посмотрим что в него записано. Для этого на панели инструментов нажимаем на значок микросхемы с зелёной стрелкой, как показано на скриншоте №11.


    Скриншот №11 - процесс чтения информации с микроконтроллера

    Если микроконтроллер новый и до этого не прошивался, то все ячейки его памяти будут заполнены значениями 3FFF, кроме самой последней. В ней будет содержаться значение калибровочной константы. Это очень важное и уникальное для каждого контроллера значение. От него зависит точность тактирования, которая путём подбора и установки этой самой константы закладывается заводом изготовителем. На скриншоте №12 показана та ячейка памяти, в которой будет храниться константа при чтении контроллера.


    Скриншот №12 - значение калибровочной константы

    Повторюсь, что значение уникальное для каждой микросхемы и не обязательно должно совпадать с тем, что на рисунке. Многие по неопытности затирают эту константу и в последствии PIC-контроллер начинает некорректно работать, если в проекте используется тактирование от внутреннего генератора. Советую записать эту константу и наклеить надпись с её значением прямо на контроллер. Таким образом вы избежите множество неприятностей в будущем. Итак, значение записано - двигаемся дальше. Открываем файл прошивки, имеющий как правило расширение .hex. Теперь вместо надписей 3FFF, буфер программирования содержит код нашей программы (скриншот №13).


    Скриншот №13 - прошивка, загруженная в буфер программирования

    Выше я писал, что многие затирают калибровочную константу по неосторожности. Когда же это происходит? Это случается в момент открытия файла прошивки. Значение константы автоматически меняется на 3FFF и если начать процесс программирования, то назад дороги уже нет. На скриншоте №14 выделена та ячейка памяти где ранее была константа 3450 (до открытия hex-файла).


    Скриншот №14 - автоматическое изменение калибровочной константы

    Теперь нужно очень внимательно выполнить последующие действия. Нажимаем иконку микросхемы с молнией на панели инструментов, тем самым сообщая программе, что мы хотим инициировать процесс прошивки. Программа спросит уверены ли мы, что хотим прошить данное устройство. Соглашаемся и нажимаем "ДА". После этого получаем предупреждение, показанное на скриншоте №15.


    Скриншот №15 - предупреждение о расхождении значений константы тактирования

    IC-Prog сообщает нам, что ранее было установлено одно значение калибровочной константы (в моём случае 3450), а теперь другое (3FFF), автоматически подставленное из hex-файла. Также по умолчанию предлагается оставить значение 3FFF. Здесь важно нажать "НЕТ", чтобы IC-Prog во время программирования вернул нам значение 3450 или то, что будет у вас. В общем жмём "НЕТ" и наблюдаем следующее окно (скриншот №16).


    Скриншот №16 - процесс программирования

    В этот период советую ничего не нажимать и не грузить компьютер другими задачами. Когда я делал снимок экрана для этой статьи, то при нажатии на кнопку Print Screen вылетела ошибка записи и пришлось проделывать всё заново. По истечении некоторого времени IC-Prog выдаст вам сообщение об успешной проверке вновь записанного кода в ваш PIC-контроллер, так что всем кому понравилась эта статья, желаю увидеть вот это после аналогичных стараний (скриншот №17):


    Скриншот №17 - прошивка прошла успешно, можно расслабиться

    Если в процессе у вас возникнут какие-либо вопросы, внимательно перечитайте статью заново и всё обязательно получится - проверено лично. Всем удачи и творческих успехов!!!
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

    Мини катушка Тесла своими руками

    Низковольтный паяльник в сети 220 вольт

    9.4
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    9.9
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    10
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 9.76 из 10 (голосов: 24 / История оценок)

    Добавить комментарий

    22 комментария
    Гость Павел #96461

    Не работает. Собрал всё по схеме, прошивки не читает и не программирует, выдаёт ошибки и т.п. программа не видит работоспособность. Все детали новые. Всё проверил по 300 раз. Итог: программатор не рабочий, буду искать простую схему ч/з com или lpt. Я уже программировал простыми схемами однаминутками такие как флеш память, 24со2, но плату разобрал, т.к. у меня теперь готовые программаторы avr, flash и т.п. нету для pic. Схема не работает, ищите другую, проверенно лично.

    777 #72998

    Собери студенческий и не мороч себе голову

    Гость Иван #69921

    PIC18F25K50-I/SO 

    Такое запрограммировать не получится ?

    Korolev #69303
    Screenwiper,
    Предположим, настоящего COM-порта, способного выдать 12В, нету. Есть только переходники с USB, где напряжение 5В.

    У СОМ-порта иные уровни:

    По стандарту RS-232 напряжение сигналов может находиться в пределах от -25 В до +25 В.

    yes 

    Но я для прошивок использовал примерно такой преобразователь:

    У меня работало нормально.  yes 

    Screenwiper #69295

    Предположим, настоящего COM-порта, способного выдать 12В, нету. Есть только переходники с USB, где напряжение 5В. Можно ли в этом случае дополнить программатор и применить микросхему согласователь MAX232? На её вторичную сторону подать 12В. Эта микруха раньше часто встречалась в дата-кабелях для мобильных телефонов, и там она была как понизитель, ибо у мобильников там 5В было. По даташиту она до 15В может работать, то есть может и повышать уровень сигнала.

    Stalker1243 #69197

    Подскажите пожалуйста , Программа прочитала только 1 раз pic контроллер ,использую кабель Com 1.5 метра , возможно ли ,что из-за длинного провода программа не может прочитать нормально ?

    Гость Сергей #57631
    Я правильно понимаю, напряжение замеряется на панельке Dip 4й и 8й выводы? Замер производить на вставленном контроллере или нет? Com порт встроенный на метеринке, Винда 10ка иногда при включении программы ругается на драйвер.
    Гость Сергей #56711
    Так он шьёт PIC16?
    Гость Алексей #55357
    Что-то у меня напряжение выше 6 вольт тоже не поднимается и плавно падает пока идёт процесс программирования. Каковы должны быть настройки самого COM порта? Да, я замерял без контроллера, просто при запуске программы.
    Гость Владимир,
    Извиняюсь все заработало!!!
    Гость Владимир #44136
    Не работает програииатор
    Гость Валерий #41427
    Гость Иванов,
    Если у Вас получилось в кратце что у меня не так. см. комментарий от 23.02.2020
    Гость Валерий #41408
    Собрал программатор JDM по Вашей схеме. COMport его не видит. На стабе 13 в вместо 13 вольт откуда то 4.8 в . Типа через конденсатор с ком порта лезет!!!??? Почему не видит ком порт?? на 1 ножке не задействованной по схеме с компорта висит 8 в. Может быть порт слабый ?? На компорте ни наодной из ножек не нашел 13 В!!!!!! Откуда им взяться ?

    Кабель кстати использовал для связи программатора с PC нульмодемный кабель RS 232 с полным квитированием. Может кабель не тот? Тогда какой кабель надо спаять для того чтобы COM порт увидел программатор?
    Гость Сергей #40512
    От куда берется 13в на 4-ой ноге???
    Гость Иванов #28835
    Прекрасна тема. Висок професионализъм, точно, ясно и кратко изложение! Благодаря! Успехи!
    Гость Леночка #28814
    Мальчики, подскажите пожалуйста. Если при считывании прошивки с заведомо прошитого контроллера, в программном коде одни НУЛИ и в конце калибровочный коэффициент, значит ли это что прошивка защищена от считывания? микроконтроллер PIC16F630, пыталась считать программатором по схеме "3 проводка" через COM-порт. help
    Эдвард Радзинский #23965
    здравствуйте . с новым годом вас. скажите пожалуйста. вы написали 13 вольт на 4ом выводе при программировании. измерять напряжение на 4ом выводе относительно gnd? расскажите по подробнее как вы проводили настройку программатора
    Pronin #20673
    есть схема (более серьезная) на LPT AN589. Делал давно-давно
    Смотрите в инете
    Roman1984 #20670 Автор
    К сожалению, нет.
    dell-ua #20648
    а случайно схемы с lpt портом нету? спасибо.
    Roman1984 #19469 Автор
    Спасибо за оценку. Я делал другу программатор с выносным кабелем около 1 метра. Полёт нормальный - шьёт контроллеры без сбоев. Кабель использовал "витая пара" многожильный.
    Иван_Похмельев #19467
    Roman1984, поставил Вам 9-10-10, но есть вопрос: не пробовали работать с программатором, вынесенным от COM-порта на кабеле? Если он работает в таком случае нормально, можно вместо разъёма на плате запаять кабель. Удобнее, когда модуль программатора лежит на столе, да и динамические нагрузки на COM-порт ПК меньше.
    При выносе на кабеле желательно помещать программатор, когда он не используется, но кабель не вынимается из разъёма ПК, в какую-нибудь коробочку, типа мыльницы, во избежание случайных замыканий.

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии