Небольшой проект, в котором реализована маленькая и простоя плата для изучения микроконтроллеров PIC18, выполненная по образу и подобию Arduino Nano.

Фото готовой платы
Фото готовой платы

Обращаю ваше внимание – плата со средой разработки Arduino к счастью не совместима!  

Предыстория

После очередного посещения выставки Expo-electronica узнал о новом веянии в микроконтроллерах фирмы Microchip, а именно о появлении новых периферийных устройств, независимых от ядра. Много информации получил от официального дистрибутора ООО "Гамма Инжиниринг", в том числе и в печатном виде. У них же закупал микроконтроллеры и программатор, некоторые МК предоставили бесплатно в виде образцов по заявке. Контору не рекламирую, и отношения к ней не имею. Подробнее об этом можно почитать здесь.

Много всего нового и интересного, что захотелось опробовать и протестировать. Именно для изучения новых возможностей решил сделать такую плату.

Второе что представляло для меня интерес – работа с разными модулями от Arduino и не только - это прежде всего дисплеи, ЦАП и GPS модули. Хотелось протестировать некоторые идеи до того, как реализовывать в железе. Например, часто нужно понять, хватит ли вообще скорости МК для реализации той или иной задумки. Сразу оговорюсь – сама идея железа для Arduino – мне нравиться, если нужно прототипирование, а вот среда разработки от Arduino – «вселенское зло» IMHO. Ну и название как-то само собой образовалось. А вот с появление среды разработки MPLAB IDE X и системой MCC – разработка для PIC стала намного быстрее и приятнее. Очень доступно об этом здесь.

Задача

Итак, задача получилось такой: сделать малогабаритную плату с современным PIC18 имеющем на борту независимую от ядра периферию. Плата должна вставляться в стандартную контактную макетную плату. На бору иметь преобразователь USB-UART. Плата должна работать с двумя напряжениями на выбор – 5В и 3.3В. Внешнее подключение программатора-отладчика совместимого со средой MPLAB IDE X а именно PIC Kit 4. Вывод МК на предельную скорость – 64МГц от кварцевого генератора. 

Решение

Выбор пал на МК PIC18F57Q43 как на самый «откормленный» в семействе, с удобным и не габаритным корпусом TQFP-48/7x7x1. Вместо него можно смело применить PIC18F55Q43 или PIC18F56Q43 в том же корпусе, разница будет только в объеме памяти. Подробнее.

Схема на рисунке.

Схема электрическая принципиальная
Схема электрическая принципиальная

Питание 5 вольт берётся от USB шины ПК – не стоит забывать, что грузить больше 500мА нельзя, но этого более чем достаточно. На плате установлен стабилизатор на 3.3 вольта AMS1117-3.3. Выбор питания обеспечивается установкой перемычки на разъеме XP4.

Тактирование МК от кварцевого резонатора на 16МГц, так что с помощью PLL в МК можно поднять тактовую частоту до 64МГц. Ну а при необходимости – можно и от внутреннего генератора в широком диапазоне частот работать.

Преобразование USB-UART выполнено на микросхеме PL2303SA - маленькая, дешевая, проверенная. Микросхема ADUM1201 использована не по назначению, а как преобразователь уровней для UART. С одной стороны, она питается напряжением 5В от USB, а с другой тем же напряжением что и микроконтроллер. Подключение к ПК через разъем microUSB.

Программирование осуществляется с помощью разъема XP3 к которому подключается программатор отладчик PICkit 4.

Ну а, чтобы было не скучно (для любителей написать «Hello, World»), да и для отладки полезно бывает – к порту RC5 МК через резистор подключен светодиод.

Реализация

Все это устройство смонтировано на двухсторонней плате размером 53х20мм. Платы за недорого сделал в Китае в известной конторе.

Схема и топология сделана в САПР DipTrace.

Плата - верх
Плата - верх
Плата - низ
Плата - низ

 

Остаётся добавить, что в плату можно впаять любой PIC16 или PIC18 в таком же корпусе, нужно конечно проверить назначение основных выводов – питания, программирования и тактирования, но в пиках проблем с этим не наблюдается. Вот список возможных МК:

  • PIC18F57Q43

  • PIC18F57Q83

  • PIC18F57Q84

  • PIC18F57K42

  • PIC18F56Q43

  • PIC18F56Q84

  • PIC18F56Q83

  • PIC18F56Q71

  • PIC18F56K42

  • PIC18F55Q43

  • PIC18F55K42

  • PIC16F15386

  • PIC16F19186

  • PIC16F15385

  • PIC16F19185

К статье прилагается архив с материалами, а именно:

  • Файлы схемы и платы в формате САПР

  • Схема и перечень элементов в формате PDF

  • Архив гербер-файлов для заказа плат

  • Datasheet на PIC18F27/47/57Q43

  • Файлы проекта для MPLAB IDE X – просто мигаем светодиодом на плате.

 Надеюсь статья оказалась интересной и полезной. так же надеюсь что статься поможет в изучении PIC-ов на практике.

Буду рад комментариям.

Комментарии (15)


  1. forthuser
    25.02.2022 15:28
    +10

    Можно было сделать в таком формате
    image

    Scamp 2


    1. Tamul
      25.02.2022 16:35
      +4

      Блин, какой классный формат для отладки. А то некоторые отладочные платы вылезают за границы одного breadboard и вынуждают использовать два рядом


  1. 3263927
    25.02.2022 15:41
    +3

    делал такую же тему на pic18f4550, у него уже USB готовый встроенный, не нужно FTDI


  1. maledog
    25.02.2022 15:41
    +1

    "Но есть один ньюанс". Весь смысл Arduino в наличии простой среды разработки и большого количества готовых библиотек. В данном случае это просто еще одна плата. Вроде bluepill:
    Плюсы:
    - цена;
    - более низкое потребление в режиме сна;
    - возможность измерить каким напряжением питается контроллер без плясок с бубном;
    - наличие eeprom.
    Минусы:
    - 8-разрядный;
    - меньше оперативной памяти;
    -отсутствие аппаратного RTC(что порождает необходимость искать библиотеку работающую с датой и временем);
    -наличие на плате PL2303 скажется на потреблении в режиме сна;

    И если уж на то пошло, то я бы добавил еще кварцевый резонатор на 32 kHz. Иначе при реализации сна могут возникнуть проблемы, когда требуется точно отсчитывать время. Если отсчитывать интервалы LSI, то получим погрешность в 3-7 секунд на 10-минутном интервале, а если гонять HSE, тогда придется платить большим потреблением энергии.


    1. R2IN Автор
      25.02.2022 16:58

      Вот не соглашусь Вами. Ардуино - это игрушка для детей в школе, с основами познакомиться и не более того. Для общего развития тем, кто не собирается изучать МК. Не буду перечислять все минусы ардуино на AVR, они всем хорошо известны (перебор в объеме кода, крайне низкая скорость, отсутствие гибкости в настройке периферии МК, библиотеки в которые не влезть, странный язык типа C/C++ но не соответствующий стандарту языка. Кончо 8кб оперативки для ардуино мало - а вот для пика за глаза, ибо она не расходуется понапрасну. А по набору периферии ни одна ардуино и рядом не стояла! Лично меня прежде всего интересовало попробовать ПНЯ - отсюда и выбор МК и решение.


      1. maledog
        25.02.2022 19:53

        8кб оперативки для ардуино мало - а вот для пика за глаза, ибо она не расходуется понапрасну

        Могут возникнуть трудности при работе с точечными дисплеями, или например при буферизации данных получаемых от медленных интерфейсов, с парсингом данных, с работой с HTTP. Кроме того, вам придется кроить жирные сторонние библиотеки, на предмет того, чтобы они влезли в оперативку и флэш, например Lorawan. А это "проилово" приведет к "попадалову" всякий раз когда оригинальная библиотека будет исправляться и обновляться.
        Я просто к чему, мне вот пришлось пересесть на pic18 когда цены на stm32 взлетели до небес. И после stm работа с pic далеко не айс. В этом плане гораздо перспективнее выглядит RP2040 при сопоставимой с pic18 цене. Когда будет время попробую оценить энергосбережение RP2040.


        Касательно среды программирования. MPLABX достаточно жирен. Кодогенератор еще и глючен. Пример, открываем один проект - вызываем кодогенератор - открываем другой проект - пытаемся вызвать кодогенератор (для того чтобы посмотреть как был сгенерирован код для одного проекта и перетащить часть параметров в другой) - наблюдаем падение кодогенератора - больше его нельзя вызвать ни в первом ни во втором проекте до закрытия MPLABX. Пока хоть один файл от другого проекта открыт кодогенератор не вызвать. Его нельзя вызвать отдельным окном.

        Отдельно стоит отметить стоимость программатора для pic.


        1. smart_pic
          27.02.2022 05:42

          мне вот пришлось пересесть на pic18 когда цены на stm32 взлетели до небес

          Ну и сравнили переход ! Перейдите c STM32 на PIC32 и проблем нет.

          Касательно среды программирования. MPLABX достаточно жирен.

          Ни кто не мешает для PIC18 взять MPLAB 8.88 и Microchip примеры использования, там все без библиотек , открытый код , все прозрачно и документировано. Ни что не обновляется. Сопровождаем в производстве на протяжении уже 10 лет проект - проблем нет. За последние 4 года запустили в производство 7 девайсов. 5 на pic32 и 2 на pic18f67j60. Преимущество pic18f67j60 - дешевизна, простота схемного решения, функциональность. Все девайсы имеют веб интерфейс управления и настроек, плюс управление по тср.


      1. PEACE_dez
        25.02.2022 23:02
        +1

        вот точно так же относился к Ардуине!
        А потом прагматизм взял верх,
        и когда нужно быстро протестить какую-нибудь идею/проект,
        то чтоб не возиться с макетированием итп итд
        — скрепя сердце юзаю копеечные Ардуины
        ( даже несмотря на их псевдо Си, от которого голова крУгом идет)


  1. smart_pic
    25.02.2022 16:13
    +4

    Преимущество 18 серии PIC c Ethernet в том что получается очень компактное устройство.

    Например делал вот такой модуль управления по ИК и RS485(RS232 интерфейсная микросхема не впаяна) . На верхней стороне платы установлен модуль питания РОЕ.


    1. xiliu
      25.02.2022 23:31

      Ой, а расскажите пожалуйста поподробнее про poe модуль? Это такой готовый можно купить? (Я поискал, не нашёл ничего такого же компактного и изящного)


      1. daggert
        26.02.2022 01:40

        Судя по виду - это обычный DC-DC фиксированный.


      1. smart_pic
        26.02.2022 07:14
        +1

        Это полноценный РОЕ модуль без гальванической развязки AG8100 от SILVERTEL . Если необходима гальваническая развязка , то на плате предусмотрена установка модуля из серии AG9200 или аналогичного. Сейчас у этого производителя есть и другие компактные модули РОЕ.

        Плюс этого устройства в том что можно пробросить RS485 или RS232 по ЛАН в нужное место не используя блоков питания. Удобно настраивать оборудование с RS485 или RS232 с ноутбука , в котором нет СОМ порта. Можно послушать обмен оборудования при настройке. Можно отправить простые команды в оборудование для тестирования. Не всегда есть возможность подойти близко к оборудованию и подключить RS232, у которого ограниченная длина соединительного кабеля.

        Вот вариант сразу два интерфейса RS485 и RS232. Модуль питания РОЕ с гальванической развязкой


  1. Jury_78
    25.02.2022 16:30

    Было похожее называлось IO-IO для Андроид, где то даже валяется в шкафу.


  1. ALiEN175
    26.02.2022 07:36
    -3

    Писдуина Нано? Простите(


    1. VolodjaT
      26.02.2022 11:55

      Всем 5 классом смеялись