Termometr – od arduino do atmegi

Termometr – od arduino do atmegi

Witam was drodzy majsterkowicz, dzisiaj chciałbym podzielić się z wami moim doświadczeniem z przenoszenia prototypu termometru z arduino na atmege 8 lub 328 (Pan Łukasz mi to zaproponował). Ten artykuł pokaże wam jak przenieść projekt, który najpierw został opracowany za pomocą arduino a potem przeniesiony na atmege 8 lub atmege 328.

Termometr cyfrowy arduino

Potrzebne części do wykonania projektu:

Schemat połączeń dla arduino:

Termometr cyfrowy dla arduino - połączenia

Kod:

Kod dla termometru z jednym czujnikiem temperatury:

Przenosimy termometr na mikrokontroler:

atmega328

Strona z powyższym schematem w pełnej rozdzielczości.

Niestety dla atmegi 8 nie ma takiego pięknego schematu, dlatego będziemy musieli zadowolić się tym z arduino.cc

aTmega 8 piny

Na powyższych schematach widać które piny na mikrokontrolerze odpowiadają określonym pinom w ardnuio.

Wgrywanie bootloadra:

Najłatwiej jest jak zakupimy mikrokontroler z wgranym bootloaderem. Jeśli zakupiłeś mikrokontroler bez wgranego bootloadera wykonaj poniższe czynności.

Na początek trzeba ściągnąć bootloader dla danego mikrokontrolera i rozpakować go do katalogu/hardware/arduino/bootloaders/atmega/:

Bootloader dla ATmega8 i ATmega8

Booatloader dla ATmega328P

 Następnie trzeba dodać na końcu pliku /hardware/arduino/boards.txt następujący wpis:

Dla innych typów mikrokontrolera trzeba znaleźc odpowiednio zmodyfikowany plik w internecie.

Jeżeli zakupiłeś mikrokontroler z wgranym bootloaderem pomijasz tą cześć.

  1.  Otwieramy arduino IDE
  2. plik / przykłady/ arduino ISP
  3. wgrywamy program na arduino
  4. narzędzia /płytka – wybieramy nasz mikrokontroler
  5. narzędzia / programator Arduino as ISP
  6. podłączamy mikrokontroler według poniższej listy
  7. narzędzai /wypal bootloader
  8. Po tej operacji będziemy mieć możliwość programowania mikrokontrolerów ATmega8 z taktowaniem 8 MHz, oraz ATmega328P z taktowaniem 8 MHz lub 16 MHz.

Przenoszenie na mikrokontroler:

Podłączmy mikrokontroler według poniższej listy:

aTmega 8:

Arduino pin 10 – atmega pin 1

Arduino pin 11 – atmega pin 17

Arduino pin 12 – atmega pin 18

Arduino pin 13 – atmega pin 19

aTmega 328:

Arduino pin 10 atmega pin 1

Arduino pin 11 atmega pin 17

Arduino pin 12 atmega pin 18

Arduino pin 13 atmega pin 19

 

Teraz w arduino IDE musimy dokonać jednej zmiany:

Narzędzia > płytka > wybieramy nasz mikrokontroler, następnie narzędzia > programator Arduino as ISP. Wgrywamy program na mikrokontroler i podłączmy według powyższych schematów.

Przydatne linki

Ocena: 4/5 (głosów: 61)

Podobne posty

22 komentarzy do “Termometr – od arduino do atmegi

    • Jak chcesz podpinać po jednej diodzie (takiej normalnej – ciągnącej 20mA) do każdego wyjścia, to nie ma problemu. Jak byś chciał podpiąć do jednego wyjścia kilka diod, to musisz je podłączyć za pośrednictwem tranzystora i zasilać osobno.

      Odpowiedz
  • Uważam, że ten artykuł już był, tyle że w wersji z wysyłaniem danych przez internet, tu jest to samo tyle, że bez tego modułu internetu, więc chwilowo powstrzymam się od oceny.
    Dodaj coś w rodzaju np. wyłączenia wyświetlacza w nocy(czujnik oświetlenia) i wtedy ocenię.

    Odpowiedz
  • Było … !
    Niemniej jednak dla żółtodzioba uproszczona wersja tamtego termometra się przyda.
    Gdybyś dodał jakieś tak zwane “bajery” było by zacnie i 5 piąteczka by poleciała :)
    Zrób coś spontanicznego niekoniecznie przydatnego w termometrze ale coś co zwróci uwagę.
    Pozdrawiam

    Odpowiedz
  • Może troszkę off-topic ale jak się robi takie ładne schematy z płytką testową ? wygląda bardzo przejrzyście ładnie

    Odpowiedz
  • Ciekawi mnie, czemu w rozpisce pinów rozgraniczyles atmege8 i 328, skoro mają one dokładnie tak samo wyprowadzone piny….

    Odpowiedz
  • Jestem laikiem w Arduino więc proszę o wyrozumiałość, mam pytanie. Dlaczego w kodzie programu w miejscu gdzie wyliczamy temperaturę występują akurat takie a nie inne współczynniki, mam na myśli to miejsce:
    “tempe = (5.0 tempe 100.0)/1024.0;
    tempe2 = (5.0 tempe2 100.0)/1024.0;”
    Zmontowałem cały termometr jednak wyświetla mi się temperatura 46 stopni a gdy czujnik ogrzewam to temperatura nie rośnie tylko spada. Proszę o pomoc i wyrozumiałość jeżeli w jakiś sposób wykazałem się rażącą niewiedzą.

    Odpowiedz
  • Witam wszystkich!
    Przepraszam, że w ten sposób, ale artykulik nie nadaje się chyba do publikacji… Pokazane jest jak podłączyć termometry i LCD do arduino a nie do mikrokontrolera ATMEGA328 czy ATMEGA8 jak w tytule i wstępie 
    Wygląda to tylko na „zapowiedź” teorii, że się da. Gdy próbuje się to zrobić z gołym mikrokontrolerem, to trzeba zapewnić poza paroma kabelkami jeszcze odpowiednie warunki pracy dla mikrokontrolera. Czyli filtrowanie zasilania, samo zasilanie itd…
    Śmiem twierdzić, że dla nikogo ten artykuł nie może być pomocny. Do pomiaru temperatury używany jest przetwornik Analogowo-Cyfrowy mikrokontrolera (termometry LM35 są przecież analogowe). Wyświetlacz podłączony jest do portu „B” mikrokontrolera. Nikt nawet nie wspomniał, że aby to poprawnie działało, potrzebny jest jeszcze: stabilizator napięcia, dławik, ze dwa kondensatory, kilka rezystorów…
    Skąd początkujący ma to wszystko wiedzieć, nie mówiąc już o tym, jak ma to wszystko podłączyć do kupy, by działało… W tym projekcie trzeba zapewnić prawidłowe zasilanie i filtrowanie co ma kolosalne znaczenie dla działania przetwornika analogowo – cyfrowego i portu B, który jest zasilany z pary analogowej zasilania.
    Przepraszam, że to wszystko w ten sposób pokazuję, ale niestety, ten artykuł w tej postaci jest wręcz szkodliwy…
    Poza tym, skoro i tak potrzebujemy zasilania z arduino do gołej atmegi, to po co się męczyć na samym mikrokontrolerze, skoro i tak angażuję do pracy arduino?
    I muszę wszystkich przestrzec przed tym artykułem! Nigdzie w opisie podłączenia pinów ATMEGA ARDUINO nie jest wykazane podłączenie MAS! A to jest niedopuszczalne!
    Jednym słowem, nie jest tutaj pokazane jak przenieść projekt z arduino na mikrokontroler, jak to jest we wstępie.
    Pozdrawiam, Daniel.

    Odpowiedz
  • Nadaje się do atmega168 przy wprowadzeniu kilku zmian w pliku boards.txt:

    1. trzeba zmienić bootloader na odpowiedni do atmega168,
    2. atmega168 ma 16k pamieci wiec trzeba odpowiednio zmienić maximum_size
    3. trzeba uważać gdy ma się atmega168p – AFAIK nie ma bootloaderow dla tego uC, są dla atm168! Jedna małą literka a wprowadza sporo zamieszania. Obejście tego to przy wypalaniu bootloadera wpisać mcu=atmega168p, a potem już z boatloaderm zmienić to na mcu=atmega168. Inny sposób to wymusić na avrdude opcję -F, ale to jest tak pokręcone że nie chce mi się opisywać.
    Odpowiedz
  • Czemu po wgraniu bootloadera do Atmegi 328p przestał działać PWM??
    Wejścia i wyjścia cyfrowe działają, analog write do 127: stan niski, od 128: wysoki.

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?