Guido обича Linux не само защото е забавно да се открият големите възможности на тези системи, но и заради всички хора, които участват в нейния дизайн.

Преведено на испански от:
Мигел Маган С. "

DC захранване на базата на микроконтролер

Това е четвъртата статия в Linux Focus от серията микроконтролери AT90S4433. Предлагам ви да прочетете предишните статии за програмиране на микроконтролер Atmel, особено:

  1. Как да инсталирате и използвате средата за разработка на AVR на Linux и как да изградите програмния хардуер:
    Март 2002 г., Програмиране на AVR микроконтролера с GCC
  2. Как да направите своя собствена печатна платка:
    Май 2002 г., LCD контролен панел за вашия Linux сървър
  3. Как да изградите кутия за вашето захранване:
    Септември 2002 г., 1Hz-100Mhz Честотен брояч с LCD дисплей и RS232 интерфейс
Едно от най-важните устройства за вашата домашна лаборатория е доброто и надеждно захранване с постоянен ток. В тази статия ще изградим такава. Той ще се управлява от микроконтролер. Той има LCD дисплей и може да изпраща команди от вашия компютър с Linux през серийния порт RS232. Той има много здрав дизайн.

Въведение

Микроконтролерът, на който се базира захранването, не е най-простата схема, но мога да ви уверя, че няма да имате нищо против времето, необходимо за изграждането му. Той е много здрав и надежден. Също технически много интересно, защото можете да научите как да генерирате аналогово постояннотоково напрежение с микроконтролер, без да използвате цифрово-аналогов преобразувател.

За този артикул ще ви трябват доста компоненти, но те са евтини и стандартни. Това захранване е евтино.

Какво ти е необходимо

Схема и табела

Използвах орел за Linux, за да проектирам схемата и дъската. Файловете на орел също са включени в пакета tar.gz заедно със софтуера. Можете да ги изтеглите в края на статията.

Веригата е разделена на 2 части. Основна и друга част за силовите транзистори. По-долу имате две независими схеми за двете части, които след това са свързани с кабели.

Основната схема (щракнете върху изображението, за да го увеличите):

lf251

Схемата за захранващата част (щракнете върху изображението, за да увеличите):

Как да свържете бутоните в матрица (щракнете върху изображението, за да го увеличите):

Основната дъска, гледана отгоре (щракнете върху изображението, за да увеличите):


Платката е специално създадена за любителите на електрониката. Само синият слой трябва да бъде гравиран върху печатна платка. Червените линии са кабели. Изграждането на едностранна печатна платка е много по-просто и изисква по-малко прецизност. Можете да запоявате проводниците (в червено), така че да са с най-късата дължина. Не можех да направя това на орел.

Малкото компоненти на високоволтовата част на източника могат да бъдат монтирани на стандартна прототипираща платка (те са тези дъски с много дупки). Основната платка и захранващата част са свързани с кабели (JP2 и JP3). Ще забележите, че заземяващият проводник от основната част се свързва с положителния изход на постоянен ток (DC). Това е правилно и е причината, поради която се нуждаем от два отделни трансформатора (единият за захранващата част, а другият за логическата част с микроконтролера и операционните усилватели).

Как работи

Разглеждайки основната схема можете да видите, че тя се състои от 2 части. Единият е отбелязан на схемата като "управление на тока", а другият като "контрол на напрежението". Те са два независими контура за управление. Единият контролира изхода на напрежението, а другият спада на напрежението (потенциалната разлика) над резистора от 0,275 ома от страната на захранването. Спадът на напрежението е еквивалентен на тока. Двете части за управление са "комбинирани" с диоди D2 и D3. Тези диоди образуват аналогов ИЛИ затвор. Тоест, ако токът е твърде висок, тогава контролната част на тока намалява напрежението, докато токът се върне в границите, от друга страна, ако токът не е твърде висок, частта за управление на напрежението се грижи за регулиране на изходното напрежение.

