Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:vstoica:nixieclock [2023/05/03 10:34]
cosmin_mihai.dan [Software Design]
pm:prj2023:vstoica:nixieclock [2023/05/04 18:02] (current)
cosmin_mihai.dan [Ceas cu tuburi Nixie]
Line 1: Line 1:
 ====== Ceas cu tuburi Nixie ====== ====== Ceas cu tuburi Nixie ======
 +
 +Nume: Dan Cosmin-Mihai
 +
 +Grupa: 332CA
 ===== Introducere ===== ===== Introducere =====
  
Line 18: Line 22:
  
 Piese necesare: Piese necesare:
-4 x tub Nixie IN12b +  *  
-4 x driver pentru tuburi Nixie K155ID1 +  * 4 x tub Nixie IN12b 
-2 x shift register 74HC595 +  ​* ​4 x driver pentru tuburi Nixie K155ID1 
-4 x headere cu 11 pini +  ​* ​2 x shift register 74HC595 
-4 x cablu panglica cu 11 pini, mufat +  ​* ​4 x headere cu 11 pini 
-6 x soclu DIP-16 +  ​* ​4 x cablu panglica cu 11 pini, mufat 
-2 x lampi neon +  ​* ​6 x soclu DIP-16 
-1 x LM7805 +  ​* ​2 x lampi neon 
-2 x condensator 100uF, 20V +  ​* ​1 x LM7805 
-1 x mufa DC mama +  ​* ​2 x condensator 100uF, 20V 
-1 x mufa DC tata +  ​* ​1 x mufa DC mama 
-3 x butoan cu led +  ​* ​1 x mufa DC tata 
-7 x header cu 2 pini +  ​* ​3 x butoan cu led 
-4 x cablu cu 2 pini, mufat +  ​* ​7 x header cu 2 pini 
-1 x modul RTC DS3231 +  ​* ​4 x cablu cu 2 pini, mufat 
-4 x rezistor 86k +  ​* ​1 x modul RTC DS3231 
-2 x rezistor 220 +  ​* ​4 x rezistor 86k 
-1 x rezistor 100 +  ​* ​2 x rezistor 220 
-3 x rezistor 10k +  ​* ​1 x rezistor 100 
-2 x header de pini mama +  ​* ​3 x rezistor 10k 
-1 x placa prototipare 15x9 cm +  ​* ​2 x header de pini mama 
-1 x toggle switch+  ​* ​1 x placa prototipare 15x9 cm 
 +  ​* ​1 x toggle switch 
  
 {{cosmin_dan_nixie_clock_electrical.png?​666x400}} {{cosmin_dan_nixie_clock_electrical.png?​666x400}}
  
 Unul dintre obiectivele principale ale acestui design este longevitatea tuburilor Nixie, motiv pentru care acestea sunt alimentate la un curent mai mic (1.5 mA) decat cel recomandat in datasheet (2.5 mA). Unul dintre obiectivele principale ale acestui design este longevitatea tuburilor Nixie, motiv pentru care acestea sunt alimentate la un curent mai mic (1.5 mA) decat cel recomandat in datasheet (2.5 mA).
 +
 Carcasa a fost realizata din placi de acrilic si este formata din doua cutii: una pentru circuitul principal, ce are pe lateral butoane, mufa de alimentare si una pentru tuburi, ce este prinsa de prima cutie cu niste balamale, astfel incat sa poata fi ajustat unghiul la care sunt indreptate tuburile, similar unui ecran de laptop. Carcasa a fost realizata din placi de acrilic si este formata din doua cutii: una pentru circuitul principal, ce are pe lateral butoane, mufa de alimentare si una pentru tuburi, ce este prinsa de prima cutie cu niste balamale, astfel incat sa poata fi ajustat unghiul la care sunt indreptate tuburile, similar unui ecran de laptop.
  
Line 61: Line 68:
 Modulul RTC comunica prin intermediul I2C, folosind functii din biblioteca Wire si DS3231. Codul care initializeaza modulul este: Modulul RTC comunica prin intermediul I2C, folosind functii din biblioteca Wire si DS3231. Codul care initializeaza modulul este:
  
-<​code>​+<​code ​C>
  Wire.begin();​  Wire.begin();​
   DS3231_init(DS3231_CONTROL_INTCN);​   DS3231_init(DS3231_CONTROL_INTCN);​
Line 74: Line 81:
 Trimiterea datelor la shift registere este realizata de urmatoarea functie: Trimiterea datelor la shift registere este realizata de urmatoarea functie:
  
-<​code>​+<​code ​C>
 void display_time() { void display_time() {
   uint16_t time = 0;   uint16_t time = 0;
Line 99: Line 106:
  
  
-Butoane+==Butoane==
  
 Inputul de la cele trei butoane este trecut printr-un debouncer, dupa care este executata functia corespunzatoare fiecaruia ( verde – ora++, albastru – minute++, rosu – mod display/ standby). De exemplu, pentru butonul verde, codul este urmatorul: Inputul de la cele trei butoane este trecut printr-un debouncer, dupa care este executata functia corespunzatoare fiecaruia ( verde – ora++, albastru – minute++, rosu – mod display/ standby). De exemplu, pentru butonul verde, codul este urmatorul:
  
-<​code>​+<​code ​C>
 current_time = millis(); current_time = millis();
     if (current_time - last_pressed_blue > debounce_threshold) {     if (current_time - last_pressed_blue > debounce_threshold) {
Line 117: Line 124:
 Pentru o mai buna interactiune cu utilizatorul,​ fiecare buton are un led in forma de inel ce se va aprinde cand este apasat si se va stinge cu un o intarziere de 500ms fata de momentul cand butonul este eliberat. Codul pentru led-ul butonului verde: Pentru o mai buna interactiune cu utilizatorul,​ fiecare buton are un led in forma de inel ce se va aprinde cand este apasat si se va stinge cu un o intarziere de 500ms fata de momentul cand butonul este eliberat. Codul pentru led-ul butonului verde:
  
-<​code>​+<​code ​C>
 if (green_led && current_time - last_pressed_green > led_delay && digitalRead(green_button) == LOW) { if (green_led && current_time - last_pressed_green > led_delay && digitalRead(green_button) == LOW) {
       green_led = 0;       green_led = 0;
Line 126: Line 133:
  
  
-Mod Standby+==Modul ​Standby==
  
 O a doua metoda prin care se asigura longevitatea tuburilor Nixie este modul de standby. Dupa o perioada de timp configurabila (implicit, 600s), sursa tuburilor Nixie se va opri automat. Pentru a masura aceasta perioada e timp, timer1 este configurat astfel incat sa genereze o intrerupere la fiecare secunda: O a doua metoda prin care se asigura longevitatea tuburilor Nixie este modul de standby. Dupa o perioada de timp configurabila (implicit, 600s), sursa tuburilor Nixie se va opri automat. Pentru a masura aceasta perioada e timp, timer1 este configurat astfel incat sa genereze o intrerupere la fiecare secunda:
  
-<​code>​+<​code ​C>
   TCCR1A = 0;   TCCR1A = 0;
   TCCR1B = 0;   TCCR1B = 0;
Line 148: Line 155:
 In bucla principala este verificata valoarea contorului on_time la fiecare iteratie, iar atunci cand a trecut perioada setata, sursa se va opri: In bucla principala este verificata valoarea contorului on_time la fiecare iteratie, iar atunci cand a trecut perioada setata, sursa se va opri:
  
-<​code>​+<​code ​C>
 if (on_time > display_on_time && !hv_enable) { if (on_time > display_on_time && !hv_enable) {
     hv_enable = HIGH;     hv_enable = HIGH;
Line 160: Line 167:
  
  
-Modul Sleep+==Modul Sleep==
  
 Avand in vedere ca ora este retinuta de catre modulul RTC, in momentu in care sursa tuburilor este oprita, microcontrollerul nu mai este necesar, motiv pentru care ar fi mult mai eficient sa fie pus in modul sleep cu ajutorul functiilor din bibliotecile avr/sleep si avr/power. Avand in vedere ca ora este retinuta de catre modulul RTC, in momentu in care sursa tuburilor este oprita, microcontrollerul nu mai este necesar, motiv pentru care ar fi mult mai eficient sa fie pus in modul sleep cu ajutorul functiilor din bibliotecile avr/sleep si avr/power.
  
-<​code>​+<​code ​C>
 void goToSleep() { void goToSleep() {
   digitalWrite(red_button_led,​ LOW);   digitalWrite(red_button_led,​ LOW);
Line 179: Line 186:
 Microcontroller-ul executa codul pana la apelul functiei sleep_cpu(),​ unde intra in modul sleep si asteapta o intrerupere pentru a se trezi, dupa care reia executia codului. Pentru a folosi butonul rosu drept sursa pentru intrerupere externa, se activeaza PCINT19 (butonul rosu este legat la pinul PD3): Microcontroller-ul executa codul pana la apelul functiei sleep_cpu(),​ unde intra in modul sleep si asteapta o intrerupere pentru a se trezi, dupa care reia executia codului. Pentru a folosi butonul rosu drept sursa pentru intrerupere externa, se activeaza PCINT19 (butonul rosu este legat la pinul PD3):
  
-<​code>​+<​code ​C>
   PCICR |= B00000100;   PCICR |= B00000100;
   PCMSK2 |= B00001000;   PCMSK2 |= B00001000;
Line 186: Line 193:
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Video: https://​www.youtube.com/​watch?​v=cYXRmdE6KUI 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+ 
-</​note>​+{{cosmin_dan_nixie1.jpg?​767x350}} 
 +{{cosmin_dan_nixie2.jpg?​767x350}} 
 +{{cosmin_dan_nixie3.jpg?​767x350}} 
 +{{cosmin_dan_nixie4.jpg?​767x350}} 
 +{{cosmin_dan_nixie5.jpg?​767x350}} 
 +{{cosmin_dan_nixie6.jpg?​767x350}} 
  
 ===== Concluzii ===== ===== Concluzii =====
 +Ceasul obtinut a indeplinit toate obiectivele proiectului. Asamblarea placii nu a fost simpla, insa constructia carcasei din acrilic (realizata complet manual) a fost cea mai dificila parte a proiectului,​ fiind zona in care am cea mai putina experienta.
 ===== Download ===== ===== Download =====
  
-<note warning>​ +{{cosmin_dan_nixie_clock.zip|Cod sursadiagrame si imagini}}
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etcUn fişier READMEun ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +
- +
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +
-</​note>​ +
- +
-===== Jurnal ===== +
- +
-<note tip> +
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +
-</​note>​ +
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +  - Datasheet tuburi Nixie IN12B: http://​www.tube-tester.com/​sites/​nixie/​dat_arch/​IN-12A_IN-12B_03.pdf 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+  Datasheet drivere tuburi K155ID1: https://​eandc.ru/​pdf/​mikroskhema/​k155id1.pdf 
-</note>+  - Datasheet shift register SN74HC595: https://​www.ti.com/​lit/​ds/​symlink/​sn74hc595.pdf 
 +  - Datasheet ATmega328P: https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
- 
  
pm/prj2023/vstoica/nixieclock.1683099253.txt.gz · Last modified: 2023/05/03 10:34 by cosmin_mihai.dan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0