Sari la conținut
ELFORUM - Forumul electronistilor

Tensiune din PWM


Gilbert Sparios

Postări Recomandate

Titlul topicului.. clar nu am avut inspirație dar.. totusi despre ce e vorba? Poate va fi un text lung dar trebuie sa explic. 


Fără sa intru in detalii avansate, un microcontroller alimentat  dintr-o sursa lineara de 5V, conduce un smart high side care comanda o rezistenta ca sa-i spunem asa, ce poate fi alimentata la 8.2V si un consum de 8A.

tensiunea de intrare insa este 11-15V,într-un proiect automotive după cum deja ati banuit.
controlerul citește pe ADC printr-un divizor tensiunea de intrare si calculează factorul de umplere dupa formula:


fU = ((7.8Vx100)/MAINVCC); // unde 7.8V este tensiunea aleasa si MAINVCC tensiunea de intrare citita. 


variabila fU.. se folosește pentru un timer.. prin mapare.. in fine. am verificat pe osciloscop si media tensiunii pare ok. de fapt e 7.76 pe toata plaja de tensiune intrare. 

 

frecventa este fixa la 10Hz. Nu am ales-o eu, e copiat dintr-o aplicație funcțională si originala automotive.

 

problema ca aleator rezistenta se arde. rezistenta e de fapt o bujie BERU GH001 mai exact.

 

Nu stiu.. caut o explicație si o rezolvare. Controlerul are WD si din soft si hardware din cip-ul de alimentare cu 5V..nu rămâne fără tensiune.. dar nici nu am putut captura vreodată evenimentul..


Pur si simplu ma trezesc cu ea arsa fara sa experimentez ceva legat de vreo blocare de soft sau ceva..

 

practic sunt impulsuri acest pwm.. de tensiune ridicata uneori 15V. dar totusi.. aleator însemnând 3-4 luni..

 

nu e des..dar bujia asta costa 130RON si accesul la ea inseamna ore de munca.

 

ce credeți ca se întâmplă de fapt? știu ca e greu o parere asa dar.. 

 

Am pus aici o schema simplificată in realitate schema este într-adevăr mai mare dar de observat partea de comanda a acestei bujii. 

Link spre comentariu
  • Răspunsuri 25
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Gilbert Sparios

    9

  • iop95

    4

  • cimitavita

    3

  • Stefan

    2

Top autori în acest subiect

Prea complicat pentru mine texul de mai sus, însă ca un profan iți spun ce as face eu in locul tău.

1 - atașam câteva măsurători, mai ales ca ai osciloscop, cu ce se petrece pe "rezistenta".  Apropo, respectiva "rezistenta" nu are un comportament diferit la rece / cald? Măsurătorile trebuise efectuate si in situațiile extreme.

2 - Dacă tot am folosit un MCU cu atâția pini si ADC-uri poate mă induram să preiau, cu mediere software sau un FTJ, si ce se întâmpla pe "rezistenta";

3 - Înregistram valorile pe seriala, sau cum mă pricepeam cu un logger, cu tot ce se întâmpla de la pornire si pe toata perioada de funcționare timp de cel puțin câteva zile;

4 - Îmi puneam semnele de întrebare, din postarea de mai sus, abia după ce înțelegeam ce se întâmpla in situațiile prevăzute, abia după in cele neprevăzute / necunoscute.

Partea de schema atașata e utila dar nu prea.

Poți lua in calcul o "protecție" hardware când se depășește un anumit curent prin consumator?

Link spre comentariu

Bujia are o rezistență foarte mică în stare rece.Vârful de curent la prima acționare e imens și cauzează evaporare de material în zone mai înguste (neuniformități constructive) unde ulterior se va și întrerupe.

O soluție ar fi alimentarea cu o tensiune mai mică la punerea în funcție, deci o alimentare progresivă.Un factor de umplere scăzut la pornire ar fi o soluție...

