Jump to content
ELFORUM - Forumul Electronistilor

mihaicozac

Membru activ
  • Content Count

    553
  • Joined

  • Last visited

Community Reputation

30 Se poate si mai bine

About mihaicozac

  • Rank
    Membru
  • Birthday 04/11/1965

Profile Information

  • Locatie
    Luftenberg, Austria

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Pt. aplicaţii în masă nici nu mai ai nevoie de IDE să scrii în controller, se poate compila în fişier hex apoi programezi direct cu AVRDude. Soluţia asta o folosesc pt. nişte ATTiny13 folosite ca emulatoare OneWire, am hex-urile gata compilate şi durează 2 secunde programarea.
  2. Dacă tot am afişaj digital eu aş folosi un singur ampermetru tip diferenţial înseriat pe baterie, care să arate sensul şi mărimea curentului prin ea, astfel dacă arată de ex. 22A încarcă şi -22A bateria se descarcă. În cazul ăsta cu 8 rezistenţe şi un modul ADS1115 problema afişării tutror parametrilor ar fi rezolvată. Dacă se doreşte în continuare a avea 2 ampermetre e nevoie de al doilea modul şi încă o pereche de rezistenţe.
  3. Mare lucru să se facă o operaţie simplă de corecţie, gen: float voltage, x, y; voltage = voltage * x + y; x corectează panta iar y offsetul. Iar 40dB sau 1% precizie este la nivelul instrumentelor de măsură obişnuite, adică la 100A afişează în cel mai rău caz 99A sau 101A, ceea ce e acceptabil. Iar citirea din ADS e banală, nici nu e nevoie de librărie, am scris o funcţie simplă pt. a avea direct milivolţi: int adc_get_mV() { //CITIRE DIN ADS1115 byte high_byte, low_byte; i2c_start_wait(adc + I2C_WRITE); i2c_write(0x01); //CONFIG REGISTER i2c_write(0x02); //MSB REG i2c_write(0x03); //LSB REG i2c_stop(); i2c_start_wait(adc + I2C_WRITE); i2c_write(0x00); //DATA REGISTER i2c_rep_start(adc + I2C_READ); high_byte = i2c_readAck(); low_byte = i2c_readAck(); i2c_stop(); unsigned int mV = high_byte * 256 + low_byte; //CONVERSIE CITIRI ADS IN MILIVOLTI return mV; }
  4. Rezoluţia ADC-ului de 10 biţi din Arduino este prea mică în situaţia asta. Iar etalonarea se poate face şi din software fără probleme, nu e nevoie de rezistenţe de precizie. E doar o propunere care simplifică mult schema electrică, nu e obligatoriu să fie acceptată. Eu aşa aş face, dar există bineînţeles şi alte soluţii.
  5. Divizoare de tensiune pe ambele părţi ale şuntului. Rezoluţia ADC-ului este suficient de bună ca să nu afecteze foarte mult precizia afişării. Iar una din ramuri poate fi folosită şi pt. măsurarea tensiunii. Raportul de divizare de 1:4 cred că ar fi cel mai potrivit. Am folosit acest modul la un analizor de baterii şi este foarte stabil în funcţionare, raport 1:8 pt. tensiuni ale bateriei de până la 26V.
  6. Poate o variantă cu ADS1015 sau ADS1115 ar fi mai practică, ADC-ul are 4 intrări deci se poate face conversie diferenţială, 2 module ar fi suficiente, costă 2 dolari bucata şi se conectează pe I2C.
  7. DAcă ai folosi diode Schottky la redresare, de genul celor din surse PC, căderea de tensiune s-ar micşora cu 1-1,2V şi nu ar mai fi nevoie de alt secundar.
  8. Trebuie corelată cantitatea de flux cu spaţiul disponibil sub cip. Fluxul se dilată la temperatură iar volumul poate creşte şi de 3 ori faţă de cel la rece. Eu pun flux cu seringa pe mijlocul laturilor, nu pe toată lăţimea lor, şi doar la 3 dintre ele, până văd că apare pe cea de-a patra fluxul. Asta când placa e deja pe la 150 de grade. Astfel dilatarea ulterioară e mai redusă.
  9. La lipire fluxul trebuie să rămână dedesubt, nu să zboare afară... Dacă fierbe e flux prost, conţinut mare de apă/alcool. Pt. BGA leadfree e nevoie de flux cu gel, fără alcool. Gen NC559 sau IF8300. Problema cu fierberea e că prin dilatarea excesivă a lichidului şi gazele produse ridică cipul şi unele lipituri se desfac iar dacă sunt multe în aer tensiunea superficială se micşorează şi cipul se mişcă din loc de aceea apar punţi. În cazurile critice eu pun pt. siguranţă o inductanţă din aia pătrată de vreo 10 grame peste cip, îl ţine mai pe poziţie.
  10. Am realizat deja cateva proiecte cu implementarea acestei clase, intre timp am mai lungit-o cu functii si variante pt. 2 butoane si un singur buton, in cazul in care se pot folosi variabile externe booleene pe post de argumente de declansare, de ex. daca folosesc butoane locale sau comanda la distanta. Clasa SingleButton cred ca este cea mai utila in exploatare: Single_Button.rar
  11. Eu nu prea recomand suflarea cu aer cand placa e fierbinte. Racirea prea brusca poate duce la fisuri in lipituri sau trasee. Mai bine injectat alcool care ]nmoaie fluxul, apoi dupa racire inclinata placa si solutia curge singura la vale. Eu pulverizez isopropilic dintr-un atomizor pana iese curat de sub cip. Pt. cei care fac statii home-made am realizat un soft cu Arduino pt. modificat cele chinezesti care sunt de rahat, foloseste MLX90614 sau TC si 10 profile diferite, are si pauza si salt la segmentul urmator.
  12. Dacă vrei precizie şi execuţie în timp real, e cam dificil. Dacă însă se permite să poţi pierde paşi, merge şi cu Arduino. Ideea e să aloci sloturi de timp separate pt. motor şi servo, ca să ai garanţia că se va executa codul indiferent de situaţie. Se pierde din viteză dar câştigi în stabilitate.
  13. Da, dacă nu e funcţie din librărie trebuia definită separat.
  14. Nu e mare scofală... În condiţia if() scrii funcţia wigwag() cu parametrii care doreşti, funcţia custom descrisă la subsol. iar la else() scrii ClearLights() şi ar trebui să meargă.
  15. Dacă studiezi puţin teoria reglării o să afli că un regulator PID are nevoie de o eroare la intrare ca să poată regla, şi mai ai şi viteza de variaţie a erorii. Dacă turaţia se modifică prea repede procesorul e prea lent să reacţioneze prompt iar întârzierea aceasta măreşte eroarea şi astfel intri în oscilaţie, problema cea mai frecventă la acordarea corectă a parametrilor. Şi mai ai şi întârzierea mecanismului servo pe traseu.
×
×
  • Create New...