Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 01/01/2019 in all areas

  1. 5 points
    Salut, voi prezenta doua dintre proiectele mele, concepute cu ceva timp in urma, dar de actualitate, pentru a exemplifica modul de proiectare si programare folosind microcontrollere PIC. S-a dorit: Realizarea unui ceas de precizie cu functie de memorare, chiar daca circuitul nu este alimentat. Adaugarea unui senzor de temperatura (DS18B20) cu o precizie de masurare de 0,1 grade Celsius. Afisarea pe un display cu 2 linii a cate 16 caractere, compatibil cu standardul HD44780. Sa realizat un meniu prin care informatiile sunt modificate si inregistrate in IC DS1307. Ca si microcontroller s-a ales pic16f876a (dar poate fi folosit oricare altul). Limbajul de programare ales este Mikroc Pro for PIC. Comunicatia intre microcontroller si circuitul de ceas este asigurata prin protocolul I2C. Patru butoane ne permit explorarea meniului. Intregul circuit este realizat pe o placa de test "breadboard" cu 2420 de gauri, mai putin circuitul de ceas care este proiectat separat pe o placa de circuit imprimat. Schema electronica: Explicatia schemei electronice: Butonul S1 asigura resetul intregului circuit, R1 este rezistenta de pull-up pentru butonul S1. Cristal de cuarț folosit este de 8 MHz. Conectorul ICSP este folosit pentru a programa microcontroller-ul (eu folosesc PicKit2/3). Rezistenta multitura R7 este folosita pentru a regla contrastul display-ului LCD. R6 ajusteaza curentul de consum prin ledurile care asigura iluminarea display-ului. R2-R5, R8-R10 sunt rezistențe de pull-up. Dioda D1 are rol de protectie (alimentez circuitul si cu programatorul si s-a dorit evitarea diferentei de potential in punctele de alimentare pozitive). Cele patru butoane au rol de: Incrementare, Decrementare, Schimbare Pozitie Cursor si Enter. Comunicatia intre circuitul DS1307 si placa "breadboard" este stabilita prin cinci pini astfel (GND, SQW, SCL, SDA, 5VDC). Nu am folosit aici pinul SQW. Am folosit o baterie de 3vcc pentru a asigura functionarea clock-ului intern al IC-ului ds1307, chiar daca acesta nu este alimentat. Diagrama de timp a comunicatiei I2C transmise de DS1307: Modelul semnalului la transferul de date: Diagrama bloc: Software-ul: /* '******************************************************************************* ' Project name: Real Time Clock [DS1307 with Set Functions] & DS18B20 ' Description: ' Trough the current experiment we wish to succed the next task: ' Display on LCD 2x16 character the clock and room temperature. ' Setting trough four buttons: the minutes, hours, date of the month, ' month, day of the week, and year. ' ' Our clock displays as shown below(but just in display time, ' not in set mode). ' Ex. of viewing on 2x16 LCD characters: ' Display time, mode: Set time, mode (cursor on): ' ------------------ ------------------ ' |Sat, 03 Dec 2011| |Sat, 03 12 2011| ' |21:32:03 +26,1*C| |21:32:03 | ' ------------------ ------------------ ' ' Hardware configuration is: ' IC ds1307 is connected with our microcontroller trough RC3=SCL, ' RC4=SDA (I2C Connections), RB0,RB1,RB4-RB7 are assigned to LCD (2x16) ' DS18B20 is assigned to RC7, ' Buttons Menu: RC0= Increment value, ' RC1= Decrement value, ' RC2= Change cursor position, ' RC5= Enter.(It goes to set functions or exit from set ' functions) ' Written by: ' Aureliu Raducu Macovei, 2014. ' Test configuration: ' MCU: PIC16F876A; ' Test.Board: WB-106 Breadboard 2420 dots; ' SW: MikroC PRO for PIC 2013 (version v6.0.0); ' Configuration Word: ' Oscillator: HS (8Mhz)on pins 9 and 10; ' Watchdog Timer: OFF; ' Power up Timer: OFF; ' Browun Out Detect: ON; ' Low Voltage Program: Disabled; ' Data EE Read Protect: OFF; ' Flash Program Write: Write Protection OFF; ' Background Debug: Disabled; ' Code Protect: OFF '******************************************************************************* */ // LCD module connections sbit LCD_RS at RB0_bit; // LCD_RS assigned to PORT RB0; sbit LCD_EN at RB1_bit; // LCD_EN assigned to PORT RB1; sbit LCD_D4 at RB4_bit; // LCD_D4 assigned to PORT RB4; sbit LCD_D5 at RB5_bit; // LCD_D5 assigned to PORT RB5; sbit LCD_D6 at RB6_bit; // LCD_D6 assigned to PORT RB6; sbit LCD_D7 at RB7_bit; // LCD_D7 assigned to PORT RB7; sbit LCD_RS_Direction at TRISB0_bit; // LCD_RS assigned to TRIS B0; sbit LCD_EN_Direction at TRISB1_bit; // LCD_EN assigned to TRIS B1; sbit LCD_D4_Direction at TRISB4_bit; // LCD_D4 assigned to TRIS B4; sbit LCD_D5_Direction at TRISB5_bit; // LCD_D5 assigned to TRIS B5; sbit LCD_D6_Direction at TRISB6_bit; // LCD_D6 assigned to TRIS B6; sbit LCD_D7_Direction at TRISB7_bit; // LCD_D7 assigned to TRIS B7; // End LCD module connections unsigned char sec,min1,hr,week_day,day,mn,year; //--------------------- Reads time and date information from RTC (DS1307) void Read_Time(char *sec, char *min, char *hr, char *week_day, char *day, char *mn, char *year) { I2C1_Start(); // Issue start signal I2C1_Wr(0xD0); // Address DS1307, see DS1307 datasheet I2C1_Wr(0); // Start from address 0 I2C1_Repeated_Start(); // Issue repeated start signal I2C1_Wr(0xD1); // Address DS1307 for reading R/W=1 *sec =I2C1_Rd(1); // Read seconds byte *min =I2C1_Rd(1); // Read minutes byte *hr =I2C1_Rd(1); // Read hours byte *week_day =I2C1_Rd(1); // Read week day byte *day =I2C1_Rd(1); // Read day byte *mn =I2C1_Rd(1); // Read mn byte *year =I2C1_Rd(0); // Read Year byte I2C1_Stop(); // Issue stop signal } //-----------------write time routine------------------ void Write_Time(char minute, char hour ,char weekday,char day,char month,char year) { char tmp1, tmp2; tmp1 = minute / 10; //Write tens of minute tmp2 = minute % 10; //Write unit of minute minute = tmp1 * 16 + tmp2; //Includes all value tmp1 = hour / 10; //Write tens of hour tmp2 = hour % 10; //Write unit of hour hour = tmp1 * 16 + tmp2; //Includes all value tmp1 = weekday / 10; //Write tens of weekday tmp2 = weekday % 10; //Write unit of weekday weekday = tmp1 *16 +tmp2; //Includes all value tmp1 = day / 10; //Write tens of day tmp2 = day % 10; //Write unit of day day = tmp1 *16 +tmp2; //Includes all value tmp1 = month / 10; //Write tens of month tmp2 = month % 10; //Write unit of month month = tmp1 *16 +tmp2; //Includes all value tmp1 = year / 10; //Write tens of year tmp2 = year % 10; //Write unit of year year = tmp1 *16 +tmp2; //Includes all value I2C1_Start(); // issue start signal I2C1_Wr(0xD0); // address DS1307 I2C1_Wr(0); // start from word at address (REG0) I2C1_Wr(0x80); // write $80 to REG0. (pause counter + 0 sec) I2C1_Wr(minute); // write minutes word to (REG1) I2C1_Wr(hour); // write hours word (24-hours mode)(REG2) I2C1_Wr(weekday); // write 6 - Saturday (REG3) I2C1_Wr(day); // write 14 to date word (REG4) I2C1_Wr(month); // write 5 (May) to month word (REG5) I2C1_Wr(year); // write 01 to year word (REG6) I2C1_Wr(0x80); // write SQW/Out value (REG7) I2C1_Stop(); // issue stop signal I2C1_Start(); // issue start signal I2C1_Wr(0xD0); // address DS1307 I2C1_Wr(0); // start from word at address 0 I2C1_Wr(0); // write 0 to REG0 (enable counting + 0 sec) I2C1_Stop(); // issue stop signal } //-------------------- Formats date and time--------------------- void Transform_Time(char *sec, char *min, char *hr, char *week_day, char *day, char *mn, char *year) { *sec = ((*sec & 0x70) >> 4)*10 + (*sec & 0x0F); *min = ((*min & 0xF0) >> 4)*10 + (*min & 0x0F); *hr = ((*hr & 0x30) >> 4)*10 + (*hr & 0x0F); *week_day =(*week_day & 0x07); *day = ((*day & 0xF0) >> 4)*10 + (*day & 0x0F); *mn = ((*mn & 0x10) >> 4)*10 + (*mn & 0x0F); *year = ((*year & 0xF0)>>4)*10+(*year & 0x0F); } //------------------------Display time--------------------------- char *txt,*mny; void Display_Time(char sec, char min, char hr, char week_day, char day, char mn, char year) { switch(week_day) { case 1: txt="Mon"; break; // Monday; case 2: txt="Tue"; break; // Tuesday; case 3: txt="Wed"; break; // Wednesday; case 4: txt="Thu"; break; // Thursday; case 5: txt="Fri"; break; // Friday; case 6: txt="Sat"; break; // Saturday; case 7: txt="Sun"; break; // Sunday; } LCD_Out(1, 1,txt); LCD_chr(1, 4,','); switch(mn) { case 1: mny="Jan"; break; case 2: mny="Feb"; break; case 3: mny="Mar"; break; case 4: mny="Apr"; break; case 5: mny="May"; break; case 6: mny="Jun"; break; case 7: mny="Jul"; break; case 8: mny="Aug"; break; case 9: mny="Sep"; break; case 10: mny="Oct"; break; case 11: mny="Nov"; break; case 12: mny="Dec"; break; } Lcd_Chr(1, 6, (day / 10) + 48); // Print tens digit of day variable Lcd_Chr(1, 7, (day % 10) + 48); // Print oness digit of day variable Lcd_Out(1, 9,mny); Lcd_out(1,13,"20"); Lcd_Chr(1,15, (year / 10) + 48); // we can set year 00-99 [tens] Lcd_Chr(1,16, (year % 10) + 48); // we can set year 00-99 [ones] Lcd_Chr(2, 1, (hr / 10) + 48); Lcd_Chr(2, 2, (hr % 10) + 48); Lcd_Chr(2, 3,':'); Lcd_Chr(2, 4, (min / 10) + 48); Lcd_Chr(2, 5, (min % 10) + 48); Lcd_Chr(2, 6,':'); Lcd_Chr(2, 7, (sec / 10) + 48); Lcd_Chr(2, 8, (sec % 10) + 48); } //-------------------Display Time in Set mode-------------------- char minute1,hour1,weekday1,month1; char minute,hour,weekday,day1,month,year1; void Display_Time_SetMode() { switch(weekday1) { case 1: txt="Mon"; break; // Monday; case 2: txt="Tue"; break; // Tuesday; case 3: txt="Wed"; break; // Wednesday; case 4: txt="Thu"; break; // Thursday; case 5: txt="Fri"; break; // Friday; case 6: txt="Sat"; break; // Saturday; case 7: txt="Sun"; break; // Sunday; } LCD_Out(1, 1,txt); LCD_chr(1, 4,','); Lcd_Chr(1, 6, (day1 / 10) + 48); // Print tens digit of day variable Lcd_Chr(1, 7, (day1 % 10) + 48); // Print oness digit of day variable Lcd_chr(1,10, (month1 / 10) + 48); // Print tens digit of month variable Lcd_chr(1,11, (month1 % 10) + 48); // Print oness digit of month variable Lcd_out(1,13,"20"); Lcd_Chr(1,15, (year1 / 10) + 48); // Print tens digit of year variable Lcd_Chr(1,16, (year1 % 10) + 48); // Print oness digit of year variable Lcd_Chr(2, 1, (hour1 / 10) + 48); // Print tens digit of hour variable Lcd_Chr(2, 2, (hour1 % 10) + 48); // Print oness digit of hour variable Lcd_Chr(2, 3,':'); Lcd_Chr(2, 4, (minute1 / 10) + 48); // Print tens digit of minute variable Lcd_Chr(2, 5, (minute1 % 10) + 48); // Print oness digit of minute variable Lcd_Chr(2, 6,':'); Lcd_Chr(2, 7, (0 / 10) + 48); Lcd_Chr(2, 8, (0 % 10) + 48); } char SPos; //----------------------Move cursor routine---------------------- char index; void movecursor() { char i,moveto; if(SPos==0) lcd_cmd(_lcd_first_row); // set weekday; if(SPos==1) lcd_cmd(_lcd_first_row); // set day; if(SPos==2) lcd_cmd(_lcd_first_row); // set month; if(SPos==3) lcd_cmd(_lcd_first_row); // set year; if(SPos==4) lcd_cmd(_lcd_second_row); // set hours; if(SPos==5) lcd_cmd(_lcd_second_row); // set minutes; moveto = 2; switch(index) { case 0: moveto = 2;break; case 1: moveto = 6;break; case 2: moveto =10;break; case 3: moveto =15;break; case 4: moveto = 1;break; case 5: moveto = 4;break; } for(i=1; i<= moveto; i++) lcd_cmd(_lcd_move_cursor_right); } //------------Start Buttons routine--------------; char setuptime=0; void Press_Switch() { if(setuptime) { if(Button(&portc,2,1,0)) // If buttons at port c2 is pressed { delay_ms(200); SPos++; if(SPos>5) SPos=0; index++; if(index > 5) index=0; movecursor(); } //-----------------------------case mode to set all values--------------------- switch(SPos) { case 0: if(button(&portc,0,1,0)) // If buttons at port c0 is pressed { Delay_ms(200); weekday1++; if(weekday1 > 7) weekday1=1; Display_Time_SetMode(); index=0; movecursor(); } if(button(&portc,1,1,0)) // If buttons at port c1 is pressed { Delay_ms(200); weekday1--; if(weekday1 < 1) weekday1=7; Display_Time_SetMode(); index=0; movecursor(); } break; case 1: if(button(&portc,0,1,0)) // If buttons at port c0 is pressed { Delay_ms(200); day1++; if(day1 > 31) day1 = 1; Display_Time_SetMode(); index=1; movecursor(); } if(button(&portc,1,1,0)) // If buttons at port c1 is pressed { Delay_ms(200); day1--; if(day1 < 1) day1 = 31; Display_Time_SetMode(); index=1; movecursor(); } break; case 2: if(button(&portc,0,1,0)) // If buttons at port c0 is pressed { Delay_ms(200); month1++; if(month1 > 12) month1 = 1; Display_Time_SetMode(); index=2; movecursor(); } if(button(&portc,1,1,0)) // If buttons at port c1 is pressed { Delay_ms(200); month1--; if(month1 < 1) month1 = 12; Display_Time_SetMode(); index=2; movecursor(); } break; case 3: if(button(&portc,0,1,0)) // If buttons at port c0 is pressed { Delay_ms(200); year1++; if(year1 > 99) year1 = 1; Display_Time_SetMode(); index=3; movecursor(); } if(button(&portc,1,1,0)) // If buttons at port c1 is pressed { Delay_ms(200); year1--; if(year1 < 1) year1 = 99; Display_Time_SetMode(); index=3; movecursor(); } break; case 4: if(button(&portc,0,1,0)) // If buttons at port c0 is pressed { Delay_ms(200); hour1++; if(hour1 > 23) hour1 = 0; Display_Time_SetMode(); index=4; movecursor(); } if(button(&portc,1,1,0)) // If buttons at port c1 is pressed { Delay_ms(200); hour1--; if(hour1 > 23) hour1 = 0; Display_Time_SetMode(); index=4; movecursor(); } break; case 5: if(button(&portc,0,1,0)) // If buttons at port c0 is pressed { Delay_ms(200); minute1++; if(minute1 > 59) minute1 = 0; Display_Time_SetMode(); index=5; movecursor(); } if(button(&portc,1,1,0)) // If buttons at port c1 is pressed { Delay_ms(200); minute1--; if(minute1 > 59) minute1 = 0; Display_Time_SetMode(); index=5; movecursor(); } break; } // end "if is in switch mode" } // end "if is in setup" if(button(&portc,5,1,0)) // If buttons at port c5 is pressed { Delay_ms(200); setuptime = !setuptime; if(SetupTime) { lcd_cmd(_lcd_clear); lcd_cmd(_lcd_blink_cursor_on); weekday1=week_day; hour1=hr; minute1=min1; day1=day; month1=mn; year1=year; Display_Time_SetMode(); SPos=0; index=0; movecursor(); } else { Lcd_Cmd(_Lcd_clear); lcd_cmd(_lcd_cursor_off); weekday=weekday1; hour=hour1; minute=minute1; day=day1; month=month1; year=year1; Write_time(minute,hour,weekday,day,month,year); } } } //----------------------End Buttons Routine------------------- //------------------Temperature sensor routines--------------- const unsigned short TEMP_RESOLUTION = 12; // 9 for DS1820 and 12 for DS18B20 char *text = "000,0"; unsigned temp; void Display_Temperature(unsigned int temp2write) { const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8; char temp_whole; unsigned int temp_fraction; unsigned short isNegative = 0x00; // Check if temperature is negative if (temp2write & 0x8000) { text[0] = '-'; temp2write = ~temp2write + 1; isNegative = 1; } // Extract temp_whole temp_whole = temp2write >> RES_SHIFT ; // Convert temp_whole to characters if (!isNegative){ if (temp_whole/100) text[0] = temp_whole/100 + 48; // Extract hundreds digit else text[0] = '+'; } text[1] = (temp_whole/10)%10 + 48; // Extract tens digit text[2] = temp_whole%10 + 48; // Extract ones digit // Extract temp_fraction and convert it to unsigned int temp_fraction = temp2write << (4-RES_SHIFT); temp_fraction &= 0x000F; temp_fraction *= 625; // Convert temp_fraction to characters text[4] = temp_fraction/1000 + 48; // Extract thousands digit // Print temperature on LCD Lcd_Out(2, 10,text); lcd_chr(2, 15,0xB2); // Ascii code for degrees symbol; Lcd_chr(2, 16,'C'); // Show symbol "C" from Celsius } //----------------Read and display Temperature from DS18B20-------------- void Read18b20() { //--- Perform temperature reading Ow_Reset(&PORTC, 7); // Onewire reset signal; Ow_Write(&PORTC, 7, 0xCC); // 0xCC Issue command SKIP_ROM; Ow_Write(&PORTC, 7, 0x44); // Issue command CONVERT_T; Delay_us(700); // delay 0,7s (required for signal // processing); Ow_Reset(&PORTC, 7); // Onewire reset signal; Ow_Write(&PORTC, 7, 0xCC); // Issue command SKIP_ROM; Ow_Write(&PORTC, 7, 0xBE); // Issue command READ_SCRATCHPAD; temp = Ow_Read(&PORTC, 7); // Next Read Temperature, read Byte // 0 from Scratchpad; temp = (Ow_Read(&PORTC, 7) << 8) + temp; // Then read Byte 1 from Scratchpad // and shift 8 bit left and add the Byte 0; //--- Format and display result on Lcd Display_Temperature(temp); // Call Display_Temperature; } //------------------Temperature sensor routines--------------- void Init_Main() { CMCON |=7; //TURN OFF ANALOGUE COMPARATOR AND MAKE PORTA TO DIGITAL I/O; I2C1_Init(100000); // initialize I2C Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear LCD display Lcd_Cmd(_LCD_CURSOR_OFF); // Turn cursor off Display_Time(sec, min1, hr, week_day, day, mn, year); !setuptime=1; index=0; SPos=0; } //-----------------Here we have the Main Routine---------------- void main() { Init_Main(); while (1) // While loop { Read_Time(&sec,&min1,&hr,&week_day,&day,&mn,&year); // read time from RTC(DS1307) Transform_Time(&sec,&min1,&hr,&week_day,&day,&mn,&year); // Transform time Press_Switch(); // Check buttons; if(!setuptime) { Display_Time(sec, min1, hr, week_day, day, mn, year); Read18b20(); } } } Explicatiile liniilor de cod le-am lasat in limba engleza, presupun ca nu este o problema. Demonstractiile practice: ...si un filmulet: Proiectul complet (fisierele eagle si mikroc): Real Time Clock DS1307 & DS18B20 & LCD02x16 PIC16F876A Stima.
  2. 5 points
    Am finalizat de rutat ultima versiune a placii de alimentare. De asemenea, am refacut numerotarea deoarece a trebuit sa aleg 2 capacitoare de filtraj in loc de 4, cum era initial pe intrarea LM317. Ceea ce ar mai trebui de facut dar nu este obligatoriu, e sa aloc cate doi conectorii de iesire pentru fiecare tensiune UAA, UA, UG1, asa cum am procedat cu terminalele GND, pentru ca placa se va ocupa cu alimentarea a doua canale audio de amplificare. Capacitoarele sunt de tip SNAP-in cu doua terminale. Am evitat versiunea cu patru terminale din considerente ce tin de cerintele de rutare PCB desi, asa cum se prezinta cablajul, unele dintre capacitoare, ma refer la cele de gabarit mare, diametru ext. 35mm, se pot alege de aceasta versiune. Deci, in acest moment putem spune ca cele doua PCB-uri sunt finalizate in proportie de 99%. Restul de 1% ramane sa-l mai cizelam pe parcurs. Va urma, in functie de timpul meu liber disponibil o lista de piese pentru cele doua scheme electronice sau cablaje. Si bineinteles, restul documentatiei. Bineinteles, in paralel, nu acum, vom putea trece si la o comanda de cablaje de fabrica, dar asta la momentul potrivit. Pana atunci, as dori, daca mai sunt, alte observatii si pareri.
  3. 4 points
    Am plantat sursa , este configurată pentru un PP clasă AB , negativare fixă , cu 4X6P3C&2X6H1P-EV&2X6H2P-EV . Mai am nevoie de doi condensatori de 220....470microF/350V și de radiator pentru stabizatorul care alimentează filamentele tuburilor " mici " Amplificatorul va avea Ua 400V , Ug2 300V , partea de atac ( Uaa ) 365V . Din grabă , pe o placă am montat soclurile pe patrea cu piese .....
  4. 4 points
    3. ... Citeste singur si formeaza-ti o parere... s-ar putea ca in multitudinea de informatii primite sa se fi strecurat anumite erori... https://ro.wikipedia.org/wiki/Impedanță_electrică http://iota.ee.tuiasi.ro/~evremera/6_1.pdf Ce e mai important, este faptul ca TU sa intelegi ca: - atunci cand setezi multimetrul pe domeniul marcat cu "dioda", masori caderea de tensiune intre doua puncte (exprimata in Volt). - atunci cand setezi multimetrul pe domeniul in care masori rezistentele, pe ecranul (sau scala) acestuia vei citi valoarea rezistentei (exprimata in Ohm). Atunci cand compari cele doua valori care (normal!) sunt diferite, de fapt compari cai cu magari si probabil te astepti la un rezultat in catâri...
  5. 3 points
    Nu prea este banc:pe unii i va face sa rada...altora le va da de gandit! A fost odata un fermier care avea un cal si o capra. Intr-o zi, calul s-a imbolnavit, iar barbatul a fost nevoit sa cheme medicul veterinar. “Ei bine, calul tau are un virus. El trebuie sa ia acest medicament timp de trei zile. Voi reveni in a treia zi si, daca nu este mai bine, va trebui sa il eutanasiem. In apropiere, capra asculta cu atentie conversatia lor. Imediat, barbatul i-a dat medicamentul calului si a plecat. Capra s-a apropiat de cal si a zis: “Fii tare, prietene! Ridica-te sau altfel te vor eutanasia. In a doua zi, barbatul i-a dat medicamentul calului si a plecat. Capra s-a intorssi a zis: “Hai, prietene! Ridica-te altfel vei muri! Hai, te ajut eu sa te ridici. Sa mergem… Unu, doi, trei…” In a treia zi, barbatul i-a dat medicamentul.. la scurt timp a venit si medicul veterinar: “Din pacate, vom fi nevoiti sa il eutanasiem. In caz contrar, virusul se poate raspandi, infectand ceilalti cai. Dupa ce au plecat, capra s-a apropiat de cal si a zis: “Asculta, prietene, acum ori niciodata! Ridica-te, haide! Ai curaj. Hai sus. Sus! Asa, incet. Grozav… Hai, unu, doi, trei. Bine, bine. Acum mai repede, inca un pas. Excelent…” Calul a inceput apoi sa alerge. Dintr-o data, proprietarul s-a intors si a vazut animalul din nou pe picioare. Atunci el a inceput sa strige: “Este un miracol! Calul meu este vindecat. Trebuie sa dam o mare petrecere. Sa taiem capra si sa facem cel mai bun gratar!” Morala: asa se intampla de multe ori la locul de munca si chiar in viata. Nimeni nu stie cu adevarat care este angajatul sau omul care contribuie la succesul unei alte persoane. Daca cineva iti va spune vreodata ca munca ta este neprofesionala, aminteste-ti: Arca lui Noe a fost construita de amatori, iar Titanicul a fost construit de profesionisti.
  6. 3 points
    Referitor la cablajele postate pana acum, nu ar fi rau sa incepeti sa va elaborati propria biblioteca de piese electronice deoarece, mai ales in Eagle, sunt o gramada de piese care au pad-uri / gauri de diametre diferite si necorespunzatoare. Ganditi-va ca asemenea programe de proiectare PCB au amprentele componentelor electronice gandite pentru constructia cablajelor in regim de fabrica, nu prin metode D.I.Y. In cazul abordarii D.I.Y a cablajelor, spre exemplu prin metoda PnP, distanta dintre pad-urile pieselor electronice trebuie sa fie cu totul alta. Deci, nu treceti cu vederea acest aspect pentru ca, daca maine-poimaine veti trimite niste cablaje la o fabrica (chineza), chinezul va aprecia foarte mult faptul ca nu il veti forta sa foloseasca 20 de diametre de gaurire in loc 5 sau 6. Dar mai este pana ajungeti acolo dar e bine ca aceste deprinderi sa vi le formati din timp. Si incercati pe cat posibil sa abordati si sa finalizati un proiect pana la sfarsit. De asemenea, ca tot veni vorba de PCB layout, EAGLE inca nu are un controler de distante intre traseele PCB atat de bine pus la punct, adica care sa va avertizeze de incalcarea regulilor in timp real. De abia de cand a fost preluat sa fie dezvoltat de Autodesk am observat ceva imbunatatiri in acest sens dar fata de Altium Designer sau Ultiboard, e cale lunga. Asadar, am observat ca in alte subiecte vi s-au mai facut observatii cu referire la distanta dintre pad-uri si trasee, de unele ati tinut cont, de altele nu (spun nu, vazand ultimul layout prezentat mai sus), deci e bine totusi sa invatati din greseli repede si nu prea pare sa o faceti mai ales ca aveti postari consecutive la cateva zile care repeta aceeasi greseala !!!
  7. 3 points
    În acest topic vreau sa postez imaginile cu stația de lipit, realizată după arhicunoscuta schemă a lui Wolf. Letconul folosit este de tipul Pensol Iron N și are o putere de 48W. De asemenea, acest letcon are un termocuplu de tipul K pentru monitorizarea temperaturii. În primul rând, postez schema după care s-a lucrat: Layout-ul a fost realizat în Kicad: Diferența dintre schema realizată de mine și schema lui Wolf este că eu am folosit în locul lui LM7812 un stabilizator cu LM317, care permite tensiune de intrare mai mare decât 7812. Din cauza faptului că am avut probleme cu led-ul roșu care a tot pâlpâit, am modificat R6 de la 4.7M la 1M. Acum voi prezenta prima stație de lipit realizată. Această stație a fost construită într-o carcasă în care inițial era o stație mai veche la care am decis să renunț. Cablajul pe care l-am folosit este realizat prin metoda PnP, este verificat și este funcțional. Transformatorul are primarul bobinat pentru 230V iar secundarul este bobinat pentru 24V și 3A. În timpul funcționării, transformatorul nu se încălzește. Ca și carcasă, am folosit o carcasă de la o sursă de PC, în care s-au potrivit toate componentele stației. Am realizat panoul frontal din cablaj FR4, în care am realizat găurile folosind o minibormașină și accesoriile necesare. În continuare, vă prezint pozele: În următoarele postări, voi prezenta următoarele versiuni ale stației de lipit.
  8. 3 points
    Ma bucur ca colegul de forum @niksound a trecut la abordarea unui amplificator pe tuburi. Sper si eu sa vand seturile de PCB-uri SA100 ca sa mai strang ceva banuti pentru un asemenea amplificator. „Doamne Ajuta”! Spor la mesterit, tuturor!
  9. 3 points
    Am finalizat PCB-ul sursei de alimentare dar pe ultima suta de metri a trebui sa fac un update la radiatorul pe care intentionam initial sa-l folosesc. Deci, am schimbat radiatorul, am recalculat puterea necesara pe iesirea LM317 si am considerat necesar ca este mult mai econom si util sa ma limitez la un singur tranzistor TIP42C. De asemenea, cu acest prilej, am ales si un radiator mai ieftin care se gaseste la distribuitori la cca. 3...4 Euro/bucata. In ceea ce priveste puterea disipata de puntile redresoare, din cele trei punti, una sau doua ar necesita musai un radiator. Dar cum placa se prinde de sasiul de Aluminiu, cele doua punti redresoare se pot atasa pe partea bottom prinse direct de suportul pe care va fi asezata placa sursei de alimentare. Cu modificarile efectuate mai sus, am incercat sa abordez un layout de asezare a placilor in carcasa amplificatorului atat dupa varianta nr.1 propusa de mine initial cu doua postari in urma cat si dupa varianta nr.2, unde placa de alimentare se va amplasa sub transformatorul de alimentare, respectiv cele doua transformatoare de iesire. Avand in vedere inaltimea pieselor si a radiatorului, un maxim 50mm cred ca este suficient. Precum o sa observati nu am folosit PCB footprint-uri cu capacitoare SNAP-in desi din punct de vedere a gabaritului, din ceea ce am verificat, sunt compatibili. Ar mai ramane sa actualizez PCB footprint-ul capacitoarelor si cu ceilalalti pini care se gasesc la capacitoare SNAP-in dar asta dupa ce o sa validam forma actuala a cablajului. Totusi, e posibil ca pinii adiacenti de la un capacitor SNAP-in in anumite cazuri sa incurce cerintele de rutare PCB dar voi stii cu certitudine asta de abia dupa ce voi pune in aplicare aceasta modificare. Cu schema electronica am ajuns la o asazisa revizie nr.7, deci pe viitor as dori sa ne raportam la aceasta schema care are si numerotarea corectata. In ceea ce priveste PCB-ul, a iesit de 269 x 89 mm.
  10. 3 points
    De abia astazi, dupa aproximativ o luna de proiectare PCB, am reusit sa definitivez cablajul prototip la acest proiect. Am fost nevoit sa creez o placa secundara care se va monta vertical prin intermediul a trei conectori de placa principala. Dupa ultimele masuratori in carcasa se pare ca voi fi nevoit sa modific cablajul prototip si al sursei SMPS, dar asta sper sa reusesc sa o fac luna asta. Dupa aceea ma voi ocupa si de cablajul amplificatorului pe tuburi. EDITARE ULTERIOARA: Prototipul nu a fost validat deoarece nu a functionat conform asteptarilor. Lucrez la o varianta simplificata pe care as dori sa o prezint in cursul anului 2019. Deci, urmariti tehnium-azi.ro
  11. 2 points
    Dupa cat inteleg eu ar fi vorba despre industria romaneasca anterioara anului 1990. Un aspect pe care vreau sa il relevez eu, este acela ca in epoca "socialismului biruitor" conform preceptelor politice ale vremii, toti trebuia sa fie incadrati in munca, adica somajul trebuia sa fie cu orice pret zero. Pornind de la o astfel de filozofie, erau elaborate inclusiv planuri de scolarizare pentru ingineri supradimensionate - uneori volumul de cadre de specialitate scolarizat intr-un domeniu, era dublu, sau chiar triplu fata de strictul necesar. In primul rand acest aspect s-a repercutat asupra calitatii unei bune parti a absolventilor facultatilor tehnice. Nu exista insa si un sistem de filtrare de tip meritocratic al celor mai buni absolventi. Practic toti absolventii aveau acelasi regim. Astfel, de foarte multe ori inginerii proiectanti, in loc sa fie alesi dintre cei mai buni specialisti, erau mediocri, sau submediocri. Pe un loc de inginer proiectant (spre exemplu) era in acea epoca o mare concurenta, avanmd in vedere ca asemenea posturi erau considerate "caldute". Astfel stand lucrurile, proiectantii erau de fapt selectati pe baza de pile, cunostinte, relati si / sau rudenii. Cei care aveau chemare pentru proiectare, erau adesea exclusi si marginalizati. Astazi (prin comparatie) cei care au pile, cunostinte, relatii si / sau rude suspuse, isi cumpara diplomele de la numeroasele "fabrici de diplome" aparute dupa revolutie, iar cand au intrat in posesia acestora sunt propulsati direct in functii si pozitii de top. In acest mod sistemul bazat pe pile, cunostinte, relatii si inrudiri s-a pastrat si chiar a luat forme extreme, care exclud competenta profesionala.
  12. 2 points
    Va salut domnule George.parerea mea vizavi de acest subiect , este ca de vina este "comunismul" cu tot ce a implicat influenta dominatiei sovietice.Intrebat acum douazeci de ani cand am indraznit sa ies in 'occident' , ce rau v-a facut comunismul, raspunsul meu era :pe langa ceea ce spune toata lumea , un lucru care se uita este ca" am fost educati sa gandim prost". Poate si de aceea eram privit ca un barbar. Repet ,parerea mea.
  13. 2 points
    Multumesc, functioneaza bine, arata ora sincronizata dupa ceasul calculatorului si temperatura din senzor. Nici eu nu am un computer performant, CPU cam 1000 la Benchmark, la rulare procesorul este ocupat 65% de Proteus, MikroC si Internet. Sunt satisfacut de rezultatele obtinute, asta ca o experienta interesanta. Pasiunea mea este transmiterea bilaterala a datelor la mare viteza prin USB, intre un aparat fizic cu microcontroler si un PC, aceasta deoarece prin folosirea unui limbaj de rang inalt se pot prelucra si afisa datele cum se doreste. Am inteles ca proiectul fizic functioneaza foarte bine si simularea cu HEX-ul original, felicitari! @gsabac
  14. 2 points
    O mica trecere in revista a procedeelor si materialelor de protectia antistatica in electronica, referitoare la montarea si lipirea componentelor. O poza de ansamblu cu o masa de montaj cu protectie antistatica. Punctele rosii de pe desen sunt conexiuni de impamantare si se remarca ca si mosorul cu fludor si suportul letconului sunt la impamintare. Partea hasurata este un burete conductiv pe care se plaseaza placa de circuit si toate sculele. Toate aceste componente, ca si multe altele, manusi, bratari antistatice, cizme, bureti, covorase,etc se gasesc de vanzare la: https://www.adelaida.ro/protectie-antistatica/ Pentru eliminarea bratarii, am montat pe letcon o cosa, pe care o ating cu degetul, pentru descarcarea electrostatica a corpului. Schema interna a statiei mele de lipit cu letcon Weller, manufacturata acasa. Sunt 2 circuite separate de protectie, unul pentru transformator si partea electrica si altul separat pentru partea metalica cu virful de lipit si s-a putut aplica elegant, deoarece cablul contine o conexiune de impamantare. @gsabac
  15. 2 points
    Colegul nostru niksound s-a implicat in acest proiect , a făcut cablajele imprimate " de probă " , am căzut de acord cu el să il sprijin să ducă la bun sfârșit construcția acestui amplificator , niksound fiind primul care sparge gheața cu acest proiect. Am plantat eu un canal si sursa de alimentare , un canal o să il planteze el .....cu componente . Ampul va fi un PP clasă AB1 , negativare fixă . Pentru a fi cu usturime cât mai mică la buzunar , am ales să configurez amplificatorul pentru tuburi rusești , care se găsesc mai ușor ( in țară ) , sunt mai ieftine . Ampul va folosi urmatoarele tuburi : 4X6P3C-E ( se pot folosi si 5881,6L6,6L6GC, KT66) 2X6H2P/6H2P-EV ( se pot folosi si ECC83/12AX7 , filamentele alimentate la 12,6V ) 2X6H1P/6H1P-EV ( se pot folosi si E88CC/6DJ8/6922) Transformatoarele de iesire sunt acestea https://www.tube-town.net/ttstore/Transformer/Outputtransformer/Audio-PP/Hammond-1650H::1249.html Transformatorul de alimentare https://www.tube-town.net/ttstore/Transformer/Power-Transformer/Fender/TT-Powertransformer-Fender-Style-Twin-100-Universal::7779.html Am desenat eu sursa de alimentare , configurată pentru acest amplificator , transformatorul de alimentare are o infasurare de 2X3,15V pentru filamente , se renunță la stabilizarea tensiunii care alimentează filamentele tuburilor . niksound trebuie să mai facă o mică " plăcuță " cu un stabilizator care asigură alinentarea G2 cu 300V . Tranzistorul trebuie montat pe un mic radiator , se poate folisi orice tranzistor NPN cu Vce mai mare de 400V, eu am pus pe schemă , folosit in montajele mele , un BU508AF sau DF , nu contează terminația . Este ceva cheltuială , dar ........ odată îți faci amp cu tuburi , nu trebuie să il faci imediat Dacă sunt întrebări.......sunt prin zonă . Sa vedem ce iese .....
  16. 2 points
    https://www.facebook.com/events/1989966091304996/?ti=cl Duminică 17.02.2019 , intre orele 9.....14 organizez o nouă audiție , în aceași locatie .
  17. 2 points
    Salut tocmai ce am terminat de montat si de reglat acest kit https://drive.google.com/file/d/1KyupAy2FlqoGYmsXu3B_2xIEqF7gP4ac/view?usp=drivesdk https://drive.google.com/file/d/1ZOJLixYw7qx0ykXRFiqnb9nNWO1Vr58w/view?usp=drivesdk
  18. 2 points
    Realizarea practica testata arata ca in poza. Am facut un test real cu radiatorul din poza la 32W putere disipata, 16V si 2A, in aer, pozitie verticala, cu partea de jos la 1cm fata de masa de proba. Tranzistorul este montat cu izolator de mica si pasta siliconica si am masurat temperatura capsulei tranzistorului de 85 de grade si a radiatorului in medie de circa 75 de grade, mai cald in mijloc si mai rece spre margini. Temperatura jonctiunii rezulta din calcule, tranzistorul are 1,20C/W deci la 32W jonctiune se supraincalzeste cu 1,2*32, circa 40 de grade si in total face 85+40= 125 de grade. Deoarece tranzistorul suporta 200 de grade pe jonctiune, valoarea obtinuta este foarte buna, cu observatia ca radiatorul frige. Schema va avea in total 4 tranzistori si 4 radiatoare, in total se va disipa 128W, atit cit rezulta maxim din comutarea tranzistorilor pentru maximum 10A la iesire. @gsabac
  19. 2 points
    Ar fi utile si niste scheme de etaje simple si explicate, pentru preamplificatoare si amplificatoare, eventual cu calcule sumare pe caracteristici, pentru stabilirea punctelor de functionare. @gsabac
  20. 2 points
    Buna seara, Va multumesc d-le @gsabac pentru disponibilitatea d-voastra in a analiza schema propusa. Am construit prima varianta a acestui amplificator fiindca imi plac schemele simetrice (de fapt in lumea de zi cu zi observam ca majoritatea lucrurilor au o simetrie), si stiam performantele schemei originale din revista Tehnium confirmate ulterior de @Zal. Apoi pornind de la aceasta topologie, am impus niste target-uri pentru varianta 2, si anume: - structura modulara: la o "placa de baza" sa conectez module pe care sa le pot ulterior imbunatati, fara a fi nevoie sa refac ampliful de la zero si anume doua module "diferentiale" si un modul pentru VAS (natural conform arhitecturii oricarui amplificator); - realizarea modulara permite customizarea amplificatorului prin upgrade-uri rapide pentru atingerea target-urilor de performanta dorite, constructorul alegand sa realizeze modulele pe care poate sa le faca si care-i satisfac necesitatile; - obtinerea unei puteri suficiente unei auditii de camera folosind o sursa de tensiune normala (+- 35-40V) care se gaseste usor si nici nu costa foarte mult stiind ca traful unui amplificator costa uneori chiar mai mult decat modulele amplificatoare; - un sunet cat mai natural specific amplificatoarelor "vintage"; - scaderea distorsiunilor pana la cel mai mic nivel posibil; - folosirea de componente usor de gasit si accesibile ca pret stiind ca nu intotdeauna electronistul amator dispune de componente specializate; - reproductibilitatea performantelor. Pornind de la acestea am conceput schema postata anterior dar care in simulare permite obtinerea, pe o sarcina de 8 ohmi, a unei puteri de aprox. 50W la o alimentare de +-35V si 70W la +-40V cu distorsiuni de 0,001%. Problema de care m-am lovit este la intrarea in clipping unde simularea arata o forma a semnalului de iesire ciudata cu oscilatii dupa cum a fost prezentata si de dl @gsabac la fel si la aplicarea unui semnal treapta. Dimensionarea componentelor a fost facuta astfel incat punctele statice de functionare ale tranzistorilor din diferential sa fie la 1,2 mA, 10mA la VAS si 30ma pentru bias, pe care eu le consider OK pt schema de fata, ceea ce conduce intr-un regim normal de lucru la obtinerea unor performante foarte bune. Orice ajutor pentru stabilizarea schemei in clipping sau semnal treapta este binevenit ca eu nu mai stiu ce sa-i mai fac. Va multumesc. P.S. Nu sunt inginer electronist, ci doar amator asa ca daca am gresit in exprimare va rog sa iertati.
  21. 2 points
    Detalii din componenta releelor. O schita de schema pe care o voi folosi la comutarea automata a prizelor de tensiune. @gsabac
  22. 2 points
    Am finalizat cablajul amplificatorului (vedeti imaginile de mai jos). Urmeaza cablajul sursei de alimentare si dupa aceea o sa postez aici fisierele pdf care se pot folosi la constructia cablajului prototip. Din pacate nu detin toate piesele ca sa testez acest amplificator inainte sa facem niste cablaje de fabrica si ca drept urmare acest pas de constructie si de validare a prototipului va trebui facut de voi. Dar pana atunci, doua imagini cu cablajul amplificatorului (soclurile tuburilor se vor amplasa pe partea bottom, asa cum s-a mentionat initial). Cablajul se poate realiza intr-un singur strat folosind doar 5 jumperi.
  23. 2 points
    Confirm! Se poate. Legat de ce spune Dl. Ola_nicolas, in ce priveste ascutirea burghielor in trepte, marea majoritate dintre noi le folosim in materiale moi, aluminiu, alama, cupru, fier, etc., si nu le tocim prea tare, iar pretul pentru un set cu 3 bucati, unul in trepte, 4-12 mm, altul conic, de la 8 la 20 mm si un spiral pentru zencuire, pentru gauri 4-12 mm, sau un spiral in trepte de la 4 la 32 mm, depaseste cu putin pretul unui pachet de tigari. Nu cred ca este o asa mare cheltuiala sa mai completam din cand in cand trusa. Si daca tot nu mai sunt bune, putem sa exersam ascutirea lor pe ele insele, cu flexul prins in menghina! Metoda de ascutire pentru lemn se foloseste la spiralele pentru gaurirea tablelor subtiri. Prima data am vazut asta in liceu, prin '83-'84.
  24. 2 points
    Am facut deja un oftopic pentru a lamuri ce sunt pilele diamantate, sper ca nu am stricat prea tare topicul cu "Pistol de lipit performant" Pilele diamantate, ca si frezele diamantate sau pilele de unghii diamantate se confectioneaza cel mai convenabil prin metode electrolitice. Pentru o documentatie sumara se poate folosi internetul: http://krc.cecri.res.in/ro_2007/130-2007.pdf nu se depune grafit ci direct microcristale de diamant ( se procura din China la Kg) in suspensii electrolitice cu pulberi metalice. Ce nu se spune in articol este ca microcristalele de diamant mai intai se acopera cu un strat submicronic de metale conductoare, care ajuta la omogenizarea suspensiilor utilizate si la migratia particulelor in electrolit. Pilele ca si frezele diamantate s-au fabricat si se fabrica in Romania, inca din anii 1980, asta pentru o evidentiere a tehnologiei din tara noastra. Tehnologia clasica cu pulberi metalice ce includ microcristale de diamant este extrem de laborioasa, necesita presiuni mari de compactare si un proces de sinterizare la 1100 0C in atmosfera neutra si nu se poate aplica la freze complexe sau miniatura, de exemplu. In legatura cu realizarea diamantelor sintetice, precizez ca nimeni niciodata nu a obtinut cristale de diamant din grafit, prin metoda presiunii si temperaturii, altele sunt procedeele de obtinere care si pentru mine au fost necunoscute pina acum vreo 20 de ani. In final am postat pe acest subiect deoarece putina acuratete si precizie in postari este foarte importanta pentru userii forumului si mai ales pentru generatiile inlocuitoare si poate sunt useri care stiu mult mai multe despre scule diamantate, nu asa de general si superficial ca mine. Cu stima @gsabac
  25. 2 points
    Salutari! Am construit acest dispozitiv pentru ca aveam nevoie de un pistol de lipit mai puternic decat celebrul Radioprogres si,in acelasi timp ,sa poata fi manevrat cu usurinta si sa aiba o greutate cat mai mica cu putinta in conditiile date... Este construit pe un miez de tip 2C+2C recuperat de la un traf de alimentare de la televizorul Sport-primele modele aparute pe piata...lucreaza cu 2 modele de ansa una de 2,8mm diametru (6mm2) si alta de 3,5mm diametru (10mm2)... Date tehnice: -sectiune miez => 6cm2 -bobinaj primar => 860sp cu conductor de 0,55mm diametru cu izolatie -bobinaj secundar => 1 spira din bara de cupru cu sectiunea de 11 x 5mm -greutate => 1,48kg -rezistenta ohmica primar => 11 ohmi -curent de mers in gol => 0,16A la 230V si 0,81A la 245V -tensiune maxima primar => 250V -curent de impuls in momentul pornirii aprox. 1,1A...dupa atingerea temperaturii de lucru 0,75A...masuratori facute cu ansa de 3,5mm diametru si la 230V tensiune retea -putere aparenta =>aprox. 172VA -timp de atingere a temperaturii de topire a fludorului -aprox. 2 secunde cu ansa mai subtire si aprox. 3 secunde cu ansa mai groasa... Va prezint , in poze,etapele constructive incepand de la executia carcasei bobinajului ,etape de montaj si aspectul final inclusiv o schita cu dimensiunile exacte ale carcasei bobinajului si a secundarului... Constructia a fost finalizata pe 02.01,2019 si a fost testata urmatoarele 2 zile timp de 6 ore in fiecare zi...regim activ 2-3 minute si pauza 6-7 minute...o pauza de 1/2 ore la pranz...nu au fost probleme,s-a comportat ok, temperatura carcasei metalice fiind aprox. 50 grade ....
This leaderboard is set to Bucharest/GMT+03:00
×

Important Information

We use cookies and related technologies to improve your experience on this website to give you personalized content and ads, and to analyze the traffic and audience of your website. Before continuing to browse www.tehnium-azi.ro, please agree to: Terms of Use.