Led klocka på arduino nano. Vi gör en elektronisk klocka på Arduino med våra egna händer. Klar klocka på Arduino

Bilden visar en prototyp som jag satte ihop för att felsöka programmet som kommer att hantera hela den här anläggningen. Den andra arduino nano i det övre högra hörnet av brödbrädan tillhör inte projektet och sticker ut där precis så, du behöver inte vara uppmärksam på den.

Lite om funktionsprincipen: Arduino tar data från DS323-timern, bearbetar den, bestämmer ljusnivån med hjälp av en fotoresistor, skickar sedan allt till MAX7219, och den lyser i sin tur upp de nödvändiga segmenten med önskad ljusstyrka. Med hjälp av tre knappar kan du också ställa in år, månad, dag och tid efter önskemål. På bilden visar indikatorerna tid och temperatur, som är taget från en digital temperatursensor

Den största svårigheten i mitt fall är att 2,7-tumsindikatorerna har en gemensam anod, och de var för det första tvungna att på något sätt bli vän med max7219, som är designad för indikatorer med en gemensam katod, och för det andra lösa problemet med deras strömförsörjning, eftersom de behöver 7,2 volt för glöd, vilket max7219 ensamt inte kan ge. Efter att ha bett om hjälp på ett forum fick jag svar.

Lösning i skärmdumpen:


En mikrokrets är ansluten till utgångarna på segmenten från max7219, som inverterar signalen, och en krets med tre transistorer är ansluten till varje utgång, som ska anslutas till den gemensamma katoden på skärmen, som också inverterar dess signal och ökar Spänning. Därmed får vi möjlighet att koppla in displayer med gemensam anod och matningsspänning på mer än 5 volt till max7219

Jag kopplade in en indikator för testet, allt fungerar, ingenting ryker

Låt oss börja samla.

Jag bestämde mig för att dela upp kretsen i 2 delar på grund av det enorma antalet hoppare i versionen som var åtskilda av mina krokiga tassar, där allt var på ett bräde. Klockan kommer att bestå av en displayenhet och en kraft- och kontrollenhet. Det beslöts att först hämta det senare. Jag ber esteter och erfarna radioamatörer att inte svimma på grund av den grymma behandlingen av delar. Jag har ingen lust att köpa en skrivare för LUT:s skull, så jag gör det på gammaldags vis - jag övar på ett papper, borrar hål efter mall, ritar banor med en markör och etsar sedan.

Principen att bifoga indikatorer förblev densamma som på.

Vi markerar positionen för indikatorerna och komponenterna med hjälp av en plexiglasmall gjord för bekvämlighet.

Markup process







Sedan, med hjälp av en mall, borrar vi hål på rätt ställen och provar alla komponenter. Allt passade perfekt.

Vi ritar stigar och etsar.




bada i järnklorid

Redo!
kontrollbord:


indikationstavla:


Styrkortet blev bra, spåret på displaykortet var inte kritiskt uppätet, det kan fixas, det är dags att löda. Den här gången förlorade jag min SMD oskuld och inkluderade 0805 komponenter i kretsen. Åtminstone löddes de första motstånden och kondensatorerna på plats. Jag tror att jag blir bättre på det, det blir lättare.
För lödning använde jag flussmedel som jag köpte. Att löda med det är ett nöje, nu använder jag alkoholkolofonium endast för konservering.

Här är de färdiga brädorna. Styrkortet har en plats för en Arduino nano, en klocka, samt utgångar för anslutning till displaykortet och sensorer (ett fotomotstånd för auto-ljusstyrka och en digital termometer ds18s20) och en strömförsörjning med justerbar utspänning (för stora sjusegmentsenheter) och för att driva klockan och Arduino, på displaykortet finns det monteringsuttag för displayer, uttag för max2719 och uln2003a, en lösning för att driva fyra stora sjusegmentsenheter och ett gäng byglar.




bakre styrkort

Bakre displaykort:

Hemsk smd installation:


Lansera

Efter lödning av alla kablar, knappar och sensorer är det dags att slå på allt. Den första lanseringen avslöjade flera problem. Den sista stora indikatorn tändes inte, och resten glödde svagt. Jag tog itu med det första problemet genom att löda benet på SMD-transistorn och med det andra - genom att justera spänningen som produceras av lm317.
DET ÄR LEVANDE!

Ett av de första projekten som nybörjare bygger med ett Arduino-bräda är en enkel klocka som håller tiden. I grund och botten är sådana klockor baserade på en RTC-modul (Real Time Clock) kopplad till Arduino. Idag finns elektroniska komponenter tillgängliga på marknaden olika modeller RTC:er som varierar i noggrannhet och pris. Vanliga modeller inkluderar DS1302, DS1307, DS3231.



Men du kan göra en klocka på Arduino utan att använda en RTC, speciellt om du inte kan få sådana moduler. Självklart blir noggrannheten i det här fallet låg, så projektet bör snarare betraktas som ett utbildningsprojekt.


Funktionsprincipen för sådana klockor är ganska enkel. Varje gång du slår på den här Arduino-klockan måste du ställa in den på den aktuella tiden, precis som vilken analog klocka som helst. Det är verkligen bättre att inte använda sådana klockor i din Vardagsliv med sin aktivitet under lång tid utan omstart och ytterligare konfiguration, eftersom avsynkronisering med den aktuella tiden under långvarig drift kan vara betydande.


Denna klocka kan monteras på en vanlig brödbräda, eftersom den inte kräver många komponenter. Vår huvudlänk här kommer att vara Arduino Uno-brädet. För att visa tiden kan du ta en 16x2 LCD-skärm. För att ändra tidsinställningarna måste du ansluta två knappar (för timmar och minuter). Knapparna är anslutna till Aduino via 10KΩ motstånd. För att ändra ljusstyrkan på displayen behöver du en 10 kOhm potentiometer. Anslutningsschemat för alla dessa komponenter till Arduino Uno-kortet presenteras nedan.



Nu måste du programmera Arduino. En enkel kod (skiss) som låter dig visa tiden på LCD-skärmen ges nedan.


#omfatta LiquidCrystal lcd(12,11,5,4,3,2); int h=12; int m; int s; int flagga; int TID; const int hs=8; const int ms=9; int tillstånd1; 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(flagga<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("PM"); if(flagga==24)flagga=0; fördröjning(1000); lcd.clear(); if(s==60)( s=0; m=m+1; ) if(m==60) (m=0; h=h+1; flagga=flagga+1; ) if(h==13 ) (h=1; ) lcd.setCursor(0,1); lcd.print("HA EN TREVLIG DAG"); //-------Tid // inställning-------// state1=digitalRead(hs); if(tillstånd1==1) (h=h+1; flagga=flagga+1; if(flagga<12)lcd.print("AM"); if(flag==12)lcd.print("PM"); if(flag>12)lcd.print("PM"); if(flagga==24)flagga=0; om(h==13)h=1; ) state2=digitalRead(ms); if(tillstånd2==1)( s=0; m=m+1; ) )

   Tack för ditt intresse för informationsprojekt hemsida.
   Om du vill att intressant och användbart material ska publiceras oftare och med mindre reklam,
   Du kan stödja vårt projekt genom att donera valfritt belopp för dess utveckling.

Klocka med LED-bakgrundsbelysning och pulserande minutvisare på en Arduino-mikrokontroller
Denna unika klocka med LED-bakgrundsbelysning och pulserande minutvisare gjordes med hjälp av TLC5940 PWM-kontrollchipet. Dess huvudsakliga uppgift är att utöka antalet PWM-modulationskontakter. En annan funktion hos denna klocka är att den har omvandlat en analog voltmeter till en enhet som mäter minuter. För att göra detta trycktes en ny våg på en vanlig skrivare och klistrades ovanpå den gamla. Som sådan räknas inte den 5:e minuten, det är bara att under den femte minuten visar tidsräknaren pilen som pekar mot slutet av skalan (utanför skalan). Huvudkontrollen är implementerad på Arduino Uno mikrokontroller.

För att säkerställa att klockans bakgrundsbelysning inte lyste för starkt i ett mörkt rum, implementerades en krets för att automatiskt justera ljusstyrkan beroende på belysningen (ett fotomotstånd användes).

Steg 1: Nödvändiga komponenter



Här är vad du behöver:

  • 5V DC analog voltmetermodul;
  • Arduino UNO mikrokontroller eller annan lämplig Arduino;
  • Arduino kretskort (protokort);
  • DS1307 realtidsklocka (RTC) modul;
  • Modul med PWM-styrenhet TLC5940;
  • Kronblad LED-bakgrundsbelysning – 12 st.;
  • Komponenter för montering av en krets för automatisk ljusstyrka (LDR).

För produktionen av vissa andra komponenter i projektet är det också önskvärt att ha tillgång till en 3D-skrivare och en laserskärningsmaskin. Det antas att du har denna tillgång, så instruktionerna kommer att innehålla tillverkningsritningar i lämpliga skeden.

Steg 2: Slå




Urtavlan består av tre delar (lager) skurna på en laserskärmaskin av 3 mm MDF-plåt, som fästs ihop med bultar. En platta utan slitsar (nederst till höger i bilden) placeras under en annan platta för att placera lysdioderna (nedre till vänster). Sedan placeras individuella lysdioder i lämpliga spår och frontpanelen läggs ovanpå (överst i figuren). Fyra hål borras längs urtavlans kant, genom vilka alla tre delar är bultade samman.

  • För att testa prestandan hos lysdioderna i detta skede användes ett CR2032 knappcellsbatteri;
  • För att fästa lysdioderna användes små remsor av tejp, som limmades på baksidan av lysdioderna;
  • Alla LED-ben var förböjda i enlighet därmed;
  • Hålen längs kanterna borrades om, genom vilka bultningen utfördes. Det visade sig att detta var mycket bekvämare.

Teknisk ritning av urtavlans delar finns på:

Steg 3: Designa kretsen



I detta skede utvecklades det elschema. Olika läroböcker och guider användes för detta ändamål. Vi kommer inte att fördjupa oss i denna process; de två filerna nedan visar den färdiga elektriska kretsen som användes i detta projekt.

Steg 4: Anslut Arduino-kretskortet





  1. Det första steget är att lossa alla nålkontakter på kretskorten och sektionskorten;
  2. Vidare, på grund av det faktum att 5V-ström och GND används av så många kort och kringutrustning, för tillförlitlighet löddes två ledningar för 5V och GND på kretskortet;
  3. Därefter installerades en TLC5940 PWM-kontroller bredvid de använda kontakterna;
  4. Därefter ansluts TLC5940-styrenheten enligt kopplingsschemat;
  5. För att kunna använda batteriet installerades en RTC-modul på kanten av kretskortet. Om du löder den i mitten av brädan kommer stiftmarkeringarna inte att synas;
  6. RTC-modulen har anslutits enligt anslutningsschemat;
  7. En krets för automatisk ljusstyrka (LDR) har monterats, du kan se den på länken
  8. Ledningarna för voltmetern ansluts genom att ansluta ledningarna till stift 6 och GND.
  9. I slutet löddes 13 ledningar för lysdioderna (I praktiken visade det sig att det var bättre att göra detta innan du gick vidare till steg 3).

Steg 5: Kod

Koden nedan har sammanställts från olika delar av klockkomponenter som finns på Internet. Det har blivit helt felsökt och är nu fullt fungerande, och några ganska detaljerade kommentarer har lagts till. Men innan du laddar in i mikrokontrollern, överväg följande punkter:

  • Innan du flashar Arduino-firmwaren måste du avkommentera raden som ställer in tiden:
    rtc.adjust(DateTime(__DATE__, __TIME__))
    Efter att ha blinkat kontrollenheten med denna rad (tiden är inställd), måste du kommentera den igen och blinka kontrollenheten igen. Detta gör att RTC-modulen kan använda batteriet för att komma ihåg tiden om strömförsörjningen bryts.
  • Varje gång du använder "Tlc.set()" måste du använda "Tlc.update"

Steg 6: Ytterring

Den yttre klockringen var 3D-utskriven med en Replicator Z18-skrivare. Den fästs på klockan med skruvar på framsidan av klockan. Nedan finns en fil med en 3D-modell av ringen för utskrift på en 3D-skrivare.

Steg 7: Montera klockan


Arduino-mikrokontrollern med all övrig elektronik var säkrad på baksidan av klockan med skruvar och muttrar som distanser. Sedan kopplade jag alla lysdioder, analog voltmeter och LDR till ledningarna som tidigare var lödda till kretskortet. Alla lysdioder är sammankopplade med ett ben och anslutna till VCC-stiftet på TLC5940-kontrollern (en bit tråd löds helt enkelt i en cirkel).

Än så länge är allt detta inte särskilt väl isolerat från kortslutning, men arbetet med detta kommer att fortsätta i framtida versioner.




Topp