NanoRama

Enter Your Project for a chance to win a Nano Grand Prize bundle for the most innovative use of Arduino plus a $400 shopping cart!

Submit an EntrySubmit an Entry  Back to homepage
Project14 Home
Monthly Themes
Monthly Theme Poll

 

The following post is a rough translation (using google translate) of a post written in Ukrainian.   The was done to make this project more accessible to more members of the community.   You can read the entire post in its entirety here:

 

#NanoRamaCH   Перебудова програвача винилових дисків Radiotechnika-EP-001

Back in 1984, I bought a very modern vinyl record player, which was at that time very modern and very expensive to work in the USSR.

 

It was cool at the time.

 

But time had forgotten about it and i've highlighted a moment I forgot about,  but #COVID-19 freed up days for listening to old music collections.

 

But this miracle was no longer a part of the USSR ...

 

It's ability had been virtually reduced, you can see take a look at the electronics that were used at the time:

To begin with, "Soviet" electronics were discarded.

 

There is a 3-phase motor, an electromagnetic toner double, a vintage 220 V switch and control sensors with old conscious headlights.

 

So I designed a special shield operated by ARDUINO NANO.




 

I found a project that helped support the amplifier in: Elliott Sound

 

A printed circuit board (size 100x100 mm) was something to be done as well:

 

Here is the sketch for the Arduino Nano:

 

#include <TimerOne.h>

#define MuteALL 13 // Cartridge signal unit (heads)
// #define END_DISC 12 // Input from the hitchhiker sensor
// 11 // Резерв
#define Stroboscope 10 // Meander 50 Hz for stroboscope
#define TONARM_UP 9 // Exit to the power key of the toner microlift
#define PWM1 8 // Output to the power key phase1
#define PWM2 7 // Output to the power switch phase2/span>
#define PWM3 6 // Output to the power switch phase3
#define SET_45 5 // Team sensor "Incl.45"
#define STOP 4 // Stop and raise the tone sensor command
#define SET_33 3 // Team sensor "Vkl.33"
#define SET_UP 2 // UP Raise Tonerm Sensor Command
#define SET_DOWN 1 // DOWN Lower Tonarm Sensor Command
// # determine 0 // Reserve


#define LED_33 19 // AD5 // LED output 33/span>
#define LED_STOP 18 // AD4 // LED output STOP
#define LED_45 17 // AD3 // LED output 45
#define LED_DOWN 16 // AD2 // LED output DOWN
#define LED_UP 15 // AD1 // LED output UP
// # to determine Tuning_Res 14 // AD0 // Precision input resistor input

// ************************************************** ** ** *****************************
unsigned long Cycle_Start;
unsigned long Current_Time;
int Count_PWM = 0;
int SET_33_Value;
int SET_45_Value;
int SET_UP_Value;
int SET_DOWN_Value;
int STOP_Value;
int END_DISC_Value;
int Tuning = 0;
int Tuning_New = 0;
int ADJ = 0; // Analog input to reduce potentiometer
long Faza_Time = 0;
// ************************************************** ** ** *****************************




встановлення недійсності ()
{
// digitalWrite (resetPin, HIGH);
// delay (200);
// pinMode (resetPin, OUTPUT);
// delay (1000);


analogReference (DEFAULT);


pinMode (PWM1, OUTPUT);
pinMode (PWM2, OUTPUT);
pinMode (PWM3, OUTPUT);
pinMode (SET_33, INPUT);
pinMode (SET_45, INPUT);
pinMode (SET_UP, INPUT);
pinMode (SET_DOWN, INPUT);
pinMode (STOP, INPUT);
// pinMode (END_DISC, INPUT);
pinMode (LED_33, вихідний);
pinMode (LED_45, вихідний);
pinMode (LED_UP, OUTPUT);
pinMode (LED_DOWN, OUTPUT);
pinMode (LED_STOP, OUTPUT);
pinMode (TONARM_UP, OUTPUT);
digitalWrite (LED_33, HIGH);
digitalWrite (LED_45, HIGH);
digitalWrite (LED_UP, HIGH);
digitalWrite (LED_DOWN, LOW);
digitalWrite (LED_STOP, LOW);
digitalWrite (TONARM_UP, HIGH);
digitalWrite (PWM1, LOW);
digitalWrite (PWM2, LOW);
digitalWrite (PWM3, LOW);
Count_PWM = 0;
Timer1.attachInterrupt (PWM_Control);
тон (Strobe, 50);
noTone (Strobe);
}
// Finish Setting

invalid PWM_Control ()
{
if (Count_PWM == 0)
{
digitalWrite (PWM1, LOW);
digitalWrite (PWM2, LOW);
digitalWrite (PWM3, LOW);
}
else
{
if (Tuning_New! = Settings)
  {
      Settings = Tuning_New;
      Timer1.setPeriod (Faza_Time + (Settings - 64) * 8); // Duration of one phase in microseconds
  }

Count_PWM = Count_PWM +1;
так (Count_PWM == 4) {Count_PWM = 1;}
                       так (Count_PWM == 1)
                            {
                              digitalWrite (PWM1, HIGH);
                              digitalWrite (PWM2, LOW);
                              digitalWrite (PWM3, LOW);
                            }
                       так (Count_PWM == 2)
                            {
                              digitalWrite (PWM1, LOW);
                              digitalWrite (PWM2, HIGH);
                              digitalWrite (PWM3, LOW);
                              }
                       так (Count_PWM == 3)
                            {
                              digitalWrite (PWM1, LOW);
                              digitalWrite (PWM2, LOW);
                              digitalWrite (PWM3, HIGH);
                            }
}                        


} // END PWM_Control


void Tonarm_Vira () // tonarm lifting procedure
{
  digitalWrite (TONARM_UP, HIGH);
     digitalWrite (LED_UP, HIGH);
     digitalWrite (LED_DOWN, LOW);
  }




void Tonarm_Maina () // Tonarm release procedure
{
   digitalWrite (LED_UP, LOW);
   digitalWrite (LED_DOWN, HIGH);
   digitalWrite (TONARM_UP, LOW);
}
void smooth_Start ()
{
digitalWrite (PWM1, HIGH);
digitalWrite (PWM2, LOW);
digitalWrite (PWM3, LOW);


delay (20);
digitalWrite (PWM1, LOW);
digitalWrite (PWM2, HIGH);
digitalWrite (PWM3, LOW);


delay (25);
digitalWrite (PWM1, LOW);
digitalWrite (PWM2, LOW);
digitalWrite (PWM3, HIGH);

delay (30);
digitalWrite (PWM1, HIGH);
digitalWrite (PWM2, LOW);
digitalWrite (PWM3, LOW);

delay (35);
digitalWrite (PWM1, LOW);
digitalWrite (PWM2, HIGH);
digitalWrite (PWM3, LOW);

delay (40);
digitalWrite (PWM1, LOW);
digitalWrite (PWM2, LOW);
digitalWrite (PWM3, HIGH);
}


void loop () {
// ************************************************** ** ** *********


SET_33_Value = digitalRead (SET_33);
SET_45_Value = digitalRead (SET_45);
SET_UP_Value = digitalRead (SET_UP);
SET_DOWN_Value = digitalRead (SET_DOWN);
STOP_Value = digitalRead (STOP);
// END_DISC_Value = digitalRead (END_DISC);

Tuning_New = analogRead (A0) / 8;

if (SET_33_Value == HIGH) {digitalWrite (LED_STOP, HIGH);
                               digitalWrite (LED_33, LOW);
                               digitalWrite (LED_45, HIGH);                     
                               Count_PWM = 1;
                               Faza_Time = 75008; // 60-ті / 8 пол. / 3 крок / 33,33 об / хв
                               Timer1.initialize (Faza_Time);                           
                               Timer1.setPeriod (Faza_Time);
                               Timer1.start ();
                               tone (Strobe, 25);
                               // noTone (Strobe);
                               smooth_Start ();
                              }


if (SET_45_Value == HIGH) {digitalWrite (LED_STOP, HIGH);
                               digitalWrite (LED_45, LOW);
                               digitalWrite (LED_33, HIGH);
                               Count_PWM = 1;
                               Faza_Time = 55420; // = 60-ті / 8 пол. / 3 фаз. / 45,11 об / хв
                               Timer1.initialize (Faza_Time);                           
                               Timer1.setPeriod (Faza_Time);
                               Timer1.start ();
                               Tone (Strobe, 25);
                               // noTone (Strobe);
                               smooth_Start ();
                               }


YES ((STOP_Value == HIGH) || (END_DISC_Value == HIGH))
                              {
              
                               Timer1.stop ();
              
                               Count_PWM = 0;
                               Faza_Time = 0;
                               Tonarm_Vira ();
              
                               digitalWrite (PWM1, LOW);
                               digitalWrite (PWM2, LOW);
                               digitalWrite (PWM3, LOW);
                               digitalWrite (LED_STOP, LOW);
                               digitalWrite (LED_33, HIGH);
                               digitalWrite (LED_45, HIGH);
                               // TONE (Strobe, 50);
                               noTone (Strobe);                   
                               }


left (SET_UP_Value == HIGH) {
                                Tonarm_Vira ();
                              }
of course (SET_DOWN_Value == HIGH) {
                                Tonarm_Maina ();
                              }
// We turn the engine
} // The Final Sketch
#include <TimerOne.h>

 

Special PCB's for pre-amplifier (left) and player control  (right). In center ARDUINO Nano Rev3.0.

 

Partly assembled vinyl record player control shield:

Pre- amplifier without chip`s for testing on-board power stabilizer&filter: