فهرست مطالب:

Arduino DIY Geiger Counter: 12 Step (with Pictures)
Arduino DIY Geiger Counter: 12 Step (with Pictures)

تصویری: Arduino DIY Geiger Counter: 12 Step (with Pictures)

تصویری: Arduino DIY Geiger Counter: 12 Step (with Pictures)
تصویری: DIY arduino Geiger counter 2024, جولای
Anonim
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter
Arduino DIY Geiger Counter

بنابراین شما یک شمارنده DIY Geiger سفارش داده اید و می خواهید آن را به Arduino خود متصل کنید. شما به صورت آنلاین ادامه می دهید و سعی می کنید تکرار کنید که چگونه دیگران شمارنده Geiger خود را به آردوینو متصل کرده اند فقط برای این که متوجه شوند مشکلی وجود دارد. اگرچه به نظر می رسد شمارنده Geiger شما کار نمی کند ، همانطور که در DIY توضیح داده اید هنگامی که شمارنده Geiger خود را به Arduino خود متصل می کنید ، کار نمی کند.

در این دستورالعمل من نحوه عیب یابی برخی از این اشکالات را توضیح خواهم داد.

یاد آوردن؛ اگر مستقیماً به یک پروژه تمام شده رفتید و سیم یا خط کد از دست رفته وجود دارد ، آردوینو را مونتاژ کرده و کدگذاری کنید ، ممکن است برای همیشه مشکل را پیدا کنید.

مرحله 1: ابزارها و قطعات

ابزارها و قطعات
ابزارها و قطعات

جعبه نمونه من از جعبه آب نبات Ferrero Rocher استفاده کردم.

تخته نان کوچک

LCD 16x2

برد آردوینو اتر UNO یا Nano

مقاومت 220 Ω

قابلمه قابل تنظیم 10 کیلو وات

DIY Geiger Counter Kit

سیم های جامپر

اتصال باتری یا مهار

اسیلوسکوپ

انبردست بینی زیبا

پیچ گوشتی استاندارد کوچک

مرحله 2: شمارنده Geiger خود را جمع آوری کنید

شمارنده Geiger خود را جمع آوری کنید
شمارنده Geiger خود را جمع آوری کنید

هرگونه آسیب به لوله Geiger شما ؛ و شمارنده Geiger شما کار نمی کند ، بنابراین از پوشش محافظ اکریلیک برای جلوگیری از آسیب به لوله Geiger خود استفاده کنید.

این دستورالعمل در مورد چگونگی تعمیر پیشخوان Geiger با لوله شکسته Geiger و نصب محافظ آکریلیک محافظ برای جلوگیری از شکستگی در آینده است.

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

مرحله 3: آزمایش الکتریکی شمارنده Geiger

آزمایش برقی شمارنده گایگر
آزمایش برقی شمارنده گایگر
آزمایش برقی شمارنده گایگر
آزمایش برقی شمارنده گایگر
آزمایش برقی شمارنده گایگر
آزمایش برقی شمارنده گایگر

ابتدا از ولتاژ مناسب برای منبع تغذیه استفاده کنید. سیم USB 5 ولت DC را مستقیماً از رایانه شما تأمین می کند ، اما نگهدارنده باتری 3 AA برای باتری های قلیایی 1.5 ولت است که ولتاژ کل آن 4.5 ولت است. اگر از باتری های قابل شارژ 1.2 ولت NI-Cd یا NI-MH استفاده می کنید ، به یک نگهدارنده باتری 4 AA برای ولتاژ کل 4.8 ولت نیاز دارید. اگر از ولتاژ کمتر از 4.5 ولت استفاده می کنید ، شمارنده Geiger ممکن است آنطور که باید عمل نکند.

مدار بسیار کمی در خروجی شمارنده های گایگر وجود دارد. بنابراین تا زمانی که بلندگو صدای تیک می زند و LED چشمک می زند ، باید سیگنالی روی پین VIN دریافت کنید.

