logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

4 cyfrowy stoper z 7 segmentowym wyświetlaczem LCD

Tatalek 26 Mar 2026 17:52 1692 21

TL;DR

  • Zbudowano 4-cyfrowy stoper z 7-segmentowym wyświetlaczem LCD do pomiaru czasu zamknięcia lub otwarcia styku, zasilany z ogniwa 18650.
  • Układ oparto na PIC16F19174 ze sterownikiem LCD, używa wewnętrznego HFINTOSC, Timer0 i przerwań IOC dla trybu ręcznego oraz automatycznego.
  • Mikrokontroler pracuje z HFINTOSC 4 MHz, a dokładność stopera wynosi około 1%.
  • Stoper działa w dwóch zakresach: 0,001–9,999 s oraz 0,1–999,9 s, a wyświetlacz sterowany jest statycznie przez rejestry LCDDATA0–LCDDATA4.
  • Pobór prądu spadł poniżej 1 mA, ale projekt wymagał wyłączenia watchdog, poprawienia połączenia resetu i rezygnacji z jednej kropki na LCD.
Wygenerowane przez model językowy.
REKLAMA
📢 Słuchaj (AI):
  • Dlaczego zbudowałem stoper
    Stoper został zbudowany ponieważ nie udało mi się znaleźć i kupić urządzenia które by mierzyło czas zamknięci lub otwarcia styku i było zasilane z baterii.
    Próbowałem również znaleźć gotowy projekt DIY w Internecie, ale i to się nie udało. Z tego powodu przygotowałem ten artykuł.

    Płytka PCB z dużym wyświetlaczem LCD pokazującym 0.000 oraz złączami i przewodami

    Opis działania stopera
    Stoper posiada dwa tryby pracy i dwa zakresy pomiarowe, które zmieniają się automatycznie. Zakres pierwszy 0,001 – 9,999 s i zakres drugi 0,1 – 999,9 s
    W pierwszym trybie aby uruchomić stoper trzeba nacisnąć przycisk, drugie naciśnięcie zatrzymuje stoper , przyciśniecie na dłużej niż 3 sekundy zeruje stoper.
    W drugim trybie trzeba do listwy zaciskowej podłączyć styk otwarty lub zamknięty i, następnie wyzerować stoper.
    Stoper rozpocznie mierzyć czas w przypadku podłączenia styku otwartego gdy styk się zamknie i zatrzyma się gdy styk się otworzy , w przypadku podłączenia styku zamkniętego stoper rozpocznie pomiar gdy styk się otworzy i zakończy gdy styk się zamknie.
    Poniżej opis słowny zamieniony na rysunki. Należy pamiętać że przed rozpoczęciem pomiaru należy wyzerować stoper.

    Dwa wykresy schodkowe stanu styku w czasie z oznaczeniem „stoper liczy”

    Budowa stopera
    Do budowy stopera użyłem taniego mikrokontrolera PIC16F19174 który posiada wbudowany sterownik wyświetlacza LCD. Jako zasilanie wybrałem ogniwo litowo jonowe 18650 o pojemności 2000mA , wybrałem 4 cyfrowy wyświetlacz serii DE 119 o dużych cyfrach. Widok płytki drukowanej, schemat stopera na zdjęciach poniżej.

    Schemat elektryczny stopera z mikrokontrolerem PIC16F19175 i wyświetlaczem LCD 4‑cyfrowym Zielona płytka PCB ze stoperem i wyświetlaczem LCD pokazującym 2.904, z przewodami i złączem Płytka PCB z wyświetlaczem LCD pokazującym 012.5, przyciskiem i zielonym złączem zaciskowym Płytka PCB z uchwytem na ogniwo 18650 i zielonym złączem zaciskowym, podłączone przewody Widok PCB stopera: zielona płytka z przelotkami, ścieżkami i oznaczeniami BT1 oraz „+” Render PCB stopera: mikrokontroler U1, przycisk SW2, złącza J1/J2 i otwory H1–H4 Widok projektu PCB: ścieżki czerwone i niebieskie, układ U1 na środku, złącza na krawędziach

    Schemat w formacie pdf i oraz spakowany projekt wykonany w Kicad w plikach poniżej.
    Kicad Stop..LCD.zip (212.02 kB)Musisz być zalogowany, aby pobrać ten załącznik.
    schemat st..era.pdf (63.35 kB)Musisz być zalogowany, aby pobrać ten załącznik.

    W projekcie wykorzystałem wszystkie nóżki mikrokontrolera posiadające funkcję sterowania wyświetlaczem LCD, dlatego źródłem sygnału zegarowego w mikrokontrolerze jest wewnętrzny generator HFINTOSC którego dokładność wynosi około 1%, i taka też jest dokładność stopera około 1% wartości zmierzonej. Można poprawić dokładność stopera kalibrując sygnał zegarowy rejestrem OSCTUNE. Dla moich zastosowań taka dokładność jest wystarczająca. Pozostałe 2 wolne nóżki wykorzystałem do podłączenia przycisku oraz styku zewnętrznego.

    Program do stopera został napisany w języku C w środowisku MPLABX. Poniżej kod programu.

    #include <xc.h>
    #include <stdint.h>
    
    // Konfiguracja (uproszczona)
    #pragma config FEXTOSC = OFF    // Wy??cz zewn?trzny kwarc
    #pragma config RSTOSC = HFINT32 // Po starcie u?yj HFINTOSC 32MHz
    #pragma config CLKOUTEN = OFF   // Wylacz wyjscie zegara na pinie 
    #pragma config LCDPEN = OFF// WYLACZ POMPE
    #pragma config CSWEN = ON       // Pozwól na zmian? zegara w kodzie
    #pragma config FCMEN = ON       // Monitorowanie zegara
    #pragma config WDTE = OFF       // Monitorowanie zegara
    #define _XTAL_FREQ 4000000 // Poinformuj kompilator o zmianie
    
    void OSC_Init_4MHz() {
        OSCCON1 = 0x60; // HFINTOSC, NDIV = 1
        OSCFRQ  = 0x02; // HFFRQ = 4 MHz
    }
    
    void Int_IOC_config(){
         // 2. Konfiguracja IOC (Interrupt-on-Change)
        IOCCNbits.IOCCN1 = 1;   // W??cz przerwanie na zbocze opadaj?ce (Negative edge) dla RC1
        IOCCPbits.IOCCP1 = 1; // Opcjonalnie: zbocze narastaj?ce (Positive edge)
    
        // 3. Konfiguracja przerwa? globalnych
        IOCCFbits.IOCCF1 = 0;     // Wyczyszczenie flagi przed startem
        PIE0bits.IOCIE = 1;     // W??czenie przerwa? IOC
    }
    
    void Timer0_Init_4MHz() {
        T0CON0 = 0x90; // 16-bit mode
        T0CON1 = 0x42; // Fosc/4, Prescaler 1:4
        // Dla 1ms: (4MHz/4)/4 = 250 000 ticks/s. 1ms = 250 ticks.
        // 65536 - 250 = 65286 (0xFF06)
        TMR0H = 0xFF;
        TMR0L = 0x06;
        Int_IOC_config();
        PIE0bits.TMR0IE = 1;
        INTCONbits.GIE = 1;
    }
    
    
    
    // Zmienne stopera (jednostka: 1 ms dla lepszej p?ynno?ci)
    volatile uint32_t ms_counter = 0; 
    volatile __bit is_running = 0; // Uzywamy __bit zamiast bit
    volatile __bit auto_mode_active = 0; // Flaga trybu automatycznego
    volatile __bit initial_rc1_state = 0; 
    
    const uint8_t segment_map[] = {
        0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F // 0-9
    };
    
    void LCD_Init() {
        
        // 3. LCDPS: Preskaler (odswiezanie)
        LCDPS = 0x03; 
        
        // 4. LCDREF: VLCD3 = VDD (najprostszy tryb zasilania LCD)
        LCDREF = 0x07; //max kontrast
        LCDRL = 0xF0; // lader max midle min 0xF0 ,0xA0, 0x50
        LCDVCON1 = 0x07; // BIAS 5.01V; EN5V enabled; LPEN enabled;
        LCDVCON2 = 0x02; // CPWDT disabled; LCDVSRC Charge Pump only;
        LCDCON = 0x01; // CS LFINTOSC; SLPEN disabled; static;
        LCDCONbits.LCDEN = 1; // Enable Module;
    
        // 5. LCDSE (Segment Enable) - wlaczamy piny zgodnie ze schematem
        LCDSE0 = 0xFF; // SEG0-SEG7 (bez SEG5 na RA5)
        LCDSE1 = 0xFF; // SEG8-SEG15
        LCDSE2 = 0xFF; // SEG18-SEG23 (SEG16 i 17 to piny CFLY - nie uzywamy)
        LCDSE3 = 0xFF; // SEG24-SEG31
        LCDSE4 = 0xFF; // SEG32-SEG34 (RE0-RE2)
        
        
        LCDDATA0 =0x00;
        LCDDATA1 =0x00;
        LCDDATA2 =0x00;
        LCDDATA3 =0x00;
        LCDDATA4 =0x00;
    }
    
    
    // Funkcja pomocnicza do bitów
    #define GET_BIT(val, bit) ((segment_map[val] >> bit) & 0x01)
    
    void LCD_Display(uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t dp1, uint8_t dp3) {
        
        uint8_t cyfra1,cyfra2,cyfra3,cyfra4,cyfra5;
        // Cyfra 1 (SEG0-4, 6-7)
        cyfra1 = (uint8_t)((GET_BIT(d1,0) << 0) | (GET_BIT(d1,1) << 1) | (GET_BIT(d1,2) << 2) | 
                             (GET_BIT(d1,3) << 3) | (GET_BIT(d1,4) << 4) | (GET_BIT(d1,5) << 6) | 
                             (GET_BIT(d1,6) << 7));
        // Cyfra 2 (SEG8-11, 13-15)
        cyfra2  = (uint8_t)((GET_BIT(d2,0) << 0) | (GET_BIT(d2,1) << 1) | (GET_BIT(d2,2) << 2) | 
                             (GET_BIT(d2,3) << 3) | (GET_BIT(d2,4) << 5) | (GET_BIT(d2,5) << 6) | 
                             (GET_BIT(d2,6) << 7));
        // Cyfra 3 (SEG18-20, 22-25)
       cyfra3  = (uint8_t)((GET_BIT(d3,0) << 2) | (GET_BIT(d3,1) << 3) | (GET_BIT(d3,2) << 4) | 
                             (GET_BIT(d3,3) << 6) | (GET_BIT(d3,4) << 7));
        cyfra4 = (uint8_t)((GET_BIT(d3,5) << 0) | (GET_BIT(d3,6) << 1));
        // Cyfra 4 (SEG26-32)
        cyfra4 |= (uint8_t)((GET_BIT(d4,0) << 2) | (GET_BIT(d4,1) << 3) | (GET_BIT(d4,2) << 4) | 
                              (GET_BIT(d4,3) << 5) | (GET_BIT(d4,4) << 6) | (GET_BIT(d4,5) << 7));
        cyfra5 = (uint8_t)(GET_BIT(d4,6) << 0);
    
        // --- OBS?UGA KROPEK ---
        // DP1 to SEG33 (LCDDATA12 bit 1), DP3 to SEG34 (LCDDATA12 bit 2)
        if (dp1) cyfra5 |= (1 << 1); else cyfra5 &= ~(1 << 1);
        if (dp3) cyfra5 |= (1 << 2); else cyfra5 &= ~(1 << 2);
        
        LCDDATA0 = cyfra1;
        LCDDATA1 = cyfra2;
        LCDDATA2 = cyfra3;
        LCDDATA3 = cyfra4;
        LCDDATA4 = cyfra5;
        
        
    }
    
    
    
    
    //WATCHGOG MUSI BYC WYLACZONY
    void main(void) {
        
    
       OSC_Init_4MHz(); 
        // Kalibracja: 
        // Jesli stoper spóznia sie -> zwieksz warto?? (np. 0x01, 0x02)
        // Jesli stoper spieszy sie -> zmniejsz warto?? (np. 0x3F, 0x3E)
        //  OSCTUNE = 0x00;
        
        // Porty i Przycisk RC0
        TRISCbits.TRISC0 = 1;
        TRISCbits.TRISC1 = 1; // Wejscie Urzadzenia (RC1)
      //  ANSELC = 0x00;        // ROZWIAZANIE BLEDU: Wylaczenie analogów na ca?ym PORCIE C
      //  WPUCbits.WPUC0 = 1;   // Pull-up na przycisku
        __delay_ms(1000);
        LCD_Init(); // inicjowanie wswietlacza
        Timer0_Init_4MHz();
      // ms_counter = 1234;
        volatile uint16_t val;
        uint8_t d1, d2, d3, d4,d1_,d2_,d3_,d4_;
        uint16_t press_timer;
        
        
          // Zapamietanie stanu pinu RC1 zaraz po uruchomieniu
        initial_rc1_state = PORTCbits.RC1; 
        auto_mode_active = 1;
        while (1) {
        
             // Obsluga przycisku
            if (PORTCbits.RC0 == 0) {
                __delay_ms(20); // Antydrgania
                press_timer = 0;
               while (PORTCbits.RC0 == 0) {
                    __delay_ms(10);
                    press_timer++;
                    if (press_timer >= 300) { // 3 sekundy
                        is_running = 0;
                        ms_counter = 0;
                      // while(PORTCbits.RC0 == 0); // Czekaj na puszczenie
                        val = (uint16_t)ms_counter;
                         d1 = (val / 1000) % 10;
                         d2 = (val / 100) % 10;
                         d3 = (val / 10) % 10;
                         d4 = val % 10;
                         LCD_Display(d1, d2, d3, d4, 1, 0);
                         auto_mode_active = 1;
                    }
                }
               if (press_timer > 2 && press_timer < 300) {
                    is_running = !is_running; // Start/Stop
                   // if(is_running)auto_mode_active = 0;//wylaczenie auto mode
                   // else auto_mode_active = 1;// wlaczenie auto mode
                }
            }
            
        
            
            
            if (ms_counter < 10000) { 
               // ZAKRES 1: 0,000 - 9,999s (Kropka DP1)
                val = (uint16_t)ms_counter;
                d1 = (val / 1000) % 10;
                d2 = (val / 100) % 10;
                d3 = (val / 10) % 10;
                d4 = val % 10;
                LCD_Display(d1, d2, d3, d4, 1, 0);
            } else {
                // ZAKRES 3: 10,0 - 999,9s (Kropka DP3)
                // Wy?wietlamy sekundy i jedn? dziesi?t?
                uint32_t ds = ms_counter / 100; // dziesi?te cz??ci sekundy
                if (ds > 9999) ds = 9999; // Limit wyswietlacza
                
                d1_ = (ds / 1000) % 10;
                d2_ = (ds / 100) % 10;
                d3_ = (ds / 10) % 10;
                d4_ = ds % 10;
                LCD_Display(d1_, d2_, d3_, d4_, 0, 1);
            }
        }
    }
    
    
    void __interrupt() ISR(void) {
       if (PIR0bits.TMR0IF) {
            PIR0bits.TMR0IF = 0;
            TMR0H = 0xFF;
            TMR0L = 0x06;
            if (is_running) ms_counter++;
            if (PIE0bits.IOCIE && IOCCFbits.IOCCF1 && auto_mode_active){
                is_running = !is_running; // Start/Stop
                //ms_counter = 0;
                IOCCFbits.IOCCF1 = 0;
            } 
        }
       
       
    }
    


    Stoper będzie przeze mnie używany do pomiaru czasu zadziałania zabezpieczeń zwarciowych i przeciążeniowych wyłączników. Poniżej przykład wykorzystania stopera


    Schemat z miernikiem i wyłącznikiem oraz stoperem z napisem „STOPER 8888”

    Poniżej krótki filmik ilustrujący działanie stopera





    Działanie i Uruchamianie
    Wyświetlacz który wybrałem ma tylko jedno podłoże i jest sterowany w trybie statycznym.
    Żeby element wyświetlacza był widoczny (czarny) należy przyłożyć przemienne napięcie pomiędzy podłoże (BP) a elektrodę segmentu. Tą funkcję realizuje sterownik w mikrokontrolerze. Wystarczy tylko ustawić odpowiednie bity w rejestrach LCDDATA0 – LCDDATA4 (jeden bit jeden segment). W moim przypadku częstotliwość napięcia sterującego wyświetlaczem została ustawiona na około 60 Hz i została uzyskana z drugiego wewnętrznego generatora LFINTOSC o częstotliwości 31kHz. Dla mojego modelu wyświetlacza może się ona zawierać między 30 Hz a 100 Hz, a wyświetlacz może pracować w zakresie 3V do 5V. Dzięki temu przy zasilaniu z ogniwa nie ma potrzeby stosowania stabilizatora napięcia. Przykładowe przebiegi napięcia na sterowanych segmentach wyświetlacza na zdjęciach poniżej. Należy pamiętać że wyświetlacza LCD nie można sterować napięciem stałym. Stałe napięcie powoduje zjawisko elektrolizy które prowadzi do uszkodzenia wyświetlacza.


    Schemat LCD z COM0 i segmentami oraz wykresy przebiegów prostokątnych V1/V0

    Podczas uruchamiana spotkało mnie parę niespodzianek. Ponieważ niezbyt często programuję w C skorzystałem z podpowiedzi ogólnodostępnej AI, która deklarowała że mogę podłączyć do PIC16F19175 32 segmenty w trybie statycznym, w rzeczywistości można ich podłączyć 30. Musiałem zrezygnować z jednej kropki stąd dwa zakresy. AI również nie trafiała z nazwami rejestrów dla mojego mikrokontrolera, ale po niewielkich poprawkach udało się doprowadzić kod do porządku.
    Następnie okazało się że nie mogę zaprogramować mojego mikrokontrolera. Próbowałem 3 programatorów PicKit BASIC, SNAP, PICKIT3- otrzymywałem komunikat że być może mój mikrokontroler ma ustawiony bit programowania wysokim napięciem. Rzeczywistość okazała się bardziej banalna na płytce PCB zabrakło kawałka połączenia do resetu mikrokontrolera.
    Podczas testów kiedy konfigurowałem sterownik LCD w tryb „LCD CHARGE PUMP” zauważyłem że między podłożem a segmentami SEG2D-PIN11, SEG2C-PIN10 i SEG3D-PIN44 nie mam przebiegu napięcia przemiennego bez tych trzech pionów nie mógłbym wyświetlać wszystkich cyfr. Z tego powodu skonfigurowałem sterownik LCD w trybie NTERNAL RESISTANCE LADDER POWER MODES.
    Kiedy już miałem na wszystkich segmentach przemienne przebiegi i stoper zaczął liczyć , resetował się przy około 2 sekundach i liczył od nowa . Okazało się że w mikrokontrolerze domyślnie jest włączony watchdog , który musiałem wyłączyć.
    Stoper pobiera mniej niż 1 mA prądu (800µA). Poniżej załączam notę AN1354 w której dociekliwe osoby mogą znaleźć informacje na temat konfiguracji sterownika.
    Ja ucieszyłem się że wreszcie udało mi się skonfigurować sterownik LCD i nie drążyłem dalej tematu.
    Nie spodziewałem się że przy tak prostym projekcie mogą się przytrafić takie przypadki
    LCD konfig..354.pdf (595.88 kB)Musisz być zalogowany, aby pobrać ten załącznik.

    Fajne? Ranking DIY
    O autorze
    Tatalek
    Poziom 12  
    Offline 
  • REKLAMA
  • #2 21871377
    krzbor
    Poziom 29  
    Posty: 1736
    Pomógł: 40
    Ocena: 1046
    Tylko po co budować stoper o 4 cyfrach skoro dokładność to 1% ? Niepotrzebnie zrezygnowałeś z rezonatora kwarcowego. Lepiej podłączyć 3 cyfry i rezonator niż 4 cyfry bez niego.
  • REKLAMA
  • #3 21871446
    TechEkspert
    Redaktor
    Posty: 7111
    Pomógł: 16
    Ocena: 5489
    Sterowanie bezpośrednie wyświetlaczem LCD nie jest banalne, gdy w mikrokontrolerze jest wsparcie sprzętowe to znacząco upraszcza temat. Jedyne nad czym się zastanawiam to dokładność pomiaru czasu i pobór prądu, urządzenia z LCD kojarzą się zwykle z bardzo małym zapotrzebowaniem na moc. W tym projekcie pobór mocy nie ma to aż tak dużego znaczenia ze względu na akumulator i przeznaczenie urządzenia. Podejrzewam, że nawet "zegarkowy" rezonator kwarcowy korzystnie wpływałby na dokładność pomiaru czasu.
  • #4 21871581
    CosteC
    Poziom 39  
    Posty: 5258
    Pomógł: 398
    Ocena: 1624
    Fajnie wykonany projekt ale nie rozumiem jak chcesz go użyć
    Tatalek napisał:
    do pomiaru czasu zadziałania zabezpieczeń zwarciowych i przeciążeniowych wyłączników.

    Ten układ mierzy czas załączenia/wyłączenia jednego stylu, skąd informacja "jak długo płynie prąd"? Jest jakiś dodatkowy układ?
    Rozdzielczość 1 ms I dokładność 1% wydają się całkowicie wystarczające do pomiarów zabezpieczeń instalacyjnych.
  • REKLAMA
  • #5 21871599
    Tatalek
    Poziom 12  
    Posty: 41
    Ocena: 342
    CosteC napisał:
    nie rozumiem jak chcesz go użyć

    Przy zamkniętym badanym wyłączniku (jak na schemacie w artykule) podnoszę wartość przepływającego prądu aż do jego otwarcia (i mam ustawioną wartość prądu) . Po otwarciu wyłącznika podłączam stoper do jego styku pomocniczego. Zamykam wyłącznik , teraz przez wyłącznik płynie taki sam prąd który go otworzył , następnie wyłącznik się otwiera ponieważ zadziałało jego zabezpieczanie a stoper zmierzył czas w którym wyłącznik był zamknięty podczas przepływu prądu , czyli czas zadziałania zabezpieczenia
  • #6 21871649
    CosteC
    Poziom 39  
    Posty: 5258
    Pomógł: 398
    Ocena: 1624
    Tatalek napisał:
    Przy zamkniętym badanym wyłączniku (jak na schemacie w artykule) podnoszę wartość przepływającego prądu aż do jego otwarcia (i mam ustawioną wartość prądu) . Po otwarciu wyłącznika podłączam stoper do jego styku pomocniczego. Zamykam wyłącznik , teraz przez wyłącznik płynie taki sam prąd który go otworzył , następnie wyłącznik się otwiera ponieważ zadziałało jego zabezpieczanie a stoper zmierzył czas w którym wyłącznik był zamknięty podczas przepływu prądu , czyli czas zadziałania zabezpieczenia

    W ten sposób mierzysz czas załączenia+czas wyłączenia styku pomocniczego. W wyłącznikach styk pomocniczy (powinien przynajmniej) załącza się PO styku głównym i wyłącza PO styku głównym, nie wiem ja po polsku jest "mirror contact". To zmienia relacje czasowe ale tylko przy szybkich reakcjach.
    Póki jesteś na termicznej/przeciążeniowej części charakterystyki to spoko, tam są czasy w sekundach. Ale czasu wyłączenia "zwarciowego" tak nie zmierzysz bez dużego błędu.

    Podepnij oscyloskop i zobacz jak to wygląda, ciekawy widok.
  • #7 21871842
    krzbor
    Poziom 29  
    Posty: 1736
    Pomógł: 40
    Ocena: 1046
    Tatalek napisał:
    Zamykam wyłącznik , teraz przez wyłącznik płynie taki sam prąd który go otworzył , następnie wyłącznik się otwiera ponieważ zadziałało jego zabezpieczanie a stoper zmierzył czas w którym wyłącznik był zamknięty podczas przepływu prądu , czyli czas zadziałania zabezpieczenia
    Wyłączniki przeciążeniowe np. w popularnych "S" są budowane w oparciu o bimetal. Czynnikiem wyłączającym jest w zasadzie temperatura, a nie prąd. Przy pomiarze jeśli odczekasz dłuższy czas, to wyniki będą inne - układ po prostu ostygnie i zadziała później.
  • #8 21872585
    acctr
    Poziom 39  
    Posty: 4537
    Pomógł: 389
    Ocena: 1999
    krzbor napisał:
    Wyłączniki przeciążeniowe np. w popularnych "S" są budowane w oparciu o bimetal.

    To jest człon przeciążeniowy, którego czas zadziałania jest liczony w godzinach i jest taki sam dla B i C. Technicznie rzecz biorąc jest to bimetal, który się wydłuża i popycha mechanizm zwalniający, tak więc do tego opisany tutaj stoper się nie nada.
    Inna sprawa jest jeśli chodzi o człon zwarciowy oparty na cewce, którego czas zadziałania to milisekundy. Różnica między B i C jest znaczna i tutaj stoper ma sens.
    Pomogłem? Kup mi kawę.
  • #9 21872588
    Mateusz_konstruktor
    Poziom 37  
    Posty: 4170
    Pomógł: 266
    Ocena: 1101
    acctr napisał:
    To jest człon przeciążeniowy, którego czas zadziałania jest liczony w godzinach i jest taki sam dla B i C.

    Liczony w godzinach?
    Może Kolega chciał napisać "liczony w minutach"?
  • #10 21872631
    acctr
    Poziom 39  
    Posty: 4537
    Pomógł: 389
    Ocena: 1999
    Mateusz_konstruktor napisał:
    Liczony w godzinach?
    Może Kolega chciał napisać "liczony w minutach"?

    Tak jest, w godzinach. Przy niewielkim przekroczeniu znamionowego prądu przeciążenia rzędu 10-20% zadziałanie liczone jest w godzinach, dlatego stoper nie ma tutaj sensu.
    Pomogłem? Kup mi kawę.
  • #11 21872691
    Mateusz_konstruktor
    Poziom 37  
    Posty: 4170
    Pomógł: 266
    Ocena: 1101
    acctr napisał:
    Przy niewielkim przekroczeniu znamionowego prądu przeciążenia

    Ja zrozumialem, iż chodzi o testy z zakresu gwarantowanego zadziałania.
    Jest istotna luka pomiędzy tymże gwarantowanym zakresem zadziałania i minimalnym mogącym ewentualnie spowodować zadziałanie zabezpieczenia nadprądowego typu S.

    acctr napisał:
    10-20%

    Z tym nie mogę się zgodzić.
    Interesują nas wartości 1,13 oraz 1,45 widniejące na wykresach zawartych w dokumentacjach tychże instalacyjnych wyłączników nadprądowych.
  • #12 21872716
    acctr
    Poziom 39  
    Posty: 4537
    Pomógł: 389
    Ocena: 1999
    Mateusz_konstruktor napisał:
    Ja zrozumialem, iż chodzi o testy z zakresu gwarantowanego zadziałania.

    Ja natomiast nie do końca rozumiem celu tego stopera, choć pod względem elektronicznym to bardzo interesująca konstrukcja, choćby z uwagi na zastosowanie LCD.
    Zabezpieczenia nadprądowe powinny działać według norm DIN VDE 0641 (B i C) i sprawne urządzenie nie powinno wymagać przeprowadzania takich testów, bo to można odczytać ze znanych każdemu charakterystyk czasowo-prądowych.
    A żeby sprawdzić czy dany aparat spełnia normę, trzeba mieć przynajmniej jeden stały parametr - w tym przypadku prąd. W opisywanej metodzie tego nie ma więc nie da się stwierdzić, czy to działa dobrze czy źle. Obecnie rezultat testu wygląda tak, że dla jakiegoś prądu, czas zadziałania wynosi tyle ile pokazuje stoper.
    Tatalek napisał:
    podnoszę wartość przepływającego prądu aż do jego otwarcia (i mam ustawioną wartość prądu)
    Pomogłem? Kup mi kawę.
  • #13 21872741
    Mastertech
    Poziom 30  
    Posty: 1775
    Pomógł: 104
    Ocena: 373
    To bardziej minutnik do jajek niż stoper.
  • REKLAMA
  • #14 21872952
    Tatalek
    Poziom 12  
    Posty: 41
    Ocena: 342
    Mastertech napisał:
    To bardziej minutnik do jajek niż stoper.

    Tak jest druga funkcja tego stopera , ale tak oczywista że o niej nie wspominałem :)
  • #15 21873397
    krzbor
    Poziom 29  
    Posty: 1736
    Pomógł: 40
    Ocena: 1046
    Nie wiem jaki jest cel pomiarów czasu, ale dla testu przeciążeniowego typowych "S" najlepiej przyjąć 1,45*prąd znamionowy i zaczynając od zimnego stanu sprawdzić szybkość wyłączenia. Przy 1,45*I nadprądowy musi zadziałać.
  • #16 21873835
    sq3evp
    Poziom 39  
    Posty: 6413
    Pomógł: 212
    Ocena: 844
    Fajny pomysł - dobrze by było atumatyczna zmiana zakresów po przekroczeniu czasu, który nie mieści się na wyświetlaczu.
  • #17 21873911
    Mastertech
    Poziom 30  
    Posty: 1775
    Pomógł: 104
    Ocena: 373
    Wszystko chrzani zastosowany wyświetlacz, pełne 4 cyfry to 20 zł kosztuje a za taką kasę to można już 128x64 kupić a parę zł więcej kosztuje 256x128 a tam sobie można ładną grafikę zaimplementować.
    Główny problem to brak możliwości wyświetlenia jednoznacznego jednostek czasu czyli Sec-Min-Hour, tu bez alfanumerycznego ani rusz, już nawet 4x16 z biblioteką do fontów na cały ekran byłby i tańszy i lepszy.
    ja czekam na MK2 żeby pokazywał na ekranie czy jajko gotuję na miękko czy na twardo.
  • #18 21875155
    LEDówki
    Poziom 43  
    Posty: 9396
    Pomógł: 1310
    Ocena: 2544
    >>21872952 Sam wyznacza czas gotowania w zależności od oczekiwanego efektu, czyli jaja ugotowanego na twardo lub miękko, czy jednak trzeba włożyć wysiłek intelektualny i osobiście ustawić czas gotowania? Propozycję graficznej reprezentacji procesu gotowania już kolega Mastertech zaproponował.

    Dodano po 4 [minuty]:

    >>21872952 Sam wyznacza czas gotowania w zależności od oczekiwanego efektu, czyli jaja ugotowanego na twardo lub miękko, czy jednak trzeba włożyć wysiłek intelektualny i osobiście ustawić czas gotowania? Propozycję graficznej reprezentacji procesu gotowania już kolega Mastertech zaproponował.
    Pogratuluję koledze opracowania urządzenia o podwójnym zastosowaniu. Statystycznie częściej gotuje się jaja niż mierzy czas zadziałania urządzenia. Żona syta i konstruktor cały. Urządzenie po opracowaniu i przetestowaniu nie wyląduje w pudle na strychu, by skończyć w śmietniku przy porządkach robionych przez spadkobierców.

    Wbiło się dwa razy, niech zostanie ku pamięci.

    Kolega mnie się wyspowiada jeszcze z jednej rzeczy - chciał kolega zrobić urządzenie zasilane z baterii, zasilił ogniwem 18650, na koniec okazuje się, że to akumulator wg. sugestii innego z kolegów. Kolega to wyjaśni, to osoby ze spektrum autyzmu nie będą miały problemów ze zrozumieniem tekstu.
  • #19 21875386
    Tatalek
    Poziom 12  
    Posty: 41
    Ocena: 342
    LEDówki napisał:
    Kolega mnie się wyspowiada jeszcze z jednej rzeczy

    Trochę czuję się się wywołany do odpowiedzi . W takim razie postaram się odpowiedzieć jak na spowiedzi.
    Mój kolega Andrzej mówi że jest zadowolony ze stopera do jajek
    i że cztery cyfry mu nie przeszkadzają , i że dalej do pomiaru czasu zadziałania zabezpieczania
    będzie go używał . Przesyła zdjęcie wyłącznika który ostatnio testował i pozdrawia wszystkich Elektrodowiczów.

    Wyłącznik mocy Moeller w rozdzielnicy, z czerwonymi pokrętłami nastaw i podłączonymi przewodami L1–L3

    Natomiast Ja czuję się jak żona Kaziuka z Konopielki kiedy dowiaduje się całe życie myślała że wyszła
    za Bartosiewicza który później okazał się Bartoszewiczem , tak i ja teraz widzę różnicę że zasiliłem stoper
    z akumulatora , a chciałem z baterii , no cóż nie myli się tylko ten kto nić nie robi :)
  • #20 21875409
    LEDówki
    Poziom 43  
    Posty: 9396
    Pomógł: 1310
    Ocena: 2544
    Widać doszło do zmian konstrukcyjnych nieujętych w schemacie. Zaczynam łapać koncepcję tego zaawansowanego stopera do jajek i zabezpieczeń. Jaja gotują się podgrzewane na kuchni elektrycznej. Stoper wyzwala zabezpieczenie i jaja przestają się gotować. :)
  • #21 21877476
    Tatalek
    Poziom 12  
    Posty: 41
    Ocena: 342
    >>21871283
    Chciałbym jeszcze dołączyć pliki z obudową do wydrukowania na drukarce 3D
    Obudowa_s..er.zip (219.65 kB)Musisz być zalogowany, aby pobrać ten załącznik.

    Szara obudowa z wyświetlaczem LCD „1.972”, napisy RESET, INPUT i STOPER oraz przewody z złączką
  • #22 21877481
    Tatalek
    Poziom 12  
    Posty: 41
    Ocena: 342
    >>21877476
    Poniżej uaktualnienie oprogramowania . Zmiana dotyczy obsługi przerwania.
    W nowej wersji jest użyty timer2 z funkcją automatycznego przeładowania co poprawia dokładność.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
