Mục lục:
- Bước 1: Lắp ráp các bộ phận
- Bước 2: Mạch
- Bước 3: Hiệu chỉnh
- Bước 4: Gắn và hoàn thiện
- Bước 5: Phác thảo Arduino - Hiệu chỉnh
- Bước 6: Phác thảo Arduino - Đồng hồ
Video: Đồng hồ Nixie Bargraph: 6 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:36
Chỉnh sửa 9/11 / 17Với sự trợ giúp của Kickstarter, tôi hiện đã phát hành một bộ phụ kiện cho bộ đồng hồ này! Nó bao gồm một bảng điều khiển và 2 ống Nixie IN-9. Tất cả những gì bạn cần thêm là Arduino / Raspberry Pi / khác của riêng bạn. Bộ tài liệu có thể được tìm thấy nhưng nhấp vào liên kết này!
Vì vậy, tôi đã xem rất nhiều đồng hồ Nixie trực tuyến và nghĩ rằng chúng trông tuyệt vời, tuy nhiên tôi không muốn chi hơn 100 đô la cho một chiếc đồng hồ thậm chí không bao gồm ống! Vì vậy, với một chút kiến thức điện tử, tôi đã tìm kiếm khắp các ống nixie khác nhau và các mạch. Tôi muốn tạo ra một chút gì đó khác biệt so với nhiều loại đồng hồ nixie nhìn chung khá giống nhau. Cuối cùng, tôi đã chọn sử dụng ống đo vạch Nixie IN-9. Đây là những ống dài mỏng và chiều cao của plasma phát sáng phụ thuộc vào dòng điện qua các ống. Ống bên trái là giờ và ống bên phải là phút. Chúng chỉ có hai dây dẫn và do đó làm cho việc xây dựng một mạch thẳng về phía trước. Trong thiết kế này, có một ống giờ và một phút, với chiều cao của plasma trong mỗi ống đại diện cho thời gian hiện tại. Thời gian được lưu giữ bằng vi điều khiển Adafruit Trinket và đồng hồ thời gian thực (RTC).
Bước 1: Lắp ráp các bộ phận
Có hai phần, đầu tiên là thiết bị điện tử và thứ hai là lắp và hoàn thiện. Các thành phần điện tử được yêu cầu là: Adafruit Trinket 5V - $ 7,95 (www.adafruit.com/products/1501) Adafruit RTC - $ 9 (www.adafruit.com/products/264) 2x Nixie IN-9 bargraph ~ $ 3 mỗi ống trên eBay 1x Nguồn cung cấp Nixie 140v ~ $ 12 trên tụ điện điện giải eBay 4x 47 uF 4x Điện trở 3,9 kOhm 2x chiết áp 1 kOhm 2x Transistor MJE340 NPN điện áp cao ~ $ 1 mỗi bộ điều chỉnh 1x LM7805 5v ~ $ 1 ổ cắm 1x 2.1mm ~ $ 1 hộp dự án 1x với pcb ~ $ 5 1x Nguồn điện 12v DC (Tôi tìm thấy một cái cũ từ một số thiết bị bị lãng quên từ lâu) Hàn, dây móc, v.v. Lắp đặt: Tôi quyết định gắn thiết bị điện tử vào một hộp nhựa nhỏ màu đen, sau đó gắn các ống vào một bộ chuyển động đồng hồ cổ. Để đánh dấu giờ và phút, tôi dùng dây đồng quấn quanh ống. Bộ phận gắn kết: Bộ chuyển động đồng hồ cổ - Dây đồng eBay $ 10 - Súng bắn keo nóng eBay $ 3
Bước 2: Mạch
Bước đầu tiên là xây dựng bộ nguồn Nixie. Đây là một bộ phụ kiện nhỏ xinh của eBay, bao gồm một chút PCB và chỉ cần các thành phần được hàn vào bo mạch. Nguồn cung cấp cụ thể này có thể thay đổi trong khoảng 110-180v, có thể điều khiển bằng một cái nồi nhỏ trên bảng. Sử dụng một trình điều khiển vít nhỏ điều chỉnh đầu ra ~ 140v. Trước khi tôi đi toàn bộ cách, tôi muốn thử nghiệm các ống nixie của mình, để làm điều này, tôi đã xây dựng một mạch thử nghiệm đơn giản bằng cách sử dụng một ống, bóng bán dẫn và một chiết áp 10k mà tôi đã đặt xung quanh. Như có thể thấy trong hình đầu tiên, nguồn 140v được gắn vào cực dương của ống (chân phải). Sau đó, cực âm (chân trái) được kết nối với chân thu của bóng bán dẫn MJE340. Một nguồn cung cấp 5v được kết nối với một phân chia nồi 10k để nối đất vào cơ sở bóng bán dẫn. Cuối cùng, bộ phát bóng bán dẫn được kết nối thông qua một điện trở hạn chế dòng 300 ohm với mặt đất. Nếu bạn không rành về bóng bán dẫn và thiết bị điện tử, điều đó không thực sự quan trọng, chỉ cần nối dây và thay đổi chiều cao plasma bằng núm vặn nồi! Khi điều đó đang hoạt động, chúng ta có thể xem xét việc chế tạo đồng hồ của mình. Mạch đồng hồ đầy đủ có thể được nhìn thấy trong sơ đồ mạch thứ hai. Sau một số nghiên cứu, tôi đã tìm thấy một hướng dẫn hoàn hảo trên trang web học Adafruit gần như chính xác những gì tôi muốn làm. Hướng dẫn có thể được tìm thấy tại đây: https://learn.adafruit.com/trinket-powered-analog-m… Hướng dẫn này sử dụng bộ điều khiển Trinket và RTC để điều khiển hai đồng hồ đo amp tương tự. Sử dụng điều chế độ rộng xung (PWM) để kiểm soát độ lệch của kim. Cuộn dây của amp kế trung bình biến PWM thành tín hiệu một chiều hiệu dụng. Tuy nhiên, nếu chúng ta sử dụng PWM trực tiếp để điều khiển các ống thì điều chế tần số cao có nghĩa là thanh plasma sẽ không bị "kẹp" vào đế của ống và bạn sẽ có một thanh lơ lửng. Để tránh điều này, tôi tính trung bình PWM bằng cách sử dụng bộ lọc thông thấp với thời gian dài không đổi để có được tín hiệu gần như dc. Điều này có tần số cắt là 0,8 Hz, điều này tốt vì chúng tôi đang cập nhật thời gian đồng hồ chỉ 5 giây một lần. Ngoài ra, vì đồ thị có tuổi thọ hữu hạn và có thể cần thay thế và không phải ống nào cũng giống hệt nhau, tôi đã bao gồm một nồi 1k sau ống. Điều này cho phép tinh chỉnh để điều chỉnh chiều cao plasma cho hai ống. Để nối dây trang sức với đồng hồ thời gian thực (RCT), hãy kết nối Trinket-pin 0 với RTC-SDA, Trinket-pin 2 với RTC-SCL và Trinket-5v với RTC-5v và Trinket GND với mặt đất RTC. Đối với phần này, có thể hữu ích khi xem hướng dẫn về đồng hồ Adafruit, https://learn.adafruit.com/trinket-powered-analog-…. Khi Trinket và RTC được đấu dây chính xác, hãy nối dây các ống nixie, bóng bán dẫn, bộ lọc, v.v. trên bảng mạch một cách cẩn thận theo sơ đồ mạch.
Để có được RTC và Trinket nói chuyện, trước tiên bạn cần tải xuống các thư viện chính xác từ Adafruit Github. Bạn cần TinyWireM.h và TInyRTClib.h. Đầu tiên, chúng tôi muốn hiệu chỉnh các ống, hãy tải lên bản phác thảo hiệu chỉnh ở phần cuối của hướng dẫn này. Nếu không có bản phác thảo nào ở cuối hiệu quả thì hãy thử bản phác thảo đồng hồ Adafruit. Tôi đã điều chỉnh bản phác thảo đồng hồ Adafruit để hoạt động hiệu quả nhất với các ống nixie nhưng bản phác thảo Adafruit sẽ hoạt động tốt.
Bước 3: Hiệu chỉnh
Khi bạn đã tải lên bản phác thảo hiệu chuẩn, các vạch chia độ cần được đánh dấu.
Có ba chế độ để hiệu chuẩn, chế độ đầu tiên đặt cả hai ống nixie ở công suất tối đa. Sử dụng điều này để điều chỉnh chậu sao cho chiều cao plasma trong cả hai ống là như nhau và thấp hơn một chút so với chiều cao tối đa. Điều này đảm bảo phản hồi là tuyến tính trên toàn bộ phạm vi đồng hồ.
Cài đặt thứ hai hiệu chỉnh ống phút. Nó thay đổi trong khoảng 0, 15, 30, 45 và 60 phút sau mỗi 5 giây.
Cài đặt cuối cùng lặp lại điều này cho mỗi gia số giờ. Không giống như đồng hồ Adafruit, chỉ báo giờ di chuyển theo mức cố định mỗi giờ một lần. Rất khó để có được phản hồi tuyến tính cho mỗi giờ khi sử dụng đồng hồ đo tương tự.
Khi bạn đã điều chỉnh chậu, hãy tải bản phác thảo lên để hiệu chỉnh trong vài phút. Lấy dây đồng mỏng và cắt một đoạn ngắn. Quấn vòng ống này và xoắn hai đầu lại với nhau. Trượt cái này đến vị trí chính xác và sử dụng súng bắn keo nóng để đặt một đốm keo nhỏ vào đúng vị trí. Lặp lại điều này cho từng phút và từng giờ.
Tôi quên chụp bất kỳ hình ảnh nào về quá trình này nhưng bạn có thể thấy từ các bức ảnh cách dây được gắn vào. Mặc dù tôi đã sử dụng ít keo hơn chỉ để gắn dây.
Bước 4: Gắn và hoàn thiện
Khi tất cả các ống đã được hiệu chỉnh và hoạt động, bây giờ là lúc để tạo mạch vĩnh viễn và gắn vào một số dạng đế. Tôi chọn phong trào đồng hồ cổ vì tôi thích sự pha trộn giữa công nghệ cổ, những năm 60 và hiện đại. Chiếc hộp tôi mua hơi nhỏ nhưng với một số vị trí cẩn thận và một chút buộc tôi đã xoay sở để có được tất cả cho vừa vặn. Tôi đã khoan một lỗ bên cạnh để cấp nguồn và một lỗ khác cho dây dẫn nixie. Tôi đã bọc dây nixie trong lớp co nhiệt để tránh bất kỳ sự cố ngắn nào. Để gắn các ống, tôi sử dụng keo nóng và dán các điểm của dây xoắn vào kim loại, cẩn thận để đảm bảo chúng thẳng. Tôi có lẽ đã sử dụng quá nhiều keo nhưng nó không được chú ý lắm. Nó có thể là một cái gì đó có thể được cải thiện trong tương lai. Khi tất cả đã được lắp lên, hãy tải bản phác thảo đồng hồ Nixie ở cuối hướng dẫn này và chiêm ngưỡng chiếc đồng hồ mới đáng yêu của bạn!
Bước 5: Phác thảo Arduino - Hiệu chỉnh
#define HOUR_PIN 1 // Hiển thị giờ qua PWM trên Trinket GPIO # 1
#define MINUTE_PIN 4 // Hiển thị phút qua PWM trên Trinket GPIO # 4 (qua cuộc gọi Bộ hẹn giờ 1)
int giờ = 57; int phút = 57; // đặt pwm tối thiểu
void setup () {pinMode (HOUR_PIN, OUTPUT); pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // thiết lập đầu ra PWM
}
void loop () {// Sử dụng điều này để điều chỉnh các chậu nixie để đảm bảo chiều cao ống tối đa khớp với analogWrite (HOUR_PIN, 255); analogWrite4 (255); // Sử dụng điều này để hiệu chỉnh gia số phút
/*
analogWrite4 (57); // độ trễ phút 0 (5000); analogWrite4 (107); // độ trễ phút 15 (5000); analogWrite4 (156); // độ trễ phút 30 (5000); analogWrite4 (206); // độ trễ phút 45 (5000); analogWrite4 (255); // độ trễ phút 60 (5000);
*/
// Sử dụng điều này để hiệu chỉnh gia số giờ / *
analogWrite (HOUR_PIN, 57); // 57 là đầu ra tối thiểu và tương ứng với độ trễ 1 giờ sáng / chiều (4000); // trì hoãn 4 giây analogWrite (HOUR_PIN, 75); // 75 là đầu ra tương ứng với độ trễ 2 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 93); // 93 là đầu ra tương ứng với độ trễ 3 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 111); // 111 là đầu ra tương ứng với độ trễ 4 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 129); // 129 là đầu ra tương ứng với độ trễ 5 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 147); // 147 là đầu ra tương ứng với độ trễ 6 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 165); // 165 là đầu ra tương ứng với độ trễ 7 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 183); // 183 là đầu ra tương ứng với độ trễ 8 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 201); // 201 là đầu ra tương ứng với độ trễ 9 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 219); // 219 là đầu ra tương ứng với độ trễ 10 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 237); // 237 là đầu ra tương ứng với độ trễ 11 giờ sáng / chiều (4000); analogWrite (HOUR_PIN, 255); // 255 là đầu ra tương ứng với 12 giờ sáng / chiều
*/
}
void PWM4_init () {// Thiết lập PWM trên Trinket GPIO # 4 (PB4, chân 3) bằng Timer 1 TCCR1 = _BV (CS10); // không có bộ phân bổ trước GTCCR = _BV (COM1B1) | _BV (PWM1B); // xóa OC1B trên so sánh OCR1B = 127; // chu kỳ nhiệm vụ khởi tạo thành 50% OCR1C = 255; // tần số }
// Hàm cho phép ghi analog trên Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // nhiệm vụ có thể là 0 đến 255 (0 đến 100%)}
Bước 6: Phác thảo Arduino - Đồng hồ
// Đồng hồ kim đồng hồ Adafruit Trinket
// Các hàm ngày và giờ sử dụng DS1307 RTC được kết nối qua I2C và lib TinyWireM
// Tải xuống các thư viện này từ kho lưu trữ Github của Adafruit và // cài đặt trong thư mục Arduino Libraries của bạn #include #include
// Để gỡ lỗi, bỏ ghi chú mã nối tiếp, hãy sử dụng FTDI Friend có chân RX của nó được kết nối với Pin 3 // Bạn sẽ cần một chương trình đầu cuối (chẳng hạn như phần mềm miễn phí PuTTY dành cho Windows) được đặt thành // cổng USB của FTDI friend tại 9600 baud. Bỏ ghi chú Các lệnh nối tiếp để xem có chuyện gì // # xác định HOUR_PIN 1 // Hiển thị giờ qua PWM trên Trinket GPIO # 1 #define MINUTE_PIN 4 // Hiển thị phút qua PWM trên Trinket GPIO # 4 (thông qua lệnh gọi Timer 1) // SendOnlySoftwareSerial Serial (3); // Truyền nối tiếp trên Trinket Pin 3 RTC_DS1307 rtc; // Thiết lập đồng hồ thời gian thực
void setup () {pinMode (HOUR_PIN, OUTPUT); // xác định các chân đồng hồ đo PWM là đầu ra pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // Đặt hẹn giờ 1 để PWM hoạt động trên Trinket Pin 4 TinyWireM.begin (); // Bắt đầu I2C rtc.begin (); // Bắt đầu đồng hồ thời gian thực DS1307 //Serial.begin(9600); // Bắt đầu Serial Monitor ở 9600 baud if (! Rtc.isrunning ()) {//Serial.println("RTC KHÔNG chạy! "); // dòng sau đặt RTC thành ngày & giờ mà bản phác thảo này được biên dịch rtc.adjust (DateTime (_ DATE_, _TIME_)); }}
void loop () {uint8_t giá trị giờ, giá trị phút; uint8_t điện áp giờ, điện áp phút;
DateTime now = rtc.now (); // Lấy thông tin RTC hourvalue = now.hour (); // Lấy giá trị giờ nếu (giá trị giờ> 12) giá trị giờ - = 12; // Đồng hồ này là 12 giờ phútvalue = now.minute (); // Lấy số phút
phút điện áp = bản đồ (giá trị phút, 1, 60, 57, 255); // Chuyển đổi phút thành chu kỳ nhiệm vụ PWM
if (giá trị giờ == 1) {analogWrite (HOUR_PIN, 57); } if (giá trị giờ == 2) {analogWrite (HOUR_PIN, 75); // mỗi giờ tương ứng với +18} if (hourvalue == 3) {analogWrite (HOUR_PIN, 91); }
if (giá trị giờ == 4) {analogWrite (HOUR_PIN, 111); } if (giá trị giờ == 5) {analogWrite (HOUR_PIN, 126); } if (giá trị giờ == 6) {analogWrite (HOUR_PIN, 147); } if (giá trị giờ == 7) {analogWrite (HOUR_PIN, 165); } if (giá trị giờ == 8) {analogWrite (HOUR_PIN, 183); } if (giá trị giờ == 9) {analogWrite (HOUR_PIN, 201); } if (giá trị giờ == 10) {analogWrite (HOUR_PIN, 215); } if (giá trị giờ == 11) {analogWrite (HOUR_PIN, 237); } if (giá trị giờ == 12) {analogWrite (HOUR_PIN, 255); }
analogWrite4 (điện áp phút); // phút analogwrite có thể được giữ nguyên khi ánh xạ hoạt động // mã để đưa bộ xử lý vào trạng thái ngủ có thể thích hợp hơn - chúng tôi sẽ trì hoãn delay (5000); // kiểm tra thời gian 5 giây một lần. Bạn có thể thay đổi điều này. }
void PWM4_init () {// Thiết lập PWM trên Trinket GPIO # 4 (PB4, chân 3) bằng Timer 1 TCCR1 = _BV (CS10); // không có bộ phân bổ trước GTCCR = _BV (COM1B1) | _BV (PWM1B); // xóa OC1B trên so sánh OCR1B = 127; // chu kỳ nhiệm vụ khởi tạo thành 50% OCR1C = 255; // tần số }
// Hàm cho phép ghi analog trên Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // nhiệm vụ có thể là 0 đến 255 (0 đến 100%)}
Đề xuất:
Động cơ bước được điều khiển Động cơ bước không có vi điều khiển (V2): 9 bước (có hình ảnh)
Động cơ bước được điều khiển bằng động cơ bước Không cần vi điều khiển (V2): Trong một trong những Hướng dẫn trước đây của tôi, tôi đã chỉ cho bạn cách điều khiển động cơ bước bằng cách sử dụng động cơ bước mà không cần vi điều khiển. Đó là một dự án nhanh chóng và thú vị nhưng nó đi kèm với hai vấn đề sẽ được giải quyết trong Có thể hướng dẫn này. Vì vậy, hóm hỉnh
Đầu máy mô hình điều khiển động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Đầu máy mô hình điều khiển động cơ bước | Động cơ bước làm bộ mã hóa quay: Trong một trong những phần Hướng dẫn trước, chúng ta đã học cách sử dụng động cơ bước làm bộ mã hóa quay. Trong dự án này, bây giờ chúng ta sẽ sử dụng bộ mã hóa quay động cơ bước đó để điều khiển đầu máy mô hình bằng vi điều khiển Arduino. Vì vậy, không có fu
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Chọn động cơ bước và trình điều khiển cho dự án màn hình bóng tự động Arduino: 12 bước (có hình ảnh)
Chọn Động cơ Bước và Trình điều khiển cho Dự án Màn hình Bóng tự động Arduino: Trong phần Có thể hướng dẫn này, tôi sẽ thực hiện các bước mà tôi đã thực hiện để chọn Động cơ Bước và Trình điều khiển cho dự án Màn hình Bóng tự động nguyên mẫu. Các tấm chắn bóng là các kiểu quay tay Coolaroo phổ biến và rẻ tiền, và tôi muốn thay thế t
Arduino Uno: Hình ảnh động bitmap trên Tấm chắn hiển thị màn hình cảm ứng TFT ILI9341 Với Visuino: 12 bước (có Hình ảnh)
Arduino Uno: Ảnh động bitmap trên Tấm chắn hiển thị màn hình cảm ứng TFT ILI9341 Với Tấm chắn màn hình cảm ứng TFT dựa trên Visuino: ILI9341 là Tấm chắn hiển thị chi phí thấp rất phổ biến cho Arduino. Visuino đã hỗ trợ chúng trong một thời gian khá dài, nhưng tôi chưa bao giờ có cơ hội viết Hướng dẫn về cách sử dụng chúng. Tuy nhiên, gần đây có rất ít người hỏi