برای اطمینان از سیگنال خروجی ؛ با اتصال طرف مثبت کاوشگر اسیلوسکوپ به VIN و طرف منفی کاوشگر اسیلوسکوپ به زمین ، یک اسیلوسکوپ را به خروجی وصل کنید.

بجای اینکه فقط منتظر تابش پس زمینه برای راه اندازی شمارنده گایگر باشم ، از آمریکیوم -241 از محفظه یون آشکارسازهای دود برای افزایش واکنش شمارنده های گایگر استفاده کردم. خروجی شمارنده گیگر از +3 ولت شروع می شد و هر بار که لوله گایگر به ذرات آلفا واکنش نشان می داد و یک لحظه بعد به +3 ولت باز می گشت ، به 0 ولت می رسید. این سیگنالی است که با آردوینو ضبط می کنید.

مرحله 4: سیم کشی

سیم کشی
سیم کشی
سیم کشی
سیم کشی
سیم کشی
سیم کشی
سیم کشی
سیم کشی

از دو طریق می توانید شمارنده Geiger را به آردوینو و رایانه خود متصل کنید.

GND را در آردوینو به GND در شمارنده Geiger وصل کنید.

5 ولت را روی آردوینو به 5 ولت روی پیشخوان Geiger وصل کنید.

VIN را روی شمارنده Geiger به D2 در آردوینو وصل کنید.

با قدرت مستقل متصل به شمارنده گایگر.

GND را در آردوینو به GND در شمارنده Geiger وصل کنید.

VIN را روی شمارنده Geiger به D2 در آردوینو وصل کنید.

آردوینو را به کامپیوتر خود وصل کنید.

مرحله 5: کد

کد
کد
کد
کد
کد
کد

Arduino IDE را باز کرده و کد را بارگذاری کنید.

// این طرح تعداد پالس ها را در یک دقیقه می شمارد.

// GND در آردوینو را به GND در شمارنده Geiger وصل کنید.

// 5 ولت آردوینو را به 5 ولت روی شمارنده گایگر متصل کنید.

// VIN روی شمارنده Geiger را به D2 در آردوینو وصل کنید.

تعداد طولانی بدون امضا ؛ // متغیر برای رویدادهای GM Tube

بدون امضا طولانی قبلی میلیس؛ // متغیر برای اندازه گیری زمان

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

شمارش ++ ؛

}

#تعریف LOG_PERIOD 60000 // میزان شمارش

void setup () {// راه اندازی

تعداد = 0 ؛

Serial.begin (9600)؛

pinMode (2 ، ورودی) ؛

attachInterrupt (digitalPinToInterrupt (2) ، impulse ، FALLING) ؛ // وقفه های خارجی را تعریف کنید

Serial.println ("شروع شمارنده") ؛

}

حلقه خالی () {// چرخه اصلی

جریان طولانی بدون امضا Millis = millis ()؛

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis؛

Serial.println (تعداد)؛

تعداد = 0 ؛

}

}

در Tools ، Arduino یا بورد دیگری را که استفاده می کنید انتخاب کنید.

در Tools Port و Com را انتخاب کنید

کد را بارگذاری کنید.

پس از بارگذاری کد در Tools ، Serial Monitor را انتخاب کنید و تماشا کنید که شمارنده Geiger شما چگونه کار می کند.

به دنبال اشکالات باشید. تنها چیزی که در مورد این کد وجود دارد این است که کمی خسته کننده است باید برای هر تعداد 1 دقیقه صبر کنید.

مرحله 6: Serial.println در مقابل Serial.print

Serial.println در مقابل Serial.print
Serial.println در مقابل Serial.print
Serial.println در مقابل Serial.print
Serial.println در مقابل Serial.print

این یکی از اولین اشکالاتی است که در کد پیدا کردم. بنابراین در کد خود ، "Serial.println (cpm)؛" و "Serial.print (cpm)؛".

Serial.println (cpm) ؛ هر تعداد را در خط خود چاپ می کند.

Serial.print (cpm) ؛ به نظر می رسد که یک عدد بزرگ چاپ شود که هر عدد در یک خط چاپ می شود و تشخیص تعداد آن غیرممکن است.

مرحله 7: اندازه گیری تابش زمینه J305

J305 اندازه گیری تابش زمینه
J305 اندازه گیری تابش زمینه
J305 اندازه گیری تابش زمینه
J305 اندازه گیری تابش زمینه

اول اندازه گیری تابش زمینه ، تابش طبیعی که قبلاً به طور طبیعی وجود دارد. عدد ذکر شده CPM (شمارش در دقیقه) است که مجموع ذرات رادیواکتیو اندازه گیری شده در هر دقیقه است.

میانگین تعداد پس زمینه J305 15.6 CPM بود.

مرحله 8: اندازه گیری تابش سنسور دود J305

J305 اندازه گیری تشعشع سنسور دود
J305 اندازه گیری تشعشع سنسور دود
J305 اندازه گیری تشعشع سنسور دود
J305 اندازه گیری تشعشع سنسور دود

این غیر معمول نیست که یک شمارنده گایگر شمارش یکسانی را بارها به شما بدهد ، بنابراین آن را با منبع تابش بررسی کنید. من از اندازه گیری تشعشع آمریكوم یك محفظه یونی از آشکارساز دود استفاده كردم. سنسور دود از Americium به عنوان منبع ذرات آلفا استفاده می کند که ذرات دود را در هوا یونیزه می کند. درپوش فلزی روی سنسور را برداشتم تا ذرات آلفا و بتا بتوانند همراه با ذرات گاما به لوله Geiger برسند.

اگر همه چیز خوب است ، شمارش باید تغییر کند.

Americium-241 از میانگین شمارش محفظه یون یون دود 519 CPM بود.

مرحله 9: SBM-20

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

این طرح آردوینو نسخه اصلاح شده ای است که توسط الکس بوگوسلاوسکی نوشته شده است.

این طرح تعداد پالس ها را در 15 ثانیه شمارش می کند و آن را به شمارش در دقیقه تبدیل می کند و باعث خستگی کمتر می شود.

کد من "Serial.println (" شروع شمارنده ") ؛".

کد من تغییر کرد ؛ "Serial.print (cpm) ؛" به "Serial.println (cpm) ؛".

"#تعریف LOG_PERIOD 15000" ؛ زمان شمارش را روی 15 ثانیه تنظیم می کند ، من آن را به "#تعریف LOG_PERIOD 5000" یا 5 ثانیه تغییر داد. من هیچ تفاوت قابل ملاحظه ای در میانگین بین شمارش 1 دقیقه یا 15 ثانیه و 5 ثانیه پیدا نکردم.

#عبارتند از

#تعریف LOG_PERIOD 15000 // دوره ورود به سیستم در میلی ثانیه ، مقدار توصیه شده 15000-60000.

#تعریف MAX_PERIOD 60000 // حداکثر دوره ورود بدون تغییر این طرح

تعداد طولانی بدون امضا ؛ // متغیر برای رویدادهای GM Tube

cpm طولانی بدون علامت ؛ // متغیر برای CPM

ضرب int بدون امضا ؛ // متغیر برای محاسبه CPM در این طرح

بدون امضا طولانی قبلی میلیس؛ // متغیر برای اندازه گیری زمان

void tube_impulse () {// فرایند فرعی برای ثبت رویدادها از Geiger Kit

شمارش ++ ؛

}

void setup () {// setup subprocedure

تعداد = 0 ؛

cpm = 0؛

ضرب = MAX_PERIOD / LOG_PERIOD ؛ // محاسبه ضرب ، بستگی به دوره ورود شما دارد

Serial.begin (9600)؛

attachInterrupt (0 ، tube_impulse ، FALLING) ؛ // وقفه های خارجی را تعریف کنید

Serial.println ("شمارنده شروع") ؛ // کدی که اضافه کردم

}

حلقه خالی () {// چرخه اصلی

جریان طولانی بدون امضا Millis = millis ()؛

if (currentMillis - previousMillis> LOG_PERIOD) {

previousMillis = currentMillis؛

cpm = تعداد * ضرب کننده ؛

Serial.println (cpm) ؛ // کد من تغییر کردم

تعداد = 0 ؛

}

}

