Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Acorde-me!

Componentes e suprimentos

Arduino Nano R3
× 1
Módulo periférico Maxim Integrated DS3231MPMB1
× 1

Sobre este projeto


O inverno está chegando, as noites se tornam mais longas do que os dias, e é um pesadelo para mim acordar às 6h em um quarto escuro e frio. E se houvesse uma maneira de criar um “nascer do sol” artificial para tornar o ambiente muito mais quente e agradável?

Esta é uma tarefa fácil, vou criar uma lâmpada inteligente que cabe na minha lâmpada de teto atual. Ele irá simular um nascer do sol iluminando lentamente a sala. Se funcionar, vou conectá-lo ao meu telefone para torná-lo um despertador adequado.





Lâmpada


Para criar uma lâmpada inteligente, você primeiro precisa de uma lâmpada "burra" por causa de seu soquete que é aparafusado na lâmpada e fornece energia. Eu o esmaguei com um martelo. Este procedimento delicioso removeu o vidro do soquete de alumínio e depois de soldar os fios ao soquete e pino na parte inferior, a base da lâmpada inteligente estava pronta.

Em seguida, você precisa de um suporte para todos os eletrônicos. Usei uma placa de desempenho e cortei para caber em um microcontrolador Arduino Nano, fonte de alimentação de 5 V e todos os componentes eletrônicos.






Circuito de alta tensão


Aviso de segurança: Você está trabalhando com tensões superiores a 50V. O contato com alta tensão pode resultar em ferimentos graves ou morte.

Como estou usando uma lâmpada comum que é alimentada pela tensão da rede elétrica CA, não posso usar o microcontrolador diretamente para controlar a energia que vai para a lâmpada. Eu preciso de um TRIAC. Este pequeno dispositivo atua como um relé que pode ligar e desligar rapidamente. O microcontrolador liga e desliga o triac para alterar a onda senoidal CA, escurecendo ou aumentando o brilho da luz.

No entanto, a tensão CA é controlada de forma diferente da tensão CC. A onda senoidal AC precisa ser cortada de maneira precisa e, portanto, o triac deve ser ligado e desligado em momentos precisos para conseguir isso (veja a imagem abaixo). Em outras palavras, o microcontrolador precisa saber quando a onda senoidal da voltagem da rede elétrica passa de zero para cortar cada uma das meias-ondas do mesmo tamanho. Caso contrário, a luz estaria piscando.

Para detectar o cruzamento zero da tensão da rede elétrica, há um optoacoplador 4N35 (U1) com um transistor que liga quando a onda senoidal cruza o zero. O microcontrolador verá isso como um sinal alto em seu pino de entrada. O optoacoplador tem outra função, é isolar a baixa tensão do circuito de tensão da rede.

O segundo optoacoplador - MOC3063 (U2) - com um triac na saída é usado para isolar o microcontrolador do triac de alta tensão (Q2). Certifique-se de não usar optoacoplador com recurso de cruzamento zero, pois ele só liga quando a onda senoidal cruza o zero.






Circuito de baixa tensão


Como microcontrolador, estou usando o Arduino Nano. Seu principal objetivo é controlar o triac e começar a acender a luz quando chegar a hora definida. Para fornecer relógio em tempo real, há um módulo de relógio em tempo real preciso DS3231 que também preserva o tempo quando a energia é perdida.

Para fornecer 5 V para chips, estou usando uma fonte de alimentação abaixadora de 5 V 700 mA barata conectada à tensão de rede do soquete da lâmpada. Solução agradável e prática!





Código


O programa é bastante simples. Quando a lâmpada é ligada pelo interruptor, ela ilumina a sala e lentamente escurece durante a noite, como uma verificação de que a eletrônica ainda funciona. Durante a noite, ele verifica o relógio em tempo real armazenado no módulo DS3231 e, finalmente, às 6h, a sala é iluminada lentamente até a "luz do dia" total até que a lâmpada seja desligada pelo interruptor.

Verifique o código anexado abaixo. Acho que é autoexplicativo. Se não for, sou um péssimo desenvolvedor!





O que vem a seguir?


Agora vou experimentar por alguns dias ou semanas e se puder me acordar de manhã, vou evoluir este projeto para algo mais inteligente e menos bruto!



Boa noite!

Código

  • lightalarm.ino
lightalarm.ino Arduino
Uma lâmpada inteligente que acende quando é hora de sair da cama.
 / * Uma lâmpada inteligente que se acende quando é hora de sair da cama.Como funciona:1) quando a energia é ligada , a luz é acesa para verificar se funciona2) vai escurecer lentamente até ser completamente desligada3) às 6h da manhã a luz vai se acender lentamente até ser desligada à noite4) a luz não acenderá quando o quarto não estiver escuro mais (fotocélula) Modo de usar:- acenda a luz na hora de dormir e iluminará o quarto ao acordar pela manhã, apague a luz ao sair do quarto para apagá-la.- o tempo será preservado devido para o módulo DS3231 @ autor Jiri Praus (https://twitter.com/jipraus)AC Light control inspirado em http://arduinotehniq.blogspot.com/2014/10/ac-light-dimmer-with-arduino.html* / # include  // disponível em 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 // Este é o passo de atraso por brilho em microssegundos para 50 Hz (altere o valor em 65 para 60 Hz) #define CHANGE_DIM_LEVEL_EVERY 1 // altera o nível de escurecimento a cada N segundos, lentidão de brilho / escurecimento # define MAX_DIM_LEVEL 128 // off # define MIN_DIM_LEVEL 0 // on # define DARK_THRESHOLD 300 // resistência da fotocélula quando é considerada escura fora // variáveis ​​de controle do triac byte volátil triacCounter =0; // controle triac timervolátil booleano zeroCrossed =false; // Sinalizador cruzado zero da fase AC // dim controlbyte dimLevel =MIN_DIM_LEVEL; // ao ligar, a luz está ligada e diminuirá lentamente como um checkboolean lightOn =false; // despertadorRTC_DS3231 rtc; void setup () {Serial.begin (115200); digitalWrite (TRIAC_PIN, LOW); pinMode (TRIAC_PIN, OUTPUT); pinMode (ZERO_CROSS_PIN, INPUT); pinMode (LIGHT_SENSOR_PIN, INPUT); // relógio em tempo real init if (! rtc.begin ()) {Serial.println ("Não foi possível encontrar RTC"); enquanto (1); } if (rtc.lostPower ()) {Serial.println ("RTC perdeu energia, vamos definir a hora!"); rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); // a linha seguinte define o RTC para a data e hora em que este esboço foi compilado} // inicializar interrupções e temporizadores para o controle triac noInterrupts (); attachInterrupt (digitalPinToInterrupt (ZERO_CROSS_PIN), zeroCrossDetected, RISING); // Anexe uma interrupção ao pino 2 (interrupção 0) para interrupções de detecção cruzada zero (); Timer1.initialize (FREQUENCY_STEP); Timer1.attachInterrupt (triacTimerInterrupt, FREQUENCY_STEP);} void loop () {delay (CHANGE_DIM_LEVEL_EVERY * 1000); checkAlarmClock (); AdjustDimLevel (); debugPrint ();} void zeroCrossDetected () {zeroCrossed =true; // defina o booleano como true para informar a nossa função de escurecimento que ocorreu um cruzamento zero triacCounter =0; // inicia a contagem quando o triac deve ser aberto digitalWrite (TRIAC_PIN, LOW); // apaga a luz} void triacTimerInterrupt () {if (dimLevel> =MAX_DIM_LEVEL) {// apaga permanentemente digitalWrite (TRIAC_PIN, LOW); } else if (dimLevel <=MIN_DIM_LEVEL) {// permanentemente em digitalWrite (TRIAC_PIN, HIGH); } else if (zeroCrossed) {if (triacCounter> =dimLevel) {digitalWrite (TRIAC_PIN, HIGH); // abre triac zeroCrossed =false; // redefine a detecção de cruzamento zero até a próxima metade vawe} else {triacCounter ++; // incrementa o contador de etapas de tempo}}} void AdjustDimLevel () {if (lightOn &&dimLevel> MIN_DIM_LEVEL) {dimLevel--; } else if (! lightOn &&dimLevel  

Esquemas


Processo de manufatura

  1. Baterias da série
  2. Divisor de tensão
  3. Termoeletricidade
  4. Voltímetro potenciométrico
  5. Bateria de batata
  6. Mudança de fase
  7. Regulador de tensão
  8. Seguidor de tensão
  9. Amplificador Multi-Stage
  10. Diodos para fins especiais