Link spre comentariu

Legat de alegerea MCU aplicatia nu face doar ce-am prezentat..spuneam ca e doar o parte din..

 

Mna, un pic mai complicat sa rulez in masina cu osciloscopul pornit sau fire prin masina, tot timpul luni de zile pana cand o vrea el sa se intample ceva.. 

 

Cateva zile, am facut teste dar pe masa de lucru cu simulator de tensiune variabila pe intrare si nu a fost nimic deosebit.

Pe osciloscop era semnal frumos dreptunghiular de 10Hz cu factorul de umplere variabil pe comanda lui BTS432 iar pe bujie un semnal fierastrau. Am lasat bujia in aer ore intregi iar in ulei zile intregi sa observ ce se intampla si nu s-a intamplat nimic in afara ca am consumat niscai curent. Am avut toata vara sa fac aceste teste..nu m-am grabit, stiam deja de problema asta dar...

 

Din pacate nu am facut foto sau ceva din timpul testelor pentru ca nu m-am gandit ca voi posta..

 

Pe serial trimit semnale in bord-ul masinii prin can si stiu exact daca ar fi fost cazul de un reset sau blocare la MCU. dar nu..

prin urmare un loger doar pe soft nu m-ar ajuta..

 

Evident, rezistenta isi mareste valoarea cand este fierbinte si ajunge la 1-2R dar asta nu v-a modifica tensiunea de iesire care este in functie de tensiunea de intrare si doar calculat factorul de umplere. oricum la masuratori a ramas aproape fixa, cateva zecimale...nu ar fi facut diferenta.

 

Probabil o solutie va fi sa monitorizez impulsurile sa nu fie mai lungi de X timp cu un alt uC.  Dar asta va presupune refacerea in totalitate a ECU...si nu imi prea surade ideea ... plus ca mi se pare aiurea sa pun un uC doar ca sa monitorizeze treaba asta..

Acum 2 ore, validae a spus:

Bujia are o rezistență foarte mică în stare rece.Vârful de curent la prima acționare e imens și cauzează evaporare de material în zone mai înguste (neuniformități constructive) unde ulterior se va și întrerupe.

O soluție ar fi alimentarea cu o tensiune mai mică la punerea în funcție, deci o alimentare progresivă.Un factor de umplere scăzut la pornire ar fi o soluție...

 

in soft exact asa facusem. o scadere de putere timp de 10 secunde ...dar degeaba..

atasez si procedura care "conduce" BTS432. 

void GLOW(_glowMode state = PWRNORMAL) {
  static byte oldState = 0;
  static int16_t xPWR = 0;
  float DUTTY = 0.0;
  float _mainVcc = 14.4;
   
#ifdef GLOWDISABLED
    state = PWROFF;
#endif
  if (state == PWROFF) {
    if (oldState != state) {
      oldState = state;
      Timer1.disablePwm(PIN_GLOW);
      xPWR = 0;
    }   
    return;
  }
  // continue
  if (oldState != state) {
    oldState = state;
    GLOW_MODE = state;
    Timer1.disablePwm(PIN_GLOW);
    Timer1.pwm(PIN_GLOW, 1);
    xPWR = 1;    
  } 

  int16_t newXPWR = 0;
  switch (state) {        
  case PWRLOW: // REDUCED
    DUTTY = ((5.5 * 100.0)/_mainVcc);    // 6.0                    
    break;    
  case PWRNORMAL: // NORMAL
    DUTTY = ((6.5 * 100.0)/_mainVcc);    // 7.2
    break;
  case PWRHIGH:  // HIGH
    DUTTY = ((6.8 * 100.0)/_mainVcc);    // 7.8
    break;    
  }

  DUTTY = constrain(DUTTY, 0, 100);
  newXPWR = (int16_t) map(DUTTY, 0,100, 0,1023);    
  // update
  if (newXPWR != xPWR) {
    Timer1.setPwmDuty(PIN_GLOW,newXPWR);
    xPWR = newXPWR;
  }
}
/*---------------------------------------------------------------*/

 

daca te referi la o progresie lineara de la zero...o sa fac si asa...poate am ceva noroc. e foarte plauzibil ce spui dar e totusi o bujie..cele la 12V obisnuite nu cred ca beneficiaza de un control..

 

@validae este posibil sa-mi fi rezolvat o problema care a durat ani de zile. pare foarte logic si am mai gasit ceva informatii. de exemplu aceasi idee au avut-o cu preincalzirea sondei Lamda.

Editat de Gilbert Sparios
Link spre comentariu
Acum 3 ore, Stefan a spus:

Poți lua in calcul o "protecție" hardware când se depășește un anumit curent prin consumator?

 

din pacate nu. ar trebuii sa refac tot pcb-ul. desii..daca voi ajunge la asta..voi pune un ACS acolo eventual un MCU separat doar pentru treaba asta. deocamdata incerc sa-mi dau seama ce se intampla. @validae cred ca a nimerit-o daca e sa ma gandesc ca se intampla intr-un timp, nu foarte scurt dar nici rezonabil, ar fi toate sansele sa fie exact asa.

 

Asta daca "hardware" .. nu te gandeai cumva la o siguranta cu intarziere de 10A :)

Editat de Gilbert Sparios
Link spre comentariu

Mai dar ce-ți mai place sa te scarpini în urechea stinga cu mina dreapta..... 

Dece te-ai cumplicat sa masori întrarea și nu iesirea? Măsura-i doar iesirea și pornind de la un factor de umplere mic il crestea-i lent (0.5sec - 3sec) pina se atingea valoarea dorita a tensiunii la iesire. Astfel se făcea și încălzire lentă și se prevenea și uzura prematura a bujiei. La întrarea ADC se punea un filtru integrator. 

Și apropo, 10 Hz este cam puțin.

Editat de sesebe
Link spre comentariu

pentru va nu mai aveam ADC-uri libere si oricum ma ajuta si tensiunea de intrare, bujia fiind un consumator fix de altfel.

 

Oricum tensiunea a fost și este ok masuratori au fost făcute jdămii. Tensiunea e ok. Nu tensiunea face bujia sa se arda nici curentul pentru ca sunt in grafic. Cred ca lipsa unui softstart. Cred..

 

Acum i-am facut si un softstart de 10 secunde.. cum spunea @validae

 

referitor la frecventa de 10Hz. absolut de acord. dar ma repet. nu am ales-o eu ci producatorul. Eu as fi optat pe la 150KHz pentru situatia asta dar.. am zis sa fie ca cel original. Ma rog.. daca ai ocazia sau vrei poti cauta informații despre ECU Eberspacher D5WZ. Si ei au optat pe citirea tensiunii de intrare.. Ei fiind ingineri nu ca mine.. 

Editat de Gilbert Sparios
Link spre comentariu

Unde e limitarea de curent?!

BTS-ul are limitarea la 44A (25º) si repetitiv la 22A... valori cu mult peste 8A.

Bujia asta are o fisa tehnica? Are ceva valoare inductiva? Asta ar mai putea salva ceva...

 

10Hz?! Asta inseamna cam 6.5ms Ton pt. 7.8V iesire cu 12V input... deci pt 6.5ms alimentezi bujia cu 12V si apare un curent teoretic de 240A... dar limitat de BTS in prima faza la 74A (pana detecteaza scurt) apoi la 44A (cel mult 0.4ms) si ulterior in jur de 22A.

 

Verifica ce inductanta are bujia si in functie de asta mareste frecventa de lucru.

Probabil in jur de 1-2kHz ar fi ok.

Link spre comentariu

probabil are eu nu am găsit. Bujia este BERU GH001. in afara de dimensiuni, tensiune si curent consumat.. nu am găsit altceva. 

 

de curent vorbind la tensiunea nominala, oricâti Amperi furnizezi bujiei ea nu va înghiții mai mult de 8A. nu e problema de curent, adică la o bujie nu trebuie limitat curentul. cum nici la un bec nu limitam curentul chiar dacă primește același curent de 240A, va consuma cât e calculat. de exemplu 5W (0.41A)

 

cel puțin asta știu eu. 

 

 

referitor la 10Hz. sunt curios si eu ce ar răspunde Eberspächer si Webasto la aceasi întrebare. Ambele firme folosesc acești doar 10Hz...

 

Oare chiar sa fie prosti ambii producători? 

Editat de Gilbert Sparios
Link spre comentariu
Acum 10 minute, Gilbert Sparios a spus:

cum nici la un bec nu limitam curentul chiar dacă primește același curent de 240A, va consuma cât e calculat. de exemplu 5W (0.41A)

Asta banuiesc ca este o gluma de weekend.
"Curentul" nu se primeste. Se cere.

Link spre comentariu

Becurile când sunt reci au rezistența mică. Un bec de 100W, când e rece, are cam 30-32 ohmi. Deci consumă cam 7A la pornire în timp ce curentul de mers normal este  0,45A. La pornire curentul e de 15 ori mai mare.

 

Chestia cu pwm calculat dinainte, e o prostie. Microcontrolerul trebuie să măsoare tensiunea pe sarcină și să o ajusteze imediat la cât e nevoie. Programul trebuie făcut fără să facă calcule. Dacă te apuci să faci calcule (înmulțiri sau împărțiri), tensiunea o să fie ajustată când bujia e deja arsă. Am avut de făcut mai multe surse de genul ăsta și acesta a fost motivul pentru care am renunțat complet la programe de nivel înalt. In asm cu un microcontroler la 8MHz este timp suficient să măsori o tensiune și să o ajustezi de 15000 ori pe secundă. Și mai rămâne timp să trimiți la un afișaj o parte din datele pentru a afișa curentul, tensiunea și tot ce mai e nevoie pentru o sursă. 

Link spre comentariu
Acum 11 ore, Gilbert Sparios a spus:

Tensiunea e ok. Nu tensiunea face bujia sa se arda nici curentul pentru ca sunt in grafic.

Si asta tot la glume de weekend se încadrează. Dar cine arde bujia? O alimentezi cu lemne sau cărbuni?

Ce am întrebat eu in postarea de mai sus si ce răspunsuri am primit ... Mai bine îmi vedeam de treaba.

 

Nu a zis nimeni sa stai cu osciloscopul in mașina zile in sir, exista metode diverse. Producătorii din industria automotive (cum iti place sa zici pentru ca nu exista traducere in limba romana) stau luni de zile cu "osciloscopul" (nu DSO cu display LCD si alimentare la 230V) in mașina si pe banc, inregistrarile sunt utile pentru analize ulterioare ca in cazul de fata. Am văzut osciloscop folosit chiar si in departamente de R&D unde se făcea exclusiv dezvoltare si testare software.

 

Link spre comentariu
Acum 18 minute, cimitavita a spus:

Am avut de făcut mai multe surse de genul ăsta și acesta a fost motivul pentru care am renunțat complet la programe de nivel înalt. In asm cu un microcontroler la 8MHz este timp suficient să măsori o tensiune și să o ajustezi de 15000 ori pe secundă.

Nu cred ca este chiar asa.
Poate "programe de nivel inalt"  (la C banuiesc ca faci referire) nu au fost cumparate cu licenta.

Optimizarile facute de un compilator sunt de multe ori mai bune decat cele facute manual in ASM.
(daca nu sunt, ai ASM generat de compilator si poti intervenii)
Oricum nu mai merge cu ASM pe uC mai noi, sau merge dar cu mari chinuri inutile.
Dar asta este alta discutie.

 


 

Editat de Vizitator
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