Arduino bez płytki Arduino Kompletne Arduino Uno jest -x droższe od samego mikrokontrolera, Do danego układu niekoniecznie potrzebne są wszystkie oferowane przez moduł Arduino Uno urządzenia, np. Systemy Wbudowane Port szeregowy przez USB Słabe stabilizatory zasilania Słaby stabilizator.v Arduino dołączanie urządzeń Wersja 0 mgr inż. Marek Wilkus Wydział Inżynierii Metali i Informatyki Przemysłowej AGH Kraków http://home.agh.edu.pl/~mwilkus Rozwiązanie: Użycie samego chipu ATMega (lub ATMega kb na program, chip jeszcze tańszy) we własnym układzie Czyli... Co musimy mieć, aby uruchomić uc? Mikrokontroler Zasilanie 5V, Źródło częstotliwości taktowania (6MHz, względnie MHz), Podciągnięcie pinu RESET do stanu wysokiego, Kondensator odsprzęgający. Na płytce... Eliminowanie modułu z projektu Zapisujemy do Arduino końcową wersję programu, Po skończonym testowaniu z modułem wykonujemy i testujemy podstawowy układ bez modułu: Podstawa: Zapewnienie zasilania, taktowania, rezystora i kondensatorów, Tłumaczenie pinów Arduino na piny ATMega, odpowiednie podłączenia, Próba na płytce stykowej z układem usuniętym z Arduino, Wykonanie końcowej wersji układu. 5 6
A co z Arduino? Najprostszy programator: bsd Programowanie nowego, czystego układu AVR jako Arduino przy użyciu istniejącego modułu Arduino ze szkicem ArduinoISP: Działa przy użyciu portu równoległego, Bardzo prosta budowa, Działa niezależnie od Arduino przyjmuje pliki HEX bootloadera oraz fuse bity, Program avrdude działa dla każdej platformy (w Linuksie niezbędne uprawnienia administratora). Programator bsd ATMega LPT Vcc 5 /RESET SCK MOSI MISO 0 GND Plik.hex? Fusebity? Plik hardware/arduino/avr/boards.txt w instalacji Arduino: Użytkowanie przy pomocy programu avrdude: Czyścimy układ: uno.name=arduino/genuino Uno avrdude -p mp -c bsd -e uno.vid.0=0x uno.pid.0=0x00 uno.vid.=0x uno.pid.=0x000 uno.vid.=0xa0 uno.pid.=0x00 uno.vid.=0x uno.pid.=0x0 Wgrywamy plik HEX: avrdude -p mp -c bsd -U flash:w:cpu.hex Ustawiamy fuse bity: avrdude -p mp -c bsd -u -U lfuse:w:0xff:m -U hfuse:w:0xc:m Od tej pory układ nie będzie widoczny dla programatora dopóki nie dostarczymy źródła częstotliwości! uno.bootloader.tool=avrdude uno.bootloader.low_fuses=0xff uno.bootloader.high_fuses=0xde uno.bootloader.extended_fuses=0x05 uno.bootloader.unlock_bits=0xf uno.bootloader.lock_bits=0x0f uno.bootloader.file=optiboot/optiboot_ atmega.hex uno.build.mcu=atmegap uno.upload.tool=avrdude uno.build.f_cpu=6000000l uno.upload.protocol=arduino uno.build.board=avr_uno uno.upload.maximum_size=56 uno.upload.maximum_data_size=0uno.build.core=arduino uno.build.variant=standard uno.upload.speed=500 Arduino więcej portów I/O 0 Układy serii Realizują proste funkcje logiczne: bramki, liczniki, rejestry. Poziomy TTL Są cegiełkami do budowy bardziej złożonych układów Bezpośrednio podłączane Podciągnięte wejścia Wyjścia normalne i z otwartym kolektorem Szeroko dostępne w różnych wykonaniach Użycie pinów analogowych Liczniki Multipleksery Rejestr przesuwny Zatrzaski Drugi uc 55 Komercyjne ekspandery LS00
Układy serii Układy serii xx a seria 0xx Poziomy CMOS, Podobne funkcje, inne wyprowadzenia, Zasilanie do 5V, Mogą je uszkodzić wyładowania elektrostatyczne (szczególnie starsze układy), Do połączenia z wymagają rezystora podciągającego do poziomu wysokiego CMOS. Kompatybilne z TTL i CMOS: HCT... Seria do czego służy układ? Nota katalogowa Tablica prawdy Schemat logiczny http://www.globalspec.com/reference/0/0/appendix--pinconfiguration-of--series-integrated-circuits Użycie wyprowadzeń analogowych Nie są potrzebne dodatkowe biblioteki, Nie jest potrzebny dodatkowy sprzęt, Samo programowanie, Zastosowania Eksperymenty - Brak PWM, - Kosztem ADC, - Tylko 6 pinów LS 5 Licznik 6 Multiplekser Rozszerzanie wyjść, Tanie i dostępne układy Dużo wyjść (np. HC50 szt) Linia OE. Zarówno wejścia jak i wyjścia Możliwy przesył szeregowy danych z kilku pinów. Możliwe przełączanie przełączanych sygnałów łączenie kaskadowe. - Tylko wyjścia, - Potrzebny czas na wyklikanie stanu, - Dodatkowy układ. - Szybkość działania, - Wysoka cena układów o dużej szybkości.
Rejestr przesuwny Przełączniki Proste przełączanie dużej ilości wyprowadzeń, Możliwy wybór kierunku, Możliwość znacznego rozszerzania wyjść, Serial input - parallel output, Niska cena. - Wyższa cena układów, - Mniejsza popularność, - Konsekwencje w przypadku uszkodzenia - Tylko wyjścia - Konieczność załadowania stanu. - Dodatkowy układ (można je łączyć w kaskadę). Zatrzaski 0 Drugi uc Szybkie przełączanie wyprowadzeń Multipleksowanie Łatwość użycia Biblioteki Wejście/wyjście, ADC, PWM. - Skomplikowane sterowanie - Możliwość uszkodzenia - Tylko jeden kierunek - Wymaga oprogramowania - Cena - Niższa szybkość. 55 i podobne Programowalny sterownik Wejście i wyjście, Programowanie przez zapis wartości piny I/O Dodatkowe funkcje (np. PWM), Łatwiejsze programowanie, Najczęściej tylko jeden układ. - Wymagania mikroprocesorowe, nie dla mikrokontrolera (konieczność emulacji sygnałów), - Niska prędkość, - Wyższa cena układów - Często niska wydajność prądowa - Wysoka cena - Specjalizowany układ - Problemy z przyszłą dostępnością.
Jak użyć mniej pinów? Klawiatura Komercyjne ekspandery Łatwość programowania Gotowe biblioteki Łatwe podłączenie Dodatkowe interfejsy - Bardzo wysokie ceny - Wewnątrz jest któreś z omawianych rozwiązań. 5 Klawiatura: Lepsze rozwiązanie 6 Klawiatura: Pin analogowy KEY KEY Do Arduino ANALOG IN Klawiatura: Ekstremalne rozwiązanie (RC) Wyjścia: Multipleksowanie wyjść Zamiast x= wyjść użyte =. Możliwość dalszego zmniejszania wyjść: np. wejścia wyświetlaczy () zapis na bitach, użycie dekodera. (Eizo F0 schematic) http://hackyourmind.org 0
Urządzenia wyjścia Urządzenia wyjścia Przekaźnik, odbiorniki do ok. mocy tranzystora: Układy Darlingtona: Sterowanie silnikiem krokowym: np. ULN0. uc 6 5 0 Sterowanie N00 BC5 K Zasilanie silnika Silniki krokowe Jak to działa? Wał jest namagnesowany w odpowiedni sposób, W przeciwieństwie do liniowych, możliwe jest przestawienie o ustalony kąt, Uaktywniane są kolejne elektromagnesy, Magnes na wale jest przyciągany przez jeden elektromagnes, a odpychany przez inny co powoduje obrót o jeden krok. Moment jest (w przedziale roboczym) odwrotnie proporcjonalny do prędkości, Wymagają znacznych prądów (więc i sterowników), Możliwa praca wyłącznie na przyciąganie - mniejszy moment, łatwiejsze sterowanie. Łatwa dostępność z odzysku drukarki, napędy CD/FDD, skanery, Biblioteki do ich obsługi są w Arduino, a sterowniki są proste w budowie. Poruszane są przez doprowadzenie prądu do odpowiednich uzwojeń w prawidłowej kolejności, silniki takie mają..6 uzwojeń. Źródło: Wikimedia comons Rodzaje silników krokowych Sterownik silnika Bipolarne Silniki unipolarne: wyprowadzenia 6 wyprowadzeń Unipolarne,, 5 wyprowadzeń 5 Żródło: Dokumentacja Arduino https://www.arduino.cc/en/reference/stepper 6
Sterownik silnika Sekwencja sterowania Zauważmy, że zawsze: Dla pinów: Silniki bipolarne: C 0!= C Step C0 C C C 0 0 0 0 0 0 0 0 Układ LD: C!= C Możemy więc użyć tylko pinów! Inwerter:...lub układ LS0 (6x inwerter) Biblioteka stepper Urządzenia wyjścia #include <Stepper.h> Tyrystor/triak sterowanie prądem zmiennym: Stepper mystepper(00,,, 0, ); Piny, do których podłączono sterownik (, lub 5 pinów) Ilość kroków/obrót void setup() { mystepper.setspeed(60); } uc Prędkość (~obr/min) void loop() { mystepper.step(); delay(0); } Ilość kroków (może być ujemna) 6 5 0 SEPARACJA GALWANICZNA Źródło: CNC Router Source 0 Separacja galwaniczna: Transoptor (DC), Optotriak (AC) Podłączenie: Jak LED (separacja wyjścia) Jak łącznik (separacja wejścia) Dziękuję za uwagę Używane do zabezpieczenia przed: Wysokim napięciem Uszkodzeniem portu Pętlą masy Pamiętamy o ograniczeniu prądu!