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.



3 komentarze:

  1. Hello, Roman
    i made this player but it doesn't work
    there is nothing on the display
    used a 1GB SD card and formatted it in FAT

    I installed this firmware https://www.dropbox.com/s/dpwlc5g3qg89ufz/AY_Player_OLED.rar?dl=0&file_subpath=%2FAY_Player_OLED%2FAY_Player_OLED.ino
    Do you know why the player won't start?

    OdpowiedzUsuń
    Odpowiedzi
    1. The .PSG files must be in the main folder on the SD card, they cannot be in any folders.
      If it still won't work, use an SD card with a smaller capacity.

      Usuń
    2. Many thanks!
      moved the files to the root of the SD card
      and everything works

      Usuń