Led-klokke på arduino nano. Vi lager en elektronisk klokke på Arduino med egne hender. Klar klokke på Arduino

Bildet viser en prototype som jeg satt sammen for å feilsøke programmet som skal administrere hele dette anlegget. Den andre arduino nanoen i øvre høyre hjørne av brødbrettet tilhører ikke prosjektet og stikker ut der akkurat som det, du trenger ikke å ta hensyn til det.

Litt om operasjonsprinsippet: Arduino tar data fra DS323-timeren, behandler dem, bestemmer lysnivået ved hjelp av en fotomotstand, sender deretter alt til MAX7219, og den lyser på sin side opp de nødvendige segmentene med den nødvendige lysstyrken. Ved å bruke tre knapper kan du også stille inn år, måned, dag og klokkeslett etter ønske. På bildet viser indikatorene tid og temperatur, som er tatt fra en digital temperatursensor

Den største vanskeligheten i mitt tilfelle er at 2,7-tommers indikatorer har en felles anode, og de måtte for det første på en eller annen måte bli venner med max7219, som er designet for indikatorer med en felles katode, og for det andre løse problemet med deres strømforsyning, siden de trenger 7,2 volt for glød, noe max7219 alene ikke kan gi. Etter å ha spurt om hjelp på ett forum, fikk jeg svar.

Løsning i skjermbildet:


En mikrokrets er festet til utgangene til segmentene fra max7219, som inverterer signalet, og en krets med tre transistorer er koblet til hver utgang, som skal kobles til den felles katoden til skjermen, som også inverterer signalet og øker Spenning. Dermed får vi muligheten til å koble skjermer med felles anode og forsyningsspenning på over 5 volt til max7219

Jeg koblet til en indikator for testen, alt fungerer, ingenting ryker

La oss begynne å samle.

Jeg bestemte meg for å dele kretsen i 2 deler på grunn av det enorme antallet hoppere i versjonen som var atskilt av mine skjeve poter, der alt var på ett brett. Klokken vil bestå av en displayenhet og en strøm- og kontrollenhet. Det ble besluttet å samle sistnevnte først. Jeg ber esteter og erfarne radioamatører om ikke å besvime på grunn av den grusomme behandlingen av deler. Jeg har ikke noe ønske om å kjøpe en printer for LUTs skyld, så jeg gjør det på gamlemåten - jeg øver på et stykke papir, borer hull etter en mal, tegner baner med en tusj, så etser jeg.

Prinsippet om å feste indikatorer forble det samme som på.

Vi markerer plasseringen av indikatorene og komponentene ved hjelp av en plexiglassmal laget for enkelhets skyld.

Markeringsprosess







Deretter, ved hjelp av en mal, borer vi hull på de riktige stedene og prøver på alle komponentene. Alt passet perfekt.

Vi tegner stier og etser.




bading i jernklorid

Klar!
kontrollpanel:


indikasjonstavle:


Kontrollkortet ble bra, sporet på skjermkortet ble ikke kritisk spist opp, det kan fikses, det er på tide å lodde. Denne gangen mistet jeg SMD-jomfrudommen min og inkluderte 0805-komponenter i kretsen. I det minste ble de første motstandene og kondensatorene loddet på plass. Jeg tror jeg skal bli bedre på det, det blir lettere.
Til lodding brukte jeg flussmiddel som jeg kjøpte. Lodding med det er en fornøyelse; nå bruker jeg alkoholkolofonium kun til fortinning.

Her er de ferdige brettene. Styrekortet har et sete for en Arduino nano, en klokke, samt utganger for tilkobling til skjermkortet og sensorer (en fotomotstand for auto-lysstyrke og et digitalt termometer ds18s20) og en strømforsyning med justerbar utgangsspenning (for store syv-segment-enheter) og for å drive klokken og Arduino, på skjermkortet er det monteringskontakter for skjermer, kontakter for max2719 og uln2003a, en løsning for å drive fire store syv-segment-enheter og en haug med jumpere.




bakre kontrolltavle

Bakre skjermkort:

Forferdelig smd installasjon:


Lansering

Etter å ha loddet alle kablene, knappene og sensorene, er det på tide å slå det hele på. Den første lanseringen avdekket flere problemer. Den siste store indikatoren lyste ikke opp, og resten lyste svakt. Jeg taklet det første problemet ved å lodde benet på SMD-transistoren, og med det andre - ved å justere spenningen produsert av lm317.
DEN LEVER!

Et av de første prosjektene som nybegynnere bygger med et Arduino-brett er en enkel klokke som holder tiden. I utgangspunktet er slike klokker basert på en RTC-modul (Real Time Clock) koblet til Arduino. I dag er elektroniske komponenter tilgjengelig på markedet ulike modeller RTC-er som varierer i nøyaktighet og pris. Vanlige modeller inkluderer DS1302, DS1307, DS3231.



Men du kan lage en klokke på Arduino uten å bruke en RTC, spesielt hvis du ikke kan få slike moduler. Selvsagt vil nøyaktigheten i dette tilfellet være lav, så prosjektet bør heller betraktes som et opplæringsprosjekt.


Driftsprinsippet til slike klokker er ganske enkelt. Hver gang du slår på denne Arduino-klokken, må du stille den til gjeldende tid, akkurat som enhver analog klokke. Det er absolutt bedre å ikke bruke slike klokker i din Hverdagen med deres aktivitet i lang tid uten omstart og ytterligere konfigurasjon, siden desynkronisering med gjeldende tid under langvarig drift kan være betydelig.


Denne klokken kan settes sammen på et vanlig brødbrett, siden det ikke krever mange komponenter. Hovedlenken vår her vil være Arduino Uno-brettet. For å vise tiden kan du ta en 16x2 LCD-skjerm. For å endre tidsinnstillingene må du koble til to knapper (for timer og minutter). Knappene er koblet til Aduino via 10KΩ motstander. For å endre lysstyrken på skjermen trenger du et 10 kOhm potensiometer. Koblingsskjemaet for alle disse komponentene til Arduino Uno-kortet er presentert nedenfor.



Nå må du programmere Arduino. En enkel kode (skisse) som lar deg vise tiden på LCD-skjermen er gitt nedenfor.


#inkludere LiquidCrystal lcd(12,11,5,4,3,2); int h=12; int m; int s; int flagg; int TID; const int hs=8; const int ms=9; int state1; int state2; void setup() ( lcd.begin(16,2); ) void loop() ( lcd.setCursor(0,0); s=s+1; lcd.print("TIME:"); lcd.print(h ); lcd.print(":"); lcd.print(m); lcd.print(":"); lcd.print(s); if(flagg<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("PM"); if(flagg==24)flagg=0; forsinkelse(1000); lcd.clear(); if(s==60)( s=0; m=m+1; ) if(m==60) ( m=0; h=h+1; flagg=flagg+1; ) if(h==13 ) ( h=1; ) lcd.setCursor(0,1); lcd.print("HA EN FIN DAG"); //-------Tid // setting-------// state1=digitalRead(hs); if(tilstand1==1) ( h=h+1; flagg=flagg+1; if(flagg<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("PM"); if(flagg==24)flagg=0; hvis(h==13)h=1; ) state2=digitalRead(ms); if(tilstand2==1)( s=0; m=m+1; ) )

   Takk for din interesse for informasjonsprosjekt nettsted.
   Hvis du vil at interessant og nyttig materiale skal publiseres oftere og med mindre reklame,
   Du kan støtte prosjektet vårt ved å donere et hvilket som helst beløp til utviklingen.

Klokke med LED-bakgrunnsbelysning og pulserende minuttviser på en Arduino-mikrokontroller
Denne unike klokken med LED-bakgrunnsbelysning og pulserende minuttviser ble laget med TLC5940 PWM-kontrollerbrikken. Hovedoppgaven er å utvide antallet PWM-modulasjonskontakter. En annen funksjon ved denne klokken er at den har konvertert et analogt voltmeter til en enhet som måler minutter. For å gjøre dette ble en ny skala skrevet ut på en standard skriver og limt på toppen av den gamle. Som sådan telles ikke det 5. minuttet, det er bare at i løpet av det femte minuttet viser tidstelleren pilen som peker mot slutten av skalaen (utenfor skalaen). Hovedkontrollen er implementert på Arduino Uno-mikrokontrolleren.

For å sikre at klokkebakgrunnsbelysningen ikke lyste for sterkt i et mørkt rom, ble det implementert en krets for å automatisk justere lysstyrken avhengig av belysningen (en fotomotstand ble brukt).

Trinn 1: Nødvendige komponenter



Her er det du trenger:

  • 5V DC analog voltmetermodul;
  • Arduino UNO mikrokontroller eller annen passende Arduino;
  • Arduino kretskort (proto bord);
  • DS1307 sanntidsklokke (RTC)-modul;
  • Modul med PWM-kontroller TLC5940;
  • Kronblad LED-bakgrunnsbelysning – 12 stk.;
  • Komponenter for å sette sammen en krets for automatisk lysstyrkekontroll (LDR).

For produksjon av noen andre komponenter i prosjektet er det også ønskelig å ha tilgang til en 3D-printer og en laserskjæremaskin. Det forutsettes at du har denne tilgangen, så instruksjonene vil inkludere produksjonstegninger på de aktuelle stadiene.

Trinn 2: Ring




Skiven består av tre deler (lag) skåret på laserskjæremaskin av 3 mm MDF-plate, som festes sammen med bolter. En plate uten spor (nederst til høyre i bildet) plasseres under en annen plate for å plassere lysdiodene (nederst til venstre). Deretter plasseres individuelle lysdioder i de aktuelle sporene, og frontpanelet settes på toppen (øverst i figuren). Fire hull er boret langs kanten av skiven, gjennom hvilke alle tre delene er boltet sammen.

  • For å teste ytelsen til lysdiodene på dette stadiet, ble et CR2032 myntcellebatteri brukt;
  • For å feste lysdiodene ble det brukt små striper med teip, som ble limt på baksiden av lysdiodene;
  • Alle LED-ben var forhåndsbøyd tilsvarende;
  • Hullene langs kantene ble boret på nytt, hvorigjennom boltingen ble utført. Det viste seg at dette var mye mer praktisk.

Teknisk tegning av skivedelene er tilgjengelig på:

Trinn 3: Design kretsen



På dette stadiet ble det utviklet elektrisk diagram. Ulike lærebøker og veiledninger ble brukt til dette formålet. Vi vil ikke gå for dypt inn i denne prosessen; de to filene nedenfor viser den ferdige elektriske kretsen som ble brukt i dette prosjektet.

Trinn 4: Koble til Arduino-kretskortet





  1. Det første trinnet er å løsne alle nålekontaktene på kretskortene og seksjonskortene;
  2. Videre, på grunn av det faktum at 5V strøm og GND brukes av så mange brett og eksterne enheter, for pålitelighet ble to ledninger for 5V og GND loddet på kretskortet;
  3. Deretter ble en TLC5940 PWM-kontroller installert ved siden av de brukte kontaktene;
  4. Deretter kobles TLC5940-kontrolleren til i henhold til koblingsskjemaet;
  5. For å kunne bruke batteriet ble det installert en RTC-modul på kanten av kretskortet. Hvis du lodder det på midten av brettet, vil ikke pinnemarkeringene være synlige;
  6. RTC-modulen er koblet til i henhold til koblingsskjemaet;
  7. En automatisk lysstyrkekontroll (LDR) krets er satt sammen, du kan se den på lenken
  8. Ledningene til voltmeteret kobles ved å koble ledningene til pinne 6 og GND.
  9. På slutten ble 13 ledninger for LED-ene loddet (I praksis viste det seg at det var bedre å gjøre dette før du gikk videre til trinn 3).

Trinn 5: Kode

Koden nedenfor ble kompilert fra forskjellige deler av klokkekomponenter funnet på Internett. Den har blitt fullstendig feilsøkt og er nå fullt funksjonell, og noen ganske detaljerte kommentarer er lagt til. Men før du laster inn i mikrokontrolleren, bør du vurdere følgende punkter:

  • Før du blinker Arduino-fastvaren, må du fjerne kommentaren til linjen som angir tiden:
    rtc.adjust(DateTime(__DATE__, __TIME__))
    Etter å ha blinket kontrolleren med denne linjen (klokkeslettet er innstilt), må du kommentere den igjen og blinke kontrolleren igjen. Dette gjør at RTC-modulen kan bruke batteriet til å huske klokkeslettet hvis hovedstrømmen går tapt.
  • Hver gang du bruker "Tlc.set()" må du bruke "Tlc.update"

Trinn 6: Ytre ring

Den ytre klokkeringen ble 3D-printet med en Replicator Z18-skriver. Den festes til klokken ved hjelp av skruer på fronten av klokken. Nedenfor er en fil med en 3D-modell av ringen for utskrift på en 3D-printer.

Trinn 7: Sette sammen klokken


Arduino-mikrokontrolleren med all annen elektronikk ble festet til baksiden av klokken ved hjelp av skruer og muttere som avstandsstykker. Så koblet jeg alle lysdioder, analog voltmeter og LDR til ledningene som tidligere var loddet til kretskortet. Alle lysdioder er sammenkoblet med ett ben og koblet til VCC-pinnen på TLC5940-kontrolleren (et stykke ledning er ganske enkelt loddet i en sirkel).

Så langt er ikke alt dette særlig godt isolert fra kortslutninger, men arbeidet med dette vil fortsette i fremtidige versjoner.




Topp