Тази ИЛИ порта работи, защото транзисторът T3 е свързан чрез резистор R19 към + 5V. Ако нямаше свързани усилватели зад D2 и D3, ще получите максималната изходна мощност. Операционният усилвател в управляващия контур контролира изхода, като премахва + 5V от T3 (взима толкова земя, колкото е необходимо).

Контурът за управление на напрежението контролира изходното напрежение според нивото на напрежението, което получава от щифт 5 на IC6B. С други думи, напрежението на щифт 5 е еквивалентно на изхода, умножен по коефициента на усилване, който се определя от резисторите R15, R10 и R16. Същото за тока, с изключение на това, че напрежението на резистора R30 е еквивалентно на максималния изходен ток.

За да изберем максималния ток или да регулираме изхода на захранването, ще трябва само да подадем подходящите напрежения в двете точки (щифт 5 на IC6B и на резистор R30). Това прави микроконтролерът. Но как микроконтролерът може да генерира и регулира постояннотоково напрежение? Погледнете следното изображение:


Това, което виждате на това изображение е как пулсиращ сигнал (последователност от импулси) може да се трансформира в непрекъснат сигнал. Всичко, от което се нуждаете, е да го прекарате през нискочестотен филтър с гранична честота около 100 (или повече) пъти под честотата на сигнала. Тъй като нашият микроконтролер работи на 4MHz, не е твърде трудно да се проектира такъв филтър. Дори ако генерирахме сигнала със софтуер, щяхме да получим няколко kHz и филтърът пак щеше да е много малък.

Разликата в изображението между горната и долната диаграми се нарича модулация с широчина на импулса. Чрез промяна на дължината на импулсите можем да променим постояннотоковото напрежение след филтриране.

!Чудесно, можем да генерираме точно напрежение с постоянен ток с цифров сигнал!

Микроконтролерът AT90S4433 има два вътрешни брояча, единият от 16 бита, а другият от 8. 16-битовият брояч има възможност за използване на Pulse Width Modulation (PWM), внедрен хардуерно в микро с разделителна способност 10 бита. 8-битовият брояч няма тази възможност, но можем да го внедрим чрез софтуер, но все още е достатъчно бърз. Ще използваме 16-битовия брояч за регулиране на напрежението, който ни дава 10 бита = 1023 стъпки на разделителна способност за контрол на напрежението. Токовият изход се контролира с 8-битовия брояч, който ни дава 255 стъпки за контрол на обхвата 1-3000mA. Това означава, че ще имаме точност от 12 mA (или по-малка). Достатъчно е за текущ контрол.

Всички останали компоненти във веригата са за референтен източник на захранване и напрежение (7805 е нашият еталон) и за да се гарантира, че захранването не се държи нестабилно, когато е свързано или изключено.

Софтуерът

Софтуерът за микроконтролера използва много аспекти, които вече знаете от предишните статии (uart за rs232, LCD дисплей, броячи в режим на прекъсване). Можете да разгледате:
linuxdcp.c.

Най-интересният е може би софтуерът PWM (Pulse Width Modulation). Променливата ipwm_phase реализира заедно с ipwm_h PWM за текущата. Ще стартираме 8-битовия брояч в режим на прекъсване и всеки път, когато се генерира прекъсване поради препълване, ще бъде извикана функцията "SIGNAL (SIG_OVERFLOW0)". Тук ще проверим ipwm_phase, за да видим дали трябва да генерираме „1“ или „0“ в изхода и да нулираме брояча. Лесно!.

Въпреки че софтуерът не е твърде сложен, за да го разберете напълно ви препоръчвам да прочетете техническите листове на 4433 (вижте препратките).

4433 е 8-битов микроконтролер и неговите математически възможности са ограничени. Функциите divXbyY и multiXbyY изпълняват 24-битова математика, която ще трябва да изчислим широчината на импулса от напрежение, дадено от потребителя.

Нашето захранване има 7 бутона. Шест от тях са за избор на нива на напрежение и ток, а другата е за режим „в режим на готовност“. Използвайки този режим, можете временно да изключите изхода и все още можете да промените границите на напрежението и тока. Състоянието на бутоните е анкетирано в основния цикъл на програмата. Променливата ignorebutton се използва за подскачане на бутон. Когато натиснете бутон с пръсти, вие го премествате малко нагоре и надолу. Като човек няма да забележите това, но микроконтролерът е толкова бърз, че ще вижда включване, изключване, включване, изключване. Броячът за игнориране изчаква малко след натискането на бутона, за да се избегнат тези отскоци.

