PCB Design

To connect the PPG6350 chip, the peripheral circuits, the photo diode, the phototransistor, the microcontroller, and the LCD display, a custom PCB was designed. The microcontroller used to process the heartbeat signal was an Arduino Uno, and the physical connection was made using compatible pin headers to avoid wires. The schematics and layout were designed using the PCB Artist. The schematic on the figure 13 shows only the essential components and connections to use the PPG6350. For the detailed PCB schematic and layout design, please refer to the files in the Downloads section. The power supply for Arudino was a 9V battery. The 1.8V power supply for the chip was generated by feeding a regulator with the 3.3V supplied by the Arduino. The 5V power supply for the LCD was provided directly by the Arduino.



PCB schematic
Fig. 15 - Schematic of the distance sensor circuit of the PPG6350


PCB layout
Fig. 16 - Layout of the Heart Rate Monitor PPG6350


Below is the Arduino code. For the detailed Arduino code, PCB layout files, are available in Downloads section.


		#include 

		LiquidCrystal lcd(11,12,6,7,8,9);
		const unsigned long period = 10000;
		unsigned long time = 0;
		unsigned long RPM =0;

		volatile unsigned long num = 0;

		int analogPin = 3;
		int val = 0;           // variable to store the value read
		int ledPin = 13;
		void setup() {
		  // set up the LCD's number of columns and rows: 
		  pinMode(ledPin, OUTPUT);
                  lcd.begin(8,2);
		  Serial.begin(9600);
                  attachInterrupt(0,ist, RISING);

		}
		void loop()
		{
		val= analogRead(analogPin);
		if (val>350)
		digitalWrite(ledPin, HIGH);
		if(val<50)
		digitalWrite(ledPin, LOW);

		outputRPM();
		}

		void ist()
		{
		  num++;
		}

		void outputRPM()
		{
		  if((millis()-time)>=period)
		  {
		     RPM = (num*6);
  
 		 lcd.setCursor(0, 0);
 		 lcd.print("Rate is"); 
	     lcd.setCursor(0, 1);
	     lcd.print("    ");
	     lcd.setCursor(0, 1);
 		 lcd.print(RPM);
 		 lcd.print(" bpm");

  
	     Serial.print("rate is");
	     Serial.print(RPM);
	     Serial.print("\n");
 
 		 num = 0;
	     time = millis();
	     }

        }
		


Back to top