산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

깨워!

구성품 및 소모품

Arduino Nano R3
× 1
Maxim 통합 DS3231MPMB1 주변기기 모듈
× 1

이 프로젝트 정보

겨울이 오고 밤은 낮보다 길어지고 오전 6시에 일어나 어둡고 추운 방에 들어가는 것은 악몽입니다. 방을 훨씬 더 따뜻하고 쾌적하게 만들기 위해 인공 "일출"을 만드는 방법이 있다면 어떨까요?

이것은 쉬운 작업입니다. 현재 천장 조명에 맞는 스마트 전구를 만들 것입니다. 천천히 방을 밝혀 일출을 시뮬레이션합니다. 작동하면 내 휴대전화에 연결하여 적절한 알람 시계로 만들겠습니다.

전구

스마트 전구를 만들려면 먼저 소켓이 램프에 나사로 고정되어 전원 공급을 제공하기 때문에 "멍청한" 전구가 필요합니다. 망치로 부숴버렸습니다. 이 즐거운 절차는 알루미늄 소켓에서 유리를 제거하고 하단의 소켓과 핀에 전선을 납땜 한 후 스마트 전구의 바닥이 준비되었습니다.

다음으로 모든 전자 제품에 대한 지원이 필요합니다. 나는 성능 보드를 사용하고 Arduino Nano 마이크로 컨트롤러, 5V 전원 공급 장치 및 모든 전자 부품에 맞게 잘라냈습니다.

고전압 회로

안전 경고: 50V보다 큰 전압으로 작업하고 있습니다. 고전압에 접촉하면 중상을 입거나 사망할 수 있습니다.

AC 주전원 전압에서 전원이 공급되는 일반 전구를 사용하고 있기 때문에 전구로 가는 전원을 제어하기 위해 마이크로컨트롤러를 직접 사용할 수 없습니다. 트라이액이 필요합니다. 이 작은 장치는 매우 빠르게 켜고 끌 수 있는 릴레이 역할을 합니다. 마이크로컨트롤러는 AC 사인파를 변경하여 빛을 흐리게 하거나 밝게 하기 위해 트라이액의 전원을 켜고 끕니다.

그러나 AC 전압은 DC 전압과 다르게 제어됩니다. AC 사인파는 정확한 방식으로 절단되어야 하므로 트라이액을 정확한 순간에 켜고 꺼야 이를 달성할 수 있습니다(아래 이미지 참조). 다시 말해, 마이크로컨트롤러는 주 전압의 사인파가 0을 교차할 때를 알아야 반파 각각을 동일한 크기로 절단할 수 있습니다. 그렇지 않으면 표시등이 깜박입니다.

주전원 전압의 제로 교차를 감지하기 위해 사인파가 0을 교차할 때 켜지는 트랜지스터가 있는 4N35(U1) 광 커플러가 있습니다. 마이크로컨트롤러는 이를 입력 핀에서 하이 신호로 인식합니다. 옵토커플러에는 또 다른 기능이 있습니다. 주 전압 회로에서 저전압을 분리하는 것입니다.

두 번째 광커플러 - MOC3063(U2) - 출력에 트라이액이 있는 것은 마이크로컨트롤러를 고전압 트라이액(Q2)에서 분리하는 데 사용됩니다. 사인파가 0과 교차할 때만 켜지므로 제로 교차 기능이 있는 광 커플러를 사용하지 않는지 확인하십시오.

저전압 회로

마이크로 컨트롤러로 Arduino Nano를 사용하고 있습니다. 주요 목적은 트라이악을 제어하고 설정된 시간이 되면 조명을 켜기 시작하는 것입니다. 실시간 클록을 제공하기 위해 DS3231 정확한 실시간 클록 모듈이 있어 정전 시에도 시간을 보존합니다.

칩에 5V를 제공하기 위해 전구 소켓의 주 전압에 연결된 저렴한 5V 700mA 강압 전원 공급 장치를 사용하고 있습니다. 훌륭하고 편리한 솔루션입니다!

코드

프로그램은 매우 간단합니다. 램프가 스위치에 의해 켜지면 전자 장치가 여전히 작동하는지 확인하기 위해 밤에 천천히 방을 밝힐 것입니다. 밤에는 DS3231 모듈에 저장된 실시간 시계를 확인하고 마지막으로 오전 6시에 스위치로 램프의 전원이 꺼질 때까지 방이 천천히 "일광"이 될 때까지 켜집니다.

아래에 첨부된 코드를 확인하십시오. 그렇지 않다면 나는 나쁜 개발자입니다!

다음은 무엇입니까?

이제 며칠 또는 몇 주 동안 실험하고 아침에 깨울 수 있다면 이 프로젝트를 더 똑똑하고 덜 조잡한 프로젝트로 발전시킬 것입니다!

잘자!

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • lightalarm.ino
  • lightalarm.ino아두이노
    침대에서 일어나야 할 시간이 되면 켜지는 스마트 전구.
    /*침대에서 일어날 시간이 되면 켜지는 스마트 전구.작동 원리:1) 전원을 켜면 , 조명이 작동 확인으로 켜집니다 2) 완전히 꺼질 때까지 천천히 어두워집니다 3) 아침 6시에 조명이 저녁에 꺼질 때까지 천천히 켜집니다 4) 방이 어둡지 않으면 조명이 켜지지 않습니다 더 이상 (광전지) 사용 방법:- 취침 시 불을 켜면 아침에 일어나면 방이 밝아지고, 방을 나갈 때 불을 꺼서 끕니다.- 시간이 보존됩니다. DS3231 module@작성자 Jiri Praus (https://twitter.com/jipraus)AC 조명 제어는 http://arduinotehniq.blogspot.com/2014/10/ac-light-dimmer-with-arduino.html*에서 영감을 받았습니다. /#include  // http://www.arduino.cc/playground/Code/#include에서 사용 가능 "RTClib.h#define TRIAC_PIN 2#define ZERO_CROSS_PIN 3#define LIGHT_SENSOR_PIN A6#define FREQUENCY_STEP 75 // 이것은 50Hz의 경우 마이크로초 단위의 밝기당 지연 단계입니다(60Hz의 경우 값을 65로 변경)#define CHANGE_DIM_LEVEL_EVERY 1 // N초마다 흐릿한 레벨을 변경, 밝기/디밍의 느림#define MAX_DIM_LEVEL 128 // off# define MIN_DIM_LEVEL 0 // on#define DARK_THRESHOLD 300 // 외부가 어둡다고 생각할 때 광전지의 저항// 트라이액 제어 변수volatile byte triacCounter =0; // 트라이액 제어 timervolatile 부울 zeroCrossed =false; // AC 위상 영교차 플래그// dim controlbyte dimLevel =MIN_DIM_LEVEL; // 전원을 켜면 조명이 켜지고 체크불린으로 천천히 어두워집니다. lightOn =false;// alarm clockRTC_DS3231 rtc;void setup() { Serial.begin(115200); 디지털 쓰기(TRIAC_PIN, LOW); 핀모드(TRIAC_PIN, 출력); 핀모드(ZERO_CROSS_PIN, 입력); 핀모드(LIGHT_SENSOR_PIN, 입력); // 실시간 시계 초기화 if (!rtc.begin()) { Serial.println("RTC를 찾을 수 없음"); 동안(1); } if (rtc.lostPower()) { Serial.println("RTC가 전원을 잃었습니다. 시간을 설정하겠습니다!"); rtc.adjust(날짜시간(F(__DATE__), F(__TIME__))); // 다음 라인은 RTC를 이 스케치가 컴파일된 날짜 및 시간으로 설정합니다. } // 트라이액 제어를 위한 인터럽트 및 타이머를 초기화합니다. noInterrupts(); attachInterrupt(digitalPinToInterrupt(ZERO_CROSS_PIN), zeroCrossDetected, RISING); // 제로 교차 감지를 위해 핀 2(인터럽트 0)에 ​​인터럽트를 연결합니다. interrupts(); Timer1.initialize(FREQUENCY_STEP); Timer1.attachInterrupt(triacTimerInterrupt, FREQUENCY_STEP);} 무효 루프() { 지연(CHANGE_DIM_LEVEL_EVERY * 1000); 체크알람시계(); AdjustDimLevel(); debugPrint();} 무효 zeroCrossDetected() { zeroCrossed =true; // 제로 크로스가 발생했음을 디밍 함수에 알리기 위해 부울을 true로 설정합니다. triacCounter =0; // 트라이악을 열어야 할 때 카운팅 시작 digitalWrite(TRIAC_PIN, LOW); // 조명 끄기}void triacTimerInterrupt() { if (dimLevel>=MAX_DIM_LEVEL) { // 영구적으로 꺼짐 digitalWrite(TRIAC_PIN, LOW); } else if (dimLevel <=MIN_DIM_LEVEL) { // 영구적으로 digitalWrite(TRIAC_PIN, HIGH); } else if (zeroCrossed) { if (triacCounter>=dimLevel) { digitalWrite(TRIAC_PIN, HIGH); // 트라이악 열기 zeroCrossed =false; // 다음 절반까지 제로 교차 감지 재설정 vawe } else { triacCounter ++; // 시간 스텝 카운터 증가 } }}void adjustDimLevel() { if (lightOn &&dimLevel> MIN_DIM_LEVEL) { dimLevel--; } else if (!lightOn &&dimLevel  

    회로도


    제조공정

    1. 시리즈 배터리
    2. 전압 분배기
    3. 열전기
    4. 전위차 전압계
    5. 감자 전지
    6. 위상 이동
    7. 전압 조정기
    8. 전압 추종자
    9. 다단 증폭기
    10. 특수용 다이오드