Mục lục:

Wort-Uhr: 5 bước
Wort-Uhr: 5 bước

Video: Wort-Uhr: 5 bước

Video: Wort-Uhr: 5 bước
Video: Quăng Tao Cái Boong - Huỳnh James x Pjnboys (MASEW MIX) 2024, Tháng mười một
Anonim
Wort-Uhr
Wort-Uhr

Xin chào cùng nhau!

Đây sẽ là hướng dẫn đầu tiên của tôi và nếu bạn có bất kỳ ý tưởng nào về cách cải thiện nó hoặc làm cho nó dễ hiểu hơn, vui lòng liên hệ với tôi!

À, lúc đầu, loại "đồng hồ" này không phải là ý tưởng của tôi! Tôi đã thấy rất nhiều sự cố trên internet và chúng có thể được đặt hàng chỉ với một vài đô la trong các cửa hàng web khác nhau. Nhưng tôi không muốn mua một cái, tôi muốn làm một cái của riêng mình để học và hiểu nó hoạt động như thế nào.

Một lời gửi đến các thành viên "không phải người Đức" … Xin lỗi vì đây chỉ là "German Wort Uhr". Nó có thể dễ dàng chuyển đổi sang tiếng Anh hoặc bất kỳ ngôn ngữ nào khác, nhưng vì tôi là người Đức nên tôi đã tạo nó bằng ngôn ngữ của mình. Nếu bạn cần hỗ trợ về ngôn ngữ của mình, hãy liên hệ với tôi và tôi sẽ cố gắng giúp bạn.

Vậy hãy bắt đầu…

Bước 1: Sơ đồ

Sơ đồ
Sơ đồ

Sơ đồ là thẳng về phía trước và nếu hình ảnh là xấu để đọc, thì cũng có một tệp PDF.

Hãy bắt đầu ở góc dưới cùng bên trái. Có một bộ nguồn đơn giản sử dụng LM7805 để tạo ra đầu ra 5V ổn định cho PIC, thanh ghi dịch chuyển (74HC164) và chip thời gian thực DS3231. Tất cả các đèn LED cũng được cung cấp từ bộ phận này. D22 ở đầu bên phải chỉ để chỉ nguồn điện và có thể dễ dàng tách rời nếu không muốn.

Bạn có thể sử dụng bất kỳ nguồn điện DC nào cho đồng hồ dưới 40V, nhưng sau đó bạn nên chọn giá trị thích hợp cho C7. Nó phải có định mức điện áp ít nhất gấp đôi điện áp đầu vào và hãy nhớ rằng bạn đang tạo ra nhiệt trong LM7805, vì vậy bạn nên cố gắng giữ điện áp đầu vào càng thấp càng tốt vì mọi thứ khác chỉ là lãng phí năng lượng. Phù hợp nhất là một cái gì đó giữa 9V một 12V DC.

Đừng bận tâm về cực của nguồn điện của bạn… MOSFET kênh p (Q1) hoạt động như một bộ bảo vệ phân cực giả và đồng hồ sẽ không hoạt động và không bị bất kỳ hư hỏng nào. Bạn có thể kiểm tra điều này trên đèn LED "nguồn" D22 nếu được gắn.

Ở phía bên phải của giản đồ là các thanh ghi dịch chuyển ra song song nối tiếp. Tôi quyết định sử dụng chúng vì tôi không muốn sử dụng một PIC khổng lồ với rất nhiều I / O-Ports. Tôi muốn sử dụng một cái nhỏ hơn và tôi vẫn còn một số 16F1829 ở nhà nên sự lựa chọn đã rõ ràng. Dữ liệu (IN_1, IN_2 và IN_3) được cung cấp bởi PIC (xem phần mã bên dưới) và REGISTER_CLK cũng có. Để đơn giản trong mã và bố trí PCB của tôi, tôi đã sử dụng hai trong số 74HC164 cho giờ và cuối cùng cho "logic".

