Mục lục:

Đồng hồ Nixie Bargraph: 6 bước (có hình ảnh)
Đồng hồ Nixie Bargraph: 6 bước (có hình ảnh)

Video: Đồng hồ Nixie Bargraph: 6 bước (có hình ảnh)

Video: Đồng hồ Nixie Bargraph: 6 bước (có hình ảnh)
Video: Arduino Gauge in 11 Minutes ??? 2024, Tháng bảy
Anonim
Đồng hồ Nixie Bargraph
Đồng hồ Nixie Bargraph
Đồng hồ Nixie Bargraph
Đồng hồ Nixie Bargraph

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

Lắp ráp các bộ phận
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

Mạch điện
Mạch điện
Mạch điện
Mạch điện
Mạch điện
Mạch điện
Mạch điện
Mạch điện

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

Sự định cỡ
Sự định cỡ

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

Gắn và hoàn thiện
Gắn và hoàn thiện
Gắn và hoàn thiện
Gắn và hoàn thiện
Gắn và hoàn thiện
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: