Thông báo

Collapse
No announcement yet.

Propeller Clock with AVR :)

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Propeller Clock with AVR :)

    Propeller Clock là một kiểu hiển thị được Bob Blick thực hiện đã từ rất lâu rồi.
    Đây là 1 kiểu hiển thị rất hay, trông rất "mystery"

    http://www.bobblick.com/techref/proj...propclock.html

    Mấy hôm nay nghỉ việc ở nhà tìm việc mới tui chán quá nên cũng lần mò làm thử. Trông cũng khá, tui post lên đây mong được tham khảo với các bác một số vấn đề để sẽ làm một cái xịn hơn.

    À tui cũng biết bên box 8051 có 1 topic bàn về cái này rồi. Nhưng vì tui làm bằng AVR nên post vào box này, mục đích "lôi kéo", phát triển dân số dùng AVR, mục tiêu cao cả là làm giảm giá chip AVR (j/k) (box này hơi vắng ) - mod thông cảm nhá

    Đây là ảnh minh họa, tiếc là ko có máy ảnh chụp cho rõ ràng, cái này là mượn điện thoại của bạn để chụp :d




    chunhanhoabattu :rose:

  • #2
    Phần cứng hiện thời rất đơn giản:
    + ATmega8515 - vì tui có sẵn con này
    + Led đỏ, xanh dương
    + IR led
    + 1 Transistor C1815, 1 tụ
    + Động cơ DC12V - giá 10k mua ở chợ trời lâu lắm rồi, lâu nay dùng để quạt chả

    Ảnh tiếp nè:



    chunhanhoabattu :rose:

    Comment


    • #3
      Giờ tui cần tham khảo các bác nào quen đi chợ trời
      + Nơi mua động cơ DC và giá cả mỗi loại ra sao, loại nào khỏe để có thể quay vừa nhanh vừa êm lại vừa rẻ

      Ngoài ra mong các bác cho ý kiến về phần Real Time Clock (mạch này chưa có RTC). Nên dùng loại nào, giá cả. Tui chưa biết giá cả mấy con này, chỉ biết con DS12887 là 70k thì phải, mà con này kích thước lại hơi to.

      Ai có hứng thú làm ko ? Tui đang dự định làm 1 cái gắn vào bánh xe máy đây
      chunhanhoabattu :rose:

      Comment


      • #4
        Sơ đồ phần cứng:
        Thực ra cũng cực kỳ đơn giản, tui làm vậy nè

        chunhanhoabattu :rose:

        Comment


        • #5
          Hơ hơ, thật là phí con AVR nhỉ
          Cái này có lẽ làm con AT89C2051 là ổn nhất nhỉ. Nhưng ko có sẵn nên làm đại vậy

          Phần mềm Demo: Tui chỉ mới học AVR thôi, chỉ quen viết ASM , đang học C, ai hướng dẫn cái nhỉ

          Code:
          .include "m8515def.inc"
          
          .def	SREG_store = R2		;use to save SREG during an ISR
          .def	NULL = R3
          
          .def	Temp = R16
          .def	Temp2 = R17
          .def	LedData = R18
          .def	sec1	= R19
          .def	sec2	= R20
          .def	minute1	= R21
          .def	minute2	= R22
          .def	work	= R23
          
          // variable
          .CSEG
          	.org	0x0000
          	rjmp	RESET
          	.org	0x0001
          	rjmp	INT0ISR
          
          ;============================================================
          
          RESET:
          ldi	Temp,LOW(RAMEND)		; init Stack
          out	SPL,Temp
          ldi	Temp,HIGH(RAMEND)
          out	SPH,Temp
          
          // xac dinh che do cho cac pin
          ldi	Temp,0xFF	
          out	DDRA,Temp	;PORTA = OUT
          
          ldi	Temp,(1<<ISC01)|(1<<ISC00)
          out	MCUCR,Temp
          ldi	Temp,(1<<INT0)
          out	GICR,Temp
          
          sec
          ldi	LedData,0xFF
          out	PORTA,LedData
          ldi	minute1,0
          ldi	minute2,9
          ldi	sec1,0
          ldi	sec2,0
          mov	NULL,sec2
          sei	;enable interupt
          LOOP:
          	ldi	Temp,18
          	main_l:
          		rcall	delay
          		dec	Temp
          		brne	main_l
          	inc	sec2
          	cpi	sec2,10
          	brne	notOVER
          	clr	sec2
          	inc	sec1
          	cpi	sec1,6
          	brne	notOVER
          	clr	sec1
          	inc	minute2
          	cpi	minute2,10
          	brne	notOVER
          	clr	minute2
          	inc	minute1
          	cpi	minute1,6
          	brne	notOVER
          	clr	minute1
          notOVER:
          rjmp	LOOP
          
          //--------------------------------
          INT0ISR:
          cli
          in	SREG_store,SREG
          mov	work,sec2
          rcall	LEDdisplay
          mov	work,sec1
          rcall	LEDdisplay
          
          ldi	LedData,0b11100111
          out	PORTA,LedData
          rcall	delayCOL
          ldi	LedData,0xFF
          out	PORTA,LedData
          rcall	delayCOL
          rcall	delayCOL
          rcall	delayCOL
          mov	work,minute2
          rcall	LEDdisplay
          mov	work,minute1
          rcall	LEDdisplay
          
          ldi	LEDdata,0xFF
          out	PORTA,LEDdata
          out	SREG,SREG_store
          sei
          RETI
          ;---------------------------------
          LEDdisplay:
          push	Temp
          ldi	Zh,high(NUMBER<<1)
          ldi	Zl,low (NUMBER<<1)
          cpi	work,0
          brne	LD_distance
          rjmp	LD_notmath
          
          LD_distance:
          adiw	Zl,8
          dec	work
          brne	LD_distance
          
          LD_notmath:
          ldi	Temp,8
          LD_loop:
          	LPM	LedData,Z+
          	out	PORTA,LedData
          	rcall	delayCOL
          	dec	Temp
          brne	LD_loop
          
          ldi	Temp,0xFF
          out	PORTA,Temp
          rcall	delayCOL
          rcall	delayCOL
          rcall	delayCOL
          pop	Temp
          Ret
          ;---------------------------------
          
          delayCOL:
          push	Temp
          push	Temp2
          ldi	Temp,16
          DCouter_loop:
          ldi	Temp2,100
          DCinner_loop:
           nop
           nop
           dec	Temp2
          brne	DCinner_loop
          dec	Temp
          brne	DCouter_loop
          
          ldi	Temp,0xFF
          out	PORTA,Temp
          ol1:
          dec	Temp
          brne	ol1
          
          pop	Temp2
          pop	Temp
          ret
          
          
          NUMBER:
          ;number 0
          .db	0b00000001, 0b01111101, 0b01111101, 0b01111101, 0b01111101, 0b01111101, 0b01111101, 0b00000001
          
          ;number 1
          .db	0b00000001,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
          
          ;number 2
          .db	0b00001101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01100001
          
          ;number 3
          .db	0b00000001, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101
          
          ;number 4
          .db	0b00000001, 0b11101111, 0b11101111, 0b11101111, 0b11101111, 0b11101111, 0b11101111, 0b00001111
          
          ;number 5
          .db	0b01100001, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b00001101
          
          ;number 6
          .db	0b01100001, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b00000001
          
          ;number 7
          .db	0b00000001, 0b01101111, 0b01101111, 0b01101111, 0b01101111, 0b01101111, 0b01101111, 0b01101111
          
          ;number 8
          .db	0b00000001, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b00000001
          
          ;number 9
          .db	0b00000001, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b01101101, 0b00001101
          Last edited by RedRose; 12-07-2006, 23:59.
          chunhanhoabattu :rose:

          Comment


          • #6
            Xin góp ý chút , bác RedRose dùng mỗi con trở R1 (100Ohm) để hạn dòng cho LED thì e rằng LED sẽ sáng không đều. VD : nếu hiện 1 LED sẽ sáng hơn so với hiện cả 8 LED.
            Nên chăng bỏ R1 đi và mỗi LED mắc thêm 1 con trở 100 Ohm ?

            Comment


            • #7
              Thanks bạn trungkt
              Phải làm như bạn nói là chính xác nhất ! Mình sẽ làm như vậy ở cái tiếp theo

              @all: ai biết chỗ nào bán động cơ DC cỡ 12V ko vậy ?
              chunhanhoabattu :rose:

              Comment


              • #8
                Các LED từ D1-D6 đã có hạn dòng bằng trở 100 ôm nếu thay mỗi LED thêm 1 trở 68 ôm đến 100 ôm cũng được. Theo tôi bạn dùng con ATmega8515L là quá lãng phín nên dùng 90S2313 hay ATmega88 cho giá thành hợp lý, sửa lại code và khai báo lại chân thôi mà, còn muốn dùng real time clock thì dùng thạch anh 32Khz để tạo dao động giây rồi ..... Muốn làm quen ngôn ngữ C nên học bằng Codevision C Compiler AVR ý.
                Mô tơ 12 V một chiều khá sẵn trên chợ Trời, chọn loại tốc độ thấp thôi.
                PS : Hoan hô bạn có tinh thần xây dựng và học hỏi, nếu cần sẽ hỗ trợ trong điều kiện có thể
                Last edited by hoang_csa; 13-07-2006, 00:15.

                Comment


                • #9
                  bác nào giỏi cả hai thứ tiếng - dịch sang C cho anh em nhờ .
                  Hok mang bút sao ký dc !

                  Comment


                  • #10
                    anh ơi mạch này có tụ sao trên sơ đồ phần cứng ko thấy có tụ.còn IR led lắp ở đâu

                    Comment


                    • #11
                      Điện đóm cấp cho mạch làm thế nào cho tối ưu vậy ae, khi quay không bị rối dây ấy mà, thank!

                      Comment


                      • #12
                        Mình chưa làm cái này bao giờ. Giờ mới thấy, thấy hay wuá. Chắc phải cấp nguồn qua cổ góp và chổi than hoặc dùng phin gắn trên mạch luôn.

                        Comment


                        • #13
                          Hôm nay ngồi tìm hiểu về led 3d cube tự nhiên thấy cái này hay quá.
                          Các bác có thể nói qua cho em về cách quét hình được không ạh. VD muốn hiện 1 con số lên thì như thế nào, rồi thì hình phức tạp hơn thì như thế nào? (về giải thuật, lý thuyết ấy, chứ không nhất thiết phải là cách làm cụ thể).
                          Em cảm ơn trước.
                          Đang nghiên cứu, có gì sẽ hỏi thêm.

                          Comment


                          • #14
                            cái này hay nhưng sao ít người bàn luận vậy

                            Comment


                            • #15
                              Cái này cũng cần bố trí linh kiện hợp lý, cân đo trọng tâm cho đều 4 hướng (chỉ tương đối thôi) như vậy thì khi motor quay sẽ được êm, không giật, giảm được tiếng ồn...

                              RTC dùng con DS1307 giá khoảng 10k,
                              Crystal --> 4k
                              89C2051 -->12K
                              Led -->5K
                              Motor -->15k
                              Linhtinh -->10k
                              -----------------------------
                              Tổng tiền: 56k (chưa nguồn DC)
                              Cũng đẹp đấy, hôm nào rãnh làm một cái xem thế nào.

                              Comment

                              Về tác giả

                              Collapse

                              RedRose Tìm hiểu thêm về RedRose

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X