Indholdsfortegnelse:
- Trin 1: Deleliste og værktøjer
- Trin 2: Forbered OLED -skærm og ur i realtid
- Trin 3: Forbered Rotary Encoder
- Trin 4: Kapsling
- Trin 5: Deaktiver Arduino Power LED (valgfrit)
- Trin 6: Strømforsyning + Solid State -relæ
- Trin 7: Arduino Nano + strømforsyning + Solid-state relæ
- Trin 8: Arduino Nano + ur i realtid
- Trin 9: Tilslut OLED -skærm
- Trin 10: Rotary Encoder
- Trin 11: Installation i kabinettet
- Trin 12: Tilslutning til lysnet / lys, der skal skiftes
- Trin 13: Afslutning af kabinettet
- Trin 14: Programmering af Arduino
- Trin 15: Opsætning af klokkeslæt og skiftetider
Video: Timer for Arduino Dusk/dawn Clock: 15 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Resumé:
Denne Arduino -baserede timer kan skifte et 220V lys i skumringen, daggry eller angivet tidspunkt.
Introduktion:
Nogle af lysene i mit hus tændes automatisk i skumringen, indtil enten en forudindstillet tid eller indtil daggry (hele natten).
Placeringen af lysene tillader ikke brug af en lyssensor. De almindelige tilgængelige ur -timere tændes på et bestemt tidspunkt. For at tænde omkring skumringen kræver det derfor regelmæssigt at justere timerprogramindstillingen.
Som en god udfordring besluttede jeg mig for at bygge en brugerdefineret Arduino -baseret stand alone timer i stedet. Det bruger et real -time ur og Dusk2Dawn -biblioteket til at bestemme det tidspunkt, hvor lysene skal tændes eller slukkes. Kabinettet til denne timer er 3D -printet og kan findes på Thingiverse. Arduino -koden til dette projekt findes på GitHub.
I oprettelsen af denne timer fik jeg inspiration fra mange designs og kredsløb på internettet. Jeg takker alle de bidragydere, der ikke eksplicit nævnes.
For læsbarhed er delvise diagrammer vist i trinene, hvor det er nødvendigt, i stedet for et komplet kredsløbsdiagram.
Alternative løsninger:
I stedet for en selvstændig timer er der mange løsninger, hvor et smart hjemmeautomatiseringssystem styrer lyset. Mit mål var at have en uafhængig løsning, der ikke afhænger af WIFI (eller anden) forbindelse.
Begrænsninger:
Koden, der fulgte med dette projekt, omfattede en implementering af sommertid ændringer baseret på europæisk sommertid system.
Trin 1: Deleliste og værktøjer
Dele:
Samlede deleomkostninger (eksklusive 3d print) cirka € 30, -.
- Arduino Nano V3 (kompatibel) uden headers
- Strømforsyning 5V 0.6A (34 x 20 x 15mm)
- Solid -state relæ 5V - Aktiv lav - 2A 230VAC
- Realtidsur DS3231 (lille)
- 0,96”OLED -display SPI 128*64 pixels
- Roterende encoder - EC11 - 20mm
- Knop 6mm aksel 15mm * 17mm
- Breadboard printkort,
- 4* M3x25mm skruer
- 3D -trykt kabinet
- Krympeslange
- Ledninger
- Skrueklemme (til tilslutning af neutrale ledninger)
Nødvendige værktøjer:
- Loddekolbe
- Loddetråd
- Aflodningspumpe
- Wire Strippers
- Fræsere
- 3D -printer (til udskrivning af kabinet)
- Diverse små værktøjer
ADVARSEL
Dette kredsløb fungerer på 230v AC, og hvis du ikke er vant til at arbejde med netspænding eller ikke har rigelig erfaring med at arbejde med 230v AC netspænding, skal du holde dig væk fra dette projekt
Jeg påtager mig intet ansvar for tab eller skader, der opstår direkte som følge af eller som følge af at følge dette projekt
Det tilrådes altid at passe på og passe på, når du arbejder med AC -net
Trin 2: Forbered OLED -skærm og ur i realtid
3D -printet kabinet er designet til minimal størrelse. Som følge heraf skal overskrifterne på OLED -skærmen og uret i realtid fjernes.
Som forberedelse til det næste trin fjernes eventuelt resterende loddemetal fra hullerne med aflodningspumpen.
Trin 3: Forbered Rotary Encoder
Den roterende encoder har spinkle stik. For at forhindre beskadigelse skal du montere et stykke printkort på encoderen.
På billedet er jordforbindelsen (til øverste højre og midterste bund) også allerede forberedt.
Bemærk: Sørg for, at den roterende encoder med printkort passer ind i kabinettet uden at røre Arduino. Det kan være nødvendigt at slibe printkortet for at få en god pasform.
Trin 4: Kapsling
Udskriv de tre dele af kabinettet med en 3d -printer. Se vejledningen om Thingiverse.
Trin 5: Deaktiver Arduino Power LED (valgfrit)
For at forhindre, at der er et grønt lys i timeren, kan strømindikatoren på Arduino deaktiveres.
Bemærk, at denne ændring er valgfri.
Modifikationen af Arduino Nano består i at fjerne modstanden ved siden af strømledningen (se rød cirkel på billedet).
Trin 6: Strømforsyning + Solid State -relæ
I dette trin kombineres strømforsyningen og solid-state-relæet i den nederste del af kabinettet.
Forbindelser mellem strømforsyningen og relæet foretages i bunden af disse komponenter. Skrueklemmen på relæet bruges til at forbinde til Arduino.
Bemærk: Når du foretager tilslutninger, skal du sørge for, at monteringshullerne på solid-state-relæet holdes frie.
- Lod en forbindelseskabel mellem solid state relæ A1 til en af strømforsyningens vekselstrømstilslutninger
- Lod en ledning til den anden vekselstrømstilslutning på strømforsyningen (denne forbindes til den neutrale skrueklemme i trin 7)
- Lod en ledning mellem strømforsyning -Vo til relæ DC-
- Lod en ledning til tilslutning af strømforsyning +Vo til relæ DC +
Bemærk: Det kan være nødvendigt at forkorte ledningerne på strømforsyningen og relæet for at kunne passe ind i kabinettet.
Trin 7: Arduino Nano + strømforsyning + Solid-state relæ
I dette trin er Arduino Nano forbundet til strømforsyningen og solid-state relæet.
- Klip to tråde af cirka 70 mm længde. Fjern 30 mm isolering på den ene side og 4 mm på den anden side.
- Loddet siden med 30 mm strippet isolering til Arduino +5V og GND, med tråden stikker igennem
- Skær to varmekrympende rør med en længde på 20 mm, og monter dem over den 25 mm afskårne del. Dette isolerer ledningerne op til forbindelsen med monteringsskruens terminalblok DC+ og DC- på solid-state-relæet.
- Bemærk, at ledningerne til GND og +5V skal krydse for at tilslutte korrekt til relæskruens klemrække.
- Skær en ledning på cirka 40 mm længde og stræk 4 mm isolering af begge ender. Lod den ene side til A2-forbindelsen på bagsiden af Arduinoen, og tilslut den anden side til CH1-forbindelsen på solid-state-monteret skrueklemme.
ADVARSEL
Arduino får strøm direkte fra den stabile +5V strømforsyning i stedet for at bruge Arduino interne effektregulator. Derfor er det ikke sikkert at tilslutte USB, når Arduino modtager strøm fra strømforsyningen.
Afbryd altid 230VAC -net, før du bruger Arduino USB -forbindelsen.
Trin 8: Arduino Nano + ur i realtid
I dette trin er uret i realtid forbundet til Arduino, dels ved hjælp af kablerne, der blev forberedt i det foregående trin.
- Lod den ledning, der kommer fra Arduino GND (også forbundet til relæets DC-) til '-' i realtidsklokken.
- Lod den ledning, der kommer fra Arduino+5V (også forbundet til relæets DC+) til '+' i realtidsklokken.
- Klip to ledninger med en længde på cirka 40 mm, og fjern 4 mm isolering af begge ender.
- Lod en ledning mellem Arduino A4 og real -time ur D (SDA).
- Lod en ledning mellem Arduino A5 og realtidsur C (SCL).
- Form ledningerne til realtidsuret for at sikre, at de ikke forstyrrer den roterende encoder. Til dette skal ledningerne være i bunden af kabinettet.
Trin 9: Tilslut OLED -skærm
I dette trin tilføjes OLED SPI -displayet til Arduino.
- Klip 2 ledninger af 65 mm længde og stræk 4 mm isolering af begge ender.
- Lod en ledning til GND -forbindelsen på OLED -skærmen. Lod denne ledning til den isolerede ledning med krympeslange, der kommer fra Arduino GND (se trin 4), og tilslut begge ledninger til DC-monteret skrueklemme på solid-state-relæet.
- Lod en ledning til VCC -forbindelsen på OLED -skærmen. Lod denne ledning til den isolerede ledning med krympeslange, der kommer fra Arduino + 5V (se trin 4), og tilslut begge ledninger til DC + -monteret skrueklemme på solid-state-relæet.
- Klip 5 ledninger af 65 mm længde og strimler 4 mm isolering af begge ender.
- Lod en ledning for at forbinde D0 (CLK) til Arduino D10
- Lod en ledning for at forbinde D1 (MOSI / DATA) til Arduino D9
- Lod en ledning for at forbinde RES (RT) til Arduino D8
- Lod en ledning til at forbinde DC til Arduino D11
- Lod en ledning for at forbinde CS til Arduino D12
Bemærk: rækkefølgen af displaytrådene er ikke logisk. Dette er resultatet af først at bruge Adafruit -eksemplet og derefter ændre forbindelserne, fordi brug af D13 resulterer i en rød LED på Arduino hele tiden.
Alternativ
Det er muligt at bruge en 'normal' ordre til SPI -forbindelserne. Til dette skal Arduino -programmets digitale outputdefinition i oledcontrol.cpp justeres i overensstemmelse hermed:
// Brug af software SPI
// pin definitioner
#define CS_PIN 12
#define RST_PIN 8
#define DC_PIN 11
#define MOSI_PIN 9
#define CLK_PIN 10
Trin 10: Rotary Encoder
Diagrammet viser forbindelserne mellem Arduino og den roterende encoder (encoder set ovenfra).
- Klip 4 ledninger på 45 mm og strimler 4 mm isolering af begge ender.
- Tilslut Arduino GND til øverste højre og nederste midterstik på encoderen
- Tilslut Arduino D2 nederst til venstre på encoderen
- Tilslut Arduino D3 nederst til højre på encoderen
- Tilslut Arduino D4 øverst til venstre på encoderen
Trin 11: Installation i kabinettet
Installer al elektronikken i den nederste del af kabinettet:
- Skub Arduino på den lodrette slot
- Skub realtidsuret i det nederste rum
- Skub strømforsyningen og relæet i det øverste rum, og sørg for, at relæet sidder på dets beslag.
Trin 12: Tilslutning til lysnet / lys, der skal skiftes
ADVARSEL
Sørg for at passe på og passe på, når du arbejder med vekselstrøm, og sørg for, at vekselstrømforsyningen er afbrudt
Jeg påtager mig intet ansvar for tab eller skader, der opstår direkte som følge af eller som følge af at følge dette projekt
- Tilslut AC -netfasen til relæets A1 (venstre) skrueklemme.
- Tilslut lysets fase til relæets B1 (højre) skrueklemme.
- Brug en separat skrueklemme til at forbinde vekselstrømnettet, den neutrale ledning og strømkablets neutrale ledning.
- For aflastning skal du montere en slips om hver af strømkablerne.
Trin 13: Afslutning af kabinettet
I dette trin er monteringen i kabinettet afsluttet
- Skub OLED -skærmen gennem skærmens monteringshul i den midterste del af kabinettet.
- Skub den roterende encoder gennem hullet i den midterste del, og sørg for, at antirotationen er på linje. Monter drejekoder ved hjælp af den medfølgende skive og møtrik.
- Monter den øverste del af kabinettet, og luk kabinettet ved at montere de fire M3x25mm skruer fra bunden.
Trin 14: Programmering af Arduino
ADVARSEL
Arduinoen drives direkte fra den stabile +5V strømforsyning i stedet for at bruge Arduino interne effektregulator. Derfor er det ikke sikkert at tilslutte USB, når Arduino modtager strøm fra strømforsyningen.
Afbryd altid 230VAC -net, før du bruger Arduino USB -forbindelsen.
Hent Arduino -timerprogrammet fra GitHub.
Dette program bruger Arduino IDE, som kan fås her.
Programmet bruger følgende ekstra biblioteker:
SSD1303Ascii
Arduino Wire bibliotek
Bemærk, at dusk2dawn -biblioteket også bruges, men inkluderes som kode på grund af en ændring i dets grænseflade.
For at sikre korrekt skumring / daggry beregning skal længdegrad og breddegrad og tidszone indstilles.
Som beskrevet i dusk2dawn -eksemplet er en let måde at finde længde- og breddegrader for et hvilket som helst sted at finde stedet i Google Maps, højreklikke på stedet på kortet og vælge "Hvad er her?". Nederst ser du et kort med koordinaterne.
Længdegrad og breddegrad er hårdt kodet i programmet i Dusk2Dawn.cpp linje 19 og 20:
/* Breddegrad og længdegrad for din placering skal angives her.
* * TIP: En let måde at finde længde- og breddegraden for enhver placering er * at finde stedet i Google Maps, højreklikke på stedet på kortet og * vælge "Hvad er her?". Nederst ser du et kort med * koordinaterne. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht
Tidszonen er også hårdkodet i Dusk2Dawn.cpp linje 24. Som standard er den indstillet til Holland (GMT + 1):
/* Indtast din tidszone (offset til GMT) her.
*/ #define TIMEZONE 1
Når du programmerer Arduino for første gang, skal EEPROM -hukommelsen initialiseres. Til dette skal du ændre timer.cpp linje 11 for at foretage EEPROM -initialisering:
// skift til sand for første gangs programmering
#define INITIALIZE_EEPROM_MEMORY false
Upload programmet til Arduino, og start Arduino.
Deaktiver EEPROM -initialisering, og upload programmet til Arduino igen. Timeren husker nu skiftetidsindstillingerne, når den genstartes.
Trin 15: Opsætning af klokkeslæt og skiftetider
Brugerinteraktionskoncepter:
- Kort tryk bruges til at bekræfte valg. Desuden tænder eller slukker lyset i hovedtimerskærmen ved et kort tryk.
- Langt tryk bruges til at gå ind i menuen fra hovedtimerskærmen. Overalt i menuen vender et langt tryk tilbage til hovedtimerskærmen.
- '>' Markeringskurve. Denne markør angiver den valgte indstilling i en menu.
Hoved timer skærm
Hovedtimerskærmen viser:
Ugedag Su
Aktuel tid 16:00
Aktuel timer -tilstand og næste skiftetid Timer OFF til 17:12
Daggry og skumringstid Dawn 08:05 Skumring 17:10
Indstilling af det korrekte tidspunkt
Langt tryk for at gå ind i menuen. Følgende muligheder vises:
Tilbage Indstil tid Ugedagsprogram Weekendprogram Valgmuligheder
Vælg indstillet tid for at indstille dato og klokkeslæt for uret i realtid. Indtast de korrekte værdier for:
ÅrMånedDagTid
Timeren bestemmer automatisk ugedagen. Skift af sommertid udføres også automatisk. Sommertid er kun implementeret i europæisk tidszone.
Indstilling af timerprogrammet
Timeren har 2 programmer, et til hverdage, et til weekend. Bemærk, at fredag betragtes som en del af weekenden, lys kan forblive lidt længere.
Hver timer har en tænd- og slukkemoment. Øjeblikket kan enten være:
- Tid: Nøjagtigt angivet tidspunkt
- Daggry: Skift baseret på beregnet daggry
- Skumring: Skift baseret på beregnet skumringstid
Ved skumring og daggry er det muligt at indtaste en korrektion på 59 minutter før eller efter.
Eksempler:
For at tænde et lys hele natten skal du vælge tænd ved (skumring + 10min), slukke ved (daggry - 10min)
For at tænde et lys om aftenen skal du vælge at tænde i skumringen, slukke for tiden: 22:30.
Muligheder
På valgskærmen kan der indstilles en timeout til skift af skærmen.
Når skærmen er slukket, vender man tilbage til hovedtimerskærmen ved at trykke på drejeknappen.
Anbefalede:
Timer med Arduino og Rotary Encoder: 5 trin
Timer med Arduino og Rotary Encoder: Timeren er et værktøj, der ofte bruges i både industrielle og husholdningsaktiviteter. Denne samling er billig og let at lave. Den er også meget alsidig og kan indlæse et program, der er valgt efter behov. Der er flere programmer skrevet af mig til Ardui
Power Timer Med Arduino og Rotary Encoder: 7 trin (med billeder)
Power Timer Med Arduino og Rotary Encoder: Denne Power Timer er baseret på timeren vist på: https: //www.instructables.com/id/Timer-With-Arduin…Et strømforsyningsmodul og et SSR (solid state relæ) ) blev fastgjort til det. Effektbelastninger på op til 1KW kan betjenes og med minimale ændringer kan l
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 trin
The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: Hej alle sammen, det sker for os alle. Du bygger et projekt, forbinder entusiastisk alle sensorerne, og pludselig hænger Arduino og ingen input behandles. "Hvad sker der?", Vil du spørge og begynde at grave gennem din kode, kun for at gen
AVR mikrokontroller. LED'er blinker ved hjælp af timer. Timere afbryder. Timer CTC -tilstand: 6 trin
AVR mikrokontroller. LED'er blinker ved hjælp af timer. Timere afbryder. Timer CTC Mode: Hej alle! Timere er et vigtigt koncept inden for elektronik. Hver elektronisk komponent fungerer på et tidsgrundlag. Denne tidsbase hjælper med at holde alt arbejdet synkroniseret. Alle mikrokontrollerne arbejder med en foruddefineret clockfrekvens