早些年我自制過兩款簡易幅射檢測儀,如圖所示;左邊的是用89C2051單片機制成,右邊是用NANO制成。兩者功能大同小異,只是后者增加了溫濕度顯示,現將其分享給大家以供參考。外觀圖和電路圖及程序如下:
51hei圖片_20231004063434.jpg (287.39 KB, 下載次數: 55)
下載附件
外觀圖
2023-10-4 07:19 上傳
無標題.png3.png (26.26 KB, 下載次數: 57)
下載附件
電路圖
2023-10-4 07:19 上傳
#include <Wire.h>
#include <dht11.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
dht11 DHT11;
#define DHT11PIN 8
unsigned long counts=2;
unsigned long cpm=0;
unsigned long previousMillis;
float usv;
int ds1=2;
int ds2=2;
int ds3=2;
int ds4=2;
int ds5=2;
int ds6=2;
int ds7=2;
int ds8=2;
int ds9=2;
int ds10=2;
int ds11=2;
int ds12=2;
int ds13=2;
int ds14=2;
int ds15=2;
LiquidCrystal_I2C lcd(0x3F, 16, 2);
void tube_impulse() {
counts++;
digitalWrite(5,HIGH);
delay(100);
digitalWrite(5,LOW);
}
void setup()
{
Wire.begin();
Serial.begin(9600);
attachInterrupt(0, tube_impulse, FALLING);
lcd.init();
lcd.backlight();
pinMode(8,INPUT_PULLUP);
pinMode(5,OUTPUT);
digitalWrite(5,LOW);
}
void loop()
{
int chk = DHT11.read(DHT11PIN);
unsigned long currentMillis = millis();
if (currentMillis - previousMillis > 4000) {
previousMillis = currentMillis;
ds1=ds2;
ds2=ds3;
ds3=ds4;
ds4=ds5;
ds5=ds6;
ds6=ds7;
ds7=ds8;
ds8=ds9;
ds9=ds10;
ds10=ds11;
ds11=ds12;
ds12=ds13;
ds13=ds14;
ds14=ds15;
ds15=counts;
cpm=ds1+ds2+ds3+ds4+ds5+ds6+ds7+ds8+ds9+ds10+ds11+ds12+ds13+ds14+ds15;
usv = float(cpm) / 151;
counts = 0;
lcd.clear();
lcd.print("CPM=");
lcd.print(cpm);
lcd.setCursor(0, 1);
lcd.print(usv);
lcd.print("uSv/h");
if (usv >= 10)
{
lcd.setCursor(8, 0);
lcd.print("D");
delay(10);
}
else if (usv < 10 && usv >= 0.52)
{
lcd.setCursor(8, 0);
lcd.print("N");
delay(10);
}
else if (usv < 0.52)
{
lcd.setCursor(8, 0);
lcd.print("S");
delay(10);
}
}
lcd.setCursor(11,0);
lcd.print((int)DHT11.temperature, 1);
lcd.setCursor(14,0);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(11,1);
lcd.print((float)DHT11.humidity, 0);
lcd.setCursor(15,1);
lcd.print((char)37);
}
|