Ở góc trên bên trái là PIC và tất cả các bộ phận cần thiết. Tôi đã sử dụng đồng hồ bên trong nên không cần sử dụng hệ điều hành. Chỉ có ba điện trở cho SCL, SDA và MCLR. Đối với thực tế là tôi đã sử dụng 32kHz như một dấu hiệu của "giây chính xác", không cần một tần số khá ổn định và chính xác cho PIC.

Ở giữa có DS3231 với tối thiểu các bộ phận bên ngoài. Trên thực tế, tôi chỉ sử dụng đầu vào SDA và SCL để giao tiếp qua I²C và đầu ra 32kHZ làm tham chiếu xung nhịp bên ngoài cho Timer1 của PIC16F1829. Đối với đầu ra này, biểu dữ liệu cho biết đó là một điện trở kéo lên bên ngoài cần thiết. Các kết quả đầu ra khác mà tôi không sử dụng trong dự án này và chúng không được kết nối với nhau.

Cũng ở giữa, các đèn LED… Như bạn có thể đọc trong sơ đồ, tôi đã sử dụng đèn LED màu xanh lam (loại có vỏ trong) và giá trị điện trở 1k Ohms. Nếu bạn có ý định tự làm dự án này, bạn nên chọn giá trị của các điện trở này theo màu sắc và loại đèn LED bạn chọn. Cũng nên ghi nhớ nơi bạn muốn đồng hồ được thiết lập. Một người của tôi đang đứng trong phòng ngủ của tôi, do đó tôi không muốn đèn LED quá sáng và đã chọn một giá trị lớn hơn cho các điện trở. Thực hiện một số thử trên bảng mạch có đèn LED và các giá trị điện trở trước khi gắn chúng vào PCB.

Bước 2: Bố cục

Bố trí
Bố trí
Bố trí
Bố trí
Bố trí
Bố trí

Sau khi hoàn thành sơ đồ đã đến lúc định tuyến PCB. Đối với điều đó, tôi đã sử dụng KiCAD (cho cả sơ đồ). Không có nhiều điều để nói, chỉ cần định tuyến các dòng.

Đối với thực tế là tôi đã tự mình in vỏ của đồng hồ, điều khá quan trọng là vị trí của các đèn LED trên lớp trên cùng. Tôi chỉ đặt đèn LED và điện trở ở lớp trên cùng, bởi vì tôi đã đặt hàng PCB của mình được gắn một phần (tất cả các bộ phận SMD) và bởi vì công ty mà tôi chọn loại đó chỉ đặt các bộ phận ở một mặt chứ không phải hai mặt.

Bạn có thể thấy cách đặt trong hai bức tranh 3 chiều mà tôi đã tạo ra từ KiCAD.

Nếu bạn quan tâm… Có thể xuất PCB KiCAD sang Eagle và sau đó việc xây dựng vỏ máy khá dễ dàng, vì bạn có tài liệu tham khảo từ PCB.

Bước 3: "Logic" của "Wort-Uhr"

Phần quan trọng nhất của dự án này là mã cho PIC…

Lúc đầu, tìm ra "logic" của thời gian nói trong tiếng Đức và dịch nó sang mã.

Rất tiếc, không thể tải trực tiếp tệp Excel lên, nhưng tôi hy vọng bản xuất PDF đủ đọc cho bạn. Nếu không, vui lòng liên hệ với tôi và tôi sẽ gửi cho bạn tệp Excel gốc. Trong bản PDF, bạn có thể thấy cách tôi thiết lập logic cho đồng hồ của mình. Bạn có thể thấy cách tôi đi qua các bước thời gian khác nhau và cách viết chính tả. Tính toán bên trong mã (chủ yếu là các câu lệnh if-else) có thể được lấy từ thông tin ở phía bên phải của bảng. Một phần cho phút và một phần cho giờ.

Như bạn có thể thấy, đây không phải là điều kỳ diệu và có thể dễ dàng được mã hóa bằng C. Điểm "khó nhất" bên trong logic là cách xử lý giờ như bạn có thể thấy trong tệp chỉ hiển thị vào đầu một giờ, giờ thực tế mới được hiển thị.. Trong tiếng Đức (có thể đây chỉ là một thứ cụ thể của vùng Bavaria), "giờ tiếp theo" được sử dụng khá sớm.

Để mã hóa, tôi đã sử dụng MPLABX làm IDE mà tôi lựa chọn.

Bước 4: Đoạn mã

Đoạn mã
Đoạn mã
Đoạn mã
Đoạn mã

Tôi sẽ không đăng mã của mình ở đây, nhưng nếu bạn có ý định viết mã của riêng mình, tôi sẽ cung cấp cho bạn một số gợi ý về những gì tôi đã "vấp phải" trong quá trình phát triển…

Đầu tiên, "đăng ký" - điền:

Nếu bạn chuyển dữ liệu mới đến các thanh ghi quá thường xuyên và trong chu kỳ quá ngắn, tôi đã thực hiện tốn kém, rằng các đèn LED bắt đầu nhấp nháy. Vì vậy, tôi đã thực hiện một số "cờ chặn", rằng chỉ còn vài phút nữa, một "phép tính" thời gian nói mới được thực hiện và cập nhật đăng ký được thực hiện.

Mã để điền vào sổ đăng ký là trong hình trên. Như bạn thấy, tôi điền song song cả 3 thanh ghi nên tôi cần 3 chân của PIC cho dữ liệu và 1 chân cho CLK. 74HC164 tiếp nhận dữ liệu mới trong quá trình chuyển đổi ở dòng CLK từ 0 sang 1.

Phần còn lại của mã chủ yếu là nội dung phụ thuộc PIC, "thời gian nói" -logic và xử lý giao tiếp và các nút. Giao tiếp chủ yếu được cung cấp bởi Microchip MPLABX vì tôi đã sử dụng mô-đun MSSP.

Một ý tưởng hay là đọc biểu dữ liệu của DS3231 vì dữ liệu được lưu trữ bên trong dưới dạng BCD nên bạn có thể phải "chuyển đổi" dữ liệu này trong mã của mình. Theo như những gì tôi có liên quan, tôi là một người "vừa học vừa làm" và OF COURSE đã không đọc bảng dữ liệu… Làm tôi tốn rất nhiều thời gian và dây thần kinh.

Như bạn có thể nhận thấy, có hai cách để "giữ đúng thời gian" với việc triển khai này.

  1. Bạn có thể đọc thời gian thực của DS3231
  2. Bạn có thể "đếm giây" trong chính PIC và chỉ cần đồng bộ hóa thời gian với DS3231 theo thời gian

Đó là tùy thuộc vào bạn và cả hai cách đều mang tính thực tiễn và hướng về phía trước. Tôi đã sử dụng tùy chọn đầu tiên và chỉ đồng bộ hóa thời gian khi điều chỉnh thời gian thông qua các nút (ghi thời gian vào DS3231) hoặc 24 giờ một lần (thời gian đọc từ DS3231), vì tôi muốn tự mình triển khai logic hơn. Tôi cũng quay đồng hồ vào ban đêm (23:00 đến 05:00) để điều đó dễ dàng hơn một chút theo ý kiến của tôi.

Bước 5: Nhà ở

Cuối cùng nhưng không kém phần quan trọng, đó là thời gian để xem xét một cách ngắn gọn về nhà ở.

Như tôi đã đề cập ở trên, tôi đã tự làm vỏ bọc (sử dụng Eagle) và in chúng bằng Máy in 3D của mình, vì vậy tôi cố gắng tiếp tục xem xét vị trí của các đèn LED khác nhau.

Đính kèm, bạn có thể tìm thấy các tệp STL nếu bạn muốn sử dụng chúng.

Hy vọng hướng dẫn này sẽ giúp bạn khi xây dựng "Wort-Uhr" của riêng bạn. Nếu vẫn còn "câu hỏi mở" đừng ngần ngại liên hệ với tôi. Cách tốt nhất là bình luận bên dưới, vì bạn có thể không phải là người duy nhất có một câu hỏi cụ thể.

Đề xuất: