Mục lục:

Arduino DIY Geiger Counter: 12 bước (có hình ảnh)
Arduino DIY Geiger Counter: 12 bước (có hình ảnh)

Video: Arduino DIY Geiger Counter: 12 bước (có hình ảnh)

Video: Arduino DIY Geiger Counter: 12 bước (có hình ảnh)
Video: How to Disassemble the Pip-boy 2000 Kit Clock and Holotape Area 2024, Tháng bảy
Anonim
Bộ đếm Arduino DIY Geiger
Bộ đếm Arduino DIY Geiger
Bộ đếm Arduino DIY Geiger
Bộ đếm Arduino DIY Geiger

Vì vậy, bạn đã đặt hàng một bộ đếm Geiger DIY và bạn muốn kết nối nó với Arduino của mình. Bạn tiếp tục và cố gắng sao chép cách những người khác đã kết nối bộ đếm Geiger của họ với Arduino chỉ để tìm ra điều gì đó không ổn. Mặc dù bộ đếm Geiger của bạn có vẻ như không hoạt động như được mô tả trong phần Tự làm mà bạn đang làm theo khi bạn kết nối bộ đếm Geiger với Arduino.

Trong phần Có thể hướng dẫn này, tôi sẽ trình bày cách khắc phục một số trục trặc này.

Nhớ lại; lắp ráp và viết mã Arduino từng bước một, nếu bạn đi thẳng đến một dự án đã hoàn thành và có một dây hoặc dòng mã bị thiếu, bạn có thể mất mãi mãi để tìm ra vấn đề.

Bước 1: Công cụ và bộ phận

Công cụ và bộ phận
Công cụ và bộ phận

Hộp nguyên mẫu Tôi đã sử dụng một hộp kẹo Ferrero Rocher.

Breadboard nhỏ

LCD 16x2

Bo mạch Arduino ether a UNO hoặc Nano

Điện trở 220 Ω

Điện trở điều chỉnh nồi 10 kΩ.

Bộ đếm Geiger DIY

Dây nhảy

Đầu nối hoặc dây nịt pin

Máy hiện sóng

Kìm mũi tốt

Tuốc nơ vít tiêu chuẩn nhỏ

Bước 2: Lắp ráp bộ đếm Geiger của bạn

Lắp ráp bộ đếm Geiger của bạn
Lắp ráp bộ đếm Geiger của bạn

Bất kỳ thiệt hại nào đối với Ống Geiger của bạn; và bộ đếm Geiger của bạn sẽ không hoạt động, vì vậy hãy sử dụng nắp acrylic bảo vệ để tránh làm hỏng ống Geiger của bạn.

Tài liệu hướng dẫn này là về cách tôi sửa chữa cùng một bộ đếm Geiger với một ống Geiger bị hỏng và lắp nắp acrylic bảo vệ để tránh bị vỡ trong tương lai.

www.instructables.com/id/Repairing-a-DIY-G…

Bước 3: Kiểm tra bằng điện bộ đếm Geiger

Kiểm tra bằng điện bộ đếm Geiger
Kiểm tra bằng điện bộ đếm Geiger
Kiểm tra bằng điện bộ đếm Geiger
Kiểm tra bằng điện bộ đếm Geiger
Kiểm tra bằng điện bộ đếm Geiger
Kiểm tra bằng điện bộ đếm Geiger

Đầu tiên sử dụng điện áp phù hợp với nguồn điện; dây USB cung cấp 5 volt DC ngay từ máy tính của bạn, tuy nhiên giá đỡ 3 pin AA dành cho pin kiềm 1,5 volt tạo ra tổng điện áp là 4,5 volt. Nếu bạn sử dụng pin NI-Cd hoặc NI-MH có thể sạc lại 1,2 volt, bạn sẽ cần một giá đỡ pin 4 AA cho tổng điện áp là 4,8 volt. Nếu bạn sử dụng ít hơn 4,5 vôn, bộ đếm Geiger có thể không hoạt động như bình thường.

Có rất ít mạch trên đầu ra của bộ đếm Geiger; Vì vậy, miễn là loa phát ra âm thanh tích tắc và đèn LED nhấp nháy, bạn sẽ nhận được tín hiệu trên chân VIN.

Để chắc chắn về tín hiệu đầu ra; kết nối máy hiện sóng với đầu ra bằng cách nối mặt dương của đầu dò máy hiện sóng với VIN và mặt âm của đầu dò máy hiện sóng với mặt đất.

Thay vì chỉ chờ bức xạ nền để kích hoạt bộ đếm Geiger, tôi đã sử dụng americium-241 từ buồng ion của máy dò khói để tăng phản ứng của bộ đếm Geiger. Đầu ra của bộ đếm Geiger bắt đầu ở +3 volt và giảm xuống 0 volt mỗi khi ống Geiger phản ứng với các hạt alpha và trở về +3 volt một lúc sau đó. Đây là tín hiệu bạn sẽ ghi bằng Arduino.

Bước 4: Đấu dây

Đấu dây
Đấu dây
Đấu dây
Đấu dây
Đấu dây
Đấu dây
Đấu dây
Đấu dây

Có hai cách để bạn có thể kết nối bộ đếm Geiger với Arduino và máy tính của bạn.

Kết nối GND trên Arduino với GND trên bộ đếm Geiger.

Kết nối 5V trên Arduino với 5V trên bộ đếm Geiger.

Kết nối số VIN trên bộ đếm Geiger với D2 trên Arduino.

Với nguồn điện độc lập kết nối với bộ đếm Geiger.

Kết nối GND trên Arduino với GND trên bộ đếm Geiger.

Kết nối số VIN trên bộ đếm Geiger với D2 trên Arduino.

Kết nối Arduino với máy tính của bạn.

Bước 5: Mã

Mã số
Mã số
Mã số
Mã số
Mã số
Mã số

Mở Arduino IDE và tải mã.

// Sketch này đếm số xung một phút.

// Kết nối GND trên Arduino với GND trên bộ đếm Geiger.

// Kết nối 5V trên Arduino với 5V trên bộ đếm Geiger.

// Kết nối số VIN trên bộ đếm Geiger với D2 trên Arduino.

đếm dài không dấu; // biến cho các sự kiện GM Tube

unsigned long trước đóMillis; // biến để đo thời gian

void xung () {// dipanggil setiap ada sinyal FALLING di pin 2

số đếm ++;

}

#define LOG_PERIOD 60000 // tỷ lệ đếm

void setup () {// setup

số đếm = 0;

Serial.begin (9600);

pinMode (2, INPUT);

mountInterrupt (digitalPinToInterrupt (2), xung động, FALLING); // xác định ngắt bên ngoài

Serial.println ("Bộ đếm bắt đầu");

}

void loop () {// chu trình chính

unsigned long currentMillis = millis ();

if (currentMillis - beforeMillis> LOG_PERIOD) {

beforeMillis = currentMillis;

Serial.println (số lượng);

số đếm = 0;

}

}

Trong Công cụ, chọn Arduino hoặc bảng khác mà bạn đang sử dụng.

Trong Tools, chọn Port và Com

Tải lên mã.

Sau khi mã được tải lên trong Tools, hãy chọn Serial Monitor và xem bộ đếm Geiger của bạn hoạt động.

Tìm kiếm trục trặc. Điều duy nhất về mã này là nó hơi tẻ nhạt, bạn phải đợi 1 phút cho mỗi lần đếm.

Bước 6: Serial.println Vs Serial.print

Serial.println Vs Serial.print
Serial.println Vs Serial.print
Serial.println Vs Serial.print
Serial.println Vs Serial.print

Đây là một trong những trục trặc đầu tiên tôi tìm thấy trong mã; vì vậy hãy xem nó trong mã của bạn, “Serial.println (cpm);” và “Serial.print (cpm);”.

Serial.println (cpm); sẽ in mỗi số đếm trên dòng riêng của nó.

Serial.print (cpm); sẽ trông giống như một số lớn in mỗi số đếm trên cùng một dòng khiến không thể phân biệt số đếm là bao nhiêu.

Bước 7: Đo bức xạ nền J305

Đo bức xạ nền J305
Đo bức xạ nền J305
Đo bức xạ nền J305
Đo bức xạ nền J305

Đầu tiên là đo bức xạ phông, bức xạ tự nhiên đã tồn tại một cách tự nhiên. Con số được liệt kê là CPM (đếm mỗi phút), là tổng số hạt phóng xạ đo được mỗi phút.

Tổng số trung bình trong nền J305 là 15,6 CPM.

Bước 8: Đo bức xạ cảm biến khói J305

J305 Đo bức xạ cảm biến khói
J305 Đo bức xạ cảm biến khói
J305 Đo bức xạ cảm biến khói
J305 Đo bức xạ cảm biến khói

Không có gì lạ khi máy đếm Geiger liên tục cung cấp cho bạn cùng một số đếm, vì vậy hãy kiểm tra nó bằng nguồn bức xạ. Tôi đã sử dụng phép đo bức xạ từ Americium một buồng ion từ máy dò khói. Cảm biến khói sử dụng Americium làm nguồn hạt alpha ion hóa các hạt khói trong không khí. Tôi đã tháo nắp kim loại trên cảm biến để các hạt alpha và beta có thể đi đến ống Geiger cùng với các hạt gamma.

Nếu mọi thứ đều ổn thì số lượng sẽ thay đổi.

Americium-241 từ một thiết bị phát hiện khói, số lượng ion trung bình trong buồng là 519 CPM.

Bước 9: SBM-20

SBM-20
SBM-20
SBM-20
SBM-20

Bản phác thảo Arduino này là phiên bản sửa đổi được viết bởi Alex Boguslavsky.

Sketch này đếm số lượng xung trong 15 giây và chuyển nó thành số đếm mỗi phút làm cho nó ít tẻ nhạt hơn.

Mã Tôi đã thêm “Serial.println (" Bắt đầu bộ đếm ");".

Mã tôi đã thay đổi; “Serial.print (cpm);” thành “Serial.println (cpm);”.

“#Define LOG_PERIOD 15000”; đặt thời gian đếm thành 15 giây, tôi đã đổi thành “#define LOG_PERIOD 5000” hoặc 5 giây. Tôi không tìm thấy sự khác biệt đáng kể nào về mức trung bình giữa việc đếm trong 1 phút hoặc 15 giây và 5 giây.

#bao gồm

#define LOG_PERIOD 15000 // Khoảng thời gian ghi nhật ký tính bằng mili giây, giá trị được đề xuất 15000-60000.

#define MAX_PERIOD 60000 // Khoảng thời gian ghi nhật ký tối đa mà không sửa đổi bản phác thảo này

đếm dài không dấu; // biến cho các sự kiện GM Tube

cpm dài không dấu; // biến cho CPM

số nhân int không dấu; // biến để tính toán CPM trong bản phác thảo này

unsigned long trước đóMillis; // biến để đo thời gian

void tube_impulse () {// quy trình con để ghi lại các sự kiện từ Geiger Kit

số đếm ++;

}

void setup () {// setup subprocedure

số đếm = 0;

cpm = 0;

số nhân = MAX_PERIOD / LOG_PERIOD; // tính toán hệ số, phụ thuộc vào chu kỳ nhật ký của bạn

Serial.begin (9600);

mountInterrupt (0, tube_impulse, FALLING); // xác định ngắt bên ngoài

Serial.println ("Bộ đếm bắt đầu"); // mã tôi đã thêm

}

void loop () {// chu trình chính

unsigned long currentMillis = millis ();

if (currentMillis - beforeMillis> LOG_PERIOD) {

beforeMillis = currentMillis;

cpm = số đếm * số nhân;

Serial.println (cpm); // mã tôi đã thay đổi

số đếm = 0;

}

}

Tổng số trung bình nền SBM-20 là 23,4 CPM.

Bước 10: Đấu dây bộ đếm Geiger với màn hình LCD

Đấu dây bộ đếm Geiger với màn hình LCD
Đấu dây bộ đếm Geiger với màn hình LCD

Kết nối LCD:

Chân LCD K sang GND

LCD A chân điện trở 220 Ω thành Vcc

Chân LCD D7 sang chân kỹ thuật số 3

Chân LCD D6 đến chân kỹ thuật số 5

Chân LCD D5 sang chân kỹ thuật số 6

Chân LCD D4 đến chân kỹ thuật số 7

LCD Bật ghim sang chân kỹ thuật số 8

LCD R / W chân tiếp đất

Chân LCD RS đến chân kỹ thuật số 9

Chân LCD VO để điều chỉnh nồi 10 kΩ

Pin Vcc LCD sang Vcc

Pin Vdd LCD sang GND

Điện trở điều chỉnh nồi 10 kΩ.

Vcc, Vo, Vdd

Máy đo bức xạ

VIN đến chân số 2

5 V đến + 5V

GND xuống đất

Bước 11: Bộ đếm Geiger với màn hình LCD

Bộ đếm Geiger có màn hình LCD
Bộ đếm Geiger có màn hình LCD
Bộ đếm Geiger có màn hình LCD
Bộ đếm Geiger có màn hình LCD
Bộ đếm Geiger có màn hình LCD
Bộ đếm Geiger có màn hình LCD

// bao gồm mã thư viện:

#bao gồm

#bao gồm

#define LOG_PERIOD 15000 // Khoảng thời gian ghi nhật ký tính bằng mili giây, giá trị được đề xuất 15000-60000.

#define MAX_PERIOD 60000 // Khoảng thời gian ghi nhật ký tối đa mà không sửa đổi bản phác thảo này

#define PERIOD 60000.0 // (60 giây) khoảng thời gian đo một phút

CNT dài chưa ký biến động; // biến để đếm các ngắt từ liều kế

đếm dài không dấu; // biến cho các sự kiện GM Tube

cpm dài không dấu; // biến cho CPM

số nhân int không dấu; // biến để tính toán CPM trong bản phác thảo này

unsigned long trước đóMillis; // biến để đo thời gian

dispPeriod dài không dấu; // biến để đo thời gian

CPM dài không dấu; // biến để đo CPM

// khởi tạo thư viện với số lượng các chân giao diện

Màn hình LCD LiquidCrystal (9, 8, 7, 6, 5, 3);

void setup () {// setup

lcd.begin (16, 2);

CNT = 0;

CPM = 0;

dispPeriod = 0;

lcd.setCursor (0, 0);

lcd.print ("RH Electronics");

lcd.setCursor (0, 1);

lcd.print ("Bộ đếm Geiger");

chậm trễ (2000);

cleanDisplay ();

mountInterrupt (0, GetEvent, FALLING); // Sự kiện trên pin 2

}

void loop () {

lcd.setCursor (0, 0); // in văn bản và CNT trên màn hình LCD

lcd.print ("CPM:");

lcd.setCursor (0, 1);

lcd.print ("CNT:");

lcd.setCursor (5, 1);

lcd.print (CNT);

if (millis ()> = dispPeriod + PERIOD) {// Nếu hết một phút

cleanDisplay (); // Xóa màn hình LCD

// Làm điều gì đó về các sự kiện CNT đã tích lũy….

lcd.setCursor (5, 0);

CPM = CNT;

lcd.print (CPM); // Hiển thị CPM

CNT = 0;

dispPeriod = millis ();

}

}

void GetEvent () {// Nhận sự kiện từ thiết bị

CNT ++;

}

void cleanDisplay () {// Xóa quy trình LCD

lcd.clear ();

lcd.setCursor (0, 0);

lcd.setCursor (0, 0);

}

Bước 12: Tập tin

Tải xuống và cài đặt các tệp này vào Arduino của bạn.

Đặt mỗi tệp.ino vào một thư mục có cùng tên.

Đề xuất: