Paul IZOT (67039) - POV Clock

Proiect va implemnta un Ceas POV.

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Daca am gasit un proiect interesant pe care l-am vazut in anii anteriori, unul ca mi-a atras cu adevarat impresia, acela a fost ceasul rotativ bazat pe persistenta imaginii pe retina ochiului uman.

Astfel, ajuns in anul III, am decis sa implementez si eu unul.

Descriere generală

Proiectul va cuprinde motorul unui cooler ca piesa principala, alimentat cu ajutorul unui convertor de tensiune de la priza.

Pe motor va fi montat un suport pe care vor fi prinse placa PM2017 si bateria(folosita de asemenea pe post de contragreutate).

Deasupra acestora, va fi montata o alta placa pe care sunt aliniate ledurile.

Hardware Design

Componente folosite:

  • 1 x “DIL40(18.84lei)”
  • 1 x “Conector USB B Cvilux(3.42 lei)”
  • 1 x “Quartz 16MHz(0.81 lei)”
  • 4 x “Dioda Zener(0.08 lei)”
  • 20 x”LED 3mm Rosu (0.31 lei)”
  • 1 x “1×40(5.89 lei)”
  • 1 x “2×10(1.15 lei) ”
  • 4 x “Tasta(0.29 lei”
  • 4 x “Rezistenta 0,25W(100R)(0.16 lei)”
  • 4 x “Rezistenta0,25W(470R)(0.17 lei)”
  • 4 x “Rezistenta0,25W(1k5)(0.18 lei)”
  • 4 x “Rezistenta0,25W(10k)(0.14 lei)”
  • 2 x “Condensator ceramic - 100nF(0.34 lei)”
  • 2 x “Condensator ceramic - 15pF KEPF015(0.2lei)”
  • 1 x “Soclu Microcontroller(2.85 lei)”
  • 1 x “Jumper(0.51 lei)”
  • 1 x “Baterie 9V (6.51 lei)”
  • 1 x Motor (de la un cooler)
  • 1 x Suport Plasic
  • 1 x Suport Lemn

Schema electrica:

Etapele de realizare al proiectului:

Software Design

Ca design software, am folosit 2 tipuri de intreruperi:

  • O intrerupere folosind timer-ul, pentru a updata valoare timpului la fiecare secunda
ISR(TIMER1_COMPA_vect)
{
	s++;

	if (s == 60) {
		s = 0;
		m++;
	}

	if (m == 60) {
		m = 0;
		h++;
	}

	if (h == 24) {
		h = 0;
	}
}
  • O intrerupere atunci cand se declanseaza senzorul Hall, si incep o noua rotatie. Aici afisez ora curenta.
void print(int number)
{
	int i;

	for (i = 0; i < 5; i++) {
		PORTA = (1 | digit[number][i] << 1);
		_delay_ms(1);
	}

	_delay_ms(1);
}

ISR(INT2_vect)
{
	if (h < 10) {
		print(0);
		print(h);
	} else {
		print(h / 10);
		print(h % 10);
	}

	print(10);

	if (m < 10) {
		print(0);
		print(m);
	} else {
		print(m / 10);
		print(m % 10);
	}

	print(10);

	if (s < 10) {
		print(0);
		print(s);
	} else {
		print(s / 10);
		print(s % 10);
	}

	PORTA = 0x00;
}

De asemenea, pentru stocarea numerelor (ca model de afisare pe POV), am folosit vectori de tipul:

// cifra "2"
{
  0b0000000,
  0b0110001,
  0b1001001,
  0b1000101,
  0b1000011,
  0b0100001,
  0b0000000
}

Rezultate Obţinute

Durere de cap

Concluzii

Proiectul este foarte zgomotos, si greu de echilibrat.

Dar… rezultatele sunt uimitoare.

Download

Arhiva ce contine codul folosit: paul_izot_332ca.zip

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

  • Documentația în format PDF
pm/prj2017/avoinescu/povclock.txt · Last modified: 2021/04/14 17:07 (external edit)
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