Chia sẻ Khóa điện CodeLock dùng Atmega 8 ( hoàn thiện, có video)

Thảo luận trong 'Họ AVR'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

Moderators: mta_cdt
  1. xaxa9ztb

    xaxa9ztb Kỹ sư Staff Member

    Tham gia ngày:
    14/11/13
    Bài viết:
    202
    Đã được thích:
    194
    Điểm thành tích:
    43
    Giới tính:
    Nam
    Mấy ngày trước mình đã đăng bài này nhưng có thay đổi về thiết kế sau khi làm phần cứng nên mình đã xóa đi và thiết kế lại. Thay đổi các vấn đề như sau:​
    1. Khóa điện mình tưởng là có lò xo. Nhưng khi lắp mới biết nó có hai hành trình đóng mở (thò ra thụt vào) khi đổi chiều dòng điện. Vậy nên bài hôm trc dùng 1 relay để đóng ngắt là k thể làm được. Mình đã thiết kế lại cầu H để điểu khiển chiều dòng điện. Mình dùng 4 con relay để làm cầu H cho nó đơn giản và dễ hiểu. Khóa điện này mua ở ngoài Minh Hà, chạy điện 9-12VDC. Bên Minh Hà có treo cái khóa này ở trên tường, nhưng họ đóng mở bằng RF điều khiển 4 con relays.
    2. Mạch nguồn hôm trước dùng 7805 rất là nóng vì mạch này chạy liên tục 24/24h. Mình đã thay bằng 7805 bằng Lm2576 cho dòng lớn hơn, ổn định hơn và ít nóng hơn 7805​
    Tính năng:
    1. Không reset password về mặc định ban đầu (1111) khi bị mất nguồn. Vì dữ liệu được lưu vào eeprom.​
    2. Có thể change pass bất kì lúc nào. Sau khi nhập pass từ keypad , ấn phím A để changepass, ấn phím 'Ok' ( * ). khi changepass, nhập hai lần password mới để xác nhận​
    3. Mật khẩu là một số tự nhiên từ 1-9999. Nếu nhập số quá 4 chữ số sẽ báo "Invalid Pass"​
    4. Tự động đóng băng hệ thống trong 1 khoảng thời gian sau khi nhập sai pass 4 lần.​
    5. Nhập số giống như trên điện thoại. Nhập sai 1 ký tự ấn phím 'Del' (#) để xóa kí tự vừa nhập. Ấn phím 'D' để xóa kí tự vừa nhập. Trong chế độ changepass có thể bấm phím 'B' để hủy change pass, thoát ra ngoài​
    6. Khi phím được ấn thì còi chip kêu 1 tiếng. Ngoài ra còn kêu 2 tiếng, 3 tiếng hoặc 4 tiếng tùy vào chức năng đang sử dụng​
    Mạch Nguyên lý:
    Mạch nguồn:
    powerschemtic_zps42357f28.
    Mạch cầu H (4 relays):
    relayschematic_zps4a137572.
    Mạch điều khiển: (quên mất chân reset của jump nạp isp :D)

    controlerschematic_zps9a91d620.
    Code: mình viết bằng avrstudio, các bạn xem file đính kèm bên dưới, nếu file project không mở được thì các bạn tạo project mới rồi add các file .c .h của mình vào là đc.​
    • Hàm quét Keypad 4x4:

    • Hàm đóng mở relays để bật tắt và đổi chiều dòng điện:
      • Khai báo giá trị mặc định ban đầu của pass:

      • Chương trình chính:
    • Chương trình Changepass:
    • Ngoài ra còn có thêm chương trình cho LCD và Còi chip, các bạn xem chi tiết trong file đính kèm.
    PCB: mình thiết kế thành hai board: 1 board 1 lớp gồm mạch nguồn và 4 relays, 1 board 2 lớp gồm chip at8, keypad, lcd, jump, conector
    1. board nguồn
    pcbrelay2_zps211cf726. pcdrelay1_zps7e6db4fc (1).
    2. Board điều khiển:
    Mặt trên:
    pcbschematicscontrolboardtop_zpscc00f62a. pcd2top_zpsbfc3df67.
    Mặt dưới
    pcbschematicscontrolboardbot_zpsf151fa9a. pcb2bot_zpsa4d602fe.
    Linh Kiện:
    Vi xử lý: atmega8, lcd 16x2, biến trở 3 chân 10k , buzzer 5V, led 3mm, diode dán ss43, tụ 103 dán 0805, tụ 104 dán 0805, trở 1k 330 Ohm dán, jump đực, jump cái, jump isp, header4 + dây 4, khóa điện.
    IC nguồn 2576T (5 chân thẳng TO 220-5), tụ 470uF/35V, tụ 1000uF, tụ 104, cuộn cảm 220uH, công tắc nhấn 6 chân, jack DC IN, Relay 5v 10A, transistor npn ECB C1815, led 3mm, trở 330, header 4, header 2.
    Video: vì mạch in mình đặt chưa được lấy nên mình cắm tạm lên boardtest trước



    p/s: Lần này đăng chắc là hoàn chỉnh rồi, test không thấy có lỗi nữa. Ở board mạch relay và nguồn có 1 dây phải câu lên trên. mình định thêm mấy con diode chống dòng ngược nữa nhưng k thiết kế nổi 1 mặt, thực nghiệm thì thấy dòng ngược k bị ảnh hưởng nhiều ( khi tắt relays thì có thấy khóa điện "rung rinh" :).

    Bên dưới mình đính kèm file bao gồm code, file thiết kế altium, một số screenshot. Riêng về khoản mô phỏng Proteus thì mình k biết mô phỏng có giá trị ban đầu của epprom như thế nào, toàn lỗi thôi. Với lại mình có kit ATmega8 rồi nên k cần dùng mô phỏng, cứ làm đến đâu thì nạp thẳng vào kit để test.
    Cảm ơn mọi người đã quan tâm. Bạn nào có góp ý gì thì cứ đưa ra mình sẽ vui vẻ đón nhận :))
    Nếu có sai sót gì thì báo mình luôn nhé :)

    Đính kèm: 4Share.vn :: Tot nhat, nhanh nhat
    update #2
     

    Các file đính kèm:

    Last edited: 7/6/14
    thinh07, trung anh 35, yeuthichdientu10 others thích bài này.
  2. xaxa9ztb

    xaxa9ztb Kỹ sư Staff Member

    Tham gia ngày:
    14/11/13
    Bài viết:
    202
    Đã được thích:
    194
    Điểm thành tích:
    43
    Giới tính:
    Nam
    update: hôm nay mới hàn đc cái board điều khiển. phát hiện ra là chân 5 (RST) của jump isp chưa nốt vào với PC6 :'(. lại phải câu 1 dây..
    cái này bất tiện cho nạp mạch, nếu bác nào nạp code bên ngoài thì k cần câu dây cũng đc. mạch chạy ngon lành.
    Em đang kiếm cái nguồn 12v 2A rồi lắp khóa điện vào nữa là ok. ở nhà có cái nguồn 9v 0.6A khi chạy khóa điện thì toàn sụt nguồn. Khóa của tàu nên k biết chính xác công suất là bao nhiêu =='
    IMG-20140607-00013.

     
    Last edited: 7/6/14
    hieuspk thích bài này.
  3. vanmanh1988

    vanmanh1988 Học sinh trung cấp

    Tham gia ngày:
    10/12/12
    Bài viết:
    40
    Đã được thích:
    18
    Điểm thành tích:
    8
    Giới tính:
    Nam
    Sao tích hợp nguồn luôn đi bạn. Cắm là chạy khỏi phải kết nối nhiều
     
  4. xaxa9ztb

    xaxa9ztb Kỹ sư Staff Member

    Tham gia ngày:
    14/11/13
    Bài viết:
    202
    Đã được thích:
    194
    Điểm thành tích:
    43
    Giới tính:
    Nam
    nguồn mình để tách riêng ra vì trên thực tế màn hình và phím bấm sẽ để ở ngoài cửa, còn cơ cấu khóa điện, chip điều khiển ngta sẽ để trong nhà, chứ chẳng ai dại lại để ở ngoài cửa cả :D
     
    thinh07 thích bài này.
  5. vanmanh1988

    vanmanh1988 Học sinh trung cấp

    Tham gia ngày:
    10/12/12
    Bài viết:
    40
    Đã được thích:
    18
    Điểm thành tích:
    8
    Giới tính:
    Nam
    Mình đâu có nói để chip ở bên ngoài cửa đâu nà. hjhjj
     
    xaxa9ztb thích bài này.
  6. mt7m

    mt7m Học sinh phổ thông

    Tham gia ngày:
    14/9/13
    Bài viết:
    8
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    Giúp mình đoạn code ghi pass vào eeprom AVR. không bít là khai báo và code như thế nào. Thanks mọi người.
     
    Last edited: 15/6/14
  7. xaxa9ztb

    xaxa9ztb Kỹ sư Staff Member

    Tham gia ngày:
    14/11/13
    Bài viết:
    202
    Đã được thích:
    194
    Điểm thành tích:
    43
    Giới tính:
    Nam
    Khai báo giá trị ban đầu
    Mã:
    uint16_t EEMEM pass1 = 1111; // khai báo biến pass1 trong EEMEM
    Đọc giá trị từ eeprom
    Mã:
    eeprom_read_word(&pass1); //hàm đọc giá trị từ biến pass1
    ghi giá trị vào eeprom
    Mã:
    eeprom_write_word(&pass1,m);//hàm ghi giá trị m vào biến pass1
    sử dụng thuộc tính EEMEM của epprom thì cách ghi và đọc rất đơn giản, giống như làm việc với 1 biến bình thường thôi
     

    Các file đính kèm:

    thinh07, xuanphu1993mt7m thích bài này.
  8. mt7m

    mt7m Học sinh phổ thông

    Tham gia ngày:
    14/9/13
    Bài viết:
    8
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    Thanks bạn xaxa9ztb , đoạn code trên dùng trong Codevision được không bạn.
     
  9. xaxa9ztb

    xaxa9ztb Kỹ sư Staff Member

    Tham gia ngày:
    14/11/13
    Bài viết:
    202
    Đã được thích:
    194
    Điểm thành tích:
    43
    Giới tính:
    Nam
    m chưa thử trên codevision. mình toàn dùng avrstudio thôi
     
  10. TranVanDoanh

    TranVanDoanh Học sinh phổ thông

    Tham gia ngày:
    28/9/14
    Bài viết:
    3
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Nơi ở:
    Ho Chi Minh City, Vietnam
    IPS là con linh kiện gì vậy bạn
     
Moderators: mta_cdt

Chia sẻ trang này