Sari la conținut
ELFORUM - Forumul electronistilor

Caut schemă comandă ventilator 12V funcție de temperatură !


XAN77

Postări Recomandate

La un comparator cu iesire colector deschis este impropriu sa spui ca amplificarea este raportul dintre iesire si diferenta dintre intrari, ( referitor la cele afirmate de @Proiect_01 ), si asta tocmai datorita acestui detaliu al structurii iesirii. Ce faci ca sa obtii un comparator neinversor? Simplu, duci iesirea catre alimentare cu ajutorul unei rezistente, care se numeste rezistenta de sarcina, ce se intampla cand IN+ este mai pozitiva decat IN-? iarasi este simplu, NPN-ul de pe iesirea comparatorului se blocheaza iar iesirea este dusa catre alimentare de catre rezistenta de sarcina, deci vin si intreb, care este legatura dintre raportul dintre iesire si diferenta dintre intrari? ca la urma urmei daca ai alimentare de 10V, diferenta intre intrari de 10mV si iesirea la 10V asta nu inseamna ca amplificarea este de 1000x, ca daca urci alimentarea la 12V iesirea nu ramane la 10V, ci urca o data cu alimentarea. Este o chestie foarte importanta care face diferenta esentiala intre comparator si amplificator operational.

Link spre comentariu
Vizitator proiect_01

Feritiva de magarus - este o gluma evident, a fost o emisune pentru copii.

Este clar ca nu ai libertatea de exprimare si cine crede ca a devenit asa un fel de "GURU"  pe aici sa nu-l contrazici sau sa vii cu o observatie ca esti pus la zid. Stiu foarte bine ce face un comparator si admit termenul de AO si nu ma intereseza cum vor altii sa-i spuna.

 

A apărut între timp poza . Da , scrie ce zici tu , o fi un curs de la Școala de vară.

Iata cum si cine crede ca are dreptul sa ia totul in deradere.

Nu este un curs, este o carte de la editura Facla, autori: Ciugudean M.  Tiponut V.  Tanase M.E.  Bogdanov L.  Carstea H.  Filip A.

 

citește despre m-ai și mai .

Da ai dreptate, nu am observat.

Si tu ai greseli: Să el luăm deci pe rând .

Pun tot pe seama oboselii.

Editat de proiect_01
Link spre comentariu

OK , vreau să ies din acest off topic . Am spus mai devreme că am schițat ceva la tema dată . Dacă OP este dispus să experimenteze - și îl cunosc ca un experimentator remarcabil - eu îmi reiterez disponibilitatea de a proiecta , scrie cod  și simula o mică aplicație . Evident , față de ce am scris data trecută termenele se transferă după sărbători . Și , tot evident , voi întreprinde acestă acțiune dacă voi avea confirmarea că există interese de a se experimenta - eu , am mai spus-o , nu pot deocamdată să fac mai nimic pe plan practic. 

 

EDITARE 

 

Între timp a postat @proiect_01.

 

Da , ai dreptate , toți greșim , chiar dacă un ”typo” cum îi zice pe internet , nu e același lucru cu lipsa unei cratime și , mai ales , nesesizarea acestei lipse. Dar eu am spus ce am gândit în legătură cu problema - nu m-am legat de greșeală cât de neclaritatea enunțului. 

 

A fi ironic nu înseamnă a lua totul în derâdere . Dar , cine îmi garantează mie că un oareșicare individ are dreptate doar pentru că a scris un articol, o carte , un doctorat...  

Am pretenția că am înțeles ceea ce am învățat și mi-am însușit temeinic noțiunile de bază . Poate asta dă impresia unui sentiment de superioritate . Îmi cer iertare dacă e așa . Nu vreau să par superior dar insist cu argumente în favoarea părerilor mele . 

Editat de UDAR
Link spre comentariu

...Stiu foarte bine ce face un comparator...

Nu, nu stii:

 

...Amplificarea în tensiune definita ca raportul Vout/VdiffVout = tensiunea de iesireVdiff = diferenta tensiunilor aplicate pe cele doua intrari (+/-)In postul 23:tensiunea de iesire = factorul de amplificare * diferenta dintre tensiunile de intrareAdica: Vout = Au * Vdiff...

 

 

PS: Nu esti in masura sa te plangi de comportament inadecvat, si postez cateva expresii ale tale ( nu sunt permise decat 2 citate per postare, deci le iau cu copy/paste, si postez link catre postarea respectiva:

Ma; ignoranti ca tine; superficialule; cel pierdut in cazul asta esti tu;

http://www.elforum.info/topic/95503-caut-schemă-comandă-ventilator-12v-funcție-de-temperatură/?p=1094799

 

Meriti cu prisosinta un raport pentru expresiile alea si iti promit ca asa se va intampla daca nu incetezi cu agresivitatea, nu acuza pe altii de fix ceea ce faci tu.

Link spre comentariu

@UDAR sunt dispus la teste, mulțumesc de inițiativă. Nu dețin însă acel pic de care spuneai. Eu aveam de gînd cu un tiny13. Dacă nu ai programat pentru avr, merge și pic, pot lucra cu o placă de test cu 16F871.

Editat de XAN77
Link spre comentariu

E drept , am lucrat doar cu PIC . Și am mult de învățat și acolo , dar ăsta am zis că e un proiect relativ simplu. Am ales PIC12F1501 ca fiind cel mai mic cu PWM hardware dar PIC16F871 este OK pentru niște teste dar este prea mare și prea scump perntru produsul final. Mâine am să mă uit în ce fază am ajuns cu varianta cealaltă și apoi, mai încetuț acuma cu sărbătorile , am să văd ce pot face . 

Ținând cont că voi lucra în C ( mă rog , mikroC ) probabil că vreun coleg va reuși să porteze codul pentru ATtiny13. Să-l facem noi întâi să meargă. 

Link spre comentariu

Xan, ma mira cum de nu ai facut deja acest controller. Un simplu divizor rezistiv (unde una din rezistente este senzorul) aplicat unei intrari ADC care apoi scalata corespunzator va controla factorul de umplere al PWM.Iar solutia cea mai simpla: un TC648 sau echivalent. Un chip dedicat pentru astfel de aplicatii.Exista chipuri (cred ca numai on-off) cu senzorul incorporat. Unde citirea temperaturii nu trebuie sa fie prea precisa.LE: Eu lucrez numai in Basic (doar PIC). Daca ajuta sau Udar e ocupat, da de stire.Am facut (cu un 12F617) un generator de semnal dreptunghiular, care din 2 potentiometre regleaza factorul de umplere (8bit = 256 valori) si frecventa (am ales cateva frecvente de la 500 la 200kHz - 7-8 valori). Il folosesc ca sursa de PWM pentru diverse montaje. E similar cu ce vrei tu aici, daca ignori reglajul frecventei.Il pun aici in 5 ore de acum, cand ajung la desktop.

Editat de thunderer
Link spre comentariu

In MikroBasic. Codul pentru aplicatia lui XAN este:

program PWM_fan' Declarations section  dim adc1 as word  dim PWMDC_out as byte' Set-up the PICsub procedure InitMain()    OPTION_REG = 0x80 ' Pull-up disabled PORTB    INTCON = 0x00 ' No interrupt    CMCON0 = 0x00 ' No COMP    CCP1CON = 0x0C ' P1A (GP2) PWM    ANSEL = 0x0B ' AN on GP0,1&4    TRISIO = 0x1B ' GP2,5 outputs, rest of them inputs    GPIO = 0x00 ' Clear GPIOend sub' Main programMain:  InitMain()  ADC_Init()  PWM1_Init(500) ' 500Hz  PWM1_Start()  PWMDC_out = 0  ' 0% DCMeasure:while (TRUE)' PWM DC% pot measurement    adc1= ADC_Get_Sample(1)' Aici poti sa pui un IF ca sa faci update de DC numai daca tensiunea la intrarea ADC s-a schimbat. ' Doar ca sa nu faci niste operatiuni inutile.    PWMDC_out = adc1 * 2.55    PWM1_Set_Duty(PWMDC_out) ' P1A este folosit ca iesire PWM.wend end

Asa cum am zis, poate ii foloseste cuiva proiectul meu.

 

Sunt 3 potentiometri legate la 3 ADC.

1. Unul pentru generare semnal PPM 1-2ms (undeva in jur de 50Hz, oricum nu trebuie sa fie prea precis). ADC #3.

2. Unul pentru control factor de umplere al semnalului PWM. 255 de valori. ADC #1.

3. Unul pentru controlul frecventei semnalului PWM. Am ales cateva valori, dar in functie de rabdarea si abilitatea programatorului se pot pune maximum 1024 valori de frecvente. ADC #0.

 

Tinand cont de toate operatiunile executate de PIC, o anumita scalare a fost necesara. Asta explica acei factori cu multe cifre dupa virgula :) .

Am ifi putut sa controlez PWM-ul direct din registrii PIC, dar in aplicatia de fata nu merita efortul. Astfel reduc posibilitatea controlului factorului de umplere de la 1024 la 255.