Изработване на печатната платка

Основната дъска:
Кутията за фонтана. Дърво отстрани и метал отдолу, отгоре и отпред:
Предният панел:
Софтуерният пакет съдържа файл с послепис (linuxDCpower.ps) за печатната платка. Лично аз намирам, че подложките винаги са малко малки. Затова ви препоръчвам да ги увеличите малко с маркер, преди да изолирате плочата. Процесът за изработка на дъската у дома е описан в: май 2002 г., LCD контролен панел за вашия Linux сървър ".
Как да изградите евтина, но хубава кутия за вашето захранване е описано в статията „Септември 2002, 1Hz-100Mhz Честотен брояч с LCD дисплей и RS232 интерфейс“. Можете да видите кутията и предния панел, които направих вдясно. Кликнете върху изображенията, за да ги увеличите.

Проверки

Ето го: Собственото ни захранване

Видяхте по-горе, че има 3 опции на разположение в зависимост от трансформатора, който използвате. Софтуерът по подразбиране е за изход 16V, 2.2A. За да промените това, редактирайте файла linuxdcp.c и потърсете:
MAX_U, IMINSTEP, MAX_I, ще трябва да промените и калибрирането във функцията set_i, ако имате максимална мощност от 3А. Кодът е добре коментиран и ще видите какво трябва да промените.

И накрая ето няколко магнита от захранването, което съм построил. Това е малко работа, но наистина е много добра и здрава. Времето беше добре прекарано, защото лабораторното захранване наистина е едно от най-използваните неща.

Използване на захранването

u = X избира напрежението (напр. u = 105 избира напрежението при 10.5V)
i = Xmax избира максималния ток (напр. i = 500 избира ограничението на тока при 500mA)
s = 1 или s = 0 избира режим на готовност
u =? или i =? или s =? отпечатва избраните в момента параметри. Това ще доведе до изход на екрана по този начин, например:
u: 50 s: 0 i: 100 l: 0
u: означава напрежение = 50 = 5V, s: 0 означава изключен режим на готовност, i: 100 е 100mA, а l: 0 означава, че текущата граница не е достигната.

Използвайки този команден език ascii, можете също да напишете графичен потребителски интерфейс за захранването. За да използвате rs232 реда, трябва първо да го инициализирате с командата ttydevinit. ttydevinit е включен в софтуерния пакет. Това е описано и в статията: септември 2002 г., Честотен брояч.

Сигурност

Настройки

Препратки

  • Uisp AVR софтуер за програмиране: www.amelek.gda.pl/avr/
    локално копие: uisp-20011025.tar.gz
  • Как да изградите хардуера на програмиста и да инсталирате AVR компилатора:
    Март 2002 г., Програмиране на AVR микроконтролера с GCC
  • Изходният код на тази статия linuxdcpower-0.1.tar.gz, 1201K. Включени са също електрическа схема, файлове на Eagle и екранни снимки.
  • Целият софтуер (актуализациите ще бъдат изброени тук) и документи: софтуер/таблици с данни
  • Информационен лист за bd379 bd379.pdf 44K
  • Информационен лист за TL082 TL082.pdf 110K
  • Информационен лист за TL071 TL071.pdf 268K
  • Лист с данни за 2n3055 2n3055.pdf 64K
  • Лист с данни за MAX232 MAX220-MAX249.pdf 448K
  • Лист с данни за ST232, евтин вариант, често се продава вместо MAX232 realst232.pdf 100K
  • Лист с данни за Atmel AT90S4433 avr4433.pdf 2356K
  • Уебсайтът на Atmel: www.atmel.com/
  • Eagle за Linux cadsoftusa.com

Формуляр „Talkback“ за тази статия

2004-02-20, генерирано от lfparser версия 2.43