Наш магазин на eBay Наш магазин на AliExpress Наш канал в telegram

RCD-программатор микроконтроллеров PIC

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

Существенным недостатком JDM-программатора является то, что он не может контролировать линию Vdd и, как следствие, — не может реализовать правильный алгоритм подачи напряжений при программировании. Если контроллер сконфигурирован таким образом: "Internal Oscillator", "MCLR Off", то при неправильной последовательности подачи напряжений он сначала запускается и начинает выполнять ранее зашитую в нем программу, а потом переходит в режим программирования (при этом указатель может указывать куда угодно, а не на начало памяти программ). В связи с этим: то, куда будет залита ваша программа, да и будет ли залита вообще — большой вопрос!

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

схема RCD-программатора pic-контроллеров

На диодах D1…D4 и стабилитроне D6 выполнен простейший преобразователь уровней RS232->TTL. Когда на линиях DATA, CLOCK напряжение меньше 0В, то они через диоды D1, D2 подтягиваются к земле, а когда напряжение на этих линиях больше 5В, то они через диоды D3, D4 подтягиваются к питанию +5В, которое задается стабилитроном D6.

Питается этот девайс прямо от COM-порта. Стабилитроны и диоды в этой схеме вполне можно заменить отечественными: Д814Д, КС147А и т.д.

Каким образом реализуется правильный алгоритм подачи напряжений и откуда вообще берутся 13 Вольт напряжения программирования? Всё как всегда очень просто.

При инициализации порта на выходе TxD висит -10В. При этом конденсатор С1 заряжается через стабилитрон D7 (который в данном случае оказывается включён в прямом
направлении и работает в качестве диода). Т.е. напряжение на плюсовой ноге С1 относительно GND равно нулю, но относительно TxD=+10В (или сколько там у вас напряжение на выходе COM-порта).

Теперь представим, что происходит при изменении напряжения на выходе TxD с -10В до +10В. Одновременно с ростом напряжения на выводе TxD, начнёт расти и напряжение на плюсовой ноге конденсатора С1. Заряд не может слиться на землю через D7, т.к. теперь D7 включен обратно, единственный путь — утечка через PIC, но ток там мизерный. Итак, напряжение на плюсовой ноге С1 (а, следовательно и на выводе MCLR) начинает расти. В момент, когда на TxD ноль относительно земли, на конденсаторе С1 (на его плюсовой ноге, а следовательно и на MCLR) относительно земли как раз +10В. Когда на TxD +3В, — на С1 уже 3+10=13В. Вот и всё, напряжение Vpp уже подано, а на линии VDD ещё только +3В.

При дальнейшем росте напряжения на TxD, — напряжение на С1 не растёт, так как начинает работать стабилитрон D7. При росте напряжения на TxD выше +5В начинает работать стабилитрон D6.

Чтобы ограничить ток разряда конденсатора C1 через стабилитрон D7, в схему включен резистор R6, соответственно, напряжение на C1 не точно равно напряжению стабилизации, а несколько выше: UC1=Uст+IРАЗР*R6. Для подстройки напряжения программирования служит сопротивление R3. Можно поставить переменное 10КОм или подобрать постоянное, так, чтобы напряжение программирования было примерно 13 В (в устройстве, представленном на рисунке ниже, R3=1,2 кОм).

Я успешно программирую этим программатором контроллеры PIC12F629 и PIC16F628A, однако автор утверждал, что этим программатором (в представленном мной варианте) можно программировать PIC12F508 , PIC12F509 , PIC12F629 , PIC12F635, PIC12F675, PIC12F683 , PIC16F627A , PIC16F628A , PIC16F648A. Кроме этих, на сайте автора feng3.cool.ne.jp есть модификации программатора для других PIC-контроллеров.

Готовые девайсы:

RCD-программатор pic-контроллеров (фото) RCD-программатор pic-контроллеров (фото)

Вариант программатора от Mixer:

RCD-программатор pic-контроллеров (фото)

Программу IC-prog 1.05D, для прошивки контроллеров, можно скачать в разделе софт. При прошивке выбрать тип программатора JDM. Включить контроль Vcc для JDM. При использовании совместно с операционными системами Windows 2000/NT/XP — выбрать интерфейс Windows API и включить галочку "Enable NT/2000/XP driver", в остальных случаях используйте интерфейс Direct I/O.

Еще одно. Господа, сохраняйте пожалуйста при прошивке калибровочные биты или потом не жалуйтесь, что на внутреннем генераторе нестабильно работает/не работает!!!

Скачать печатную плату (AutoCAD2000i)

Скачать печатную плату от Mixer (DipTrace 2.0)

Как сделать свой вариант JDM-программатора для PIC-контроллеров

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

Комментарии 2

  • Не совсем понятно включение резистора R3.
    Если у нас высокоомный вход на лапах MCLR контроллера, то хоть стоит ползунок резистора на 10к, хоть на 1к, хоть вообще в нуле, регулировки 13V теоретически быть не должно.
    Если же верхний конец переменника по схеме оставить как есть, нижний посадить на GND-VSS-провод, а средний разъединить от верхнего и подать на MCLR контроллера, тогда будет регулироваться.

    • Ну, согласен, R3 больше просто ток ограничивает, чем что-то регулирует. При утечке через MCLR в 5 мкА получается всей регулировки на 50 мВ (можно побольше резистор взять, килоОм на 100-500).
      С другой стороны, если нижний конец переменника посадить на Vss, то с ростом напряжения на Tx конденсатор С1 будет разряжаться через этот переменник и напряжение будет падать (тут никто в обратную сторону ток не запирает).
      Честно говоря я уже не помню алгоритмы работы всех этих программ (подзаряжают ли они периодически этот кондёр и если да, то с какой периодичностью) и не помню, нужно ли держать на MCLR постоянно Vpp или после перевода контроллера в режим программирования можно об этом уже не думать, соответственно, не могу сказать, будет ли такой разряд через R3 критичным.
      Если вы поэкспериментируете и расскажете нам о результатах, это будет очень интересно.

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