' *' * Project name:'     PPM 1ms-2ms, PWM generator' * Copyright:'     (c) Thunderer (2013).' * Revision History:'     0 - 1st issue' * Test configuration:'     MCU:             PIC12F617'     Oscillator:      INTOSC 4 MHz'     Ext. Modules:    -' *program PPM_PWM_testbank' Declarations sectiondim adc0, adc1, adc3, count, i, PWMfreq_out   as worddim PWMDC_out, state                          as bytedim PPM_out                                   as longword'   Set-up the PICsub procedure InitMain()    OPTION_REG =   0x80              ' Pull-up disabled PORTB    INTCON     =   0x00              ' No interrupt    CMCON0     =   0x00              ' No COMP    CCP1CON    =   0x0C              ' P1A (GP2) PWM    ANSEL      =   0x0B              ' AN on GP0,1&4    TRISIO     =   0x1B              ' GP2,5 outputs, rest of them inputs    GPIO       =   0x00              ' Clear GPIOend sub'   Main programMain:  InitMain()  ADC_Init()  PWM1_Init(500)  PWM1_Start()  PWMDC_out = 127  GPIO.5 = 0    status = 1Measure:  while (TRUE)' PPM pot measurement    adc3= ADC_read(3)    count = 1000 + adc3 * 0.97752    PPM_out = count * 0.026429    for i = 1 to PPM_out        GPIO.5 = 1    next i    GPIO.5 = 0    Delay_ms(16)' PWM DC% pot measurement    adc1= ADC_read(1)    PWMDC_out = adc1 * 0.097752 * 2.55    ' PWM frequency pot measurement    adc0= ADC_read(0)    PWMfreq_out = adc0    if PWMfreq_out < 100 then       PWM1_Stop()       PWM1_Init(500)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if        if (PWMfreq_out >= 100) and (PWMfreq_out <= 200) then       PWM1_Stop()       PWM1_Init(1000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if    if (PWMfreq_out >= 200) and (PWMfreq_out <= 300) then       PWM1_Stop()       PWM1_Init(2000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if        if (PWMfreq_out >= 300) and (PWMfreq_out <= 400) then       PWM1_Stop()       PWM1_Init(3000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if    if (PWMfreq_out >= 400) and (PWMfreq_out <= 500) then       PWM1_Stop()       PWM1_Init(4000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if        if (PWMfreq_out >= 500) and (PWMfreq_out <= 600) then       PWM1_Stop()       PWM1_Init(5000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if    if (PWMfreq_out >= 600) and (PWMfreq_out <= 700) then       PWM1_Stop()       PWM1_Init(10000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if    if (PWMfreq_out >= 700) and (PWMfreq_out <= 800) then       PWM1_Stop()       PWM1_Init(20000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if        if (PWMfreq_out >= 800) and (PWMfreq_out <= 900) then       PWM1_Stop()       PWM1_Init(50000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if    if (PWMfreq_out >= 900) and (PWMfreq_out <= 1000) then       PWM1_Stop()       PWM1_Init(100000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if        if PWMfreq_out > 1000 then       PWM1_Stop()       PWM1_Init(200000)       PWM1_Start()       PWM1_Set_Duty(PWMDC_out)    end if  wendend.' La compilare: Used ROM (program words): 1505 (73%)  Free ROM (program words): 543 (27%)
Editat de thunderer
Link spre comentariu

Mulțumesc pentru exemple. Îmi voi face eu un soft pentru tiny13, Testele inițiale în simulator apoi direct pe mcu în cauză.

@UDAR nu e nevoie să faci un program, simulare etc, dacă se poate o descriere a algoritmului la care te-ai gîndit și a etajului de intrare în adc avînd în vedere că senzorul este o diodă, probabil o diodă dintr-o diodă dublă capsulă TO220 care o pot prinde pe radiator.

Editat de XAN77
Link spre comentariu

Am propus pe la inceputul topicului, o schema simpla si ieftina, cu comanda PWM. Foloseste un integrat ce costa cca un leu, UC3843. Testarea schemei respective, nu cred sa ia 10 minute, dar intre timp s-a ajuns la microcontrolere si programare si asta pentru un fleac.

Link spre comentariu

@giongiu Merită de încercat varianta propusă de tine - eu am avut niște rezerve care însă s-ar putea demonstra că sunt mai mult de natură teoretică .  În altă ordine de idei un µC de 8 pini costă cam la fel cu un UC384x plus piesele aferente . Plus plăcerea de a realiza ceva nou , cum spunea XAN77 mai sus ...

@XAN77 Eu gândisem inițial două variante , ambele cu termistor . O să reanalizez și deseară sper să vin cu ceva concret. Acu sunt la serviciu și sunt cam prins .

Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări