Witam. Nazywam się Alan Bejnarowicz. Mam 13 lat i pasjonuję się elektroniką cyfrową. Programuję mikrokontrolery Avr ale… Zawsze mnie coś ciągnęło do lamp elektronowych niestety mój tata zawsze twierdził, że to staroć. Prawdopodobnie jest to spowodowane tym że w moim wieku naprawiał dużo lampowych telewizorów. Jedyne lampy na jakie Go przekonują to VFD ewentualnie NIXE lub magiczne oko. Zbudowałem już jeden zegar VFD ale jest mniej okazały od tego. Pochwalę się więc moją nową konstrukcją. Do budowy zegara użyłem:
-Obudowa drewniana z Empiku
– Lampa VFD IW-18
-Atmega8
-Moduł zegara cyfrowego DS3231
– trochę miedzianych rurek i kolanek
-Dwa scalaki ULN2803
-drobnica elektroniczna
-chińska przetwornica impulsowa
Projekt jest idealny dla początkujących elektroników. Brak w nim wysokich napięć, więc jest bezpieczny. Lampy VFD są zasilane około 24v, przy multipleksowaniu trochę więcej. Budując go można zyskać bardzo dużo doświadczenia.
Najpierw zacznę od schematu:
Jest on dosyć prosty. Mikrokontroler multipleksuje wyświetlacz poprzez drivery ULN2803. Linie są podciągnięte za pomocą rerzystorów 10k. Na schemacie pisze, że należy podać na wyświetlacz 17v ale eksperymentalnie dobrałem napięcie około 40v. Tak samo napięcie żarzenia zamiast przez stabilizator 3,3v podałem 5v jak w nocie katalogowej.
Do nóżek lampy przylutowałem skrętke komputerową i zacisnąłem długą koszulkę termokurczliwą, do końcówek kabli przykleiłem karteczki z opisem. Lampę postanowiłem umieścić w miedzianych kolankach. wygląda to tak.
Płytka drukowana prezentuje się tak:
Jest tam mały błąd. Na płytce nie ma podciągnięcia linii SDA i SCL rerzystorem 4,7k do Vcc. Trzeba je dolutować. Warstwa TOP to po prostu zwory skrętką komputerową. W miejscu SV3 ma być wlutowany stabilizator liniowy 78o5, a w miejscu SV4 nie ma być NIC. W założeniu miał być tam stabilizator liniowy 3,3v, ale eksperymentalnie stwierdziłem, że żarzenie powinno być zasilane 5v. Gniazdo SV5 jest na zegar RTC, zamówiony z chin. Kosztował około 1 dolar. Przesyłka darmowa :), tylko idzie miesiąc. W miejsce X3 podłączamy przetwornicę, ustawioną na 40v. Rerzystor R17 ma wartość 10k, ale nie jest on wymagany. Fuse bity mikrokontrolera ustawione są na taktowanie 8mhz.
Teraz Program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
#include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h> #include "I2C_TWI/i2c_twi.h" #include "multi_VFD/multi_VFD.h" typedef union { uint8_t bytes[7]; struct { uint8_t ss; uint8_t mm; uint8_t hh; uint8_t dayofwek; uint8_t day; uint8_t month; uint8_t year; }; } TDATETIME; //typedef struct { // int8_t cel; // uint8_t fract; //} TTEMP; #define DS3231_ADDR 0xD0 void DS3231_init( void ); void DS3231_get_datetime( TDATETIME * dt ); void show_time( TDATETIME * dt ); void show_date( TDATETIME * dt ); void DS3231_set_time( uint8_t hh, uint8_t mm, uint8_t ss ); void DS3231_set_date( uint8_t year, uint8_t month, uint8_t day, uint8_t dayofweek ); void DS3231_get_temp( TTEMP * tmp ); uint8_t min,sec,hh; TDATETIME datetime; TTEMP temperature; uint8_t stc[] = {12,18,18,12,32,32,32,32}; int i=0; int main( void ) { sei(); // i2cSetBitrate(400); // DS3231_init(); // //DS3231_set_time( 12,10,0 ); //DS3231_set_date( 15, 1, 4, 7 ); VFD_init(); while(1) { DS3231_get_datetime( &datetime ); DS3231_get_temp( &temperature ); _delay_ms(1000); if(i==20){ VFD_dispaly_temp(&temperature); _delay_ms(5000); show_date(&datetime); _delay_ms(5000); i=0; } i++; show_time(&datetime); } } void DS3231_init( void ) { uint8_t ctrl = 0; TWI_write_buf( DS3231_ADDR, 0x0e, 1, &ctrl ); } void DS3231_get_datetime( TDATETIME * dt ) { uint8_t i; uint8_t buf[7]; TWI_read_buf( DS3231_ADDR, 0x00, 7, buf ); for( i=0; i<7; i++ ) dt->bytes[i] = bcd2dec( buf[i] ); } void show_time( TDATETIME * dt ) { VFD_dispaly_time(dec2bcd(dt->hh),dec2bcd(dt->mm),dec2bcd(dt->ss)); } void show_date( TDATETIME * dt ) { uint8_t r,m,d; r=dec2bcd(dt->year); m=dec2bcd(dt->month); d=dec2bcd(dt->day); VFD_dispaly_time(d,m,r); } void DS3231_set_time( uint8_t hh, uint8_t mm, uint8_t ss ) { uint8_t buf[3]; buf[0]=dec2bcd(ss); buf[1]=dec2bcd(mm); buf[2]=dec2bcd(hh); TWI_write_buf( DS3231_ADDR, 0x00, 3, buf ); } void DS3231_set_date( uint8_t year, uint8_t month, uint8_t day, uint8_t dayofweek ) { uint8_t buf[4]; buf[0]=dayofweek; buf[1]=dec2bcd(day); buf[2]=dec2bcd(month); buf[3]=dec2bcd(year); TWI_write_buf( DS3231_ADDR, 0x03, 4, buf ); } void DS3231_get_temp( TTEMP * tmp ) { uint8_t buf[2]; TWI_read_buf( DS3231_ADDR, 0x11, 2, buf ); tmp->cel = buf[0] ; tmp->fract = buf[1]>>6; TWI_read_buf( DS3231_ADDR, 0x0e, 1, buf ); buf[0] |= (1<<5); TWI_write_buf( DS3231_ADDR, 0x0e, 1, buf ); } |
I biblioteka do multipleksowania.
Gdyby ktoś chciał obsługiwać ten zegar RTC polecam ten poradnik :
http://mirekk36.blogspot.com/2013/11/rtc-ds3231-najdokadniejszy-zegarek-na.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 |
/* * multi_VFD.c * * Created on: 11-08-2014 * Author: Alan Bejnarowicz */ //***********biblioteki*************** #include "avr/io.h" #include "avr/interrupt.h" #include <avr/pgmspace.h> #include "multi_VFD.h" //***********biblioteki*************** //***********potrzebne zmienne******** //tablica wygenerowana segment generatorem z MkAVRCalculatora const uint8_t VFD_SEG[] PROGMEM = { 0xC0, // 0 0xF9, // 1 0x64, // 2 0x70, // 3 0x59, // 4 0x52, // 5 0x42, // 6 0xD8, // 7 0x40, // 8 0x50, // 9 0xFF, // nic 0x46, // E 0x6F, //r 0x63, // o 0xC6, // c 0x5C, // stopien 0x7F, // - 0xCF, // | 0xC9, // || 0x80, // 0 0xB9, // 1 0x24, // 2 0x30, // 3 0x19, // 4 0x12, // 5 0x02, // 6 0x98, // 7 0x00, // 8 0x10, // 9 }; //const uint8_t VFD_SEG[] PROGMEM = { // 0xC0, // 0 // 0xF9, // 1 // 0x64, // 2 // 0x70, // 3 // 0x59, // 4 // 0x52, // 5 // 0x42, // 6 // 0xD8, // 7 // 0x40, // 8 // 0x50, // 9 //}; //***********potrzebne zmienne******** static uint8_t licznik=1; // zmienna do przełączania kolejno anod wyrwietlacza volatile uint8_t cy1=1; volatile uint8_t cy2=2; volatile uint8_t cy3=3; volatile uint8_t cy4=4; volatile uint8_t cy5=5; volatile uint8_t cy6=6; volatile uint8_t cy7=7; volatile uint8_t cy8=8; #if USE_SET_TIME == 1 volatile uint8_t k_hh = 0; volatile uint8_t k_mm = 0; #endif //***********funkcje****************** void VFD_init(void) { #if USE_SET_TIME == 1 //inicjalizacja przycisków KEY_DDR &= KEY_PIN_hh; KEY_DDR &= KEY_PIN_mm; KEY_PORT |= KEY_PIN_hh; KEY_PORT |= KEY_PIN_mm; #endif G1_DDR |= G1_PIN; //inicjalizacja siatek G2_DDR |= G2_PIN; G3_DDR |= G3_PIN; G4_DDR |= G4_PIN; G4_DDR |= G5_PIN; G4_DDR |= G6_PIN; G4_DDR |= G7_PIN; G4_DDR |= G8_PIN; //**********gaszenie wszystkich siatek************************* G1_OFF; G2_OFF; G3_OFF; G4_OFF; G5_OFF; G6_OFF; G7_OFF; G8_OFF; //**********gaszenie wszystkich siatek************************* SEG_DATA_DIR = 0xFF; // wszystkie piny portu C jako WYJŚCIA(katody) SEG_DATA = 0xFF; // wygaszenie wszystkich katod – stan wysoki // ust awienie TIMER2 #if F_CPU == 8000000 TCCR2 |= (1<<CS22); //| (1<<CS20) | (1<<CS21); TCCR2 |= (1<<WGM21); //tryb CTC TIMSK |= (1<<OCIE2); //zezwolenie na przerwania CTC OCR2 = 50; // zezwolenie na przerwanie CompareMatch #endif } //*****************funkcja wyswietlająca znaki i cyfry******************** void VFD_display(uint8_t cyf1, uint8_t cyf2, uint8_t cyf3, uint8_t cyf4, uint8_t cyf5, uint8_t cyf6, uint8_t cyf7, uint8_t cyf8 ){ cy1=cyf1; cy2=cyf2; cy3=cyf3; cy4=cyf4; cy5=cyf5; cy6=cyf6; cy7=cyf7; cy8=cyf8; } //*************funkcja wyswietlająca czas*********************** void VFD_dispaly_time (uint8_t godziny, uint8_t minuty, uint8_t sekundy){ cy1 = godziny >>4; cy2 = godziny &0x0f; cy3 = 16; cy4 = minuty >>4; cy5 = minuty &0x0f; cy6 = 16; cy7 = sekundy >>4; cy8 = sekundy &0x0f; } void VFD_dispaly_temp (TTEMP * tmp){ uint8_t temperature =0; temperature = dec2bcd(tmp->cel); cy1 = NIC; cy2 = temperature >>4; cy3 = (temperature &0x0f)+19; cy4 = tmp->fract; cy5 = 15; cy6 = 14; cy7 = NIC; cy8 = NIC; } ISR(TIMER2_COMP_vect){ //wektor przerwania //*************gaszenie siatek******************* G1_OFF; G2_OFF; G3_OFF; G4_OFF; G5_OFF; G6_OFF; G7_OFF; G8_OFF; if (licznik == 1) { G1_ON; SEG_DATA = pgm_read_byte( &VFD_SEG[cy1] ); } if (licznik == 2) { G2_ON; SEG_DATA = pgm_read_byte( &VFD_SEG[cy2] ); } if (licznik == 3) { G3_ON; SEG_DATA = pgm_read_byte( &VFD_SEG[cy3] ); } if (licznik == 4) { G4_ON; SEG_DATA = pgm_read_byte( &VFD_SEG[cy4] ); } if (licznik == 5) { G5_ON; SEG_DATA = pgm_read_byte( &VFD_SEG[cy5] ); } if (licznik == 6) { G6_ON; SEG_DATA = pgm_read_byte( &VFD_SEG[cy6] ); } if (licznik == 7) { G7_ON; SEG_DATA = pgm_read_byte( &VFD_SEG[cy7] ); } if (licznik == 8) { G8_ON; SEG_DATA = pgm_read_byte( &VFD_SEG[cy8] ); } if(licznik == 8) licznik = 0; licznik++; //***************************obsługa klawiszy******************************** #if USE_SET_TIME == 1 if( !(KEY_PIN & KEY_PIN_hh) ) k_hh = 1; else k_hh = 0; if( !(KEY_PIN & KEY_PIN_mm) ) k_mm = 1; else k_mm = 0; #endif } // konwersja liczby dziesiętnej na BCD uint8_t dec2bcd(uint8_t dec) { return ((dec / 10)<<4) | (dec % 10); } // konwersja liczby BCD na dziesiętną uint8_t bcd2dec(uint8_t bcd) { return ((((bcd) >> 4) & 0x0F) * 10) + ((bcd) & 0x0F); } |
i plik .h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
#ifndef MULTI_VFD_H_ #define MULTI_VFD_H_ //*******************ustawienia biblioteki********************* #define USE_SET_TIME 0 //1-tak 0-nie // *****************zmienne c.d.**************** typedef struct { int8_t cel; uint8_t fract; } TTEMP; #if USE_SET_TIME == 1 extern volatile uint8_t k_hh; extern volatile uint8_t k_mm; #endif //*********************siatki**************************************************** #define G1_PIN (1<<PC2) // definicja pinu do którego podłączona jest siatka #define G1_ON PORTC &= ~G1_PIN // makrodefinicja – załączenie siatki #define G1_OFF PORTC |= G1_PIN // makrodefinicja – wyłączenie siatki #define G1_DDR DDRC #define G2_PIN (1<<PC3) // definicja pinu do którego podłączona jest siatka #define G2_ON PORTC &= ~G2_PIN // makrodefinicja – załączenie siatki #define G2_OFF PORTC |= G2_PIN // makrodefinicja – wyłączenie siatki #define G2_DDR DDRC #define G3_PIN (1<<PD7) // definicja pinu do którego podłączona jest siatka // makrodefinicja – załączenie siatki #define G3_OFF PORTD |= G3_PIN // makrodefinicja – wyłączenie siatki #define G3_ON PORTD &= ~G3_PIN #define G3_DDR DDRD #define G4_PIN (1<<PD6) // definicja pinu do którego podłączona jest siatka #define G4_ON PORTD &= ~G4_PIN // makrodefinicja – załączenie siatki #define G4_OFF PORTD |= G4_PIN // makrodefinicja – wyłączenie siatki #define G4_DDR DDRD #define G5_PIN (1<<PD5) // definicja pinu do którego podłączona jest siatka #define G5_ON PORTD &= ~G5_PIN // makrodefinicja – załączenie siatki #define G5_OFF PORTD |= G5_PIN // makrodefinicja – wyłączenie siatki #define G5_DDR DDRD #define G6_PIN (1<<PD4) // definicja pinu do którego podłączona jest siatka #define G6_ON PORTD &= ~G6_PIN // makrodefinicja – załączenie siatki #define G6_OFF PORTD |= G6_PIN // makrodefinicja – wyłączenie siatki #define G6_DDR DDRD #define G7_PIN (1<<PD3) // definicja pinu do którego podłączona jest siatka #define G7_ON PORTD &= ~G7_PIN // makrodefinicja – załączenie siatki #define G7_OFF PORTD |= G7_PIN // makrodefinicja – wyłączenie siatki #define G7_DDR DDRD #define G8_PIN (1<<PD2) // definicja pinu do którego podłączona jest siatka #define G8_ON PORTD &= ~G8_PIN // makrodefinicja – załączenie siatki #define G8_OFF PORTD |= G8_PIN // makrodefinicja – wyłączenie siatki #define G8_DDR DDRD //*********************siatki**************************************************** //*********************Segmenty************************************************** #define SEG_DATA PORTB // port z podłączonymi segmentami #define SEG_DATA_DIR DDRB // rejestr kierunku portu katod wyświetlaczy #define SEG_A (1<<0) #define SEG_B (1<<1) #define SEG_C (1<<2) #define SEG_D (1<<3) #define SEG_E (1<<4) #define SEG_F (1<<5) #define SEG_G (1<<7) #define SEG_DP (1<<6) //*********************Segmenty************************************************** //******makra pomocnicze********* #define NIC 10 //makra przycisków ustawiania godziny #define KEY_PIN_hh (1<PC0) #define KEY_PIN_mm (1<<PC1) #define KEY_PORT PORTC #define KEY_DDR DDRC #define KEY_PIN PINC //********************funkcje**************************************************** void VFD_init (void); void VFD_display(uint8_t cyf1, uint8_t cyf2, uint8_t cyf3, uint8_t cyf4, uint8_t cyf5, uint8_t cyf6, uint8_t cyf7, uint8_t cyf8 ); void VFD_dispaly_time (uint8_t godziny, uint8_t minuty, uint8_t sekundy); void VFD_dispaly_temp (TTEMP * tmp); uint8_t dec2bcd(uint8_t dec); uint8_t bcd2dec(uint8_t bcd); #endif /* MULTI_VFD_H_ */ |
Biblioteka do I2c nie jest moja więc nie mogę jej udostępnić. Reszta bibliotek jest napisane przeze mnie.
Program został napisany w języku C. Zegar ma funkcje datownika i termometru. Zegar RTC DS3231 jest super dokładny, a na dodatek posiada własny termometr, polecam go wszystkim.
Obudowa:
Obudowa pochodzi z Empiku. Wyszlifowałem tylko kanty papierem ściernym 500 i pomalowałem lakierobejcą o kolorze TIK. Dwie dziury na rurki zrobiłem wiertłem piórowym. Zegar zasilam zasilaczem do LED 12v. Na razie jest na zewnątrz, ale już kupiłem mniejszy, który zmieści się w obudowie.
Planowane udoskonalenia:
-Ustawianie czasu przez WIFI!!!!
-Zamiast 7805 przetwornica impulsowa, ponieważ termometr w obudowie pokazuje czasami 27 stopni.
Zegar prezentuje się tak:
“Mam 13 lat i pasjonuję się elektroniką cyfrową. ”
To wystarczyło żebym dał Ci 5 :) A sam projekt jak najbardziej godny uwagi i miejsca na głównej. Pozdrawiam
Dziękuję za pozytywne opinie :)
Masakra jakaś z tymi płytkami wrzuconymi do pudła…
Czego oczy nie widzą temu sercu nie żal
Zawsze można je przykręcić :)
To nie w.cz :)
Winszuję bardzo ładnego zegara :) Prezencja na 5+. Bardzo podoba mi się efekt końcowy i nie pogardziłbym takim w domu.
A że masz dopiero 13 lat – WOW! Jestem pod wrażeniem. Pomimo pracy z Arduino i elektroniką, termotransfer jest dla mnie wciąż problematyczny i unikam go jak ognia.
Fakt, że płytki w obudowie należałoby przymocować, ale co to za problem?
Jeszcze raz – Gratuluję!
Schemat i płytka to jakaś masakra. Raz używasz amerykańskiego symbolu rezystora, raz europejskiego, połączenia nachodzą na napisy, prawie wszystko połączone magistralą (w sumie to nie wiadomo gdzie co idzie teraz). Na płytce linie jednej warstwy nachodzą na siebie. Poza tym skoro jest to strona DIY to wypadałoby jednak wstawić kod źródłowy, inaczej to się mija z celem. Jak już coś robić to porządnie.
Pamiętaj, że Kolega ma tylko 13 lat. Jak na ten wiek, to i tak jestem pełen podziwu za przygotowanie i opracowanie projektu w ten sposób.
Ale fakt, kod źródłowy by się przydał. Alan – możesz dodać?
Co do EAGLE to polecam wszystkie kursy od tego pana: https://www.youtube.com/watch?v=5CF0Q81nGzY
To, że ma tylko 13 lat nie usprawiedliwia robienia czegoś na odwal się. Wręcz przeciwnie – powinien się starać teraz bardziej, bo później już się nie będzie chciało poprawić złych nawyków (dlatego polecam obejrzeć kurs, który podlinkowałem) :P
Od takiego podejścia wychodzą na świat klony a nie inżynierowie :)
Krupson, uważam, że masz rację. Młodzież należ uczyć dobrej pracy i zasad już na początku, ponieważ potem złe nawyki biorą gorę. Dlatego mądrzejsi dawno opracowali pewne standardy i ich przestrzegają.
Autorowi daję 5- za projekt i wiedzę.
Kolego Krupson, pochwal się więc swoim projektem. Pewnie twoje konstrukcje na początku nie wyglądały wiele lepiej :)
Wow! Steampunkowy zegar wyszedł bomba ;)
Fakt, że płytka mogłaby by być zamocowana, ale i tak daje 5*
Ja w Twoim wieku zrobiłem wzmacniacz lampowy na lampie PCL86. Wyglądało to jakby kupę drutu poplątał i do prądu podłączyć. Grunt, że samodzielna konstrukcja. Tobie jest łatwiej, ja nie miałem dostępu do Internetu. W sumie kto miał internet 20 lat temu.
Na zachętę masz 5/5.
Temat z elektrody…
Dodałem kod źródłowy.
To teraz mogę dać zasłużone 5 :)
Nie wierze że on ma 13 lat i sklecił to coś, to po prostu nie możliwe… Ściema 1/1
Nie wierze, to uwierz.
Dobrze że “młody” się interesuje, a nie tylko okupuje popularne strony internetowe.
Ściema? Może i tak, chociaż sam wiem że nie jest nic nadzwyczajnego. Rówieśnicy chodzą na tańce, grają na instrumentach, więc dlaczego 13-latek nie może zagłębiać się w elektronikę?
Łukasz posiada w opisie choćby ” …który w wieku 8 lat skubnął mamie żelazko i rozkręcił je na części pierwsze.”, więc nie ma jakiegoś ograniczenia że możesz zacząć naukę w określonym wieku. Odnoszę wrażenie że kipi tutaj trollem, co do twojego postu.
Polecam postawić sobie cel (nie marzenie), a od domowego małego warsztatu do grafenu i innych zdobyczy techniki jeden krok.
Pozdrawiam.
Nie ma rzeczy niemożliwych :P sam mam 14 lat i prawie zrobiłem zasilacz warsztatowy (prawie, bo coś płytka sterująca odmawia posłuszeństwa). Każdy ma jakieś marzenia, które chciałby spełnić (np.bycie programistą), a to jest tego przykład =)
nie jesteś jedyny też się męczyłem z zasilaczem a w dodatku jestem twoim rówieśnikiem i co prawda zadziałał ale zachciało mi się zrobić żeby wyglądało lepiej i mniej zajmował i zrobiłem zwarcie popaliłem stabilizator regulowany potem drugi i mi się odechciało szykać bo co znajde jeden błąd to trafiam na drugi więc projekt poszedł w kąt
Hewlett i Packard też zaczynali od konstrukcji z byle czego :) Sam mam 13 lat i jakoś nie interesują mnie wynalazki typu Facebook, wolę znaleźć schemat, części i stworzyć działający układ.
nie jesteś jedyny też się męczyłem z zasilaczem a w dodatku jestem twoim rówieśnikiem i co prawda zadziałał ale zachciało mi się zrobić żeby wyglądało lepiej i mniej zajmował i zrobiłem zwarcie popaliłem stabilizator regulowany potem drugi i mi się odechciało szykać bo co znajde jeden błąd to trafiam na drugi więc projekt poszedł w kąt
Super projekt, sam mam 14 lat i przymierzam się do podobnego zegara, lecz z osobnymi lampami VFD IW-12 :D Pokryj ścieżki na płytkach jakimś lakierem, bo zaśniedzieją i przykręć/przyklej laminat do obudowy, bo będą się przewody urywać w środku jak będzie wszystko latać .. Nie mówiąc już o zwarciu. Tak trzymaj ! :D
Lepiej kalafonią, kiedyś też pokryłem płytkę lakierem, zrobił się zimny lut,
przelutowałem go, ale jeśli opary dostaną się do oczu, ślepota 3 sekundowa gwarantowana :)
Gratuluję Ci pomysłu i chęci do wykonania takiego cuda :) Sam jestem pod wrażeniem tego co zrobiłeś, bo to jest po prostu pinkne :D
13 lat?! Szacunek kolego! Szczena mi opadła, a co do efektu końcowego – nie przyczepiłbym się do niczego. Schludna, dobrze wykonana praca. 5!
Cieszy jak coś działa i jest miłe dla oka użytkowników. DS3231 powinien być na zewnątrz, bo tak mierzy temperaturę w obudowie (na marginesie dokładność pomiaru temperatury 0.25stopnia tym układem jest raczej teoretyczna). W wolnej chwili można poprawić “literówki” w opisie np. rerzystorów na rezystorów, 3v na 3V, mhz na MHz, 78o5 na 7805 itp. Generalnie brawo!
Poprawię dziękuję, nie zauważyłem
Dokładnie cię rozumiem mam 14 lat i mój tata też uważa lampy za starocie, rupiecie i zbyt niebezpieczne z powodu napięcia anodowego, ale kolekcjonuje unitrę to mam szpulaki, gramofony i radia lampowe a to dobra okazja do poznania budowy układów lampowych. Też myślę jakiś projekt wstawić na majsterkowo ale nie wiem co.
Witaj w klubie, jak pokazałem ojcu radio lampowe za lampach od Rubina, też chciał mnie wywalić z domu :)
Swoją drogą, jak wygląda sterowanie taką lampą VFD ? Napięcie na żarnik 5V, ok, ale co z siatkami i anodami/katodami ?
Na siatki i anody podaję około 40v i je multipleksuje , jak zwykły wyświetlacz led.
Na schemacie one są tylko podciągnięte do 40V, a z driverów podajesz im masę, żeby się zaświeciły. Dobrze wnioskuję ?
Dokładnie tak.
Masa 5V i 40V jest wspólna ? BTW, napięcie żarzenia powinno być zmienne, bo później segmenty będą nierównomiernie świeciły ..
Ja zasilam stałym i jest dobrze. Masa jest wspólna.
http://obrazki.elektroda.net/69_1226743814.jpg
Bardzo ładny zegar. Trochę podobny do mojego.
No 13 lat i zabawa z Arduino to szanuję. W moim otoczeniu 13 latki kurwią w srajkrafta -_-
Schemat i wykonanie nieco odstraszają, ale jeśli informacja o wieku jest prawdziwa, to ogromny szacunek dla Ciebie :). Super że się rozwijasz w tym kierunku, jest to o wiele pożyteczniejsza forma spędzania wolnego czasu niż jakieś tak gierki czy fejsbuki. Grunt że robisz coś konstruktywnego, większość ludzi w tym wieku zamiast coś tworzyć, umie co najwyżej zepsuć xD.
A że niedbale złożone… cóż, od czegoś trzeba zacząć, i nie ma w tym nic złego o ile takie wykonanie nie wejdzie Ci w nawyk ;D.
Słowem – gratulacje i powodzenia!
Alan, mieszkasz gdzieś na Śląsku i jesteś krótkofalowcem ? Moglibyśmy pogadać na 80m . Niedługo robię licencję, przymierzam się do budowy TRX.
Mieszkam na pomorzu :(
No nie, to takiego zasięgu nie mam :) A masz maila ? Moglibyśmy pogadać o hobby, również mam 13 lat, ale siedzę głównie w elektronice analogowej.
Nadawanie bez uprawnień jest przestępstwem :D
Spokojnie, jeszcze nie nadaję :) Na razie składam odbiornik, oczywiście pokażę na Majsterkowie ;)