poniedziałek, 21 czerwca 2021

Player AY-3-8912 na Arduino

W moich zasobach zostały mi 2 układy AY-3-8912, jest to 3-kanałowy programowalny generator dźwięku zaprojektowany przez firmę General Instrument wykorzystywany w popularnych komputerach ZX Spectrum, MSX, Atari ST, Amstrad CPC. 

Postanowiłem ożywić ten układ i wykorzystać go do odtwarzania muzyki z retro komputerów, tutaj z pomocą przychodzi popularne Arduino. 

Do budowy wykorzystałem: 
1. Arduino Mini Pro 
2. Układ AY-3-8912 
3. Podstawka DIL-28 i DIL16 
4. Czytnik kart SD dla Arduino 
5. Wyświetlacz OLED SSD1306 
6. Układ 74HC595 - rejestr przesuwny 
7.Płytka uniwersalna 6x8 cm 
8. Rezystory 1K, 470R, 4.7K 
9. Kondensatory 10 nF i 2.2 nF 
10. Przełącznik Tact Switch

Jak wyjście dźwięku zastosowałem przewód z 2 wtykami typu chinch.

Układ połączeń jest jak na zdjęciu niżej.
Piny układu AY-3-8912  łączymy od DA 0 do DA 7 odpowiednio do pinów  Q0 do Q7 układu 74HC595.

Dodatkowo 0E układu 74HC595 łączymy do masy GND, a MR do VCC.

Dalej:
DS do 6 pinu Arduino, 
ST_CP do 5 pinu Arduino 
SH_CP do 4 pinu Arduino.

Piny układu AY: 
BC1 do pinu 8 Arduino
BDir do pinu 9 Arduino
Reset do pinu 2 Arduino
Clock do pinu 3 Arduino
BC2 i A8 do VCC
Podłączamy VCC i GND układu AY do pinów nr 3 i 6.

Czytnik kart SD:
Arduino - SD Card Reader:
VCC - VCC
10 - CS
11- MOSI
13 - SCK
12 - MISO
GND-GND

Wyświetlacz OLED SSD1306 łączymy do Arduino:
SDA- A4
SCL- A5
VCC-VCC
GND-GND

Do przełączania utworów wykorzystamy przycisk TACT Switch podłączony do pin 7 Arduino i masy.

Teraz podłączamy wyjście kanałów A,B,C układu AY.

Do testów wykorzystałem schemat z komputerów ORIC gdzie wyjście kanałów A,B,C układu AY jest miksowane do kanałów mono, używamy 3 rezystorów 1K, 470R, 4.7K i 2 kondensatorów 10 nF i 2.2 nF , dzięki temu uzyskamy dobrej jakości dźwięk.

Schemat podłączenia kanałów A,B,C układu AY:



Teraz przygotowujemy kartę SD, formatujemy ją na format FAT, lepiej użyć kart o małej pojemności, odtwarzacz będzie odtwarzał pliki w formacie PSG.

W internecie znajdziemy zbiór plików muzycznych -> Link

Pliki mają format .AY do przekonwertowania na PSG użyjemy odtwarzacza ZX Spectrum Sound Chip Emulator do pobrania tu -> Link

Po uruchomieniu emulatora i otwarciu plików AY klikamy na PL wybieramy plik, który chcemy przekonwertować i klikamy prawym klawiszem myszy i wybieramy Convert to -> PSG

Tak zapisane pliki wgrywamy na kartę SD.

Do Arduino wgrywamy kod ze strony -> Link

W kodzie programu zmieniłem wejście z przycisku 7 z input na input_pullup, bo działy się dziwne rzeczy, wystarczyło dotknąć przewodów i przełączały się utwory, poprawiony kod do pobrania tu -> Link

Układy AY-3-8912 są drogie i trudno dostępne, tańsze i bardziej dostępne są układy AY-3-8910, które mają takie same wyprowadzenia i możemy je wykorzystać w projekcie odtwarzacza.


Aby uzyskać dźwięk stereo z wyjść kanałów A,B,C można wykorzystać schemat miksera audio z komputerów ZX Spectrum.

Można zastosować prostszy układ miksera kanałów A,B,C jak pokazano niżej.


Test odtwarzacza na filmie niżej, zastosowano mikser kanałów A,B,C w trybie stereo jak na schemacie powyżej.