dragutzu_marius Postat Decembrie 2, 2013 Autor Partajează Postat Decembrie 2, 2013 Multumesc Depanatoru si celorlalti pentru ajutor. Am rescris codul, si aparent pare ca functioneaza corect. In weekend am fost plecat, deasta doar acum revin cu update. Codul este urmatorul: $regfile = "m8def.dat"$crystal = 1000000$hwstack = 40$swstack = 16$framesize = 32'--------------------------------------------------------------Configurare LCD-----------------------------------------------------Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.5 , Db6 = Portb.7 , Db7 = Portb.6 , E = Portd.7 , Rs = Portb.0Dim A As ByteConfig Lcd = 16x2'-------------------------------------------------------------Mesaj de intampinare-------------------------------------------------ClsLocate 1 , 3Lcd "Power Supply"LowerlineLocate 2 , 2Lcd "0-30V / 0-10A"Wait 1ClsCursor Off NoblinkDim Volt As WordDim Curent As WordDim Th As WordDim Tensiune As SingleDim Intensitate As SingleDim Putere As SingleDim Suma As SingleDim I As ByteDim Temperatura As SingleConst Divizor_u = 0.08415Const Const_volt = 2.59 / 1024Const Const_curent = 2.59 / 1024Const Divizor_i = 0.3333Const Const_temp = 1 'Provizoriu pana fac calculele'---------------------------------------------------------------Configurare ADC----------------------------------------------------Config Adc = Single , Prescaler = Auto , Reference = Internal_2.56Start Adc'---------------------------------------------------------------Bucla infinita-----------------------------------------------------Do '----------------------------------------------------------------Calcul Tensiune--------------------------------------------------- Suma = 0 For I = 1 To 20 Volt = Getadc(0) Suma = Suma + Volt Next Tensiune = Suma / 20 Tensiune = Volt * Const_volt Tensiune = Tensiune / Divizor_u Locate 1 , 1 Lcd Fusing(tensiune , "##.##") ; "V" '-----------------------------------------------------------------Calcul Curent---------------------------------------------------- Suma = 0 For I = 1 To 20 Curent = Getadc(1) Suma = Suma + Curent Next Intensitate = Suma / 20 Intensitate = Curent * Const_curent Intensitate = Intensitate / Divizor_i Locate 2 , 1 Lcd Fusing(intensitate , "##.##") ; "A" '-----------------------------------------------------------------Calcul Putere------------------------------------------------ Putere = Tensiune * Intensitate Locate 1 , 11 Lcd Fusing(putere , "##.&") ; "W" '---------------------------------------------------------------Calcul Temperatura-------------------------------------------- Suma = 0 For I = 1 To 10 Th = Getadc(2) Suma = Suma + Th Next Temperatura = Suma / 10 Temperatura = Th * Const_temp Locate 2 , 11 Lcd Fusing(temperatura , "##.&") ; "C"Waitms 500LoopEndReferitor la partea de masurare de temperatura inca nu stiu cum sa fac calculele. De exemplu as vrea sa am un interval de la 10-15 grade la 90-100 de grade. De asemenea nu ma intereseaza sa afisez cu virgula, vreau doar partea intreaga, insa nu stiu cum sa fac asta, pentru ca imi da eroare la compilare daca las doar "Lcd Fusing(temperatura , "##") ; "C"".Partea hardware este formata dintr-un divizor in care termistorul de 50k este conectat la +5V, celalalt terminal este conectat la intrarea ADC si un rezistor de 10K legat in serie cu termistorul la GND. Singurele date de catalog pe care le am sunt urmatoarele: Termistor NTC 50K 50mW [NTCM-HP-50K-1%] Tip senzor termistor NTC Rezistenţă 50kΩ Putere comutată 50mW Montare THT Constantă de material B 3950K Temperatura de lucru -55...125°C Dimensiuni carcasă Ø3 x 4.5mm Utilizare măsurare temperatură Dimensiuni terminale lung. 25mm Ca idee, daca va functiona citirea de temperatura, as vrea ca la anumite praguri ( 40, 45, 50, 55, grade, s.a.m.d.) sau liniar cu temperatura citita, sa imi genereze semnal PWM pe iesirea OC1B de la Atmega8 cu factor de umplere diferit pentru reglarea vitezei ventilatorului. Ca si frecventa, semnalul nu cred ca are nevoie de frecv. mare, cateva sute de Hz cred ca e suficient. Pentru detalii, schema este incarcata mai sus (nu cred ca mai e necesar inca odata pentru a nu umple inutil forum-ul). Va rog sa imi spuneti si cum pot afisa pe LCD semnul "°" inainte de "C" [grade celsius] Ma puteti ajuta cu indicatii la aceasta parte de soft? Link spre comentariu
nickrvl Postat Decembrie 2, 2013 Partajează Postat Decembrie 2, 2013 .............Referitor la partea de masurare de temperatura inca nu stiu cum sa fac calculele. ................Am si eu o sursa de 5A insa cu LM324 si Atmega8 pentru control, memorare la oprire ultima tensiune setata pentru a reporni "de unde a ramas" si VAmeter in care monitorizez temperatura pe traf si radiator cu termistori (de tip "lacrima"), strict legat de temperatura i-mi porneste ventilatoarele pentru radiator sau pentru transformator de la 32 grade alimentind gradual prin PWM, la 55 grade ajung la maxim si la 70 opreste termic. Din pacate valoarea exacta a termistorilor nu am notat-o (acum mi-am dat seama) ce-mi amintesc este ca sint de ordinul zecilor de Kohmi, e ceva timp de atunci...., mai jos pun partea de cod care se ocupa cu supravegherea termica si turatie ventilatoare facut asa cum m-am priceput, poate te ajuta.....:'************** ventilator traf (th1)Ventilator:Valadc1 = Getadc(0) 'termistor trafGrade1 = Constgrade1 - Valadc1Grade1 = Grade1 / 5Pwm_1 = Grade1 - 32Pwm_1 = Pwm_1 * 8Pwm_1 = 220 - Pwm_1If Grade1 < 32 ThenConfig Outpwm1 = InputElseConfig Outpwm1 = OutputEnd IfIf Grade1 > 55 Then Pwm_1 = 0Pwm1a = Pwm_1'************** ventilator radiator (th2)Valadc2 = Getadc(1) 'termistor radiatorGrade2 = Constgrade1 - Valadc2Grade2 = Grade2 / 5Pwm_2 = Grade2 - 32Pwm_2 = Pwm_2 * 8Pwm_2 = 220 - Pwm_2If Grade2 < 32 ThenConfig Outpwm2 = InputElseConfig Outpwm2 = OutputEnd IfIf Grade2 > 55 Then Pwm_2 = 0Pwm1b = Pwm_2If Grade2 > 70 Or Grade1 > 70 Then Gosub StoptermicReturn Ce-mi amintesc, cel mai greu mi-a fost sa fac softul sa-mi arate temperatura reala in functie de valoarea termistorilor disponibili, dar nu este imposibil. Pentru a afisa simbolul de "grade celsius" trebuie sa-l creezi "manual", la mine nu a mai avut loc in memorie...L.E. un colt din schema unde sint conectati termistorii: Link spre comentariu
dragutzu_marius Postat Ianuarie 12, 2014 Autor Partajează Postat Ianuarie 12, 2014 La Multi Ani la toata lumea si An Nou Fericit tuturor!!! In sfarsit dupa o lunga pauza am reusit sa ma reapuc de proiect si sa avansez. Intre timp am reusit sa termin si alimentatorul propriu-zis care a functionat din prima, si deasemenea am reusit sa rezolv si partea cu ventilatorul (pwm-ul). In linii mari functioneaza si partea de soft, mai ramane de facut ajustarea la temperatura care deocamdata nu stiu, e doar aproape de realitate, neavand sonda la multimetru..... nu cred ca ceea ce afiseaza pe display este real. Insa ceea ce ma bucura este ca ventilatorul porneste treptat in functie de cat de tare se incalzeste radiatorul. Acesta este primul meu program scris in BASCOM. Codul este urmatorul: $regfile = "m8def.dat"$crystal = 1000000$hwstack = 40$swstack = 16$framesize = 32'--------------------------------------------------------------Configurare LCD-----------------------------------------------------Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.5 , Db6 = Portb.7 , Db7 = Portb.6 , E = Portd.7 , Rs = Portb.0Dim A As ByteConfig Lcd = 16x2'--------------------------------------------------------------Configurare PWM-----------------------------------------------------Config Timer1 = Pwm , Prescale = 8 , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up'-------------------------------------------------------------Mesaj de intampinare-------------------------------------------------ClsLocate 1 , 3Lcd "Power Supply"LowerlineLocate 2 , 2Lcd "0-27V / 0-15A"Wait 1ClsCursor Off Noblink'---------------------------------------------------------------Definire Constante-------------------------------------------------Dim Volt As WordDim Curent As WordDim Th As WordDim Tensiune As SingleDim Intensitate As SingleDim Putere As SingleDim Suma As SingleDim I As ByteDim Temperatura As SingleDim Th1 As SingleDim Fan As SingleDim Viteza As ByteConst Divizor_u = 0.08415Const Const_volt = 2.59 / 1024Const Const_curent = 2.59 / 1024Const Divizor_i = 0.14814814Const Const_temp = 1 'Provizoriu pana fac calculele'---------------------------------------------------------------Configurare ADC----------------------------------------------------Config Adc = Single , Prescaler = Auto , Reference = Internal_2.56Start Adc'---------------------------------------------------------------Bucla infinita-----------------------------------------------------Do '----------------------------------------------------------------Calcul Tensiune--------------------------------------------------- Suma = 0 For I = 1 To 50 Volt = Getadc(0) Suma = Suma + Volt Next Tensiune = Suma / 50 Tensiune = Volt * Const_volt Tensiune = Tensiune / Divizor_u Locate 1 , 2 Lcd Fusing(tensiune , "##.#&") ; "V " '-----------------------------------------------------------------Calcul Curent---------------------------------------------------- Suma = 0 For I = 1 To 50 Curent = Getadc(1) Suma = Suma + Curent Next Intensitate = Suma / 50 Intensitate = Curent * Const_curent Intensitate = Intensitate / Divizor_i Locate 2 , 2 Lcd Fusing(intensitate , "##.#&") ; "A" '-----------------------------------------------------------------Calcul Putere------------------------------------------------ Putere = Tensiune * Intensitate Locate 1 , 11 Lcd Fusing(putere , "##.&") ; " W " '---------------------------------------------------------------Calcul Temperatura-------------------------------------------- Suma = 0 For I = 1 To 50 Th = Getadc(2) Suma = Suma + Th Next Temperatura = Suma / 50 Temperatura = Th / 19.5 Locate 2 , 10 Lcd Fusing(temperatura , "##.&") ; Chr(178) ; "C" '------------------------------------------------------------------Viteza Cooler------------------------------------------------ Select Case Temperatura Case 27 To 29 : Pwm1a = 40 Case 29 To 32 : Pwm1a = 80 Case 32 To 35 : Pwm1a = 120 Case 35 To 40 : Pwm1a = 180 Case Is >= 40 : Pwm1a = 255 Case Else : Pwm1a = 0 End Select Pwm1b = Pwm1aWaitms 500LoopEnd Eventualele greseli/optimizari pe care le observati va rog sa mi le spuneti. Am sa postez si cateva poze cu "hardughia", insa mai am putin de lucru la partea mecanica. Ceea ce as mai vrea sa fac la soft este ca la temperatura sa imi afiseze doar partea intreaga, fara virgula, ma puteti ajuta cu vreo informatie utila? Link spre comentariu
dragutzu_marius Postat Ianuarie 12, 2014 Autor Partajează Postat Ianuarie 12, 2014 Am atasat si schema + pcb la ambele placi, alimentator si afisaj, poate va vrea cineva sa construiasca sursa. Ele sunt facute in Eagle. Link spre comentariu
dragutzu_marius Postat Ianuarie 12, 2014 Autor Partajează Postat Ianuarie 12, 2014 Am facut si primele teste, pare destul de stabila sursa.Am incercat cu 2 halogene de 55W primadata, a fost foarte stabila tensiunea de iesire, si pe urma am pus 4 halogene de 55W, acolo a inceput putin sa "miste" iesirea cateva sute de mV.Singurul lucru care ma nelinisteste este faptul ca puntea dioda nu am prevazut-o cu radiator si aceasta se incinge destul de tare. Deja ma gandesc sa refac design-ul acestei surse in care sa prevad si racirea puntii diode. Puntea dioda folosita este una de 400V/50A (cel putin asa scrie)...In partea dreapta sus pe ecran este indicata puterea, si acum vad ca "W" a iesit din "fereastra"... Link spre comentariu
rosmarin Postat Ianuarie 12, 2014 Partajează Postat Ianuarie 12, 2014 Felicitari dl Marius.Mesajul dvs va fi receptat de cineva cu inima larga si care o sa va dea o mana de ajutor.Regret ca nu sunt eu cel competent. Link spre comentariu
briobit Postat Ianuarie 12, 2014 Partajează Postat Ianuarie 12, 2014 Felicitari pentru realizare, sunt interesat in prima faza de partea de afisaj, pana la urma sunt 17 Amperi prin puntea aia normal ca incepe sa sfaraie dupa ceva timp fara radiator (cred ca merge un radiator cu ventilator cu tot de procesor pus pe ea) Link spre comentariu
bandutoiu Postat Aprilie 7, 2015 Partajează Postat Aprilie 7, 2015 Referitor la schema si pcb nu apar .Se poate si un HEX pentru atmega8. Link spre comentariu
mariuss_suciu Postat Aprilie 13, 2015 Partajează Postat Aprilie 13, 2015 atasat schema, pcb facute in eagle, si fisierul hex pentru atmega8 smd in capsula TQFP32 New folder.rar Link spre comentariu
adrian82 Postat Ianuarie 11, 2016 Partajează Postat Ianuarie 11, 2016 (editat) Salut am facut circuitul la voltmetru functioneaza ok pe partea de tensiune pe partea de curent afiseaza cu mai putin de 20mA fata de curentul masurat de aparat am incercat imbunatari dar nu afiseaza corect intr-o plaje mai mare ! Se mai poate realiza ceva , eu am folostit dip atmega 8p-8pu iar ca divizorul de tensiune am folosit 1k5 iar pe intrare 16k9 ! Editat Ianuarie 11, 2016 de djasu82 Link spre comentariu
djvas Postat Ianuarie 11, 2016 Partajează Postat Ianuarie 11, 2016 (editat) Pai nu ai dat nici un detaliu despre shunt-ul folosit.Precizia shunt-ul se va reflecta in performantele ampermetrului.Orice aparat de masura trebuie calibrat. Calibrarea se poate face in 2 moduri: Hardware sau Software. Nu ai specificat nici aparatul de masura (folosit pentru verificarea comparativa) si nici domeniul pe care s-a facut masuratoarea. Editat Ianuarie 11, 2016 de djvas Link spre comentariu
adrian82 Postat Ianuarie 11, 2016 Partajează Postat Ianuarie 11, 2016 (editat) pai asa cum a realizat colegul marius adica 0.05 ohmi e suntul nu cred ca trebuie sa dau detalii despre aparatul de masura totusi nu e un jav de 20 de lei ! Chestia e ca nici in proteus nu indica corect curentul mda trebuie sa intervin asupra softului , nu am verificat tensiunea de referinta cu siguranta am alta valoare ! Re verificat acuma tensiunea de referinta e de 2,52 de aici si abaterea ! Editat Ianuarie 11, 2016 de djasu82 Link spre comentariu
Florian Ciobanu Postat Ianuarie 11, 2016 Partajează Postat Ianuarie 11, 2016 mai puteti posta si softurile pentru procesor? Link spre comentariu
rosmarin Postat Ianuarie 11, 2016 Partajează Postat Ianuarie 11, 2016 Daca cineva a realizat acest montaj cu Atmega-8 PDIP. Din pacate nu sunt prietenos cu miniaturizarile din cauza vederii Link spre comentariu
Florian Ciobanu Postat Ianuarie 11, 2016 Partajează Postat Ianuarie 11, 2016 acum nu am timp, va proiectam eu un cablaj Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum