Lampa z czujnikiem światła z ATtiny85, 12 V diodami LED i regulatorami napięcia L7805: 5 kroków

Lampa z czujnikiem światła z ATtiny85, 12 V diodami LED i regulatorami napięcia L7805: 5 kroków

Spisu treści:

Anonim

Zawsze lubiłem interaktywne dzieła sztuki i zdałem sobie sprawę, że dzięki mikrokontrolerom, takim jak Arduino, mogę również uczynić moją sztukę interaktywną. Zacząłem więc eksperymentować i wreszcie skończyłem projekt.

Ponieważ najlepszym sposobem na upewnienie się, że coś rozumiesz, jest wyjaśnienie, postanowiłem uczynić to Instruktażowym.

Lampa ma trzy diody LED, które zapalają się jedna po drugiej, gdy zmniejsza się światło w pomieszczeniu. Zrobiłem obwód za pomocą Arduino Uno, ale doszedłem do wniosku, że ten mikrokontroler jest za duży na taką lampę, więc spojrzałem na Arduino Mini Pro, kiedy znalazłem samouczek o tym, jak zrobić taki projekt z ATtiny85 i postanowiłem zrób z tym ostatni tor. Opublikuję wszystkie tutoriale, które uznałem za przydatne podczas tworzenia tego projektu w ostatnim kroku.

Mam nadzieję, że uznasz to za przydatne i jeśli masz jakieś sugestie dotyczące poprawy, chciałbym je usłyszeć.

Kieszonkowe dzieci:

Krok 1: Co jest potrzebne do stworzenia obwodu?

  • Płyta Arduino
  • ATtiny 85
  • Deska do krojenia chleba
  • Przewody rozruchowe
  • 3 x 12 V diody LED
  • 3 gniazda G4
  • Rezystory 3x 1 Ohm
  • Czujnik światła
  • 1x Kondensatory odsprzęgające elektrolitycznie - 10uF / 25V
  • 1x rezystor 10 kΩ
  • 3x regulator napięcia L7805
  • Bateria 9V
  • Złącze baterii 9V
  • Taśma izolacyjna

Krok 2: Programowanie ATtiny z Arduino

Pierwszą rzeczą, którą musisz zrobić, to przesłać do programu Arduino Arduino ISP które znajdziesz w przykładach dołączonych do Arduino IDE. Ten program pozwoli ci używać Arduino do programowania mikrokontrolera AVR, takiego jak ATtiny45 lub 85.

Do tego kroku potrzebny będzie kondensator Arduino, Attiny85, 12uF / 25V, mała deska do krojenia chleba i przewody połączeniowe.

ATtiny85 ma 8 pinów. Jeśli spojrzysz na mikroczip, zobaczysz, że ma kropkę lub półkole na jednym końcu.

Gdy patrzysz na ten koniec z góry, szpilka po lewej stronie to pin Reset, obok niego Pin 3, Pin 4 i Ground. Po drugiej stronie, zaczynając od pinezki przeciwnej do Reset, znajdują się VCC, Pin 2, Pin 1 i Pin 0. Zobacz diagram kołków tutaj.

Kondensator powinien podłączyć masę Arduino do Reset Arduino. Zobacz na kondensatorze białą linię - pin na tej linii powinien być podłączony do ziemi. To także krótszy pin kondensatora.

Podłącz Arduino (po lewej) do ATtiny85 (po prawej) w następujący sposób:

  • Ziemia do ziemi
  • 5 V do VCC
  • Pin 10, aby zresetować
  • Pin 11 do Pin 0
  • Pin 12 do Pin 1
  • Pin 13 do Pin 2

Przed przesłaniem do programu na ATtiny musisz:

  • pobierz bibliotekę
  • utwórz folder Sprzęt w folderze Scketchbook na komputerze
  • wklej bibliotekę do tego folderu
  • wybierz z Tablic w menu Arduino IDE, które mówi ATtiny85 (w / Arduino jako ISP)
  • wybierz z Programmer - Arduino jako ISP

Teraz możesz przesłać żądany program.

Po raz pierwszy próbowałem przesłać program, otrzymałem ten błąd: avrdude: usbdev_open (): nie znalazł żadnego urządzenia usb „usb”. Okazało się, że nie wybrałem Arduino jako ISP jako programista.

Jeśli pojawi się błąd:

  • Sprawdź, czy przewody są prawidłowo podłączone
  • Upewnij się, że program ISP jest zainstalowany na Arduino
  • Sprawdź, czy wybrano prawą płytkę, port szeregowy i programator.

(niekoniecznie w tej kolejności)

Krok 3: Obwód z czujnikiem światła i 12 V diodami LED

Gniazdo LED G4 nie zawsze jest wyposażone w przewody, a przewody nie są odpowiednie do połączenia z płytą typu breadboard, więc gdy próbujesz obwodu, aby upewnić się, że działa, musisz dodać przewód połączeniowy do przewody gniazdka. Możesz po prostu przetoczyć jeden koniec przewodu połączeniowego razem z końcem przewodu gniazda i założyć wokół niego taśmę izolacyjną.

Regulator napięcia L służy do tego, aby obwód zasilany napięciem 5V był w stanie oświetlić 12V diody LED. Będziesz potrzebował regulatora dla każdej używanej diody LED. Używam trzech diod LED. Nie wiem, czy istnieje limit liczby diod LED, które można podłączyć w ten sposób, niż limit podany przez liczbę pinów, w tym przypadku cztery, ponieważ mam także czujnik. Ponieważ nie lubię liczb parzystych, mam tylko diody LED, więc trzy regulatory. Ma 3 piny, które wyglądają od lewej do prawej: wejście, masa i wyjście.

  • Pin wejściowy regulatora łączy się z wejściem diody LED * i przez rezystor 1 Ohm do styku ATtiny45
  • Szpilka uziemiająca regulatora łączy się z masą diody LED *
  • Wyjście łączy się z masą obwodu

Alternatywny:

Użyj TIP 122 (cegła), który jest połączony w następujący sposób:

  • Po stronie z blokiem śrubowym z dwoma pozycjami połącz gniazdo G4 *
  • Z drugiej strony podłącz VIN do źródła zasilania 12V
  • Podłącz IN do cyfrowego pin
  • Podłącz jeden GND do źródła zasilania 12V
  • a drugi GND do ziemi na ATtiny

* Piny diod LED 12 V mogą być uziemione lub wejściowe, dzięki czemu można je podłączyć w dowolny sposób.

Fotorezystor, który wykryje, ile światła znajduje się w pomieszczeniu (jeśli umieścisz czujnik po przeciwnej stronie niż źródło światła, wykryje pokój jako ciemny, nawet jeśli jest światło), ma dwa piny, takie jak te diody LED mogą być albo uziemione, albo wejściowe. Podłącz pin do uziemienia obwodu, a drugi do rezystora 10k Ohm do pinów ATtiny (w tym przypadku pin 3).

ATtiny jest połączone przez:

  • VCC (naprzeciwko bolca Reset) do źródła obwodu
  • pin uziemienia do masy obwodu
  • pin 3 do fotorezystora
  • pin 0,1 i 4 z rezystorami 1 Ohm do regulatorów napięcia 7805, które zamieniają prąd 5V pochodzący z ATtiny45 w prąd 12V konieczny do zapalenia diod LED.

Źródłem tego obwodu jest bateria 9V.

Krok 4: Kodeks

int Led1 = 1;

int Led2 = 0;

int Led3 = 4; // inicjalizuj szpilki LED

int lightSensorPin = 3; // zainicjuj pin czujnika światła

int analogValue = 0; // zainicjuj wartość, która będzie przechowywać informacje z czujnika

Void setup () {

pinMode (Led1, OUTPUT);

pinMode (Led2, OUTPUT);

pinMode (Led3, OUTPUT); // ustaw szpilki LED jako wyjścia

}

void loop () {

analogValue = analogRead (lightSensorPin); // odczytaj wartość z czujnika

if (analogValue <50) {// jeśli jest ciemno lub światła są włączone

digitalWrite (Led1, HIGH);

digitalWrite (Led2, HIGH);

digitalWrite (Led3, HIGH);

}

else if (analogValue <= 100) {// jeśli jest trochę więcej światła, tylko dwa są włączone

digitalWrite (Led1, HIGH);

digitalWrite (Led2, HIGH);

digitalWrite (Led3, LOW);

}

else if (analogValue <= 150) {// jeśli jest jeszcze więcej światła, tylko jedna dioda LED jest włączona

digitalWrite (Led1, HIGH);

digitalWrite (Led2, LOW);

digitalWrite (Led3, LOW);

}

else {// jeśli jest jeszcze więcej światła, wszystkie światła są wyłączone

digitalWrite (Led1, LOW);

digitalWrite (Led2, LOW);

digitalWrite (Led3, LOW);

}

opóźnienie (200); // poczekaj chwilę przed ponownym odczytaniem czujnika

}

Przed przesłaniem kodu do ATtiny45, sprawdź go za pomocą Arduino, ponieważ jeśli coś jest nie tak, łatwiej będzie go dostosować.

Niektóre zmiany będą konieczne, ponieważ styki Arduino i ATtiny45 nie pokrywają się. Na przykład mój kod zmieni się w następujący sposób:

int Led1 = 7;

int Led2 = 8;

int Led3 = 4;

int lightSensorPin = A0;

Reszta jest taka sama.

Możesz dodać a Serial.begin (9600); w funkcji konfiguracji i a Serial.println (analogValue); w funkcja pętli, aby sprawdzić wartości, które czujnik powraca w określonych sytuacjach, i możesz dostosować wartości, dla których diody LED włączają się lub wyłączają.

Obwód, który widziałeś powyżej, pozostaje taki sam, z wyjątkiem pinów podłączonych do Arduino do 4,7,8 zamiast 0,1,4 dla diod LED i A0 zamiast 3 dla czujnika światła.

Krok 5: Zasoby

Oto kilka samouczków, które uznałem za przydatne podczas pracy nad tym projektem:

  • ATtiny:
  • Film, który dał mi pomysł:
  • Film, który wyjaśnił mi wszystko:
  • Jeśli wolisz czytać, słuchaj: http: //www.hackster.io/arjun/programming-attiny85 …
  • Korzystanie z regulatorów napięcia:
  • http: //tinkeringarduino.blogspot.com/2014/03/servo …

  • Fotorezystor:

  • http: //www.instructables.com/id/Arduino-Photoresi …