میانگین تعداد پس زمینه SBM-20 23.4 CPM بود.

مرحله 10: سیم کشی شمارنده Geiger با LCD

سیم کشی شمارنده Geiger با LCD
سیم کشی شمارنده Geiger با LCD

اتصال LCD:

پین LCD K به GND

LCD پین تا 220 Ω مقاومت در برابر Vcc

پین LCD D7 به پین دیجیتال 3

پین LCD D6 به پین دیجیتال 5

پین LCD D5 به پین دیجیتال 6

پین LCD D4 به پین دیجیتال 7

LCD پین را به پین دیجیتال فعال کنید 8

پین R/W LCD به زمین

پین ال سی دی RS به پین دیجیتال 9

پین LCD VO برای تنظیم دیگ 10 کیلووات

پین LCD Vcc به Vcc

پین LCD Vdd به GND

قابلمه قابل تنظیم 10 کیلو وات

Vcc ، Vo ، Vdd

شمارشگر گایگر

VIN به پین دیجیتال 2

5 ولت تا +5 ولت

GND به زمین

مرحله 11: شمارنده Geiger با LCD

شمارنده گایگر با LCD
شمارنده گایگر با LCD
شمارنده گایگر با LCD
شمارنده گایگر با LCD
شمارنده Geiger با LCD
شمارنده Geiger با LCD

// شامل کد کتابخانه:

#عبارتند از

#عبارتند از

#تعریف LOG_PERIOD 15000 // دوره ورود به سیستم در میلی ثانیه ، مقدار توصیه شده 15000-60000.

#تعریف MAX_PERIOD 60000 // حداکثر دوره ورود بدون تغییر این طرح

#تعریف PERIOD 60000.0 // (60 ثانیه) یک دوره اندازه گیری

فرار بدون علامت CNT طولانی ؛ // متغیر برای شمارش وقفه ها از دزیمتر

تعداد طولانی بدون امضا ؛ // متغیر برای رویدادهای GM Tube

cpm طولانی بدون علامت ؛ // متغیر برای CPM

ضرب int بدون امضا ؛ // متغیر برای محاسبه CPM در این طرح

بدون امضا طولانی قبلی میلیس؛ // متغیر برای اندازه گیری زمان

دوره طولانی بدون امضا // متغیر برای اندازه گیری زمان

CPM طولانی بدون امضا ؛ // متغیر برای اندازه گیری CPM

// مقداردهی کتابخانه با شماره پین های رابط

LCD مایع LiquidCrystal (9 ، 8 ، 7 ، 6 ، 5 ، 3) ؛

void 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 ("شمارنده گایگر") ؛

تاخیر (2000) ؛

cleanDisplay ()؛

attachInterrupt (0 ، GetEvent ، FALLING) ؛ // رویداد در پین 2

}

حلقه خالی () {

lcd.setCursor (0 ، 0) ؛ // چاپ متن و CNT روی LCD

lcd.print ("CPM:") ؛

lcd.setCursor (0 ، 1) ؛

lcd.print ("CNT:") ؛

lcd.setCursor (5 ، 1) ؛

lcd.print (CNT) ؛

if (millis ()> = dispPeriod + PERIOD) {// اگر یک دقیقه تمام شد

cleanDisplay ()؛ // LCD را پاک کنید

// در مورد رویدادهای انباشته CNT کاری انجام دهید….

lcd.setCursor (5 ، 0) ؛

CPM = CNT ؛

lcd.print (CPM) ؛ // نمایش CPM

CNT = 0 ؛

dispPeriod = millis ()؛

}

}

void GetEvent () {// دریافت رویداد از دستگاه

CNT ++ ؛

}

void cleanDisplay () {// روال LCD را پاک کنید

lcd.clear ()؛

lcd.setCursor (0 ، 0) ؛

lcd.setCursor (0 ، 0) ؛

}

مرحله 12: فایل ها

این فایل ها را در Arduino خود بارگیری و نصب کنید.

هر فایل.ino را در پوشه ای با همین نام قرار دهید.

توصیه شده: