» » » Блок питания с защитой + микроконтроллер ATMEGA16, ATMEGA8535, PIC16F877. Часть первая, лирическая

 
 
 
2

Блок питания с защитой + микроконтроллер ATMEGA16, ATMEGA8535, PIC16F877. Часть первая, лирическая

Разместил kotyk7 17 июля 2013. Просмотров: 17 397


Вниманию сограждан Датагорода предлагаю мой вариант лабораторного блока питания с микроконтроллерным управлением. БП имеет одновременное отображение тока и напряжения на двух 3-разрядных 7-сегментных LED-индикаторах, управляется энкодером. БП собран из доступных деталей, имеет защиту от КЗ в нагрузке, при этом легок в повторении и удобен в использовании.

Все моменты сборки, прошивки, наладки будут расмотрены очень подробно во второй части (практической). Чертежи печатных плат, варианты хексов для ATMEGA16, ATMEGA8535, PIC16F877 в комплекте.

А первая часть статьи (лирическая) немного необычна: почти ни слова о железяках, я делюсь личным тяжким опытом освоения микроконтроллеров с нуля.
Надеюсь, статья поможет кому-то из начинающих пойти моим путем, поможет преодолеть неверие в себя и начать.
А началось все с того, что мне надоело все время решать проблему с поиском нужного в данный момент источника питания. Не скажу, что все было у меня на корню запущено. Универсальных блоков питания я уже за свою практику делал много, но почему-то все время с ними что-то было не так… То габариты большие, то напряжение проседало под нагрузкой, то выходной транзистор в очередной раз «прощал мне все обиды» и в мучениях «умирал», несмотря на хваленые защиты.

Дошло даже до того, что я заполучив на халяву два мощных транзистора советского производства в приятном корпусе из розовой керамики на 35А рабочего тока, поставил их на выход в двухполярном блоке питания. Такой вариант оказался очень даже ничего, ибо оные транзисторы стойко держались при питании системы от трансформатора с рабочим током в 20 Ампер в режиме накоротко. Правда, время от времени не выдерживали КТ815 (из предварительного каскада), ибо кто-то же должен был ответить за моё невежество.

Можете себе представить, какие габариты радиаторов и прочих деталей пришлось использовать при таком токе. Короче, получилось все достаточно «круто», но очень грубо и тяжело. Пользоваться таким БП, как показала практика, было не очень удобно, особенно если такие мощности не нужны в повседневной жизни. Таким образом, несмотря на свою универсальность, он мне в прямом смысле слова надоел. Потом я переехал от родителей в другой город и не взял его с собой, ну Вы понимаете почему, такая тяжесть… Хотя я его помню…, иногда сожалею…, но он там так и остается… хотя могу забрать, но… всегда находятся причины этого не делать.

Такая ситуация продолжаться бесконечно не могла и я решил построить что-то новое и более практичное. Беглый анализ, показал, что в большинстве случаев много-то ведь и не надо. Подвел черту — надо иметь под рукой напряжение от 0 до 25 Вольт и током в 2-3А.

Сказано — сделано. Трансформатор как раз такой имелся, а это важный аргумент. Диодный мост — нет проблем, электролиты нашел… и тут стоп! Стабилизаторы типа КР142ЕН/L78xx мне не понравились, ибо нуля от них не дождешься. Решил собирать на дискрете и подумал: раз я буду делать БП с нуля, то надо что-то к нему «прикрутить» новое, современное.

«Что можно к обычному блоку питания добавить современное?» — спросите вы. Долго думать не пришлось: конечно же заменить стрелочные приборы на цифровые индикаторы. Нашел у себя всем известную микросхему 572ПВ5. Правда, в готовом, сделанном ранее термометре на ЖКИ. Надо было немножко переделать и все. Но измерять хочется и напряжение и ток. Опять трудности…

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

Все бы ничего, но в то время микроконтроллер и я были взаимонепересекающимися плоскостями. То есть знания заканчивались на том, что они есть в природе, хотя в студенчестве «зубрил» Ассемблер для КР580-комплекта, а вот как на нем можно «готовить» — лучше не спрашивать. Мог только сделать умный вид среди таких же «специалистов».

Все решил за меня корпус. Делать его с нуля и на кухне в многоэтажке резона не было. Возможности советской промышленности в моем городе как-то тихо и безвозвратно исчезли. Хорошо, знакомый принес мне готовый пустой блок от какого-то военного устройства. Удивительно крепкий (железный ведь) и небольшой и не тяжелый — самое то, что надо. Трансформатор влез. Посмотрев на лицевую панель, я понял, что места немного и «разогнаться» не получится. Надо все делать экономно и миниатюрно. Надо попытаться повторить найденную схему индикаторов на микроконтроллере.

Купил два микроконтроллера, начал собирать и совершенно случайно читая даташит от Microchip, обнаружил ошибку в Интернетной схеме. Пережил панику, но сдаваться не хотелось. Решил все сделать по инструкции из даташита и надеялся на успех. Случилось как в песне: «кто вёсел не бросил, тот берег всегда найдет». Настойчивость принесла плоды и все получилось. В стадии эйфории решил поделиться мыслями с жителями Датагорода и появилась моя первая статья Простой цифровой вольтметр от 0 до 30 Вольт на 3 разряда, в которой детально описана методика повторения данной схемы, дабы другие не наступали на те же грабли.

Это был мой первый личный успех на данном поприще, который изменил мое мнение о развитии и использовании микроэлектроники.
Я вдруг понял, в какой мере я отстал от жизни.


Хотя блок питания был собран, я все отчетливее понимал, что мое творение безнадежно устарело.
Сразу решил повторить еще что-нибудь на МК — лишь бы получилось. Тем более, что простенький программатор PonyProg уже был в наличии, программы для его обслуживания тоже и я даже немного их стал понимать (так мне тогда казалось).

Но мысль о современном универсальном блоке питания не оставляла. Я решил осваивать микроконтроллеры. Сдаваться не хотелось, силы есть, а знаний в этой сфере нет. Было очень трудно начинать. Может студентам проще, а тут… Все равно что снова пошел в школу. При этом учителей нет, оценки некому поставить, подсказать тоже и сам понимаешь, что на данном начальном этапе ты полный идиот.

Самостоятельное штудирование книг ни к чему особо положительному не привело. Попытайтесь по книгам с нуля выучить любую ранее не используемую профессию, скажем повара. Все мы умеем жарить яичницу, а попробуйте сварганить из яиц блюдо, которое не стыдно было бы подать на стол гостям, при этом съедобное да современное. Что, слабо?!

Так и у меня. Короче, пошел ва-банк. Решил изучить в этой сфере все, что мне поддается. Заодно и блок питания собрать с управление от микроконтроллера и на его основе программирование освоить. Будет реальный стимул не отчаяться.

Задумал такое: трехразрядные амперметр и вольтметр, регулирование энкодером, индикация аварии и т.п. А это значит использование динамической индикации на 6 индикаторов, параллельный 8-битный ЦАП. Ужас. Подходил только «большой» контроллер на 40 ног, не меньше. По началу, выглядело как-то монструозно. Изучил доступное железо. Оказалось, что продукция Microchip больно кусается на фоне конкурентов от Atmel.


Микроконтроллер ATMega16L предложили за 3$ и это решило все. Ведь экономическая составляющая в нашем случае играет далеко не второстепенную роль.

Индикаторы остались от вольтметров на PIC16F676, о которых я уже упоминал. Короче задел выглядел солидно и я начал проектировать схему. С цифровой частью проблем не было. Схема подключения обычная, довольно накатанная. Поставил буферные транзисторы на индикатор чтобы разгрузить микроконтроллер.

Долго морочился с ЦАПом, сначала хотел «выпендриться» и прицепить готовый чип, а потом подумал: это лишние и не малые затраты, повторяемость проекта начнет стремиться к нулю, да еще надо научиться этим ЦАПом управлять.
Так утвердилась идея резисторного R-2R ЦАПа.

Порты есть, их много и жалеть их не приходиться. Можно было начинать лепить все в кучку. Если все задуманное заработает, то аналоговая часть пойдет проще. Немедленно нарисовал схему, осталось только программное обеспечение. Надо научиться! Ведь для этого я и начал весь этот «сыр-бор».

Тут весь ужас и начался, причем сразу и везде. Начиная от описаний микропроцессоров на английском языке до самого компилятора языка программирования. Короче, не видать мне белого света, если бы не дружественная помощь добрых людей на просторах Интернета. Около 8 месяцев себя изводил, людей мучил, глупые вопросы задавал и все-таки своего добился. Поначалу мозг кипел от переизбытка знаний и попыток их использовать на практике. Борьба с кучей ошибок казалось, не имеет конца…

Для программирования нужно изучить язык и, как оказалось, выбор очень велик. Опытные люди активно посоветовали мне Ассемблер. А я и не противился. Кое-что я знал по студенческим годам, думал, сяду, прочитаю, разберусь с архитектурой и вперед «с песнями и плясками». Так вот, до плясок я дошел, а вот петь уже не хотелось.
Самому, без сторонней помощи разобраться в современном «камне» с нуля, у меня, скажу честно, не получилось. Булева алгебра, тоже порядком подзабытая, с тонкостями работы регистров и банков МК довела меня до ступора в прямом значении слова. Я практически признал свою несостоятельность.
Наступил день, когда я понял, что проект стоит не первый день и света в конце тоннеля не видно.

Тут я решил: не получается Ассемблер, ну и фиг с ним. Я когда-то в молодости Бейсик изучал, а тут как раз предлагают компилятор на таком языке. Опять просматриваю материалы, разбираюсь, но потом прочел мысль на одном из форумов, которая запала мне в голову и, которую можно свести к следующему: все эти диалекты имеют ограниченное число пользователей и помощи в случае чего не допросишься. И действительно, проанализировав временные метки форумов заметил, что на вопросы ответ поступал порой через несколько месяцев. Нет, такое мне не подходило.

Остался единственный вариант, который тоже нахваливали — язык Си. От безысходности накачал книг, давай читать. Читал, читал... Пока читаю, что-то понимаю. Поставил себе компилятор, давай пробовать светодиодом поморгать. Да, простенькие примеры повторить нет проблем, а когда начинаешь углубляться — тут полный затык. Написал вроде как по уму, а компилирую и всё в ошибках. А ошибки то с такими кодами, что без бутылки не понять никак.

Опять ужас! «Совсем я, наверное, тупой» — подумал я.
Даже вспомнил о возрастном кризисе, мировой экономике, опять о своей тупости и такие мне слова на ум пришли, что даже писать неприлично. Понял, что надо искать что-то такое, что может понять даже ребенок из детского сада. Других вариантов у меня уже не было.

Сел я конкретно на «всемирный разум», читал, много искал, искал… Наткнулся на программу Algorithm Builder. Спецы ее знают — это очень мощный компилятор Ассемблера, но в графической форме. Немного пишешь, немного рисуешь, а оно умное, само за тебя все доделывает. Стало интересно, но я уже «пес битый» и знаю, что Ассемблер пока мне не по зубам. Решил поискать что-то аналогичное на Си и нашел!

Это оказался компилятор под непонятным именем «FlowCode For AVR». Его профи не жалуют. Отчасти потому, что это довольно примитивный способ программирования при наличии довольно специфичного программного интерфейса. Но каково было мое удивление, когда в нем у меня стало немного продвигаться, не все конечно, но получаться. Это придало сил. И форум FlowCode оказался в активном состоянии, отвечали быстро и корректно. Да и Си - это не Ассемблер.


Составлять программу в FlowCode просто прикольно. Как будто балуешься. Берешь готовые нарисованные блоки и вставляешь, дописываешь условия их работы и компилишь. С учетом предыдущего изучения огромного количества материала, много я стал наконец-то понимать и все пошло.
Чтобы как-то проверять работу отдельных узлов программы пришлось за одно изучить работу еще одной программы. Это симулятор работы электросхем «Proteus».
Проект написанный в FlowCode для Atmell легко переносится на базу от Microchip и наоборот. При этом все работает, сам проверял.

Но есть у FlowCode одно неприятное свойство — он не учит синтаксису самого языка Си — одни рисунки, алгоритмика.
Из этой ситуации я тоже нашел выход — компилятор «MikroC». Для начального изучения (и не только) он самое то, что надо. После него уже не смотришь круглыми глазами на написанные кем-то куски кода. А это очень важно. Здорово помогает не повторять ошибок и ускоряет процесс написания нужного алгоритма. Но главное его достоинство – это готовые функции для работы с разнообразной периферией. Ничего выдумывать не надо. Поставил функцию, объявил условия и уже два МК между собой «разговаривают», попробуй-ка все это быстро оформить на чем-то еще.

Для неособо владеющих тонкостями (логические операции, механизмы изменения битов в регистрах и т.п.), поделюсь еще одним маленьким секретом. Если сразу открыть оба указанных компилятора, можно запросто воспользоваться возможностями одного для использования в другом. А именно, если создать блок-схему (алгоритм) в FlowCode (что очень удобно), то можно воспользоваться полученными строками на Си и поставить в MikroC.

Это конечно никак не ускорит работу вашего кода, ибо FlowCode создает так называемую унифицированную структуру кода, но код будет понятным и рабочим в других компиляторах. И очень много вашего времени будет сэкономлено на ловле ошибок.
Потом, когда все будет уже работать, вы сможете уделить внимание этим готовым вставкам и заменить оптимизорованными, более короткими вариантами того же алгоритма, заодно изучив все тонкости работы.

За год я научился основам программирования микроконтроллеров. При самостоятельном освоении, это, я думаю, очень даже не плохо!
А дальше уже дело техники и желания и я над этим продолжаю работать.

На этом с лирической частью всё. Такова житейская история, а дальше — главное — сам блок питания, который трудится у меня без нареканий уже пару лет и был с сокращениями описан в «Радиоаматоре»
Продолжение следует!
Владимир (kotyk7)
Местоположение в тайне.
Профиль kotyk7
О себе автор ничего не сообщил.
 

Понравилось? Палец вверх!

  • всего лайков: 60

Поделись с друзьями!

Связанные материалы:


Схема на Датагоре. Новая статья Лабораторный блок питания «Belarus 3A30» с защитой и коммутацией обмоток (0-30 V, 3 А)... Здравствуйте друзья. Позвольте представить вашему вниманию мой первый лабораторный блок питания. ...
Схема на Датагоре. Новая статья Блок питания с защитой + микроконтроллер ATMEGA16, ATMEGA8535, PIC16F877. Часть вторая, практическая... Читайте также первую часть статьи о БП, лирическую. Я описал эту конструкцию с сокращениями...
Схема на Датагоре. Новая статья TA7317P – микросхема для устройств защиты акустических систем... Усилители мощности с двуполярным питанием должны иметь узел для защиты подключаемых к ним...
Схема на Датагоре. Новая статья Аналог мощного стабилитрона как тестовая нагрузка для проверки зарядных устройств автомобильных аккумуляторов... При переделке компьютерных импульсных блоков питания (далее – ИБП) под зарядные устройства для...
Схема на Датагоре. Новая статья Сделай сам автомобильный стабилизированный блок питания 24V => 15V/5A с защитой от КЗ, переполюсовки, перегрузки и перегрева... Блок питания был заказан водителем-дальнобойщиком для ноутбука, который мне увидеть так и не...
Схема на Датагоре. Новая статья Плавное включение и выключение ламп накаливания... Как известно, лампы накаливания в основном перегорают в момент включения, когда нить накаливания в...
Схема на Датагоре. Новая статья Простые импульсные блоки питания... Несколько раз меня выручали блоки питания, схемы которых стали уже класическими, оставаясь простыми...
Схема на Датагоре. Новая статья Микроконтроллерный регулятор мощности на Atmega16... На фото представлен действующий макет регулятора мощности, схема которого (с небольшими...
Схема на Датагоре. Новая статья "Бетник" для мощных транзисторов... Описана конструкция прибора для измерения коэффициента усиления мощных транзисторов. Несмотря...
Схема на Датагоре. Новая статья Даташиты на микроконтроллеры AVR ATMega, ATTiny и AT90... Любому разработчику нужно знать специфику компонента, особенно если этот компонент -...
Схема на Датагоре. Новая статья Блок питания с защитой по току для наладки усилителей и пр. радиоконструкций... Нередко при ремонте или создании нового усилителя возникает проблема безопасной проверки его...
Схема на Датагоре. Новая статья LME49810 - одноканальный драйвер выходного каскада до 500 Вт... Так что же такое эта LME49810. В апреле-мае 2007 года NSC представила для специалистов свою...
<
  • Гражданин
17 июля 2013 13:16

Радик / galrad

Цитата
  • С нами с 23.08.2011
  • Ушёл в реал Пользователь offline
  • 84 комментария
  • 12 публикаций
 
  • 0
Да, у каждого человека свой путь! Если говорить о программировании микроконтроллеров, то на самом деле нет универсального средства. В свое время я освоил принципы программирования микроконтроллеров за 3-4 месяца. Сначала PIC а затем AVR. Всего ушло времени чуть больше полугода. Могу с уверенностью сказать, что вся сложность в понимании принципов работы. С ходу тяжело уложить в голове все механизмы функционирования контроллера. Начав изучать микроконтроллеры, рано или поздно понимаешь, что самый простой язык программированя это ассемблер, а один из универсальных, с переносимой платформой - язык СИ.

<
  • Кандидат
20 июля 2013 18:55

Дмитрий / dimondss

Цитата
  • С нами с 5.12.2009
  • Ушёл в реал Пользователь offline
  • 7 комментариев
  • 0 публикаций
 
  • 0
Да, главное понять принципы, как и какие блоки МК работают, как управляются. Все даташиты на атмеловские Мега и тини переведены в книгах Евстифеева, так что и английский тут не обязательно хорошо знать. А там главное логику работы программы продумать, на чем реализовывать это потом уже особого значения не имеет. Я начинал с Алгоритм билдера, так как проще, сейчас на асемблере (АВР Студио) тренируюсь. До сишки еще не дошел, но собираюсь smile Кстати, по контроллерам много полезного есть тут (как раз по ассемблеру) ну и на easyelectronics.ru (хороший цикл статей про архитектуру программ для МК а также всякие трюки, которые часто используются при проектировании устройств на МК)

Добавление комментария


Налетай! Паяльники, станции, жала с доставкой
  • smilelolbyewinkyahoocoollaughing
    crazybadcryingsadirefulsickstraight
    ballooncakegooddrinksmailbombsun
    nightrainstarscolddashguitar-manhandshake
    musicnegativenopardonshoksleepunknown
    wackoyawnblushbullyhashsmokingwhew
Скопируйте текст вашего комментария на случай неверного ответа на контрольный вопрос.