📢 Słuchaj (AI):

Podsumowanie tematu

✨ Stoper cyfrowy z 4-cyfrowym wyświetlaczem LCD został zaprojektowany do pomiaru czasu zamknięcia lub otwarcia styku, zasilany z akumulatora, gdyż nie znaleziono gotowego urządzenia o takich parametrach zasilania. Urządzenie posiada dwa tryby pracy i dwa automatycznie zmieniające się zakresy pomiarowe: 0,001–9,999 s oraz 0,1–999,9 s. W pierwszym trybie stoper działa manualnie za pomocą przycisku, w drugim mierzy czas na podstawie podłączonego styku otwartego lub zamkniętego. Projekt wykorzystuje mikrokontroler z obsługą wyświetlacza LCD, jednak brak rezonatora kwarcowego wpływa na dokładność pomiaru (około 1%). Dyskusja poruszała kwestie zastosowania stopera do testów zabezpieczeń nadprądowych, zwłaszcza pomiaru czasu zadziałania wyłączników przeciążeniowych i zwarciowych. Zwrócono uwagę, że pomiar czasu działania bimetalicznych wyłączników przeciążeniowych jest mało praktyczny ze względu na długie czasy zadziałania liczonych w godzinach. Stoper lepiej sprawdza się przy pomiarach szybkich czasów zadziałania wyłączników zwarciowych. Wskazano również na zalety i wady zastosowanego wyświetlacza LCD, sugerując alternatywy z wyświetlaczami graficznymi lub alfanumerycznymi dla lepszej prezentacji jednostek czasu. Autor udostępnił aktualizację oprogramowania poprawiającą dokładność pomiaru poprzez wykorzystanie timera z automatycznym przeładowaniem oraz pliki do druku 3D obudowy. Projekt ma także drugie, humorystyczne zastosowanie jako minutnik do gotowania jajek.
Wygenerowane przez model językowy.
REKLAMA