Skip to main content

Posts

Using PWM with ESP32 boards

  Unlike Arduino boards like UNO, MEGA and many others, ESP32 board does not support analogWrite() command while programming with Arduino IDE. This is because in the Arduino IDE board library for ESP32 does not contain predefined analogWrite( ) function. This is because ESP32 offers many more features with its Digital to Analogue converters, which cannot be fully utilized by analogWrite() function. ESP 32 board can output PWM signals with any frequency the programmer wants upto 40MHZ. but in other arduino boards like arduino uno only selective frequencies are available. ESP 32 also offers DAC resolution upto 16 bits. In this board the relation between ADC resolution and PWM frequency is inverse. The maximum PWM frequency with the currently used ledc duty resolution of 10 bits in PWM module is 78.125 KHz . The duty resolution can be lowered down to 1 bit in which case the maximum frequency is 40  MHz , but only the duty of 50% is available. Available DAC pins in ESP32 can be ...

Reading IO Pin Status in Arduino

To read the status of input pins of Arduino board following code can be used: Here internal pull up resistors of the IO pins are enabled to avoid getting random readings from pins when nothing is connected to them. than each required pin is read turn by turn and the status of these pins are saved in a 8 bit register. by accessing this register we can than access the pin status of all input pins. While declaring pinMode of a pin if we used INPUT_PULLUP insted of INPUT than we can eleminate the need external pull down resistor. the code is as follows   void setup() {   Serial.begin(9600);   pinMode(2,INPUT_PULLUP);   pinMode(3,INPUT_PULLUP);   pinMode(4,INPUT_PULLUP);   pinMode(5,INPUT_PULLUP);   pinMode(6,INPUT_PULLUP);   pinMode(7,INPUT_PULLUP);   pinMode(8,INPUT_PULLUP);   pinMode(9,INPUT_PULLUP); } void loop() {   byte inputs = 0;   if(digitalRead(2))inputs +=1;   if(digitalRead(3))inputs +=2;   if(digitalRead(4))in...

DIY remote for robot control

      to make the drone remote you will need following components:-  nrf24 rf module(two) joystick module(two) arduino nano (two) capacitors (one) now connect the components in following way :- connection of nrf24 for both transmitter and receiver are same. there are some additional connections to be made in transmitter to read data from joystick so and connnect the joystick pins in following way  Right joystick y axis pin = A0;  Right joystick x axis pin  = A7; Right joystick switch pin = A6; left joystick y axis pin = A1;  left joystick x axis pin  = A5;   left joystick switch pin = A2; now after connecting the above circuit upload the following codes given for transmitter and receiver and you will get the data as shown below in receiver side. now transmitter code is as follows #include <SPI.h>  #include "RF24.h" const int Ry = A0; const int Rx = A7; const in...

Parallel operation of boost converters in priority-based power sharing mode

Priority based power sharing in parallel connected boost converters is one of the simplest power sharing scheme to run the boost converters in parallel operation. in this simulation it is considered that the boost converters are physically not far from each other, and the controllers of the converters can communicate with other. One of the converters will run on higher priority which means that that converter will supply as much power as it can to the bus, and another will only supply additional power required to maintain bus stability i.e: maintain the bus voltage. Following figure shows the hardware setup of the experiment. Figure: Boost converter parallel operation experimental setup this configuration of the converter is applicable in the conditions where we need to draw as much power from a source as possible and draw only additional power required to maintain bus voltage from the secondary source. An example application case would be when there is a solar and battery-based hom...

Closed loop Control of DC to DC boost converter

DC-DC boost converter boosts the DC input voltage to higher DC voltages  according to the duty cycle of  PWM  applied to the mosfet used to charge the inductor.While the mosfet state is on the inductor gets charged, than when the mosfet turns off the voltage stored in inductor and input voltage gets added and appears in the output. But if only these components are used output Voltage will be pulsating and have a frequency similar to that of mosfet switching. So we need to put a capacitor in output in order to oscillating output to smoother output. Still the stored voltage in capacitor will backflow through the mosfet when it is on, So we need to place a diode in between mosfet and capacitor in order to prevent backflow of stored charge in capacitor.After these circuit requirements are completed the boost converter will be boost low voltage DC input to higher DC voltages.The circuit should look like as shown below:- Boost Converter Circuit Output Voltage calcu...

DC-DC buck converter

DC-DC buck converter converts DC voltage from higher voltages to lower voltages according to the duty cycle of PWM applied to the MOSFET gate. When MOSFET  is fired the inductor and capacitor gets charged so when MOSFET turns off the inductor and capacitor works as current and voltage source and continue to supply steady voltage and current till the MOSFET is fired again. For the inductor and capacitor to continuously supply the power to load without any ripples the inductance and capacitance of inductor must be high enough so that the change in their voltage and current is not  significant.  Buck converter circuit output voltage  the output voltage of the converter depends on the duty cycle of the PWM applied to the MOSFET gate.    output voltage  =  Duty cycle * Vin    Duty cycle        =  Ton/(Ton+Toff) with the change in load and change in input voltage the output voltage may vary, i...

Seven segment tempersture measurement circuit

this circuit can measure the environmental temperature. It consists of LM35 temperature sensor. Atmega328 micro controller is used to read analog data from data pin of the sensor and convert the data to temperature according to the conversion factor provided in datasheet. To make this project following components will be needed Atmega328 microcontroller crystal(16 MHZ) capacitor 22PF Seven segment display Matrix board lm35 temperature sensor Wire up the microcontroller as follows  connect (A,B,C,D,E,F,G,Dp) of seven segment to (3,7,4,2,1,5,6,0) and enable pins (D1,D2,D3,D4) to (13,A3,A2,12) with 470 ohm resistor between each four pins. And connect the  lm35 signal pin to A0 of the microcontroller. Than  program the  Microcontroller with following code after the circuit is complete. #Download Sevseg library from library manager #include <SevSeg.h> SevSeg sevseg; float a = 0; void setup(){   byte numDigit...

Patient Health Monitoring System

Patient Condition Monitoring System is a system that is developed to monitor the different health parameters of multiple patients simultaneously by a single person. The system can give warnings about the condition of patient if any parameter goes below lower threshold or above the upper threshold. The goal of Patient Condition Monitoring System is to develop a simple, reliable and economical monitoring system which measures different types of health parameters like heartbeat, temperature and movement of the body. The project Patient Condition Monitoring System has been selected because of the interests and opportunities it provides in the field of health and biomedical engineering. Following application is developed to monitor the data    the system works as follows  Heart beat sensor senses the change in color of the blood on accordance of pulse rate. The observed data is sent to the microcontroller that converts it into the standard unit. With the help...

Demand Side Management in a solar microgrid

SCADA in hybrid energy system management and control for isolated DC micro-grid . Our system addresses the problem of connecting different Energy sourced together effectively, monitoring and controlling of the Hybrid energy system formed by different renewable energy sources. Article in the link can be followed for more information. https://www.sciencedirect.com/science/article/pii/S2352484720314554 For our project we developed a small version of DC micro grid taking power from different power sources (Like solar and wind) and combining these sources together   with the help of voltage stabilizing buck-boost converters. After we boot the voltages from different sources to our distribution voltage. We distribute the power for different loads like Households, Hospitals, Schools through dedicated feeders. Now with the help of SCADA  and Sensors we can monitor various system parameters like Generation voltage of different sources, Bus voltage, powe...

PC based light intensity controller using Arduino

PC based light intensity controller To control light intensity through pc I developed an application in Microsoft visual studio and make it communicate to Arduino in order to send the PWM value that would control MOSFET via Arduino which in turn will control the intensity of LED lights I am controlling  you can download the application with code from this link  https://drive.google.com/open?id=1eF3F2S-h_6_dHfn1JWRhsNyP-qgU3v1Y   you can find Arduino code for this project from this link  https://drive.google.com/open?id=1siO2uxrQzuTkqgQhlFxDLr32zO34L7mf connect the PWM output from Arduino pin 3 to gate of MOSFET which can high power LEDS. if you want to copy arduino code directly here it is  String inData = "0"; String a = "0"; int k = 0; float lux = 0.00,av=0.0048828125,lv; long time1; int h; void setup() {   // put your setup code here, to run once:  Serial.begin(9600);  pinMode(13,OUTPUT);  digi...

CHANGING THE ARDUINO(ATMEGA328) PWM FREQUENCY

CHANGING ARDUINO PWM FREQUENCY In some projects like boost and buck converters we may need to change the default frequency of Arduino PWM pins according to our need in order to control the charging time of inductor. in Arduino UNO pins D5 and D6 have PWM frequency of 62500 HZ , pins D3, D11, D9 and D10 has the default PWM frequency of 31250 HZ . To change the PWM frequency  following code can be written in setup function to set PWM frequency Divide the base frequency of pins by the factor you want to decrease the frequency for each pin  some examples are shown below The divisors available on pins 5, 6, 9 and 10 are: 1, 8, 64, 256, and 1024. The divisors available on pins 3 and 11 are: 1, 8, 32, 64, 128, 256, and 1024. for D3 and D11 TCCR2B = TCCR2B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz TCCR2B = TCCR2B & B11111000 | B00000010; // for PWM frequency of 3921.16 Hz TCCR2B = TCCR2B & B11111000 | B000000...