Миналия ден ми поръчаха да направя един преобразовател от 12V на ~220V които да върти водната помпа на локално парно когато спре тока, за да не изври водата от котела.По принцип такъв преобразовател от прав ток 12V на променлив 220V 50Хц си е вещ полезна и е добре да си я имаме. Може да се ползва в автомобил, или навсякъде където няма контакт . Условието беше да е с минимална цена и лесно достъпни елементи.След кратък размисъл върху принципа на това инвертиране се спрях разбира се на възможно най-лесния и най-евтиния вариант който можах да измисля.Поради тази причина използвах минимален брои елементи и разбира се без кутия щото и тя си е някои лев . Иначе ако искаме да е както се полага по всички нужни и ненужни закони в електрониката можем да сложим и тригери, можем да сложим и още резистори и кондензатори около мосфетите и прочие, но в този случаи това не се искаше.Задачата беше просто да работи. Сега накратко принципа на деиствие:Трябва да имаме изходен волтаж от ~220V със честота от 50хц стандарт.За да го получим ни трябва траф с нужната мощност, и с две намотки за по 12V и една намотка за 220V.Двете намотки за 12V са за да се получи двутактен преобразувател с плюс и минус на изхода и синусуидален сигнал.За да получим правилен синус и да нямаме проблеми с обратното ЕДН трябва да имаме пауза от около 10% на входните изпулси.За целта това наи лесно може да стане като си напишем една малка програмка за някои Микроконтролер, като използваме неговата си тактова честота за да имаме максимална точност при избраната честота.И тук се оказа че дефакто програмата я имам на 90% готова-това е добре познатата ни мигалка от темата за изучаване на Атмел:
viewtopic.php?f=5&t=14&start=10
Взимаме значи сорс кода на избраната мигалка, отрязваме излишните части от сорс кода защото ни трябват само два мигащи сигнала/светодиода/ вместо 8 както е.За да получим точни 50Хц си играем малко с променливите Темп, и за да получим интервал от 10% между първия и втория сигнал написваме още една подпрограма за пауза.Целта е да получим импулс с продължителност от 9мс и пауза с продължителност от 11мс.=общо 20мс. и при двата канала, като двата сигнала да са точно разположени един спрямо друг за да имаме на изхода от трафа правилна синосоида. Когато знаем принципа, и знаем какво трябва да се получи като краен резултат на осцилоскопа е много лесно, и нещата стават бързо.
Сорс кода с обяснение на всяка една команда на чист Бг език, на латиница за да не стават ??? при авр студио:
;###############################################
.include "2313def.inc" ;ste polzvam AT90S2313 ili ATTyni2313
.def Temp=R16 ;imenuvam si pette registara
.def Temp1=R17 ; R16-R20 ot Temp do Temp4
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20
.cseg ;na4alo na programata
.org 0 ;da po4ne ot 0=na4alen adres
ldi Temp,RamEnd ;inizializazia na steka
out SPL,Temp
ldi Temp,0b11111111 ;nastroika na portovete
out DDRB,Temp ; na portB
Begin: ldi Temp,0b00000001 ;svetkame parvia pin ot portB-PB0-12 kra4e na MK
rcall Pauza ;s prodaljitelnost na podprograma Pauza
ldi Temp,0b00000000 ;gasim-nisto ne sveti
rcall Pauza1 ;s prodaljitelnost na podprograma Pauza1
ldi Temp,0b00000010 ;svetkame vtoria pin ot portB-PB1-13 kra4e na MK
rcall Pauza ;s prodaljitelnost na podprograma Pauza
ldi Temp,0b00000000 ;gasim-nisto ne sveti
rcall Pauza1 ;s prodaljitelnost na podprograma Pauza1
rjmp Begin ;Obratno v na4aloto!
;****************************************************
;Dve podprogrami za vreme-Pauza i Pauza1:
Pauza: out PortB,Temp
ldi Temp1,0 ;Temp=0/255/
ldi Temp2,85 ;Temp2=85
Loop: dec Temp1 ;namali Temp1 s 1 ot 255 stava na 254
brne Loop ;ako ne e 0 to otidi otnovo na Loop
dec Temp2 ;namali Temp2 s 1 ot 85 stava na 84
brne Loop
Pauza1: out PortB,Temp
ldi Temp1,0
ldi Temp2,10
Loop1: dec Temp1
brne Loop1
dec Temp2
brne Loop1
ret
;###########край###############################
hex фаила за който го мързи да компилира или не може да работи с авр студио:
:020000020000FC
:100000000FED0DBF0FEF07BB01E007D000E00CD0F4
:1000100002E003D000E008D0F7CF08BB10E025E5F0
:100020001A95F1F72A95E1F708BB10E02AE01A9536
:08003000F1F72A95E1F70895AC
:00000001FF
+++++++++++++++++++++++++++++++++++++++++++++++
Захранването на атмела с точни 5V го направих с LM317 но може да се ползва всеки един източник на точни и стабилни 5V, мосфетите са Н канал и от тяхната мощност зависи с колко ампера ще можем да натоварим трафа, а от там и колко ще можем да получим на изхода му.Добре е да бъдат с поне 2 пъти по висок волтаж от колкото ще се ползва, и поне три пъти по висок ампераж от този които ще комутират.При нужда се слагат на радиатор защото не е желателно да се нагряват над 50-60С. Използвах в този случаи такива мосфети каквито имах под ръка IRF540.При захранване на крушка 220V100W нямаха нужда от радиатор и затова ги оставих без. Набързо сметнато КПД е около 70-80% което не е никак лошо като се има на предвид че съм ползвал минимума от елементи с обща стойност около 4-5лв.Времето което ми беше нужно за да се получи това нещо е една вечер за писания и сметки и една вечер за поене на елементите и оживяване.Елементите макар че са в нормален си ДИП корпус ги налепих на платката все едно са СМД за да не дупча отвори, и за по бързо.Проекта тръгна от ряз без да иска нищо допълнително, така че е във възможностите на всеки.
Снимките показват схемното решение, платката набързо драсната с маркер, и крайния резултат.Сега за външния вид идея си нямам вече човека в каква кутийка го е монтирал и как ще изглежда.